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