Difference between revisions of "GPU/Shader Instruction Set"

From 3dbrew
< GPU
Jump to navigation Jump to search
(Created page with "Category:GFX == Overview == Instructions are coded in little endian == Instruction formats == Format 1 : (used for register instructions) {| class="wikitable" border="1" |...")
 
Line 141: Line 141:
 
|}
 
|}
  
The component selector enables swizzling.
+
{| class="wikitable" border="1"
 +
|-
 +
!  Value
 +
!  Component
 +
|-
 +
|  0x0
 +
|  x
 +
|-
 +
|  0x1
 +
|  y
 +
|-
 +
|  0x2
 +
|  z
 +
|-
 +
|  0x3
 +
|  w
 +
|}
 +
 
 +
The component selector enables swizzling. For example, component selector 0x1B is equivalent to .xyzw, while 0x55 is equivalent to .yyyy.

Revision as of 19:57, 26 February 2014


Overview

Instructions are coded in little endian

Instruction formats

Format 1 : (used for register instructions)

Offset Size Description
0x0 0x6 Operand descriptor ID (DESC)
0x6 0x6 Source 1 register (SRC2)
0xC 0x6 Source 2 register (SRC1)
0x12 0x2 Flags
0x24 0x2 Destination register (DST)
0x1A 0x6 Opcode

Format 2 : (used for flow control instructions)

Offset Size Description
0x0 0x8 Number of instructions ? (NUM)
0x8 0x10? Destination offset (DST)
0x1A 0x6 Opcode

Instructions

Opcode Format Name Description
0x02 1 DP4 Computes dot product on 4-component vectors; DST = SRC1.SRC2
0x13 1 MOV Moves value; DST = SRC1
0x24 1 CALL Jumps to DST and executes NUM instructions
0x21 1 END2 ?
0x22 1 END1 ?

Operand descriptors

Offset Size Description
0x0 0x4 Destination component mask. Bit 3 = x, 2 = y, 1 = z, 0 = w.
0x5 0x8 Source 1 component selector
0x14 0x8 Source 2 component selector
0x1F 0x1 Flag

Component selector :

Offset Size Description
0x0 0x2 Component 3 value
0x2 0x2 Component 2 value
0x4 0x2 Component 1 value
0x6 0x2 Component 0 value
Value Component
0x0 x
0x1 y
0x2 z
0x3 w

The component selector enables swizzling. For example, component selector 0x1B is equivalent to .xyzw, while 0x55 is equivalent to .yyyy.