Difference between revisions of "MVDSTD:GetConfig"

From 3dbrew
Jump to navigation Jump to search
Line 105: Line 105:
 
| 0x58
 
| 0x58
 
| 0x4
 
| 0x4
| The default for this is 0x40002. The physaddr at offset 0x68 is only checked when this is value 0x00020001.
+
| Type2, see below. SKATER writes value 0x40002 here. The physaddr at offset 0x68 is only checked when this is value 0x00020001.
 
|-
 
|-
 
| 0x5C
 
| 0x5C
Line 130: Line 130:
 
For *_min/*_max/dimensions_alignment mentioned above: *_min = 16 for color-conversion, 48 for video processing. *_max = 2048 for color-conversion, 4672 for video processing. dimensions_alignment = 4 for color-conversion, 3 for video processing.
 
For *_min/*_max/dimensions_alignment mentioned above: *_min = 16 for color-conversion, 48 for video processing. *_max = 2048 for color-conversion, 4672 for video processing. dimensions_alignment = 4 for color-conversion, 3 for video processing.
  
Types:
+
Type values:
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 183: Line 183:
 
| 0x00180001
 
| 0x00180001
 
| Video processing
 
| Video processing
 +
| ?
 +
|}
 +
 +
Type2 values:
 +
{| class="wikitable" border="1"
 +
|-
 +
!  Type value
 +
!  Description
 +
|-
 +
| 0x00010001
 +
| ?
 +
|-
 +
| 0x00010005
 +
| Unknown. A certain MVD state field must not be set to 0x8170 in order to use this.
 +
|-
 +
| 0x00010006
 +
| Unknown, see 0x00010005 for the usage requirement.
 +
|-
 +
| 0x00010007
 +
| Unknown, see 0x00010005 for the usage requirement.
 +
|-
 +
| 0x00010008
 +
| A certain MVD-module state field must not be set to 0x8170 in order to use this. Whether this can actually be used is determined by another MVD-module state field.
 +
|-
 +
| 0x00010009
 +
| Unknown, see 0x00010008 for the usage requirements.
 +
|-
 +
| 0x0001000A
 +
| Unknown, see 0x00010008 for the usage requirements.
 +
|-
 +
| 0x0001000B
 +
| Unknown, see 0x00010008 for the usage requirements.
 +
|-
 +
| 0x00020001
 +
| ?
 +
|-
 +
| 0x00040000
 +
| ?
 +
|-
 +
| 0x00040001
 +
| ?
 +
|-
 +
| 0x00040002
 +
| ?
 +
|-
 +
| 0x00040003
 +
| ?
 +
|-
 +
| 0x00040004
 +
| ?
 +
|-
 +
| 0x00041000
 +
| ?
 +
|-
 +
| 0x00041001
 +
| ?
 +
|-
 +
| 0x00041002
 
| ?
 
| ?
 
|}
 
|}

Revision as of 03:59, 11 November 2014

Request

Index Word Description
0 Header code [0x001D0042]
1 Size, normally 0x11C.
2 (Size<<4) | 12
3 Output data ptr

Response

Index Word Description
0 Header code
1 Resultcode

Structure

Offset Size Description
0x0 0x4 Type, see below.
0x4 0x4 The default for this is 0x0. Must be <=5. When non-zero, the type value at offset 0x0 must be one of the following: 0x00020001, 0x00010001, 0x00010005, 0x00010006, or 0x00010007.
0x8 0x4 The default for this is 0x0. This must be <=1.
0x0C 0x4 Video width. Must be >=width_min and <width_max. This must be aligned: the low <dimensions_alignment>-bits must be clear.
0x10 0x4 Video height. Must be >=height_min and <height_max. This must be aligned: the low <dimensions_alignment>-bits must be clear.
0x14 0x4 Input data physical address, only set for color-conversion. This isn't used when the value at offset 0x4 is 0x1 or 0x5.
0x18 0x4 Physical data address, only used for color-conversion when the type value has bitmask 0x20000 set. This isn't used when the value at offset 0x4 is 0x1 or 0x5.
0x1C 0x4 Physical data address, only used for color-conversion when the type value is 0x20000. This isn't used when the value at offset 0x4 is 0x1 or 0x5.
0x20 0x4 Physical data address, for color-conversion. This isn't used when the value at offset 0x4 is 0x0 or 0x4.
0x24 0x4 Physical data address, only used for color-conversion when the type value has bitmask 0x20000 set. This isn't used when the value at offset 0x4 is 0x0 or 0x4.
0x40 0x4 When non-zero this enables usage of the 4 words starting at offset 0x44. Normally this is set to 0x0 for color-conversion, and 0x1 for video processing.
0x44 0x4 See offset 0x40. The default for this is 0x0. Must be <=widthval. Where widthval = <width value from the field at offset 0xC>. The low 4-bits of this value must be clear.
0x48 0x4 See offset 0x40. The default for this is 0x0. Must be <=heightval. Where heightval = <height value from the field at offset 0x10>. The low 4-bits of this value must be clear.
0x4C 0x4 See offset 0x40. Video height. Must be >=16 and <=heightval. Where heightval = <height value from the field at offset 0x10>. The low 3-bits of this value must be clear.
0x50 0x4 See offset 0x40. Video width. Must be >=width_min and <=widthval. Where widthval = <width value from the field at offset 0xC>. The low 3-bits of this value must be clear.
0x54 0x4 The default for this is 0x0. Must be <=5. For video processing, and when this value is non-zero, the type value at offset 0x0 must not be any of the following: 0x00010004, 0x00010001, 0x0x00100001, or 0x00200001. For video processing, the type value at offset 0x0 must not be 0x80000 when this value at offset 0x54 is non-zero.
0x58 0x4 Type2, see below. SKATER writes value 0x40002 here. The physaddr at offset 0x68 is only checked when this is value 0x00020001.
0x5C 0x4 Video width. Must be >=16, and must be <somewidth_statefield.
0x60 0x4 Video height. Must be >=16, and must be <someheight_statefield.
0x64 0x4 Output data physical address.
0x68 0x4 Output data physical address, only set for color-conversion.

The size of this structure is fixed to 0x11C-bytes. The user process does the LINEAR-mem vaddr->physaddr conversion for the above physaddrs, when modifying the config struct before using MVDSTD:SetConfig. For the above physaddrs that are checked/used, the physaddr must not be 0x0, and the physaddr must be 8-byte aligned(low 3-bits clear).

See here regarding "MJPEG". For "MJPEG", the output frame is split into two images via the two output physaddrs.

For *_min/*_max/dimensions_alignment mentioned above: *_min = 16 for color-conversion, 48 for video processing. *_max = 2048 for color-conversion, 4672 for video processing. dimensions_alignment = 4 for color-conversion, 3 for video processing.

Type values:

Type value Mode Description
0x00010001 Color conversion "MJPEG" (yuyv422 -> <out color format>)
0x00010002 Video processing ?
0x00010004 Video processing ?
0x00010005 Color conversion ?
0x00010006 Color conversion ?
0x00010007 Color conversion ?
0x00020000 Color conversion ?
0x00020001 Video processing H.264
0x00020002 ? ?
0x00080000 Video processing ?
0x00080001 Video processing ?
0x00180001 Video processing ?

Type2 values:

Type value Description
0x00010001 ?
0x00010005 Unknown. A certain MVD state field must not be set to 0x8170 in order to use this.
0x00010006 Unknown, see 0x00010005 for the usage requirement.
0x00010007 Unknown, see 0x00010005 for the usage requirement.
0x00010008 A certain MVD-module state field must not be set to 0x8170 in order to use this. Whether this can actually be used is determined by another MVD-module state field.
0x00010009 Unknown, see 0x00010008 for the usage requirements.
0x0001000A Unknown, see 0x00010008 for the usage requirements.
0x0001000B Unknown, see 0x00010008 for the usage requirements.
0x00020001 ?
0x00040000 ?
0x00040001 ?
0x00040002 ?
0x00040003 ?
0x00040004 ?
0x00041000 ?
0x00041001 ?
0x00041002 ?

Description

For this command, MVD module DMAs 0x11C-bytes from a MVD state structure to the above output buffer.