Path: blob/21.2-virgl/src/gallium/drivers/svga/include/VGPU10ShaderTokens.h
4574 views
/**********************************************************1* Copyright 2007-2015 VMware, Inc. All rights reserved.2*3* Permission is hereby granted, free of charge, to any person4* obtaining a copy of this software and associated documentation5* files (the "Software"), to deal in the Software without6* restriction, including without limitation the rights to use, copy,7* modify, merge, publish, distribute, sublicense, and/or sell copies8* of the Software, and to permit persons to whom the Software is9* furnished to do so, subject to the following conditions:10*11* The above copyright notice and this permission notice shall be12* included in all copies or substantial portions of the Software.13*14* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,15* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF16* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND17* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS18* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN19* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN20* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE21* SOFTWARE.22*23**********************************************************/2425/*26* VGPU10ShaderTokens.h --27*28* VGPU10 shader token definitions.29*30*/3132#ifndef VGPU10SHADERTOKENS_H33#define VGPU10SHADERTOKENS_H3435/* Shader limits */36#define VGPU10_MAX_VS_INPUTS 1637#define VGPU10_MAX_VS_OUTPUTS 1638#define VGPU10_MAX_GS_INPUTS 1639#define VGPU10_MAX_GS_OUTPUTS 3240#define VGPU10_MAX_FS_INPUTS 3241#define VGPU10_MAX_FS_OUTPUTS 842#define VGPU10_MAX_TEMPS 409643#define VGPU10_MAX_CONSTANT_BUFFERS (14 + 1)44#define VGPU10_MAX_CONSTANT_BUFFER_ELEMENT_COUNT 409645#define VGPU10_MAX_IMMEDIATE_CONSTANT_BUFFER_ELEMENT_COUNT 409646#define VGPU10_MAX_SAMPLERS 1647#define VGPU10_MAX_RESOURCES 12848#define VGPU10_MIN_TEXEL_FETCH_OFFSET -849#define VGPU10_MAX_TEXEL_FETCH_OFFSET 75051/* Shader Model 4.1 limits */52#define VGPU10_1_MAX_VS_INPUTS 3253#define VGPU10_1_MAX_VS_OUTPUTS 3254#define VGPU10_1_MAX_GS_INPUTS 325556/* Shader Model 5.0 limits */57#define VGPU11_MAX_HS_INPUTS 3258#define VGPU11_MAX_HS_INPUT_CONTROL_POINTS 3259#define VGPU11_MAX_HS_INPUT_PATCH_CONSTANTS 3260#define VGPU11_MAX_HS_OUTPUTS 3261#define VGPU11_MAX_DS_INPUT_CONTROL_POINTS 3262#define VGPU11_MAX_DS_INPUT_PATCH_CONSTANTS 3263#define VGPU11_MAX_DS_OUTPUTS 3264#define VGPU11_MAX_GS_STREAMS 46566/* Maximums of limits for all stages */67#define VGPU10_MAX_INPUTS 3268#define VGPU10_MAX_OUTPUTS 3269#define VGPU10_MAX_INPUT_PATCH_CONSTANTS 327071typedef enum {72VGPU10_PIXEL_SHADER = 0,73VGPU10_VERTEX_SHADER = 1,74VGPU10_GEOMETRY_SHADER = 2,7576/* DX11 */77VGPU10_HULL_SHADER = 3,78VGPU10_DOMAIN_SHADER = 4,79VGPU10_COMPUTE_SHADER = 580} VGPU10_PROGRAM_TYPE;8182typedef union {83struct {84unsigned int minorVersion : 4;85unsigned int majorVersion : 4;86unsigned int : 8;87unsigned int programType : 16; /* VGPU10_PROGRAM_TYPE */88};89uint32 value;90} VGPU10ProgramToken;919293typedef enum {94VGPU10_OPCODE_ADD = 0,95VGPU10_OPCODE_AND = 1,96VGPU10_OPCODE_BREAK = 2,97VGPU10_OPCODE_BREAKC = 3,98VGPU10_OPCODE_CALL = 4,99VGPU10_OPCODE_CALLC = 5,100VGPU10_OPCODE_CASE = 6,101VGPU10_OPCODE_CONTINUE = 7,102VGPU10_OPCODE_CONTINUEC = 8,103VGPU10_OPCODE_CUT = 9,104VGPU10_OPCODE_DEFAULT = 10,105VGPU10_OPCODE_DERIV_RTX = 11,106VGPU10_OPCODE_DERIV_RTY = 12,107VGPU10_OPCODE_DISCARD = 13,108VGPU10_OPCODE_DIV = 14,109VGPU10_OPCODE_DP2 = 15,110VGPU10_OPCODE_DP3 = 16,111VGPU10_OPCODE_DP4 = 17,112VGPU10_OPCODE_ELSE = 18,113VGPU10_OPCODE_EMIT = 19,114VGPU10_OPCODE_EMITTHENCUT = 20,115VGPU10_OPCODE_ENDIF = 21,116VGPU10_OPCODE_ENDLOOP = 22,117VGPU10_OPCODE_ENDSWITCH = 23,118VGPU10_OPCODE_EQ = 24,119VGPU10_OPCODE_EXP = 25,120VGPU10_OPCODE_FRC = 26,121VGPU10_OPCODE_FTOI = 27,122VGPU10_OPCODE_FTOU = 28,123VGPU10_OPCODE_GE = 29,124VGPU10_OPCODE_IADD = 30,125VGPU10_OPCODE_IF = 31,126VGPU10_OPCODE_IEQ = 32,127VGPU10_OPCODE_IGE = 33,128VGPU10_OPCODE_ILT = 34,129VGPU10_OPCODE_IMAD = 35,130VGPU10_OPCODE_IMAX = 36,131VGPU10_OPCODE_IMIN = 37,132VGPU10_OPCODE_IMUL = 38,133VGPU10_OPCODE_INE = 39,134VGPU10_OPCODE_INEG = 40,135VGPU10_OPCODE_ISHL = 41,136VGPU10_OPCODE_ISHR = 42,137VGPU10_OPCODE_ITOF = 43,138VGPU10_OPCODE_LABEL = 44,139VGPU10_OPCODE_LD = 45,140VGPU10_OPCODE_LD_MS = 46,141VGPU10_OPCODE_LOG = 47,142VGPU10_OPCODE_LOOP = 48,143VGPU10_OPCODE_LT = 49,144VGPU10_OPCODE_MAD = 50,145VGPU10_OPCODE_MIN = 51,146VGPU10_OPCODE_MAX = 52,147VGPU10_OPCODE_CUSTOMDATA = 53,148VGPU10_OPCODE_MOV = 54,149VGPU10_OPCODE_MOVC = 55,150VGPU10_OPCODE_MUL = 56,151VGPU10_OPCODE_NE = 57,152VGPU10_OPCODE_NOP = 58,153VGPU10_OPCODE_NOT = 59,154VGPU10_OPCODE_OR = 60,155VGPU10_OPCODE_RESINFO = 61,156VGPU10_OPCODE_RET = 62,157VGPU10_OPCODE_RETC = 63,158VGPU10_OPCODE_ROUND_NE = 64,159VGPU10_OPCODE_ROUND_NI = 65,160VGPU10_OPCODE_ROUND_PI = 66,161VGPU10_OPCODE_ROUND_Z = 67,162VGPU10_OPCODE_RSQ = 68,163VGPU10_OPCODE_SAMPLE = 69,164VGPU10_OPCODE_SAMPLE_C = 70,165VGPU10_OPCODE_SAMPLE_C_LZ = 71,166VGPU10_OPCODE_SAMPLE_L = 72,167VGPU10_OPCODE_SAMPLE_D = 73,168VGPU10_OPCODE_SAMPLE_B = 74,169VGPU10_OPCODE_SQRT = 75,170VGPU10_OPCODE_SWITCH = 76,171VGPU10_OPCODE_SINCOS = 77,172VGPU10_OPCODE_UDIV = 78,173VGPU10_OPCODE_ULT = 79,174VGPU10_OPCODE_UGE = 80,175VGPU10_OPCODE_UMUL = 81,176VGPU10_OPCODE_UMAD = 82,177VGPU10_OPCODE_UMAX = 83,178VGPU10_OPCODE_UMIN = 84,179VGPU10_OPCODE_USHR = 85,180VGPU10_OPCODE_UTOF = 86,181VGPU10_OPCODE_XOR = 87,182VGPU10_OPCODE_DCL_RESOURCE = 88,183VGPU10_OPCODE_DCL_CONSTANT_BUFFER = 89,184VGPU10_OPCODE_DCL_SAMPLER = 90,185VGPU10_OPCODE_DCL_INDEX_RANGE = 91,186VGPU10_OPCODE_DCL_GS_OUTPUT_PRIMITIVE_TOPOLOGY = 92,187VGPU10_OPCODE_DCL_GS_INPUT_PRIMITIVE = 93,188VGPU10_OPCODE_DCL_MAX_OUTPUT_VERTEX_COUNT = 94,189VGPU10_OPCODE_DCL_INPUT = 95,190VGPU10_OPCODE_DCL_INPUT_SGV = 96,191VGPU10_OPCODE_DCL_INPUT_SIV = 97,192VGPU10_OPCODE_DCL_INPUT_PS = 98,193VGPU10_OPCODE_DCL_INPUT_PS_SGV = 99,194VGPU10_OPCODE_DCL_INPUT_PS_SIV = 100,195VGPU10_OPCODE_DCL_OUTPUT = 101,196VGPU10_OPCODE_DCL_OUTPUT_SGV = 102,197VGPU10_OPCODE_DCL_OUTPUT_SIV = 103,198VGPU10_OPCODE_DCL_TEMPS = 104,199VGPU10_OPCODE_DCL_INDEXABLE_TEMP = 105,200VGPU10_OPCODE_DCL_GLOBAL_FLAGS = 106,201202/* GL guest */203VGPU10_OPCODE_VMWARE = 107,204205/* DX10.1 */206VGPU10_OPCODE_LOD = 108,207VGPU10_OPCODE_GATHER4 = 109,208VGPU10_OPCODE_SAMPLE_POS = 110,209VGPU10_OPCODE_SAMPLE_INFO = 111,210211/* DX11 */212VGPU10_OPCODE_RESERVED1 = 112,213VGPU10_OPCODE_HS_DECLS = 113,214VGPU10_OPCODE_HS_CONTROL_POINT_PHASE = 114,215VGPU10_OPCODE_HS_FORK_PHASE = 115,216VGPU10_OPCODE_HS_JOIN_PHASE = 116,217VGPU10_OPCODE_EMIT_STREAM = 117,218VGPU10_OPCODE_CUT_STREAM = 118,219VGPU10_OPCODE_EMITTHENCUT_STREAM = 119,220VGPU10_OPCODE_INTERFACE_CALL = 120,221VGPU10_OPCODE_BUFINFO = 121,222VGPU10_OPCODE_DERIV_RTX_COARSE = 122,223VGPU10_OPCODE_DERIV_RTX_FINE = 123,224VGPU10_OPCODE_DERIV_RTY_COARSE = 124,225VGPU10_OPCODE_DERIV_RTY_FINE = 125,226VGPU10_OPCODE_GATHER4_C = 126,227VGPU10_OPCODE_GATHER4_PO = 127,228VGPU10_OPCODE_GATHER4_PO_C = 128,229VGPU10_OPCODE_RCP = 129,230VGPU10_OPCODE_F32TOF16 = 130,231VGPU10_OPCODE_F16TOF32 = 131,232VGPU10_OPCODE_UADDC = 132,233VGPU10_OPCODE_USUBB = 133,234VGPU10_OPCODE_COUNTBITS = 134,235VGPU10_OPCODE_FIRSTBIT_HI = 135,236VGPU10_OPCODE_FIRSTBIT_LO = 136,237VGPU10_OPCODE_FIRSTBIT_SHI = 137,238VGPU10_OPCODE_UBFE = 138,239VGPU10_OPCODE_IBFE = 139,240VGPU10_OPCODE_BFI = 140,241VGPU10_OPCODE_BFREV = 141,242VGPU10_OPCODE_SWAPC = 142,243VGPU10_OPCODE_DCL_STREAM = 143,244VGPU10_OPCODE_DCL_FUNCTION_BODY = 144,245VGPU10_OPCODE_DCL_FUNCTION_TABLE = 145,246VGPU10_OPCODE_DCL_INTERFACE = 146,247VGPU10_OPCODE_DCL_INPUT_CONTROL_POINT_COUNT = 147,248VGPU10_OPCODE_DCL_OUTPUT_CONTROL_POINT_COUNT = 148,249VGPU10_OPCODE_DCL_TESS_DOMAIN = 149,250VGPU10_OPCODE_DCL_TESS_PARTITIONING = 150,251VGPU10_OPCODE_DCL_TESS_OUTPUT_PRIMITIVE = 151,252VGPU10_OPCODE_DCL_HS_MAX_TESSFACTOR = 152,253VGPU10_OPCODE_DCL_HS_FORK_PHASE_INSTANCE_COUNT = 153,254VGPU10_OPCODE_DCL_HS_JOIN_PHASE_INSTANCE_COUNT = 154,255VGPU10_OPCODE_DCL_THREAD_GROUP = 155,256VGPU10_OPCODE_DCL_UAV_TYPED = 156,257VGPU10_OPCODE_DCL_UAV_RAW = 157,258VGPU10_OPCODE_DCL_UAV_STRUCTURED = 158,259VGPU10_OPCODE_DCL_TGSM_RAW = 159,260VGPU10_OPCODE_DCL_TGSM_STRUCTURED = 160,261VGPU10_OPCODE_DCL_RESOURCE_RAW = 161,262VGPU10_OPCODE_DCL_RESOURCE_STRUCTURED = 162,263VGPU10_OPCODE_LD_UAV_TYPED = 163,264VGPU10_OPCODE_STORE_UAV_TYPED = 164,265VGPU10_OPCODE_LD_RAW = 165,266VGPU10_OPCODE_STORE_RAW = 166,267VGPU10_OPCODE_LD_STRUCTURED = 167,268VGPU10_OPCODE_STORE_STRUCTURED = 168,269VGPU10_OPCODE_ATOMIC_AND = 169,270VGPU10_OPCODE_ATOMIC_OR = 170,271VGPU10_OPCODE_ATOMIC_XOR = 171,272VGPU10_OPCODE_ATOMIC_CMP_STORE = 172,273VGPU10_OPCODE_ATOMIC_IADD = 173,274VGPU10_OPCODE_ATOMIC_IMAX = 174,275VGPU10_OPCODE_ATOMIC_IMIN = 175,276VGPU10_OPCODE_ATOMIC_UMAX = 176,277VGPU10_OPCODE_ATOMIC_UMIN = 177,278VGPU10_OPCODE_IMM_ATOMIC_ALLOC = 178,279VGPU10_OPCODE_IMM_ATOMIC_CONSUME = 179,280VGPU10_OPCODE_IMM_ATOMIC_IADD = 180,281VGPU10_OPCODE_IMM_ATOMIC_AND = 181,282VGPU10_OPCODE_IMM_ATOMIC_OR = 182,283VGPU10_OPCODE_IMM_ATOMIC_XOR = 183,284VGPU10_OPCODE_IMM_ATOMIC_EXCH = 184,285VGPU10_OPCODE_IMM_ATOMIC_CMP_EXCH = 185,286VGPU10_OPCODE_IMM_ATOMIC_IMAX = 186,287VGPU10_OPCODE_IMM_ATOMIC_IMIN = 187,288VGPU10_OPCODE_IMM_ATOMIC_UMAX = 188,289VGPU10_OPCODE_IMM_ATOMIC_UMIN = 189,290VGPU10_OPCODE_SYNC = 190,291VGPU10_OPCODE_DADD = 191,292VGPU10_OPCODE_DMAX = 192,293VGPU10_OPCODE_DMIN = 193,294VGPU10_OPCODE_DMUL = 194,295VGPU10_OPCODE_DEQ = 195,296VGPU10_OPCODE_DGE = 196,297VGPU10_OPCODE_DLT = 197,298VGPU10_OPCODE_DNE = 198,299VGPU10_OPCODE_DMOV = 199,300VGPU10_OPCODE_DMOVC = 200,301VGPU10_OPCODE_DTOF = 201,302VGPU10_OPCODE_FTOD = 202,303VGPU10_OPCODE_EVAL_SNAPPED = 203,304VGPU10_OPCODE_EVAL_SAMPLE_INDEX = 204,305VGPU10_OPCODE_EVAL_CENTROID = 205,306VGPU10_OPCODE_DCL_GS_INSTANCE_COUNT = 206,307VGPU10_OPCODE_ABORT = 207,308VGPU10_OPCODE_DEBUG_BREAK = 208,309310/* DX11.1 */311VGPU10_OPCODE_RESERVED0 = 209,312VGPU10_OPCODE_DDIV = 210,313VGPU10_OPCODE_DFMA = 211,314VGPU10_OPCODE_DRCP = 212,315VGPU10_OPCODE_MSAD = 213,316VGPU10_OPCODE_DTOI = 214,317VGPU10_OPCODE_DTOU = 215,318VGPU10_OPCODE_ITOD = 216,319VGPU10_OPCODE_UTOD = 217,320321VGPU10_NUM_OPCODES /* Should be the last entry. */322} VGPU10_OPCODE_TYPE;323324/* Sub-opcode of VGPU10_OPCODE_VMWARE. */325typedef enum {326VGPU10_VMWARE_OPCODE_IDIV = 0,327VGPU10_VMWARE_OPCODE_DFRC = 1,328VGPU10_VMWARE_OPCODE_DRSQ = 2,329VGPU10_VMWARE_NUM_OPCODES /* Should be the last entry. */330} VGPU10_VMWARE_OPCODE_TYPE;331332typedef enum {333VGPU10_INTERPOLATION_UNDEFINED = 0,334VGPU10_INTERPOLATION_CONSTANT = 1,335VGPU10_INTERPOLATION_LINEAR = 2,336VGPU10_INTERPOLATION_LINEAR_CENTROID = 3,337VGPU10_INTERPOLATION_LINEAR_NOPERSPECTIVE = 4,338VGPU10_INTERPOLATION_LINEAR_NOPERSPECTIVE_CENTROID = 5,339VGPU10_INTERPOLATION_LINEAR_SAMPLE = 6, /* DX10.1 */340VGPU10_INTERPOLATION_LINEAR_NOPERSPECTIVE_SAMPLE = 7 /* DX10.1 */341} VGPU10_INTERPOLATION_MODE;342343typedef enum {344VGPU10_RESOURCE_DIMENSION_UNKNOWN = 0,345VGPU10_RESOURCE_DIMENSION_BUFFER = 1,346VGPU10_RESOURCE_DIMENSION_TEXTURE1D = 2,347VGPU10_RESOURCE_DIMENSION_TEXTURE2D = 3,348VGPU10_RESOURCE_DIMENSION_TEXTURE2DMS = 4,349VGPU10_RESOURCE_DIMENSION_TEXTURE3D = 5,350VGPU10_RESOURCE_DIMENSION_TEXTURECUBE = 6,351VGPU10_RESOURCE_DIMENSION_TEXTURE1DARRAY = 7,352VGPU10_RESOURCE_DIMENSION_TEXTURE2DARRAY = 8,353VGPU10_RESOURCE_DIMENSION_TEXTURE2DMSARRAY = 9,354VGPU10_RESOURCE_DIMENSION_TEXTURECUBEARRAY = 10355} VGPU10_RESOURCE_DIMENSION;356357typedef enum {358VGPU10_SAMPLER_MODE_DEFAULT = 0,359VGPU10_SAMPLER_MODE_COMPARISON = 1,360VGPU10_SAMPLER_MODE_MONO = 2361} VGPU10_SAMPLER_MODE;362363typedef enum {364VGPU10_INSTRUCTION_TEST_ZERO = 0,365VGPU10_INSTRUCTION_TEST_NONZERO = 1366} VGPU10_INSTRUCTION_TEST_BOOLEAN;367368typedef enum {369VGPU10_CB_IMMEDIATE_INDEXED = 0,370VGPU10_CB_DYNAMIC_INDEXED = 1371} VGPU10_CB_ACCESS_PATTERN;372373typedef enum {374VGPU10_PRIMITIVE_UNDEFINED = 0,375VGPU10_PRIMITIVE_POINT = 1,376VGPU10_PRIMITIVE_LINE = 2,377VGPU10_PRIMITIVE_TRIANGLE = 3,378VGPU10_PRIMITIVE_LINE_ADJ = 6,379VGPU10_PRIMITIVE_TRIANGLE_ADJ = 7,380VGPU10_PRIMITIVE_SM40_MAX = 7,381382/* DX11 */383VGPU10_PRIMITIVE_1_CONTROL_POINT_PATCH = 8,384VGPU10_PRIMITIVE_2_CONTROL_POINT_PATCH = 9,385VGPU10_PRIMITIVE_3_CONTROL_POINT_PATCH = 10,386VGPU10_PRIMITIVE_4_CONTROL_POINT_PATCH = 11,387VGPU10_PRIMITIVE_5_CONTROL_POINT_PATCH = 12,388VGPU10_PRIMITIVE_6_CONTROL_POINT_PATCH = 13,389VGPU10_PRIMITIVE_7_CONTROL_POINT_PATCH = 14,390VGPU10_PRIMITIVE_8_CONTROL_POINT_PATCH = 15,391VGPU10_PRIMITIVE_9_CONTROL_POINT_PATCH = 16,392VGPU10_PRIMITIVE_10_CONTROL_POINT_PATCH = 17,393VGPU10_PRIMITIVE_11_CONTROL_POINT_PATCH = 18,394VGPU10_PRIMITIVE_12_CONTROL_POINT_PATCH = 19,395VGPU10_PRIMITIVE_13_CONTROL_POINT_PATCH = 20,396VGPU10_PRIMITIVE_14_CONTROL_POINT_PATCH = 21,397VGPU10_PRIMITIVE_15_CONTROL_POINT_PATCH = 22,398VGPU10_PRIMITIVE_16_CONTROL_POINT_PATCH = 23,399VGPU10_PRIMITIVE_17_CONTROL_POINT_PATCH = 24,400VGPU10_PRIMITIVE_18_CONTROL_POINT_PATCH = 25,401VGPU10_PRIMITIVE_19_CONTROL_POINT_PATCH = 26,402VGPU10_PRIMITIVE_20_CONTROL_POINT_PATCH = 27,403VGPU10_PRIMITIVE_21_CONTROL_POINT_PATCH = 28,404VGPU10_PRIMITIVE_22_CONTROL_POINT_PATCH = 29,405VGPU10_PRIMITIVE_23_CONTROL_POINT_PATCH = 30,406VGPU10_PRIMITIVE_24_CONTROL_POINT_PATCH = 31,407VGPU10_PRIMITIVE_25_CONTROL_POINT_PATCH = 32,408VGPU10_PRIMITIVE_26_CONTROL_POINT_PATCH = 33,409VGPU10_PRIMITIVE_27_CONTROL_POINT_PATCH = 34,410VGPU10_PRIMITIVE_28_CONTROL_POINT_PATCH = 35,411VGPU10_PRIMITIVE_29_CONTROL_POINT_PATCH = 36,412VGPU10_PRIMITIVE_30_CONTROL_POINT_PATCH = 37,413VGPU10_PRIMITIVE_31_CONTROL_POINT_PATCH = 38,414VGPU10_PRIMITIVE_32_CONTROL_POINT_PATCH = 39,415VGPU10_PRIMITIVE_MAX = 39416} VGPU10_PRIMITIVE;417418typedef enum {419VGPU10_PRIMITIVE_TOPOLOGY_UNDEFINED = 0,420VGPU10_PRIMITIVE_TOPOLOGY_POINTLIST = 1,421VGPU10_PRIMITIVE_TOPOLOGY_LINELIST = 2,422VGPU10_PRIMITIVE_TOPOLOGY_LINESTRIP = 3,423VGPU10_PRIMITIVE_TOPOLOGY_TRIANGLELIST = 4,424VGPU10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = 5,425VGPU10_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = 10,426VGPU10_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = 11,427VGPU10_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = 12,428VGPU10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = 13429} VGPU10_PRIMITIVE_TOPOLOGY;430431typedef enum {432VGPU10_CUSTOMDATA_COMMENT = 0,433VGPU10_CUSTOMDATA_DEBUGINFO = 1,434VGPU10_CUSTOMDATA_OPAQUE = 2,435VGPU10_CUSTOMDATA_DCL_IMMEDIATE_CONSTANT_BUFFER = 3436} VGPU10_CUSTOMDATA_CLASS;437438typedef enum {439VGPU10_RESINFO_RETURN_FLOAT = 0,440VGPU10_RESINFO_RETURN_RCPFLOAT = 1,441VGPU10_RESINFO_RETURN_UINT = 2442} VGPU10_RESINFO_RETURN_TYPE;443444445typedef enum {446VGPU10_INSTRUCTION_RETURN_FLOAT = 0,447VGPU10_INSTRUCTION_RETURN_UINT = 1448} VGPU10_INSTRUCTION_RETURN_TYPE;449450/* DX11 */451typedef enum {452VGPU10_TESSELLATOR_DOMAIN_UNDEFINED = 0,453VGPU10_TESSELLATOR_DOMAIN_ISOLINE = 1,454VGPU10_TESSELLATOR_DOMAIN_TRI = 2,455VGPU10_TESSELLATOR_DOMAIN_QUAD = 3,456VGPU10_TESSELLATOR_DOMAIN_MAX = 3457} VGPU10_TESSELLATOR_DOMAIN;458459/* DX11 */460typedef enum {461VGPU10_TESSELLATOR_PARTITIONING_UNDEFINED = 0,462VGPU10_TESSELLATOR_PARTITIONING_INTEGER = 1,463VGPU10_TESSELLATOR_PARTITIONING_POW2 = 2,464VGPU10_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD = 3,465VGPU10_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN = 4,466VGPU10_TESSELLATOR_PARTITIONING_MAX = 4467} VGPU10_TESSELLATOR_PARTITIONING;468469/* DX11 */470typedef enum {471VGPU10_TESSELLATOR_OUTPUT_UNDEFINED = 0,472VGPU10_TESSELLATOR_OUTPUT_POINT = 1,473VGPU10_TESSELLATOR_OUTPUT_LINE = 2,474VGPU10_TESSELLATOR_OUTPUT_TRIANGLE_CW = 3,475VGPU10_TESSELLATOR_OUTPUT_TRIANGLE_CCW = 4,476VGPU10_TESSELLATOR_OUTPUT_MAX = 4477} VGPU10_TESSELLATOR_OUTPUT_PRIMITIVE;478479typedef union {480struct {481unsigned int opcodeType : 11; /* VGPU10_OPCODE_TYPE */482unsigned int interpolationMode : 4; /* VGPU10_INTERPOLATION_MODE */483unsigned int : 3;484unsigned int testBoolean : 1; /* VGPU10_INSTRUCTION_TEST_BOOLEAN */485unsigned int preciseValues : 4; /* DX11 VGPU10_OPERAND_4_COMPONENT_MASK_* */486unsigned int : 1;487unsigned int instructionLength : 7;488unsigned int extended : 1;489};490/* VGPU10_OPCODE_VMWARE */491struct {492unsigned int : 11;493unsigned int vmwareOpcodeType : 4; /* VGPU10_VMWARE_OPCODE_TYPE */494};495struct {496unsigned int : 11;497unsigned int resourceDimension : 5; /* VGPU10_RESOURCE_DIMENSION */498unsigned int sampleCount : 7;499};500struct {501unsigned int : 11;502unsigned int samplerMode : 4; /* VGPU10_SAMPLER_MODE */503};504struct {505unsigned int : 11;506unsigned int accessPattern : 1; /* VGPU10_CB_ACCESS_PATTERN */507};508struct {509unsigned int : 11;510unsigned int primitive : 6; /* VGPU10_PRIMITIVE */511};512struct {513unsigned int : 11;514unsigned int primitiveTopology : 6; /* VGPU10_PRIMITIVE_TOPOLOGY */515};516struct {517unsigned int : 11;518unsigned int customDataClass : 21; /* VGPU10_CUSTOMDATA_CLASS */519};520struct {521unsigned int : 11;522unsigned int resinfoReturnType : 2; /* VGPU10_RESINFO_RETURN_TYPE */523unsigned int saturate : 1;524};525struct {526unsigned int : 11;527unsigned int refactoringAllowed : 1;528529/* DX11 */530unsigned int enableDoublePrecisionFloatOps : 1;531unsigned int forceEarlyDepthStencil : 1;532unsigned int enableRawAndStructuredBuffers : 1;533};534struct {535unsigned int : 11;536unsigned int instReturnType : 2; /* VGPU10_INSTRUCTION_RETURN_TYPE */537};538539/* DX11 */540struct {541unsigned int : 11;542unsigned int syncThreadsInGroup : 1;543unsigned int syncThreadGroupShared : 1;544unsigned int syncUAVMemoryGroup : 1;545unsigned int syncUAVMemoryGlobal : 1;546};547struct {548unsigned int : 11; /* VGPU10_OPCODE_DCL_INPUT_CONTROL_POINT_COUNT549* VGPU10_OPCODE_DCL_OUTPUT_CONTROL_POINT_COUNT */550unsigned int controlPointCount : 6;551};552struct {553unsigned int : 11; /* VGPU10_OPCODE_DCL_TESS_DOMAIN */554unsigned int tessDomain : 2; /* VGPU10_TESSELLATOR_DOMAIN */555};556struct {557unsigned int : 11; /* VGPU10_OPCODE_DCL_TESS_PARTITIONING */558unsigned int tessPartitioning : 3; /* VGPU10_TESSELLATOR_PARTITIONING */559};560struct {561unsigned int : 11; /* VGPU10_OPCODE_DCL_TESS_OUTPUT_PRIMITIVE */562unsigned int tessOutputPrimitive : 3; /* VGPU10_TESSELLATOR_OUTPUT_PRIMITIVE */563};564struct {565unsigned int : 11; /* VGPU10_OPCODE_DCL_INTERFACE */566unsigned int interfaceIndexedDynamically : 1;567};568struct {569unsigned int : 11; /* VGPU10_OPCODE_DCL_UAV_* */570unsigned int uavResourceDimension : 5; /* VGPU10_RESOURCE_DIMENSION */571unsigned int globallyCoherent : 1;572unsigned int : 6;573unsigned int uavHasCounter : 1;574};575uint32 value;576} VGPU10OpcodeToken0;577578579typedef enum {580VGPU10_EXTENDED_OPCODE_EMPTY = 0,581VGPU10_EXTENDED_OPCODE_SAMPLE_CONTROLS582} VGPU10_EXTENDED_OPCODE_TYPE;583584typedef union {585struct {586unsigned int opcodeType : 6; /* VGPU10_EXTENDED_OPCODE_TYPE */587unsigned int : 3;588unsigned int offsetU : 4; /* Two's complement. */589unsigned int offsetV : 4; /* Two's complement. */590unsigned int offsetW : 4; /* Two's complement. */591unsigned int : 10;592unsigned int extended : 1;593};594uint32 value;595} VGPU10OpcodeToken1;596597598typedef enum {599VGPU10_OPERAND_0_COMPONENT = 0,600VGPU10_OPERAND_1_COMPONENT = 1,601VGPU10_OPERAND_4_COMPONENT = 2,602VGPU10_OPERAND_N_COMPONENT = 3 /* Unused for now. */603} VGPU10_OPERAND_NUM_COMPONENTS;604605typedef enum {606VGPU10_OPERAND_4_COMPONENT_MASK_MODE = 0,607VGPU10_OPERAND_4_COMPONENT_SWIZZLE_MODE = 1,608VGPU10_OPERAND_4_COMPONENT_SELECT_1_MODE = 2609} VGPU10_OPERAND_4_COMPONENT_SELECTION_MODE;610611#define VGPU10_OPERAND_4_COMPONENT_MASK_X 0x1612#define VGPU10_OPERAND_4_COMPONENT_MASK_Y 0x2613#define VGPU10_OPERAND_4_COMPONENT_MASK_Z 0x4614#define VGPU10_OPERAND_4_COMPONENT_MASK_W 0x8615616#define VGPU10_OPERAND_4_COMPONENT_MASK_XY (VGPU10_OPERAND_4_COMPONENT_MASK_X | VGPU10_OPERAND_4_COMPONENT_MASK_Y)617#define VGPU10_OPERAND_4_COMPONENT_MASK_XZ (VGPU10_OPERAND_4_COMPONENT_MASK_X | VGPU10_OPERAND_4_COMPONENT_MASK_Z)618#define VGPU10_OPERAND_4_COMPONENT_MASK_XW (VGPU10_OPERAND_4_COMPONENT_MASK_X | VGPU10_OPERAND_4_COMPONENT_MASK_W)619#define VGPU10_OPERAND_4_COMPONENT_MASK_YZ (VGPU10_OPERAND_4_COMPONENT_MASK_Y | VGPU10_OPERAND_4_COMPONENT_MASK_Z)620#define VGPU10_OPERAND_4_COMPONENT_MASK_YW (VGPU10_OPERAND_4_COMPONENT_MASK_Y | VGPU10_OPERAND_4_COMPONENT_MASK_W)621#define VGPU10_OPERAND_4_COMPONENT_MASK_ZW (VGPU10_OPERAND_4_COMPONENT_MASK_Z | VGPU10_OPERAND_4_COMPONENT_MASK_W)622#define VGPU10_OPERAND_4_COMPONENT_MASK_XYZ (VGPU10_OPERAND_4_COMPONENT_MASK_XY | VGPU10_OPERAND_4_COMPONENT_MASK_Z)623#define VGPU10_OPERAND_4_COMPONENT_MASK_XYW (VGPU10_OPERAND_4_COMPONENT_MASK_XY | VGPU10_OPERAND_4_COMPONENT_MASK_W)624#define VGPU10_OPERAND_4_COMPONENT_MASK_XZW (VGPU10_OPERAND_4_COMPONENT_MASK_XZ | VGPU10_OPERAND_4_COMPONENT_MASK_W)625#define VGPU10_OPERAND_4_COMPONENT_MASK_YZW (VGPU10_OPERAND_4_COMPONENT_MASK_YZ | VGPU10_OPERAND_4_COMPONENT_MASK_W)626#define VGPU10_OPERAND_4_COMPONENT_MASK_XYZW (VGPU10_OPERAND_4_COMPONENT_MASK_XYZ | VGPU10_OPERAND_4_COMPONENT_MASK_W)627#define VGPU10_OPERAND_4_COMPONENT_MASK_ALL VGPU10_OPERAND_4_COMPONENT_MASK_XYZW628629#define VGPU10_REGISTER_INDEX_FROM_SEMANTIC 0xffffffff630631typedef enum {632VGPU10_COMPONENT_X = 0,633VGPU10_COMPONENT_Y = 1,634VGPU10_COMPONENT_Z = 2,635VGPU10_COMPONENT_W = 3636} VGPU10_COMPONENT_NAME;637638typedef enum {639VGPU10_OPERAND_TYPE_TEMP = 0,640VGPU10_OPERAND_TYPE_INPUT = 1,641VGPU10_OPERAND_TYPE_OUTPUT = 2,642VGPU10_OPERAND_TYPE_INDEXABLE_TEMP = 3,643VGPU10_OPERAND_TYPE_IMMEDIATE32 = 4,644VGPU10_OPERAND_TYPE_IMMEDIATE64 = 5,645VGPU10_OPERAND_TYPE_SAMPLER = 6,646VGPU10_OPERAND_TYPE_RESOURCE = 7,647VGPU10_OPERAND_TYPE_CONSTANT_BUFFER = 8,648VGPU10_OPERAND_TYPE_IMMEDIATE_CONSTANT_BUFFER = 9,649VGPU10_OPERAND_TYPE_LABEL = 10,650VGPU10_OPERAND_TYPE_INPUT_PRIMITIVEID = 11,651VGPU10_OPERAND_TYPE_OUTPUT_DEPTH = 12,652VGPU10_OPERAND_TYPE_NULL = 13,653VGPU10_OPERAND_TYPE_SM40_MAX = 13,654655/* DX10.1 */656VGPU10_OPERAND_TYPE_RASTERIZER = 14,657VGPU10_OPERAND_TYPE_OUTPUT_COVERAGE_MASK = 15,658VGPU10_OPERAND_TYPE_SM41_MAX = 15,659660/* DX11 */661VGPU10_OPERAND_TYPE_STREAM = 16,662VGPU10_OPERAND_TYPE_FUNCTION_BODY = 17,663VGPU10_OPERAND_TYPE_FUNCTION_TABLE = 18,664VGPU10_OPERAND_TYPE_INTERFACE = 19,665VGPU10_OPERAND_TYPE_FUNCTION_INPUT = 20,666VGPU10_OPERAND_TYPE_FUNCTION_OUTPUT = 21,667VGPU10_OPERAND_TYPE_OUTPUT_CONTROL_POINT_ID = 22,668VGPU10_OPERAND_TYPE_INPUT_FORK_INSTANCE_ID = 23,669VGPU10_OPERAND_TYPE_INPUT_JOIN_INSTANCE_ID = 24,670VGPU10_OPERAND_TYPE_INPUT_CONTROL_POINT = 25,671VGPU10_OPERAND_TYPE_OUTPUT_CONTROL_POINT = 26,672VGPU10_OPERAND_TYPE_INPUT_PATCH_CONSTANT = 27,673VGPU10_OPERAND_TYPE_INPUT_DOMAIN_POINT = 28,674VGPU10_OPERAND_TYPE_THIS_POINTER = 29,675VGPU10_OPERAND_TYPE_UAV = 30,676VGPU10_OPERAND_TYPE_THREAD_GROUP_SHARED_MEMORY = 31,677VGPU10_OPERAND_TYPE_INPUT_THREAD_ID = 32,678VGPU10_OPERAND_TYPE_INPUT_THREAD_GROUP_ID = 33,679VGPU10_OPERAND_TYPE_INPUT_THREAD_ID_IN_GROUP = 34,680VGPU10_OPERAND_TYPE_INPUT_COVERAGE_MASK = 35,681VGPU10_OPERAND_TYPE_INPUT_THREAD_ID_IN_GROUP_FLATTENED = 36,682VGPU10_OPERAND_TYPE_INPUT_GS_INSTANCE_ID = 37,683VGPU10_OPERAND_TYPE_OUTPUT_DEPTH_GREATER_EQUAL = 38,684VGPU10_OPERAND_TYPE_OUTPUT_DEPTH_LESS_EQUAL = 39,685VGPU10_OPERAND_TYPE_CYCLE_COUNTER = 40,686VGPU10_OPERAND_TYPE_SM50_MAX = 40,687688VGPU10_NUM_OPERANDS689} VGPU10_OPERAND_TYPE;690691typedef enum {692VGPU10_OPERAND_INDEX_0D = 0,693VGPU10_OPERAND_INDEX_1D = 1,694VGPU10_OPERAND_INDEX_2D = 2,695VGPU10_OPERAND_INDEX_3D = 3696} VGPU10_OPERAND_INDEX_DIMENSION;697698typedef enum {699VGPU10_OPERAND_INDEX_IMMEDIATE32 = 0,700VGPU10_OPERAND_INDEX_IMMEDIATE64 = 1,701VGPU10_OPERAND_INDEX_RELATIVE = 2,702VGPU10_OPERAND_INDEX_IMMEDIATE32_PLUS_RELATIVE = 3,703VGPU10_OPERAND_INDEX_IMMEDIATE64_PLUS_RELATIVE = 4704} VGPU10_OPERAND_INDEX_REPRESENTATION;705706typedef union {707struct {708unsigned int numComponents : 2; /* VGPU10_OPERAND_NUM_COMPONENTS */709unsigned int selectionMode : 2; /* VGPU10_OPERAND_4_COMPONENT_SELECTION_MODE */710unsigned int mask : 4; /* D3D10_SB_OPERAND_4_COMPONENT_MASK_* */711unsigned int : 4;712unsigned int operandType : 8; /* VGPU10_OPERAND_TYPE */713unsigned int indexDimension : 2; /* VGPU10_OPERAND_INDEX_DIMENSION */714unsigned int index0Representation : 3; /* VGPU10_OPERAND_INDEX_REPRESENTATION */715unsigned int index1Representation : 3; /* VGPU10_OPERAND_INDEX_REPRESENTATION */716unsigned int : 3;717unsigned int extended : 1;718};719struct {720unsigned int : 4;721unsigned int swizzleX : 2; /* VGPU10_COMPONENT_NAME */722unsigned int swizzleY : 2; /* VGPU10_COMPONENT_NAME */723unsigned int swizzleZ : 2; /* VGPU10_COMPONENT_NAME */724unsigned int swizzleW : 2; /* VGPU10_COMPONENT_NAME */725};726struct {727unsigned int : 4;728unsigned int selectMask : 2; /* VGPU10_COMPONENT_NAME */729};730uint32 value;731} VGPU10OperandToken0;732733734typedef enum {735VGPU10_EXTENDED_OPERAND_EMPTY = 0,736VGPU10_EXTENDED_OPERAND_MODIFIER = 1737} VGPU10_EXTENDED_OPERAND_TYPE;738739typedef enum {740VGPU10_OPERAND_MODIFIER_NONE = 0,741VGPU10_OPERAND_MODIFIER_NEG = 1,742VGPU10_OPERAND_MODIFIER_ABS = 2,743VGPU10_OPERAND_MODIFIER_ABSNEG = 3744} VGPU10_OPERAND_MODIFIER;745746typedef union {747struct {748unsigned int extendedOperandType : 6; /* VGPU10_EXTENDED_OPERAND_TYPE */749unsigned int operandModifier : 8; /* VGPU10_OPERAND_MODIFIER */750unsigned int : 17;751unsigned int extended : 1;752};753uint32 value;754} VGPU10OperandToken1;755756757typedef enum {758VGPU10_RETURN_TYPE_MIN = 1,759VGPU10_RETURN_TYPE_UNORM = 1,760VGPU10_RETURN_TYPE_SNORM = 2,761VGPU10_RETURN_TYPE_SINT = 3,762VGPU10_RETURN_TYPE_UINT = 4,763VGPU10_RETURN_TYPE_FLOAT = 5,764VGPU10_RETURN_TYPE_MIXED = 6,765VGPU10_RETURN_TYPE_MAX = 6766} VGPU10_RESOURCE_RETURN_TYPE;767768typedef union {769struct {770unsigned int component0 : 4; /* VGPU10_RESOURCE_RETURN_TYPE */771unsigned int component1 : 4; /* VGPU10_RESOURCE_RETURN_TYPE */772unsigned int component2 : 4; /* VGPU10_RESOURCE_RETURN_TYPE */773unsigned int component3 : 4; /* VGPU10_RESOURCE_RETURN_TYPE */774};775uint32 value;776} VGPU10ResourceReturnTypeToken;777778779typedef enum {780VGPU10_NAME_MIN = 0,781VGPU10_NAME_UNDEFINED = 0,782VGPU10_NAME_POSITION = 1,783VGPU10_NAME_CLIP_DISTANCE = 2,784VGPU10_NAME_CULL_DISTANCE = 3,785VGPU10_NAME_RENDER_TARGET_ARRAY_INDEX = 4,786VGPU10_NAME_VIEWPORT_ARRAY_INDEX = 5,787VGPU10_NAME_VERTEX_ID = 6,788VGPU10_NAME_PRIMITIVE_ID = 7,789VGPU10_NAME_INSTANCE_ID = 8,790VGPU10_NAME_IS_FRONT_FACE = 9,791VGPU10_NAME_SAMPLE_INDEX = 10,792VGPU10_NAME_SM40_MAX = 10,793794/* DX11 */795VGPU10_NAME_FINAL_QUAD_U_EQ_0_EDGE_TESSFACTOR = 11,796VGPU10_NAME_FINAL_QUAD_V_EQ_0_EDGE_TESSFACTOR = 12,797VGPU10_NAME_FINAL_QUAD_U_EQ_1_EDGE_TESSFACTOR = 13,798VGPU10_NAME_FINAL_QUAD_V_EQ_1_EDGE_TESSFACTOR = 14,799VGPU10_NAME_FINAL_QUAD_U_INSIDE_TESSFACTOR = 15,800VGPU10_NAME_FINAL_QUAD_V_INSIDE_TESSFACTOR = 16,801VGPU10_NAME_FINAL_TRI_U_EQ_0_EDGE_TESSFACTOR = 17,802VGPU10_NAME_FINAL_TRI_V_EQ_0_EDGE_TESSFACTOR = 18,803VGPU10_NAME_FINAL_TRI_W_EQ_0_EDGE_TESSFACTOR = 19,804VGPU10_NAME_FINAL_TRI_INSIDE_TESSFACTOR = 20,805VGPU10_NAME_FINAL_LINE_DETAIL_TESSFACTOR = 21,806VGPU10_NAME_FINAL_LINE_DENSITY_TESSFACTOR = 22,807808VGPU10_NAME_MAX = 22809} VGPU10_SYSTEM_NAME;810811typedef union {812struct {813unsigned int name : 16; /* VGPU10_SYSTEM_NAME */814};815uint32 value;816} VGPU10NameToken;817818#endif819820821