File: RT_WRITE.md

package info (click to toggle)
intel-graphics-compiler 1.0.12504.6-1%2Bdeb12u1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 83,912 kB
  • sloc: cpp: 910,147; lisp: 202,655; ansic: 15,197; python: 4,025; yacc: 2,241; lex: 1,570; pascal: 244; sh: 104; makefile: 25
file content (132 lines) | stat: -rw-r--r-- 3,521 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
<!---======================= begin_copyright_notice ============================

Copyright (C) 2020-2021 Intel Corporation

SPDX-License-Identifier: MIT

============================= end_copyright_notice ==========================-->

 

## Opcode

  RT_WRITE = 0x71

## Format

| | | | | | | |
| --- | --- | --- | --- | --- | --- | --- |
| 0x71(RT_WRITE) | Exec_size | Pred | Mode      | Surface      | Header  | SI |
|                | CPS       | RTI  | NumParams | Source0Alpha | oMask   | R  |
|                | G         | B    | A         | SourceDepth  | Stencil |    |


## Semantics




    Render target write

## Description


- **Exec_size(ub):** Execution size
 
  - Bit[2..0]: size of the region for source and destination operands
 
    - 0b011:  8 elements 
    - 0b100:  16 elements 
  - Bit[7..4]: execution mask (explicit control over the enabled channels)
 
    - 0b0000:  M1 
    - 0b0001:  M2 
    - 0b0010:  M3 
    - 0b0011:  M4 
    - 0b0100:  M5 
    - 0b0101:  M6 
    - 0b0110:  M7 
    - 0b0111:  M8 
    - 0b1000:  M1_NM 
    - 0b1001:  M2_NM 
    - 0b1010:  M3_NM 
    - 0b1011:  M4_NM 
    - 0b1100:  M5_NM 
    - 0b1101:  M6_NM 
    - 0b1110:  M7_NM 
    - 0b1111:  M8_NM
- **Pred(uw):** Predication control

- **Mode(uw):**  Various bits control the parameters of the RT write.
 
  - Bit[1..0]: MBZ
 
  - Bit[2]: "Render Target Index" whether RTI is present. RTI is zero if this bit is not set.
 
  - Bit[3]: "s0a" whether source0 alpha is present
 
  - Bit[4]: "oM" whether oMask is present
 
  - Bit[5]: "z" hether depth is present
 
  - Bit[6]: "s" whether stencil is present
 
  - Bit[7]: "LRTW" whether the message is the last RT write.
 
  - Bit[8]: "CPS" whether CPS counter is enabled
 
  - Bit[9]: "PS" is Per Sample Bit is set
 
  - Bit[10]: 0: "CM" Is Coarse Mode is set
 
  - Bit[11]: 1: "SI" whether Sample Index should be used

- **Surface(ub):** Surface variable index

- **Header(raw_operand):** Header of the RT write message

- **SI(vec_operand):** SI Index. Present only of SI bit is set in Mode

- **CPS(vec_operand):** CPS Counter. Present only if CPS bit is set in Mode

- **RTI(scalar):** Render target index. Present only if RTI bit is set in mode. Valid values are  [0-7]

- **NumParams(ub):** Number of operands in to RT Write

- **Source0Alpha(raw_operand):** source 0 alpha. Present only if the "s0a" bit is set. Must have type HF,F

- **oMask(raw_operand):** oMask. Present only if the "oM" bit is set. Must have type UW

- **R(raw_operand):** red color values. Must have type HF,F

- **G(raw_operand):** green color values. Must have type HF,F

- **B(raw_operand):** blue color values. Must have type HF,F

- **A(raw_operand):** alpha color values. Must have type HF,F

- **SourceDepth(raw_operand):** Present only if the "z" bit is set. Must have type F

- **Stencil(raw_operand):** Present only if the "s" bit is set. The stencil values are packed into the first dword (and second dword for simd16). Must have type UB

#### Properties


## Text
```
    



[(<P>)] RT_WRITE[.<Mode>] (<Exec_size>) <Surface> [<CPS>] [<RT_index>] [<sOA>] [<oM>] <R> <G> <B> <A> [<Depth>] [<Stencil>]

// <Mode> is of the form [<A> <O><CPS><PS><CM><SI><ST><LRTW><RTI><Z>] and may be in any order
```



## Notes



        Some of the operands (after NumParams) are present only if their corresponding bit in <mode> is set. All operands except for oM, z, and s must have the same data type; the behavior is undefined if some operands have HF type and others have F type.