diff options
| author | 3gg <3gg@shellblade.net> | 2025-12-02 16:39:36 -0800 |
|---|---|---|
| committer | 3gg <3gg@shellblade.net> | 2025-12-02 16:39:36 -0800 |
| commit | 6c8ae19be66cee247980a48e736a4e05d14de179 (patch) | |
| tree | d860767907bf0cbe17ec66422e11bea700cf56d9 /contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12shader.h | |
| parent | 8f594c8ebd11f0e5f8a0c6369c3fe7383d250cbe (diff) | |
Diffstat (limited to 'contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12shader.h')
| -rw-r--r-- | contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12shader.h | 495 |
1 files changed, 495 insertions, 0 deletions
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12shader.h b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12shader.h new file mode 100644 index 0000000..56455b5 --- /dev/null +++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12shader.h | |||
| @@ -0,0 +1,495 @@ | |||
| 1 | ////////////////////////////////////////////////////////////////////////////// | ||
| 2 | // | ||
| 3 | // Copyright (c) Microsoft Corporation. | ||
| 4 | // Licensed under the MIT license. | ||
| 5 | // | ||
| 6 | // File: D3D12Shader.h | ||
| 7 | // Content: D3D12 Shader Types and APIs | ||
| 8 | // | ||
| 9 | ////////////////////////////////////////////////////////////////////////////// | ||
| 10 | |||
| 11 | #ifndef __D3D12SHADER_H__ | ||
| 12 | #define __D3D12SHADER_H__ | ||
| 13 | |||
| 14 | #include "d3dcommon.h" | ||
| 15 | |||
| 16 | typedef enum D3D12_SHADER_VERSION_TYPE | ||
| 17 | { | ||
| 18 | D3D12_SHVER_PIXEL_SHADER = 0, | ||
| 19 | D3D12_SHVER_VERTEX_SHADER = 1, | ||
| 20 | D3D12_SHVER_GEOMETRY_SHADER = 2, | ||
| 21 | |||
| 22 | // D3D11 Shaders | ||
| 23 | D3D12_SHVER_HULL_SHADER = 3, | ||
| 24 | D3D12_SHVER_DOMAIN_SHADER = 4, | ||
| 25 | D3D12_SHVER_COMPUTE_SHADER = 5, | ||
| 26 | |||
| 27 | // D3D12 Shaders | ||
| 28 | D3D12_SHVER_LIBRARY = 6, | ||
| 29 | |||
| 30 | D3D12_SHVER_RAY_GENERATION_SHADER = 7, | ||
| 31 | D3D12_SHVER_INTERSECTION_SHADER = 8, | ||
| 32 | D3D12_SHVER_ANY_HIT_SHADER = 9, | ||
| 33 | D3D12_SHVER_CLOSEST_HIT_SHADER = 10, | ||
| 34 | D3D12_SHVER_MISS_SHADER = 11, | ||
| 35 | D3D12_SHVER_CALLABLE_SHADER = 12, | ||
| 36 | |||
| 37 | D3D12_SHVER_MESH_SHADER = 13, | ||
| 38 | D3D12_SHVER_AMPLIFICATION_SHADER = 14, | ||
| 39 | |||
| 40 | D3D12_SHVER_NODE_SHADER = 15, | ||
| 41 | |||
| 42 | D3D12_SHVER_RESERVED0 = 0xFFF0, | ||
| 43 | } D3D12_SHADER_VERSION_TYPE; | ||
| 44 | |||
| 45 | #define D3D12_SHVER_GET_TYPE(_Version) \ | ||
| 46 | (((_Version) >> 16) & 0xffff) | ||
| 47 | #define D3D12_SHVER_GET_MAJOR(_Version) \ | ||
| 48 | (((_Version) >> 4) & 0xf) | ||
| 49 | #define D3D12_SHVER_GET_MINOR(_Version) \ | ||
| 50 | (((_Version) >> 0) & 0xf) | ||
| 51 | |||
| 52 | // Slot ID for library function return | ||
| 53 | #define D3D_RETURN_PARAMETER_INDEX (-1) | ||
| 54 | |||
| 55 | typedef D3D_RESOURCE_RETURN_TYPE D3D12_RESOURCE_RETURN_TYPE; | ||
| 56 | |||
| 57 | typedef D3D_CBUFFER_TYPE D3D12_CBUFFER_TYPE; | ||
| 58 | |||
| 59 | |||
| 60 | typedef struct _D3D12_SIGNATURE_PARAMETER_DESC | ||
| 61 | { | ||
| 62 | LPCSTR SemanticName; // Name of the semantic | ||
| 63 | UINT SemanticIndex; // Index of the semantic | ||
| 64 | UINT Register; // Number of member variables | ||
| 65 | D3D_NAME SystemValueType;// A predefined system value, or D3D_NAME_UNDEFINED if not applicable | ||
| 66 | D3D_REGISTER_COMPONENT_TYPE ComponentType; // Scalar type (e.g. uint, float, etc.) | ||
| 67 | BYTE Mask; // Mask to indicate which components of the register | ||
| 68 | // are used (combination of D3D10_COMPONENT_MASK values) | ||
| 69 | BYTE ReadWriteMask; // Mask to indicate whether a given component is | ||
| 70 | // never written (if this is an output signature) or | ||
| 71 | // always read (if this is an input signature). | ||
| 72 | // (combination of D3D_MASK_* values) | ||
| 73 | UINT Stream; // Stream index | ||
| 74 | D3D_MIN_PRECISION MinPrecision; // Minimum desired interpolation precision | ||
| 75 | } D3D12_SIGNATURE_PARAMETER_DESC; | ||
| 76 | |||
| 77 | typedef struct _D3D12_SHADER_BUFFER_DESC | ||
| 78 | { | ||
| 79 | LPCSTR Name; // Name of the constant buffer | ||
| 80 | D3D_CBUFFER_TYPE Type; // Indicates type of buffer content | ||
| 81 | UINT Variables; // Number of member variables | ||
| 82 | UINT Size; // Size of CB (in bytes) | ||
| 83 | UINT uFlags; // Buffer description flags | ||
| 84 | } D3D12_SHADER_BUFFER_DESC; | ||
| 85 | |||
| 86 | typedef struct _D3D12_SHADER_VARIABLE_DESC | ||
| 87 | { | ||
| 88 | LPCSTR Name; // Name of the variable | ||
| 89 | UINT StartOffset; // Offset in constant buffer's backing store | ||
| 90 | UINT Size; // Size of variable (in bytes) | ||
| 91 | UINT uFlags; // Variable flags | ||
| 92 | LPVOID DefaultValue; // Raw pointer to default value | ||
| 93 | UINT StartTexture; // First texture index (or -1 if no textures used) | ||
| 94 | UINT TextureSize; // Number of texture slots possibly used. | ||
| 95 | UINT StartSampler; // First sampler index (or -1 if no textures used) | ||
| 96 | UINT SamplerSize; // Number of sampler slots possibly used. | ||
| 97 | } D3D12_SHADER_VARIABLE_DESC; | ||
| 98 | |||
| 99 | typedef struct _D3D12_SHADER_TYPE_DESC | ||
| 100 | { | ||
| 101 | D3D_SHADER_VARIABLE_CLASS Class; // Variable class (e.g. object, matrix, etc.) | ||
| 102 | D3D_SHADER_VARIABLE_TYPE Type; // Variable type (e.g. float, sampler, etc.) | ||
| 103 | UINT Rows; // Number of rows (for matrices, 1 for other numeric, 0 if not applicable) | ||
| 104 | UINT Columns; // Number of columns (for vectors & matrices, 1 for other numeric, 0 if not applicable) | ||
| 105 | UINT Elements; // Number of elements (0 if not an array) | ||
| 106 | UINT Members; // Number of members (0 if not a structure) | ||
| 107 | UINT Offset; // Offset from the start of structure (0 if not a structure member) | ||
| 108 | LPCSTR Name; // Name of type, can be NULL | ||
| 109 | } D3D12_SHADER_TYPE_DESC; | ||
| 110 | |||
| 111 | typedef D3D_TESSELLATOR_DOMAIN D3D12_TESSELLATOR_DOMAIN; | ||
| 112 | |||
| 113 | typedef D3D_TESSELLATOR_PARTITIONING D3D12_TESSELLATOR_PARTITIONING; | ||
| 114 | |||
| 115 | typedef D3D_TESSELLATOR_OUTPUT_PRIMITIVE D3D12_TESSELLATOR_OUTPUT_PRIMITIVE; | ||
| 116 | |||
| 117 | typedef struct _D3D12_SHADER_DESC | ||
| 118 | { | ||
| 119 | UINT Version; // Shader version | ||
| 120 | LPCSTR Creator; // Creator string | ||
| 121 | UINT Flags; // Shader compilation/parse flags | ||
| 122 | |||
| 123 | UINT ConstantBuffers; // Number of constant buffers | ||
| 124 | UINT BoundResources; // Number of bound resources | ||
| 125 | UINT InputParameters; // Number of parameters in the input signature | ||
| 126 | UINT OutputParameters; // Number of parameters in the output signature | ||
| 127 | |||
| 128 | UINT InstructionCount; // Number of emitted instructions | ||
| 129 | UINT TempRegisterCount; // Number of temporary registers used | ||
| 130 | UINT TempArrayCount; // Number of temporary arrays used | ||
| 131 | UINT DefCount; // Number of constant defines | ||
| 132 | UINT DclCount; // Number of declarations (input + output) | ||
| 133 | UINT TextureNormalInstructions; // Number of non-categorized texture instructions | ||
| 134 | UINT TextureLoadInstructions; // Number of texture load instructions | ||
| 135 | UINT TextureCompInstructions; // Number of texture comparison instructions | ||
| 136 | UINT TextureBiasInstructions; // Number of texture bias instructions | ||
| 137 | UINT TextureGradientInstructions; // Number of texture gradient instructions | ||
| 138 | UINT FloatInstructionCount; // Number of floating point arithmetic instructions used | ||
| 139 | UINT IntInstructionCount; // Number of signed integer arithmetic instructions used | ||
| 140 | UINT UintInstructionCount; // Number of unsigned integer arithmetic instructions used | ||
| 141 | UINT StaticFlowControlCount; // Number of static flow control instructions used | ||
| 142 | UINT DynamicFlowControlCount; // Number of dynamic flow control instructions used | ||
| 143 | UINT MacroInstructionCount; // Number of macro instructions used | ||
| 144 | UINT ArrayInstructionCount; // Number of array instructions used | ||
| 145 | UINT CutInstructionCount; // Number of cut instructions used | ||
| 146 | UINT EmitInstructionCount; // Number of emit instructions used | ||
| 147 | D3D_PRIMITIVE_TOPOLOGY GSOutputTopology; // Geometry shader output topology | ||
| 148 | UINT GSMaxOutputVertexCount; // Geometry shader maximum output vertex count | ||
| 149 | D3D_PRIMITIVE InputPrimitive; // GS/HS input primitive | ||
| 150 | UINT PatchConstantParameters; // Number of parameters in the patch constant signature | ||
| 151 | UINT cGSInstanceCount; // Number of Geometry shader instances | ||
| 152 | UINT cControlPoints; // Number of control points in the HS->DS stage | ||
| 153 | D3D_TESSELLATOR_OUTPUT_PRIMITIVE HSOutputPrimitive; // Primitive output by the tessellator | ||
| 154 | D3D_TESSELLATOR_PARTITIONING HSPartitioning; // Partitioning mode of the tessellator | ||
| 155 | D3D_TESSELLATOR_DOMAIN TessellatorDomain; // Domain of the tessellator (quad, tri, isoline) | ||
| 156 | // instruction counts | ||
| 157 | UINT cBarrierInstructions; // Number of barrier instructions in a compute shader | ||
| 158 | UINT cInterlockedInstructions; // Number of interlocked instructions | ||
| 159 | UINT cTextureStoreInstructions; // Number of texture writes | ||
| 160 | } D3D12_SHADER_DESC; | ||
| 161 | |||
| 162 | typedef struct _D3D12_SHADER_INPUT_BIND_DESC | ||
| 163 | { | ||
| 164 | LPCSTR Name; // Name of the resource | ||
| 165 | D3D_SHADER_INPUT_TYPE Type; // Type of resource (e.g. texture, cbuffer, etc.) | ||
| 166 | UINT BindPoint; // Starting bind point | ||
| 167 | UINT BindCount; // Number of contiguous bind points (for arrays) | ||
| 168 | |||
| 169 | UINT uFlags; // Input binding flags | ||
| 170 | D3D_RESOURCE_RETURN_TYPE ReturnType; // Return type (if texture) | ||
| 171 | D3D_SRV_DIMENSION Dimension; // Dimension (if texture) | ||
| 172 | UINT NumSamples; // Number of samples (0 if not MS texture) | ||
| 173 | UINT Space; // Register space | ||
| 174 | UINT uID; // Range ID in the bytecode | ||
| 175 | } D3D12_SHADER_INPUT_BIND_DESC; | ||
| 176 | |||
| 177 | #define D3D_SHADER_REQUIRES_DOUBLES 0x00000001 | ||
| 178 | #define D3D_SHADER_REQUIRES_EARLY_DEPTH_STENCIL 0x00000002 | ||
| 179 | #define D3D_SHADER_REQUIRES_UAVS_AT_EVERY_STAGE 0x00000004 | ||
| 180 | #define D3D_SHADER_REQUIRES_64_UAVS 0x00000008 | ||
| 181 | #define D3D_SHADER_REQUIRES_MINIMUM_PRECISION 0x00000010 | ||
| 182 | #define D3D_SHADER_REQUIRES_11_1_DOUBLE_EXTENSIONS 0x00000020 | ||
| 183 | #define D3D_SHADER_REQUIRES_11_1_SHADER_EXTENSIONS 0x00000040 | ||
| 184 | #define D3D_SHADER_REQUIRES_LEVEL_9_COMPARISON_FILTERING 0x00000080 | ||
| 185 | #define D3D_SHADER_REQUIRES_TILED_RESOURCES 0x00000100 | ||
| 186 | #define D3D_SHADER_REQUIRES_STENCIL_REF 0x00000200 | ||
| 187 | #define D3D_SHADER_REQUIRES_INNER_COVERAGE 0x00000400 | ||
| 188 | #define D3D_SHADER_REQUIRES_TYPED_UAV_LOAD_ADDITIONAL_FORMATS 0x00000800 | ||
| 189 | #define D3D_SHADER_REQUIRES_ROVS 0x00001000 | ||
| 190 | #define D3D_SHADER_REQUIRES_VIEWPORT_AND_RT_ARRAY_INDEX_FROM_ANY_SHADER_FEEDING_RASTERIZER 0x00002000 | ||
| 191 | #define D3D_SHADER_REQUIRES_WAVE_OPS 0x00004000 | ||
| 192 | #define D3D_SHADER_REQUIRES_INT64_OPS 0x00008000 | ||
| 193 | #define D3D_SHADER_REQUIRES_VIEW_ID 0x00010000 | ||
| 194 | #define D3D_SHADER_REQUIRES_BARYCENTRICS 0x00020000 | ||
| 195 | #define D3D_SHADER_REQUIRES_NATIVE_16BIT_OPS 0x00040000 | ||
| 196 | #define D3D_SHADER_REQUIRES_SHADING_RATE 0x00080000 | ||
| 197 | #define D3D_SHADER_REQUIRES_RAYTRACING_TIER_1_1 0x00100000 | ||
| 198 | #define D3D_SHADER_REQUIRES_SAMPLER_FEEDBACK 0x00200000 | ||
| 199 | #define D3D_SHADER_REQUIRES_ATOMIC_INT64_ON_TYPED_RESOURCE 0x00400000 | ||
| 200 | #define D3D_SHADER_REQUIRES_ATOMIC_INT64_ON_GROUP_SHARED 0x00800000 | ||
| 201 | #define D3D_SHADER_REQUIRES_DERIVATIVES_IN_MESH_AND_AMPLIFICATION_SHADERS 0x01000000 | ||
| 202 | #define D3D_SHADER_REQUIRES_RESOURCE_DESCRIPTOR_HEAP_INDEXING 0x02000000 | ||
| 203 | #define D3D_SHADER_REQUIRES_SAMPLER_DESCRIPTOR_HEAP_INDEXING 0x04000000 | ||
| 204 | #define D3D_SHADER_REQUIRES_WAVE_MMA 0x08000000 | ||
| 205 | #define D3D_SHADER_REQUIRES_ATOMIC_INT64_ON_DESCRIPTOR_HEAP_RESOURCE 0x10000000 | ||
| 206 | #define D3D_SHADER_REQUIRES_ADVANCED_TEXTURE_OPS 0x20000000 | ||
| 207 | #define D3D_SHADER_REQUIRES_WRITEABLE_MSAA_TEXTURES 0x40000000 | ||
| 208 | #define D3D_SHADER_REQUIRES_SAMPLE_CMP_GRADIENT_OR_BIAS 0x80000000 | ||
| 209 | #define D3D_SHADER_REQUIRES_EXTENDED_COMMAND_INFO 0x100000000ull | ||
| 210 | |||
| 211 | |||
| 212 | typedef struct _D3D12_LIBRARY_DESC | ||
| 213 | { | ||
| 214 | LPCSTR Creator; // The name of the originator of the library. | ||
| 215 | UINT Flags; // Compilation flags. | ||
| 216 | UINT FunctionCount; // Number of functions exported from the library. | ||
| 217 | } D3D12_LIBRARY_DESC; | ||
| 218 | |||
| 219 | typedef struct _D3D12_FUNCTION_DESC | ||
| 220 | { | ||
| 221 | UINT Version; // Shader version | ||
| 222 | LPCSTR Creator; // Creator string | ||
| 223 | UINT Flags; // Shader compilation/parse flags | ||
| 224 | |||
| 225 | UINT ConstantBuffers; // Number of constant buffers | ||
| 226 | UINT BoundResources; // Number of bound resources | ||
| 227 | |||
| 228 | UINT InstructionCount; // Number of emitted instructions | ||
| 229 | UINT TempRegisterCount; // Number of temporary registers used | ||
| 230 | UINT TempArrayCount; // Number of temporary arrays used | ||
| 231 | UINT DefCount; // Number of constant defines | ||
| 232 | UINT DclCount; // Number of declarations (input + output) | ||
| 233 | UINT TextureNormalInstructions; // Number of non-categorized texture instructions | ||
| 234 | UINT TextureLoadInstructions; // Number of texture load instructions | ||
| 235 | UINT TextureCompInstructions; // Number of texture comparison instructions | ||
| 236 | UINT TextureBiasInstructions; // Number of texture bias instructions | ||
| 237 | UINT TextureGradientInstructions; // Number of texture gradient instructions | ||
| 238 | UINT FloatInstructionCount; // Number of floating point arithmetic instructions used | ||
| 239 | UINT IntInstructionCount; // Number of signed integer arithmetic instructions used | ||
| 240 | UINT UintInstructionCount; // Number of unsigned integer arithmetic instructions used | ||
| 241 | UINT StaticFlowControlCount; // Number of static flow control instructions used | ||
| 242 | UINT DynamicFlowControlCount; // Number of dynamic flow control instructions used | ||
| 243 | UINT MacroInstructionCount; // Number of macro instructions used | ||
| 244 | UINT ArrayInstructionCount; // Number of array instructions used | ||
| 245 | UINT MovInstructionCount; // Number of mov instructions used | ||
| 246 | UINT MovcInstructionCount; // Number of movc instructions used | ||
| 247 | UINT ConversionInstructionCount; // Number of type conversion instructions used | ||
| 248 | UINT BitwiseInstructionCount; // Number of bitwise arithmetic instructions used | ||
| 249 | D3D_FEATURE_LEVEL MinFeatureLevel; // Min target of the function byte code | ||
| 250 | UINT64 RequiredFeatureFlags; // Required feature flags | ||
| 251 | |||
| 252 | LPCSTR Name; // Function name | ||
| 253 | INT FunctionParameterCount; // Number of logical parameters in the function signature (not including return) | ||
| 254 | BOOL HasReturn; // TRUE, if function returns a value, false - it is a subroutine | ||
| 255 | BOOL Has10Level9VertexShader; // TRUE, if there is a 10L9 VS blob | ||
| 256 | BOOL Has10Level9PixelShader; // TRUE, if there is a 10L9 PS blob | ||
| 257 | } D3D12_FUNCTION_DESC; | ||
| 258 | |||
| 259 | typedef struct _D3D12_PARAMETER_DESC | ||
| 260 | { | ||
| 261 | LPCSTR Name; // Parameter name. | ||
| 262 | LPCSTR SemanticName; // Parameter semantic name (+index). | ||
| 263 | D3D_SHADER_VARIABLE_TYPE Type; // Element type. | ||
| 264 | D3D_SHADER_VARIABLE_CLASS Class; // Scalar/Vector/Matrix. | ||
| 265 | UINT Rows; // Rows are for matrix parameters. | ||
| 266 | UINT Columns; // Components or Columns in matrix. | ||
| 267 | D3D_INTERPOLATION_MODE InterpolationMode; // Interpolation mode. | ||
| 268 | D3D_PARAMETER_FLAGS Flags; // Parameter modifiers. | ||
| 269 | |||
| 270 | UINT FirstInRegister; // The first input register for this parameter. | ||
| 271 | UINT FirstInComponent; // The first input register component for this parameter. | ||
| 272 | UINT FirstOutRegister; // The first output register for this parameter. | ||
| 273 | UINT FirstOutComponent; // The first output register component for this parameter. | ||
| 274 | } D3D12_PARAMETER_DESC; | ||
| 275 | |||
| 276 | |||
| 277 | ////////////////////////////////////////////////////////////////////////////// | ||
| 278 | // Interfaces //////////////////////////////////////////////////////////////// | ||
| 279 | ////////////////////////////////////////////////////////////////////////////// | ||
| 280 | |||
| 281 | typedef interface ID3D12ShaderReflectionType ID3D12ShaderReflectionType; | ||
| 282 | typedef interface ID3D12ShaderReflectionType *LPD3D12SHADERREFLECTIONTYPE; | ||
| 283 | |||
| 284 | typedef interface ID3D12ShaderReflectionVariable ID3D12ShaderReflectionVariable; | ||
| 285 | typedef interface ID3D12ShaderReflectionVariable *LPD3D12SHADERREFLECTIONVARIABLE; | ||
| 286 | |||
| 287 | typedef interface ID3D12ShaderReflectionConstantBuffer ID3D12ShaderReflectionConstantBuffer; | ||
| 288 | typedef interface ID3D12ShaderReflectionConstantBuffer *LPD3D12SHADERREFLECTIONCONSTANTBUFFER; | ||
| 289 | |||
| 290 | typedef interface ID3D12ShaderReflection ID3D12ShaderReflection; | ||
| 291 | typedef interface ID3D12ShaderReflection *LPD3D12SHADERREFLECTION; | ||
| 292 | |||
| 293 | typedef interface ID3D12LibraryReflection ID3D12LibraryReflection; | ||
| 294 | typedef interface ID3D12LibraryReflection *LPD3D12LIBRARYREFLECTION; | ||
| 295 | |||
| 296 | typedef interface ID3D12FunctionReflection ID3D12FunctionReflection; | ||
| 297 | typedef interface ID3D12FunctionReflection *LPD3D12FUNCTIONREFLECTION; | ||
| 298 | |||
| 299 | typedef interface ID3D12FunctionParameterReflection ID3D12FunctionParameterReflection; | ||
| 300 | typedef interface ID3D12FunctionParameterReflection *LPD3D12FUNCTIONPARAMETERREFLECTION; | ||
| 301 | |||
| 302 | |||
| 303 | // {E913C351-783D-48CA-A1D1-4F306284AD56} | ||
| 304 | interface DECLSPEC_UUID("E913C351-783D-48CA-A1D1-4F306284AD56") ID3D12ShaderReflectionType; | ||
| 305 | DEFINE_GUID(IID_ID3D12ShaderReflectionType, | ||
| 306 | 0xe913c351, 0x783d, 0x48ca, 0xa1, 0xd1, 0x4f, 0x30, 0x62, 0x84, 0xad, 0x56); | ||
| 307 | |||
| 308 | #undef INTERFACE | ||
| 309 | #define INTERFACE ID3D12ShaderReflectionType | ||
| 310 | |||
| 311 | DECLARE_INTERFACE(ID3D12ShaderReflectionType) | ||
| 312 | { | ||
| 313 | STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_SHADER_TYPE_DESC *pDesc) PURE; | ||
| 314 | |||
| 315 | STDMETHOD_(ID3D12ShaderReflectionType*, GetMemberTypeByIndex)(THIS_ _In_ UINT Index) PURE; | ||
| 316 | STDMETHOD_(ID3D12ShaderReflectionType*, GetMemberTypeByName)(THIS_ _In_ LPCSTR Name) PURE; | ||
| 317 | STDMETHOD_(LPCSTR, GetMemberTypeName)(THIS_ _In_ UINT Index) PURE; | ||
| 318 | |||
| 319 | STDMETHOD(IsEqual)(THIS_ _In_ ID3D12ShaderReflectionType* pType) PURE; | ||
| 320 | STDMETHOD_(ID3D12ShaderReflectionType*, GetSubType)(THIS) PURE; | ||
| 321 | STDMETHOD_(ID3D12ShaderReflectionType*, GetBaseClass)(THIS) PURE; | ||
| 322 | STDMETHOD_(UINT, GetNumInterfaces)(THIS) PURE; | ||
| 323 | STDMETHOD_(ID3D12ShaderReflectionType*, GetInterfaceByIndex)(THIS_ _In_ UINT uIndex) PURE; | ||
| 324 | STDMETHOD(IsOfType)(THIS_ _In_ ID3D12ShaderReflectionType* pType) PURE; | ||
| 325 | STDMETHOD(ImplementsInterface)(THIS_ _In_ ID3D12ShaderReflectionType* pBase) PURE; | ||
| 326 | }; | ||
| 327 | |||
| 328 | // {8337A8A6-A216-444A-B2F4-314733A73AEA} | ||
| 329 | interface DECLSPEC_UUID("8337A8A6-A216-444A-B2F4-314733A73AEA") ID3D12ShaderReflectionVariable; | ||
| 330 | DEFINE_GUID(IID_ID3D12ShaderReflectionVariable, | ||
| 331 | 0x8337a8a6, 0xa216, 0x444a, 0xb2, 0xf4, 0x31, 0x47, 0x33, 0xa7, 0x3a, 0xea); | ||
| 332 | |||
| 333 | #undef INTERFACE | ||
| 334 | #define INTERFACE ID3D12ShaderReflectionVariable | ||
| 335 | |||
| 336 | DECLARE_INTERFACE(ID3D12ShaderReflectionVariable) | ||
| 337 | { | ||
| 338 | STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_SHADER_VARIABLE_DESC *pDesc) PURE; | ||
| 339 | |||
| 340 | STDMETHOD_(ID3D12ShaderReflectionType*, GetType)(THIS) PURE; | ||
| 341 | STDMETHOD_(ID3D12ShaderReflectionConstantBuffer*, GetBuffer)(THIS) PURE; | ||
| 342 | |||
| 343 | STDMETHOD_(UINT, GetInterfaceSlot)(THIS_ _In_ UINT uArrayIndex) PURE; | ||
| 344 | }; | ||
| 345 | |||
| 346 | // {C59598B4-48B3-4869-B9B1-B1618B14A8B7} | ||
| 347 | interface DECLSPEC_UUID("C59598B4-48B3-4869-B9B1-B1618B14A8B7") ID3D12ShaderReflectionConstantBuffer; | ||
| 348 | DEFINE_GUID(IID_ID3D12ShaderReflectionConstantBuffer, | ||
| 349 | 0xc59598b4, 0x48b3, 0x4869, 0xb9, 0xb1, 0xb1, 0x61, 0x8b, 0x14, 0xa8, 0xb7); | ||
| 350 | |||
| 351 | #undef INTERFACE | ||
| 352 | #define INTERFACE ID3D12ShaderReflectionConstantBuffer | ||
| 353 | |||
| 354 | DECLARE_INTERFACE(ID3D12ShaderReflectionConstantBuffer) | ||
| 355 | { | ||
| 356 | STDMETHOD(GetDesc)(THIS_ D3D12_SHADER_BUFFER_DESC *pDesc) PURE; | ||
| 357 | |||
| 358 | STDMETHOD_(ID3D12ShaderReflectionVariable*, GetVariableByIndex)(THIS_ _In_ UINT Index) PURE; | ||
| 359 | STDMETHOD_(ID3D12ShaderReflectionVariable*, GetVariableByName)(THIS_ _In_ LPCSTR Name) PURE; | ||
| 360 | }; | ||
| 361 | |||
| 362 | // The ID3D12ShaderReflection IID may change from SDK version to SDK version | ||
| 363 | // if the reflection API changes. This prevents new code with the new API | ||
| 364 | // from working with an old binary. Recompiling with the new header | ||
| 365 | // will pick up the new IID. | ||
| 366 | |||
| 367 | // {5A58797D-A72C-478D-8BA2-EFC6B0EFE88E} | ||
| 368 | interface DECLSPEC_UUID("5A58797D-A72C-478D-8BA2-EFC6B0EFE88E") ID3D12ShaderReflection; | ||
| 369 | DEFINE_GUID(IID_ID3D12ShaderReflection, | ||
| 370 | 0x5a58797d, 0xa72c, 0x478d, 0x8b, 0xa2, 0xef, 0xc6, 0xb0, 0xef, 0xe8, 0x8e); | ||
| 371 | |||
| 372 | #undef INTERFACE | ||
| 373 | #define INTERFACE ID3D12ShaderReflection | ||
| 374 | |||
| 375 | DECLARE_INTERFACE_(ID3D12ShaderReflection, IUnknown) | ||
| 376 | { | ||
| 377 | STDMETHOD(QueryInterface)(THIS_ _In_ REFIID iid, | ||
| 378 | _Out_ LPVOID *ppv) PURE; | ||
| 379 | STDMETHOD_(ULONG, AddRef)(THIS) PURE; | ||
| 380 | STDMETHOD_(ULONG, Release)(THIS) PURE; | ||
| 381 | |||
| 382 | STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_SHADER_DESC *pDesc) PURE; | ||
| 383 | |||
| 384 | STDMETHOD_(ID3D12ShaderReflectionConstantBuffer*, GetConstantBufferByIndex)(THIS_ _In_ UINT Index) PURE; | ||
| 385 | STDMETHOD_(ID3D12ShaderReflectionConstantBuffer*, GetConstantBufferByName)(THIS_ _In_ LPCSTR Name) PURE; | ||
| 386 | |||
| 387 | STDMETHOD(GetResourceBindingDesc)(THIS_ _In_ UINT ResourceIndex, | ||
| 388 | _Out_ D3D12_SHADER_INPUT_BIND_DESC *pDesc) PURE; | ||
| 389 | |||
| 390 | STDMETHOD(GetInputParameterDesc)(THIS_ _In_ UINT ParameterIndex, | ||
| 391 | _Out_ D3D12_SIGNATURE_PARAMETER_DESC *pDesc) PURE; | ||
| 392 | STDMETHOD(GetOutputParameterDesc)(THIS_ _In_ UINT ParameterIndex, | ||
| 393 | _Out_ D3D12_SIGNATURE_PARAMETER_DESC *pDesc) PURE; | ||
| 394 | STDMETHOD(GetPatchConstantParameterDesc)(THIS_ _In_ UINT ParameterIndex, | ||
| 395 | _Out_ D3D12_SIGNATURE_PARAMETER_DESC *pDesc) PURE; | ||
| 396 | |||
| 397 | STDMETHOD_(ID3D12ShaderReflectionVariable*, GetVariableByName)(THIS_ _In_ LPCSTR Name) PURE; | ||
| 398 | |||
| 399 | STDMETHOD(GetResourceBindingDescByName)(THIS_ _In_ LPCSTR Name, | ||
| 400 | _Out_ D3D12_SHADER_INPUT_BIND_DESC *pDesc) PURE; | ||
| 401 | |||
| 402 | STDMETHOD_(UINT, GetMovInstructionCount)(THIS) PURE; | ||
| 403 | STDMETHOD_(UINT, GetMovcInstructionCount)(THIS) PURE; | ||
| 404 | STDMETHOD_(UINT, GetConversionInstructionCount)(THIS) PURE; | ||
| 405 | STDMETHOD_(UINT, GetBitwiseInstructionCount)(THIS) PURE; | ||
| 406 | |||
| 407 | STDMETHOD_(D3D_PRIMITIVE, GetGSInputPrimitive)(THIS) PURE; | ||
| 408 | STDMETHOD_(BOOL, IsSampleFrequencyShader)(THIS) PURE; | ||
| 409 | |||
| 410 | STDMETHOD_(UINT, GetNumInterfaceSlots)(THIS) PURE; | ||
| 411 | STDMETHOD(GetMinFeatureLevel)(THIS_ _Out_ enum D3D_FEATURE_LEVEL* pLevel) PURE; | ||
| 412 | |||
| 413 | STDMETHOD_(UINT, GetThreadGroupSize)(THIS_ | ||
| 414 | _Out_opt_ UINT* pSizeX, | ||
| 415 | _Out_opt_ UINT* pSizeY, | ||
| 416 | _Out_opt_ UINT* pSizeZ) PURE; | ||
| 417 | |||
| 418 | STDMETHOD_(UINT64, GetRequiresFlags)(THIS) PURE; | ||
| 419 | }; | ||
| 420 | |||
| 421 | // {8E349D19-54DB-4A56-9DC9-119D87BDB804} | ||
| 422 | interface DECLSPEC_UUID("8E349D19-54DB-4A56-9DC9-119D87BDB804") ID3D12LibraryReflection; | ||
| 423 | DEFINE_GUID(IID_ID3D12LibraryReflection, | ||
| 424 | 0x8e349d19, 0x54db, 0x4a56, 0x9d, 0xc9, 0x11, 0x9d, 0x87, 0xbd, 0xb8, 0x4); | ||
| 425 | |||
| 426 | #undef INTERFACE | ||
| 427 | #define INTERFACE ID3D12LibraryReflection | ||
| 428 | |||
| 429 | DECLARE_INTERFACE_(ID3D12LibraryReflection, IUnknown) | ||
| 430 | { | ||
| 431 | STDMETHOD(QueryInterface)(THIS_ _In_ REFIID iid, _Out_ LPVOID * ppv) PURE; | ||
| 432 | STDMETHOD_(ULONG, AddRef)(THIS) PURE; | ||
| 433 | STDMETHOD_(ULONG, Release)(THIS) PURE; | ||
| 434 | |||
| 435 | STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_LIBRARY_DESC * pDesc) PURE; | ||
| 436 | |||
| 437 | STDMETHOD_(ID3D12FunctionReflection *, GetFunctionByIndex)(THIS_ _In_ INT FunctionIndex) PURE; | ||
| 438 | }; | ||
| 439 | |||
| 440 | // {1108795C-2772-4BA9-B2A8-D464DC7E2799} | ||
| 441 | interface DECLSPEC_UUID("1108795C-2772-4BA9-B2A8-D464DC7E2799") ID3D12FunctionReflection; | ||
| 442 | DEFINE_GUID(IID_ID3D12FunctionReflection, | ||
| 443 | 0x1108795c, 0x2772, 0x4ba9, 0xb2, 0xa8, 0xd4, 0x64, 0xdc, 0x7e, 0x27, 0x99); | ||
| 444 | |||
| 445 | #undef INTERFACE | ||
| 446 | #define INTERFACE ID3D12FunctionReflection | ||
| 447 | |||
| 448 | DECLARE_INTERFACE(ID3D12FunctionReflection) | ||
| 449 | { | ||
| 450 | STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_FUNCTION_DESC * pDesc) PURE; | ||
| 451 | |||
| 452 | STDMETHOD_(ID3D12ShaderReflectionConstantBuffer *, GetConstantBufferByIndex)(THIS_ _In_ UINT BufferIndex) PURE; | ||
| 453 | STDMETHOD_(ID3D12ShaderReflectionConstantBuffer *, GetConstantBufferByName)(THIS_ _In_ LPCSTR Name) PURE; | ||
| 454 | |||
| 455 | STDMETHOD(GetResourceBindingDesc)(THIS_ _In_ UINT ResourceIndex, | ||
| 456 | _Out_ D3D12_SHADER_INPUT_BIND_DESC * pDesc) PURE; | ||
| 457 | |||
| 458 | STDMETHOD_(ID3D12ShaderReflectionVariable *, GetVariableByName)(THIS_ _In_ LPCSTR Name) PURE; | ||
| 459 | |||
| 460 | STDMETHOD(GetResourceBindingDescByName)(THIS_ _In_ LPCSTR Name, | ||
| 461 | _Out_ D3D12_SHADER_INPUT_BIND_DESC * pDesc) PURE; | ||
| 462 | |||
| 463 | // Use D3D_RETURN_PARAMETER_INDEX to get description of the return value. | ||
| 464 | STDMETHOD_(ID3D12FunctionParameterReflection *, GetFunctionParameter)(THIS_ _In_ INT ParameterIndex) PURE; | ||
| 465 | }; | ||
| 466 | |||
| 467 | // {EC25F42D-7006-4F2B-B33E-02CC3375733F} | ||
| 468 | interface DECLSPEC_UUID("EC25F42D-7006-4F2B-B33E-02CC3375733F") ID3D12FunctionParameterReflection; | ||
| 469 | DEFINE_GUID(IID_ID3D12FunctionParameterReflection, | ||
| 470 | 0xec25f42d, 0x7006, 0x4f2b, 0xb3, 0x3e, 0x2, 0xcc, 0x33, 0x75, 0x73, 0x3f); | ||
| 471 | |||
| 472 | #undef INTERFACE | ||
| 473 | #define INTERFACE ID3D12FunctionParameterReflection | ||
| 474 | |||
| 475 | DECLARE_INTERFACE(ID3D12FunctionParameterReflection) | ||
| 476 | { | ||
| 477 | STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_PARAMETER_DESC * pDesc) PURE; | ||
| 478 | }; | ||
| 479 | |||
| 480 | |||
| 481 | ////////////////////////////////////////////////////////////////////////////// | ||
| 482 | // APIs ////////////////////////////////////////////////////////////////////// | ||
| 483 | ////////////////////////////////////////////////////////////////////////////// | ||
| 484 | |||
| 485 | #ifdef __cplusplus | ||
| 486 | extern "C" { | ||
| 487 | #endif //__cplusplus | ||
| 488 | |||
| 489 | #ifdef __cplusplus | ||
| 490 | } | ||
| 491 | #endif //__cplusplus | ||
| 492 | |||
| 493 | #endif //__D3D12SHADER_H__ | ||
| 494 | |||
| 495 | |||
