192617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri/**************************************************************************
292617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri *
392617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri * Copyright 2010 Luca Barbieri
492617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri *
592617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri * Permission is hereby granted, free of charge, to any person obtaining
692617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri * a copy of this software and associated documentation files (the
792617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri * "Software"), to deal in the Software without restriction, including
892617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri * without limitation the rights to use, copy, modify, merge, publish,
992617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri * distribute, sublicense, and/or sell copies of the Software, and to
1092617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri * permit persons to whom the Software is furnished to do so, subject to
1192617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri * the following conditions:
1292617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri *
1392617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri * The above copyright notice and this permission notice (including the
1492617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri * next paragraph) shall be included in all copies or substantial
1592617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri * portions of the Software.
1692617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri *
1792617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
1892617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
1992617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
2092617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri * IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE
2192617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
2292617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
2392617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
2492617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri *
2592617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri **************************************************************************/
2692617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
2792617aeac109481258f0c3863d09c1b8903d438bLuca Barbieriimport "d3dcommon.idl";
2892617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
2992617aeac109481258f0c3863d09c1b8903d438bLuca Barbieritypedef enum D3D11_SHADER_VERSION_TYPE
3092617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri{
3192617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	D3D11_SHVER_PIXEL_SHADER,
3292617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	D3D11_SHVER_VERTEX_SHADER,
3392617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	D3D11_SHVER_GEOMETRY_SHADER,
3492617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
3592617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	D3D11_SHVER_HULL_SHADER,
3692617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	D3D11_SHVER_DOMAIN_SHADER,
3792617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	D3D11_SHVER_COMPUTE_SHADER,
3892617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri} D3D11_SHADER_VERSION_TYPE;
3992617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
4092617aeac109481258f0c3863d09c1b8903d438bLuca Barbiericpp_quote("#define D3D11_SHVER_GET_TYPE(v) (((v) >> 16) & 0xffff)")
4192617aeac109481258f0c3863d09c1b8903d438bLuca Barbiericpp_quote("#define D3D11_SHVER_GET_MAJOR(v) (((v) >> 4) & 0xf)")
4292617aeac109481258f0c3863d09c1b8903d438bLuca Barbiericpp_quote("#define D3D11_SHVER_GET_MINOR(v) (((v) >> 0) & 0xf)")
4392617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
4492617aeac109481258f0c3863d09c1b8903d438bLuca Barbieritypedef D3D_RESOURCE_RETURN_TYPE D3D11_RESOURCE_RETURN_TYPE;
4592617aeac109481258f0c3863d09c1b8903d438bLuca Barbieritypedef D3D_CBUFFER_TYPE D3D11_CBUFFER_TYPE;
4692617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
4792617aeac109481258f0c3863d09c1b8903d438bLuca Barbieritypedef struct _D3D11_SIGNATURE_PARAMETER_DESC
4892617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri{
4992617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	LPCSTR SemanticName;
5092617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT SemanticIndex;
5192617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT Register;
5292617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	D3D_NAME SystemValueType;
5392617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	D3D_REGISTER_COMPONENT_TYPE ComponentType;
5492617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	BYTE Mask;
5592617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	BYTE ReadWriteMask;
5692617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT Stream;
5792617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri} D3D11_SIGNATURE_PARAMETER_DESC;
5892617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
5992617aeac109481258f0c3863d09c1b8903d438bLuca Barbieritypedef struct _D3D11_SHADER_BUFFER_DESC
6092617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri{
6192617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	LPCSTR Name;
6292617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	D3D_CBUFFER_TYPE Type;
6392617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT Variables;
6492617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT Size;
6592617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT uFlags;
6692617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri} D3D11_SHADER_BUFFER_DESC;
6792617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
6892617aeac109481258f0c3863d09c1b8903d438bLuca Barbieritypedef struct _D3D11_SHADER_VARIABLE_DESC
6992617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri{
7092617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	LPCSTR Name;
7192617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT StartOffset;
7292617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT Size;
7392617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT uFlags;
7492617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	LPVOID DefaultValue;
7592617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT StartTexture;
7692617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT TextureSize;
7792617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT StartSampler;
7892617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT SamplerSize;
7992617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri} D3D11_SHADER_VARIABLE_DESC;
8092617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
8192617aeac109481258f0c3863d09c1b8903d438bLuca Barbieritypedef struct _D3D11_SHADER_TYPE_DESC
8292617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri{
8392617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	D3D_SHADER_VARIABLE_CLASS Class;
8492617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	D3D_SHADER_VARIABLE_TYPE Type;
8592617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT Rows;
8692617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT Columns;
8792617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT Elements;
8892617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT Members;
8992617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT Offset;
9092617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	LPCSTR Name;
9192617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri} D3D11_SHADER_TYPE_DESC;
9292617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
9392617aeac109481258f0c3863d09c1b8903d438bLuca Barbieritypedef D3D_TESSELLATOR_DOMAIN D3D11_TESSELLATOR_DOMAIN;
9492617aeac109481258f0c3863d09c1b8903d438bLuca Barbieritypedef D3D_TESSELLATOR_PARTITIONING D3D11_TESSELLATOR_PARTITIONING;
9592617aeac109481258f0c3863d09c1b8903d438bLuca Barbieritypedef D3D_TESSELLATOR_OUTPUT_PRIMITIVE D3D11_TESSELLATOR_OUTPUT_PRIMITIVE;
9692617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
9792617aeac109481258f0c3863d09c1b8903d438bLuca Barbieritypedef struct _D3D11_SHADER_DESC
9892617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri{
9992617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT Version;
10092617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	LPCSTR Creator;
10192617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT Flags;
10292617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
10392617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT ConstantBuffers;
10492617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT BoundResources;
10592617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT InputParameters;
10692617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT OutputParameters;
10792617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
10892617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT InstructionCount;
10992617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT TempRegisterCount;
11092617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT TempArrayCount;
11192617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT DefCount;
11292617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT DclCount;
11392617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT TextureNormalInstructions;
11492617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT TextureLoadInstructions;
11592617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT TextureCompInstructions;
11692617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT TextureBiasInstructions;
11792617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT TextureGradientInstructions;
11892617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT FloatInstructionCount;
11992617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT IntInstructionCount;
12092617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT UintInstructionCount;
12192617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT StaticFlowControlCount;
12292617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT DynamicFlowControlCount;
12392617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT MacroInstructionCount;
12492617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT ArrayInstructionCount;
12592617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT CutInstructionCount;
12692617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT EmitInstructionCount;
12792617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	D3D_PRIMITIVE_TOPOLOGY GSOutputTopology;
12892617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT GSMaxOutputVertexCount;
12992617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	D3D_PRIMITIVE InputPrimitive;
13092617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT PatchConstantParameters;
13192617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT cGSInstanceCount;
13292617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT cControlPoints;
13392617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	D3D_TESSELLATOR_OUTPUT_PRIMITIVE HSOutputPrimitive;
13492617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	D3D_TESSELLATOR_PARTITIONING HSPartitioning;
13592617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	D3D_TESSELLATOR_DOMAIN TessellatorDomain;
13692617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
13792617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT cBarrierInstructions;
13892617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT cInterlockedInstructions;
13992617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT cTextureStoreInstructions;
14092617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri} D3D11_SHADER_DESC;
14192617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
14292617aeac109481258f0c3863d09c1b8903d438bLuca Barbieritypedef struct _D3D11_SHADER_INPUT_BIND_DESC
14392617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri{
14492617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	LPCSTR Name;
14592617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	D3D_SHADER_INPUT_TYPE Type;
14692617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT BindPoint;
14792617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT BindCount;
14892617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
14992617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT uFlags;
15092617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	D3D_RESOURCE_RETURN_TYPE ReturnType;
15192617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	D3D_SRV_DIMENSION Dimension;
15292617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT NumSamples;
15392617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri} D3D11_SHADER_INPUT_BIND_DESC;
15492617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
15592617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri[local, object, uuid("6e6ffa6a-9bae-4613-a51e-91652d508c21")]
15692617aeac109481258f0c3863d09c1b8903d438bLuca Barbieriinterface ID3D11ShaderReflectionType
15792617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri{
15892617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	HRESULT GetDesc(
159b6b3fbcdb14faf5a5be66112a06d3406e7a46998Luca Barbieri		[out] D3D11_SHADER_TYPE_DESC *a
16092617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	);
16192617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
16292617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	ID3D11ShaderReflectionType* GetMemberTypeByIndex(
163b6b3fbcdb14faf5a5be66112a06d3406e7a46998Luca Barbieri		[in] UINT a
16492617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	);
16592617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
16692617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	ID3D11ShaderReflectionType* GetMemberTypeByName(
167b6b3fbcdb14faf5a5be66112a06d3406e7a46998Luca Barbieri		[in] LPCSTR a
16892617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	);
16992617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
17092617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	LPCSTR GetMemberTypeName(
171b6b3fbcdb14faf5a5be66112a06d3406e7a46998Luca Barbieri		[in] UINT a
17292617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	);
17392617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
17492617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	HRESULT IsEqual(
175b6b3fbcdb14faf5a5be66112a06d3406e7a46998Luca Barbieri		[in] ID3D11ShaderReflectionType* a
17692617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	);
17792617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	ID3D11ShaderReflectionType* GetSubType();
17892617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	ID3D11ShaderReflectionType* GetBaseClass();
17992617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT GetNumInterfaces();
18092617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	ID3D11ShaderReflectionType* GetInterfaceByIndex(
181b6b3fbcdb14faf5a5be66112a06d3406e7a46998Luca Barbieri		[in] UINT a
18292617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	);
18392617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	HRESULT IsOfType(
184b6b3fbcdb14faf5a5be66112a06d3406e7a46998Luca Barbieri		[in] ID3D11ShaderReflectionType* a
18592617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	);
18692617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	HRESULT ImplementsInterface(
187b6b3fbcdb14faf5a5be66112a06d3406e7a46998Luca Barbieri		[in] ID3D11ShaderReflectionType* a
18892617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	);
18992617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri};
19092617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
19192617aeac109481258f0c3863d09c1b8903d438bLuca Barbieriinterface ID3D11ShaderReflectionConstantBuffer;
19292617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
19392617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri[object, local, uuid("51f23923-f3e5-4bd1-91cb-606177d8db4c")]
19492617aeac109481258f0c3863d09c1b8903d438bLuca Barbieriinterface ID3D11ShaderReflectionVariable
19592617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri{
19692617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	HRESULT GetDesc(
197b6b3fbcdb14faf5a5be66112a06d3406e7a46998Luca Barbieri		[out] D3D11_SHADER_VARIABLE_DESC *a
19892617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	);
19992617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
20092617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	ID3D11ShaderReflectionType* GetType();
20192617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	ID3D11ShaderReflectionConstantBuffer* GetBuffer();
20292617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
20392617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT GetInterfaceSlot(
204b6b3fbcdb14faf5a5be66112a06d3406e7a46998Luca Barbieri		[in] UINT a
20592617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	);
20692617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri};
20792617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
20892617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri[object, local, uuid("eb62d63d-93dd-4318-8ae8-c6f83ad371b8")]
20992617aeac109481258f0c3863d09c1b8903d438bLuca Barbieriinterface ID3D11ShaderReflectionConstantBuffer
21092617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri{
21192617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	HRESULT GetDesc(
212b6b3fbcdb14faf5a5be66112a06d3406e7a46998Luca Barbieri		[out] D3D11_SHADER_BUFFER_DESC *a
21392617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	);
21492617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
21592617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	ID3D11ShaderReflectionVariable* GetVariableByIndex(
216b6b3fbcdb14faf5a5be66112a06d3406e7a46998Luca Barbieri		[in] UINT a
21792617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	);
21892617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
21992617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	ID3D11ShaderReflectionVariable* GetVariableByName(
220b6b3fbcdb14faf5a5be66112a06d3406e7a46998Luca Barbieri		[in] LPCSTR a
22192617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	);
22292617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri};
22392617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
22492617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri[object,local,uuid("0a233719-3960-4578-9d7c-203b8b1d9cc1")]
22592617aeac109481258f0c3863d09c1b8903d438bLuca Barbieriinterface ID3D11ShaderReflection
22692617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri{
22792617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	HRESULT GetDesc(
228b6b3fbcdb14faf5a5be66112a06d3406e7a46998Luca Barbieri		[out] D3D11_SHADER_DESC *a
22992617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	);
23092617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
23192617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	ID3D11ShaderReflectionConstantBuffer* GetConstantBufferByIndex(
232b6b3fbcdb14faf5a5be66112a06d3406e7a46998Luca Barbieri		[in] UINT a
23392617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	);
23492617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
23592617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	ID3D11ShaderReflectionConstantBuffer* GetConstantBufferByName(
236b6b3fbcdb14faf5a5be66112a06d3406e7a46998Luca Barbieri		[in] LPCSTR a
23792617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	);
23892617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
23992617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	HRESULT GetResourceBindingDesc(
240b6b3fbcdb14faf5a5be66112a06d3406e7a46998Luca Barbieri		[in] UINT a,
241b6b3fbcdb14faf5a5be66112a06d3406e7a46998Luca Barbieri		[out] D3D11_SHADER_INPUT_BIND_DESC *b
24292617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	);
24392617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
24492617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	HRESULT GetInputParameterDesc(
245b6b3fbcdb14faf5a5be66112a06d3406e7a46998Luca Barbieri		[in] UINT a,
246b6b3fbcdb14faf5a5be66112a06d3406e7a46998Luca Barbieri		[out] D3D11_SIGNATURE_PARAMETER_DESC *b
24792617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	);
24892617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
24992617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	HRESULT GetOutputParameterDesc
25092617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	(
251b6b3fbcdb14faf5a5be66112a06d3406e7a46998Luca Barbieri		[in] UINT a,
252b6b3fbcdb14faf5a5be66112a06d3406e7a46998Luca Barbieri		[out] D3D11_SIGNATURE_PARAMETER_DESC *b
25392617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	);
25492617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
25592617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	HRESULT GetPatchConstantParameterDesc(
256b6b3fbcdb14faf5a5be66112a06d3406e7a46998Luca Barbieri		[in] UINT a,
257b6b3fbcdb14faf5a5be66112a06d3406e7a46998Luca Barbieri		[out] D3D11_SIGNATURE_PARAMETER_DESC *b
25892617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	);
25992617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
26092617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	ID3D11ShaderReflectionVariable* GetVariableByName(
261b6b3fbcdb14faf5a5be66112a06d3406e7a46998Luca Barbieri		[in] LPCSTR a
26292617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	);
26392617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
26492617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	HRESULT GetResourceBindingDescByName(
265b6b3fbcdb14faf5a5be66112a06d3406e7a46998Luca Barbieri		[in] LPCSTR a,
266b6b3fbcdb14faf5a5be66112a06d3406e7a46998Luca Barbieri		[out] D3D11_SHADER_INPUT_BIND_DESC *b
26792617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	);
26892617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
26992617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT GetMovInstructionCount();
27092617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT GetMovcInstructionCount();
27192617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT GetConversionInstructionCount();
27292617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT GetBitwiseInstructionCount();
27392617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	D3D_PRIMITIVE GetGSInputPrimitive();
27492617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	BOOL IsSampleFrequencyShader();
27592617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT GetNumInterfaceSlots();
27692617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
27792617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	HRESULT GetMinFeatureLevel(
278b6b3fbcdb14faf5a5be66112a06d3406e7a46998Luca Barbieri		[out] D3D_FEATURE_LEVEL* a
27992617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	);
28092617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
28192617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT GetThreadGroupSize(
282b6b3fbcdb14faf5a5be66112a06d3406e7a46998Luca Barbieri		[out,optional] UINT* a,
283b6b3fbcdb14faf5a5be66112a06d3406e7a46998Luca Barbieri		[out,optional] UINT* b,
284b6b3fbcdb14faf5a5be66112a06d3406e7a46998Luca Barbieri		[out,optional] UINT* c
28592617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	);
28692617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri};
28792617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
288