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.
|