1
/**************************************************************************
3
* Copyright 2010 Luca Barbieri
5
* Permission is hereby granted, free of charge, to any person obtaining
6
* a copy of this software and associated documentation files (the
7
* "Software"), to deal in the Software without restriction, including
8
* without limitation the rights to use, copy, modify, merge, publish,
9
* distribute, sublicense, and/or sell copies of the Software, and to
10
* permit persons to whom the Software is furnished to do so, subject to
11
* the following conditions:
13
* The above copyright notice and this permission notice (including the
14
* next paragraph) shall be included in all copies or substantial
15
* portions of the Software.
17
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
20
* IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE
21
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
22
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
23
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25
**************************************************************************/
27
import "d3dcommon.idl";
29
typedef enum D3D11_SHADER_VERSION_TYPE
31
D3D11_SHVER_PIXEL_SHADER,
32
D3D11_SHVER_VERTEX_SHADER,
33
D3D11_SHVER_GEOMETRY_SHADER,
35
D3D11_SHVER_HULL_SHADER,
36
D3D11_SHVER_DOMAIN_SHADER,
37
D3D11_SHVER_COMPUTE_SHADER,
38
} D3D11_SHADER_VERSION_TYPE;
40
cpp_quote("#define D3D11_SHVER_GET_TYPE(v) (((v) >> 16) & 0xffff)")
41
cpp_quote("#define D3D11_SHVER_GET_MAJOR(v) (((v) >> 4) & 0xf)")
42
cpp_quote("#define D3D11_SHVER_GET_MINOR(v) (((v) >> 0) & 0xf)")
44
typedef D3D_RESOURCE_RETURN_TYPE D3D11_RESOURCE_RETURN_TYPE;
45
typedef D3D_CBUFFER_TYPE D3D11_CBUFFER_TYPE;
47
typedef struct _D3D11_SIGNATURE_PARAMETER_DESC
52
D3D_NAME SystemValueType;
53
D3D_REGISTER_COMPONENT_TYPE ComponentType;
57
} D3D11_SIGNATURE_PARAMETER_DESC;
59
typedef struct _D3D11_SHADER_BUFFER_DESC
62
D3D_CBUFFER_TYPE Type;
66
} D3D11_SHADER_BUFFER_DESC;
68
typedef struct _D3D11_SHADER_VARIABLE_DESC
79
} D3D11_SHADER_VARIABLE_DESC;
81
typedef struct _D3D11_SHADER_TYPE_DESC
83
D3D_SHADER_VARIABLE_CLASS Class;
84
D3D_SHADER_VARIABLE_TYPE Type;
91
} D3D11_SHADER_TYPE_DESC;
93
typedef D3D_TESSELLATOR_DOMAIN D3D11_TESSELLATOR_DOMAIN;
94
typedef D3D_TESSELLATOR_PARTITIONING D3D11_TESSELLATOR_PARTITIONING;
95
typedef D3D_TESSELLATOR_OUTPUT_PRIMITIVE D3D11_TESSELLATOR_OUTPUT_PRIMITIVE;
97
typedef struct _D3D11_SHADER_DESC
103
UINT ConstantBuffers;
105
UINT InputParameters;
106
UINT OutputParameters;
108
UINT InstructionCount;
109
UINT TempRegisterCount;
113
UINT TextureNormalInstructions;
114
UINT TextureLoadInstructions;
115
UINT TextureCompInstructions;
116
UINT TextureBiasInstructions;
117
UINT TextureGradientInstructions;
118
UINT FloatInstructionCount;
119
UINT IntInstructionCount;
120
UINT UintInstructionCount;
121
UINT StaticFlowControlCount;
122
UINT DynamicFlowControlCount;
123
UINT MacroInstructionCount;
124
UINT ArrayInstructionCount;
125
UINT CutInstructionCount;
126
UINT EmitInstructionCount;
127
D3D_PRIMITIVE_TOPOLOGY GSOutputTopology;
128
UINT GSMaxOutputVertexCount;
129
D3D_PRIMITIVE InputPrimitive;
130
UINT PatchConstantParameters;
131
UINT cGSInstanceCount;
133
D3D_TESSELLATOR_OUTPUT_PRIMITIVE HSOutputPrimitive;
134
D3D_TESSELLATOR_PARTITIONING HSPartitioning;
135
D3D_TESSELLATOR_DOMAIN TessellatorDomain;
137
UINT cBarrierInstructions;
138
UINT cInterlockedInstructions;
139
UINT cTextureStoreInstructions;
142
typedef struct _D3D11_SHADER_INPUT_BIND_DESC
145
D3D_SHADER_INPUT_TYPE Type;
150
D3D_RESOURCE_RETURN_TYPE ReturnType;
151
D3D_SRV_DIMENSION Dimension;
153
} D3D11_SHADER_INPUT_BIND_DESC;
155
[local, object, uuid("6e6ffa6a-9bae-4613-a51e-91652d508c21")]
156
interface ID3D11ShaderReflectionType
159
[out] D3D11_SHADER_TYPE_DESC *a
162
ID3D11ShaderReflectionType* GetMemberTypeByIndex(
166
ID3D11ShaderReflectionType* GetMemberTypeByName(
170
LPCSTR GetMemberTypeName(
175
[in] ID3D11ShaderReflectionType* a
177
ID3D11ShaderReflectionType* GetSubType();
178
ID3D11ShaderReflectionType* GetBaseClass();
179
UINT GetNumInterfaces();
180
ID3D11ShaderReflectionType* GetInterfaceByIndex(
184
[in] ID3D11ShaderReflectionType* a
186
HRESULT ImplementsInterface(
187
[in] ID3D11ShaderReflectionType* a
191
interface ID3D11ShaderReflectionConstantBuffer;
193
[object, local, uuid("51f23923-f3e5-4bd1-91cb-606177d8db4c")]
194
interface ID3D11ShaderReflectionVariable
197
[out] D3D11_SHADER_VARIABLE_DESC *a
200
ID3D11ShaderReflectionType* GetType();
201
ID3D11ShaderReflectionConstantBuffer* GetBuffer();
203
UINT GetInterfaceSlot(
208
[object, local, uuid("eb62d63d-93dd-4318-8ae8-c6f83ad371b8")]
209
interface ID3D11ShaderReflectionConstantBuffer
212
[out] D3D11_SHADER_BUFFER_DESC *a
215
ID3D11ShaderReflectionVariable* GetVariableByIndex(
219
ID3D11ShaderReflectionVariable* GetVariableByName(
224
[object,local,uuid("0a233719-3960-4578-9d7c-203b8b1d9cc1")]
225
interface ID3D11ShaderReflection
228
[out] D3D11_SHADER_DESC *a
231
ID3D11ShaderReflectionConstantBuffer* GetConstantBufferByIndex(
235
ID3D11ShaderReflectionConstantBuffer* GetConstantBufferByName(
239
HRESULT GetResourceBindingDesc(
241
[out] D3D11_SHADER_INPUT_BIND_DESC *b
244
HRESULT GetInputParameterDesc(
246
[out] D3D11_SIGNATURE_PARAMETER_DESC *b
249
HRESULT GetOutputParameterDesc
252
[out] D3D11_SIGNATURE_PARAMETER_DESC *b
255
HRESULT GetPatchConstantParameterDesc(
257
[out] D3D11_SIGNATURE_PARAMETER_DESC *b
260
ID3D11ShaderReflectionVariable* GetVariableByName(
264
HRESULT GetResourceBindingDescByName(
266
[out] D3D11_SHADER_INPUT_BIND_DESC *b
269
UINT GetMovInstructionCount();
270
UINT GetMovcInstructionCount();
271
UINT GetConversionInstructionCount();
272
UINT GetBitwiseInstructionCount();
273
D3D_PRIMITIVE GetGSInputPrimitive();
274
BOOL IsSampleFrequencyShader();
275
UINT GetNumInterfaceSlots();
277
HRESULT GetMinFeatureLevel(
278
[out] D3D_FEATURE_LEVEL* a
281
UINT GetThreadGroupSize(
282
[out,optional] UINT* a,
283
[out,optional] UINT* b,
284
[out,optional] UINT* c