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 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160
|
<!---======================= begin_copyright_notice ============================
Copyright (C) 2020-2022 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]: "CM" Is Coarse Mode is set
- Bit[11]: "SI" whether Sample Index should be used.
- Bit[12]: "nullRT" whether null render target is set
- **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. Must have type UB. 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><NULLRT>] 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.
```
|