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 "d3d10.idl";
2892617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
2992617aeac109481258f0c3863d09c1b8903d438bLuca Barbiericpp_quote("#define D3D10_TX_VERSION(a, b) (('T' << 24) | ('X' << 16) | ((a) << 8) | (b)))")
3092617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
3192617aeac109481258f0c3863d09c1b8903d438bLuca Barbiericonst unsigned int D3D10_SHADER_DEBUG = (1 << 0);
3292617aeac109481258f0c3863d09c1b8903d438bLuca Barbiericonst unsigned int D3D10_SHADER_SKIP_VALIDATION = (1 << 1);
3392617aeac109481258f0c3863d09c1b8903d438bLuca Barbiericonst unsigned int D3D10_SHADER_SKIP_OPTIMIZATION = (1 << 2);
3492617aeac109481258f0c3863d09c1b8903d438bLuca Barbiericonst unsigned int D3D10_SHADER_PACK_MATRIX_ROW_MAJOR = (1 << 3);
3592617aeac109481258f0c3863d09c1b8903d438bLuca Barbiericonst unsigned int D3D10_SHADER_PACK_MATRIX_COLUMN_MAJOR = (1 << 4);
3692617aeac109481258f0c3863d09c1b8903d438bLuca Barbiericonst unsigned int D3D10_SHADER_PARTIAL_PRECISION = (1 << 5);
3792617aeac109481258f0c3863d09c1b8903d438bLuca Barbiericonst unsigned int D3D10_SHADER_FORCE_VS_SOFTWARE_NO_OPT = (1 << 6);
3892617aeac109481258f0c3863d09c1b8903d438bLuca Barbiericonst unsigned int D3D10_SHADER_FORCE_PS_SOFTWARE_NO_OPT = (1 << 7);
3992617aeac109481258f0c3863d09c1b8903d438bLuca Barbiericonst unsigned int D3D10_SHADER_NO_PRESHADER = (1 << 8);
4092617aeac109481258f0c3863d09c1b8903d438bLuca Barbiericonst unsigned int D3D10_SHADER_AVOID_FLOW_CONTROL = (1 << 9);
4192617aeac109481258f0c3863d09c1b8903d438bLuca Barbiericonst unsigned int D3D10_SHADER_PREFER_FLOW_CONTROL = (1 << 10);
4292617aeac109481258f0c3863d09c1b8903d438bLuca Barbiericonst unsigned int D3D10_SHADER_ENABLE_STRICTNESS = (1 << 11);
4392617aeac109481258f0c3863d09c1b8903d438bLuca Barbiericonst unsigned int D3D10_SHADER_ENABLE_BACKWARDS_COMPATIBILITY = (1 << 12);
4492617aeac109481258f0c3863d09c1b8903d438bLuca Barbiericonst unsigned int D3D10_SHADER_IEEE_STRICTNESS = (1 << 13);
4592617aeac109481258f0c3863d09c1b8903d438bLuca Barbiericonst unsigned int D3D10_SHADER_WARNINGS_ARE_ERRORS = (1 << 18);
4692617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
4792617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
4892617aeac109481258f0c3863d09c1b8903d438bLuca Barbiericonst unsigned int D3D10_SHADER_OPTIMIZATION_LEVEL0 = (1 << 14);
4992617aeac109481258f0c3863d09c1b8903d438bLuca Barbiericonst unsigned int D3D10_SHADER_OPTIMIZATION_LEVEL1 = 0;
5092617aeac109481258f0c3863d09c1b8903d438bLuca Barbiericonst unsigned int D3D10_SHADER_OPTIMIZATION_LEVEL2 = ((1 << 14) | (1 << 15));
5192617aeac109481258f0c3863d09c1b8903d438bLuca Barbiericonst unsigned int D3D10_SHADER_OPTIMIZATION_LEVEL3 = (1 << 15);
5292617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
5392617aeac109481258f0c3863d09c1b8903d438bLuca Barbieritypedef D3D_SHADER_MACRO D3D10_SHADER_MACRO;
5492617aeac109481258f0c3863d09c1b8903d438bLuca Barbieritypedef D3D10_SHADER_MACRO* LPD3D10_SHADER_MACRO;
5592617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
5692617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
5792617aeac109481258f0c3863d09c1b8903d438bLuca Barbieritypedef D3D_SHADER_VARIABLE_CLASS D3D10_SHADER_VARIABLE_CLASS;
5892617aeac109481258f0c3863d09c1b8903d438bLuca Barbieritypedef D3D10_SHADER_VARIABLE_CLASS* LPD3D10_SHADER_VARIABLE_CLASS;
5992617aeac109481258f0c3863d09c1b8903d438bLuca Barbieritypedef D3D_SHADER_VARIABLE_FLAGS D3D10_SHADER_VARIABLE_FLAGS;
6092617aeac109481258f0c3863d09c1b8903d438bLuca Barbieritypedef D3D10_SHADER_VARIABLE_FLAGS* LPD3D10_SHADER_VARIABLE_FLAGS;
6192617aeac109481258f0c3863d09c1b8903d438bLuca Barbieritypedef D3D_SHADER_VARIABLE_TYPE D3D10_SHADER_VARIABLE_TYPE;
6292617aeac109481258f0c3863d09c1b8903d438bLuca Barbieritypedef D3D10_SHADER_VARIABLE_TYPE* LPD3D10_SHADER_VARIABLE_TYPE;
6392617aeac109481258f0c3863d09c1b8903d438bLuca Barbieritypedef D3D_SHADER_INPUT_FLAGS D3D10_SHADER_INPUT_FLAGS;
6492617aeac109481258f0c3863d09c1b8903d438bLuca Barbieritypedef D3D10_SHADER_INPUT_FLAGS* LPD3D10_SHADER_INPUT_FLAGS;
6592617aeac109481258f0c3863d09c1b8903d438bLuca Barbieritypedef D3D_SHADER_INPUT_TYPE D3D10_SHADER_INPUT_TYPE;
6692617aeac109481258f0c3863d09c1b8903d438bLuca Barbieritypedef D3D10_SHADER_INPUT_TYPE* LPD3D10_SHADER_INPUT_TYPE;
6792617aeac109481258f0c3863d09c1b8903d438bLuca Barbieritypedef D3D_SHADER_CBUFFER_FLAGS D3D10_SHADER_CBUFFER_FLAGS;
6892617aeac109481258f0c3863d09c1b8903d438bLuca Barbieritypedef D3D10_SHADER_CBUFFER_FLAGS* LPD3D10_SHADER_CBUFFER_FLAGS;
6992617aeac109481258f0c3863d09c1b8903d438bLuca Barbieritypedef D3D_CBUFFER_TYPE D3D10_CBUFFER_TYPE;
7092617aeac109481258f0c3863d09c1b8903d438bLuca Barbieritypedef D3D10_CBUFFER_TYPE* LPD3D10_CBUFFER_TYPE;
7192617aeac109481258f0c3863d09c1b8903d438bLuca Barbieritypedef D3D_NAME D3D10_NAME;
7292617aeac109481258f0c3863d09c1b8903d438bLuca Barbieritypedef D3D_RESOURCE_RETURN_TYPE D3D10_RESOURCE_RETURN_TYPE;
7392617aeac109481258f0c3863d09c1b8903d438bLuca Barbieritypedef D3D_REGISTER_COMPONENT_TYPE D3D10_REGISTER_COMPONENT_TYPE;
7492617aeac109481258f0c3863d09c1b8903d438bLuca Barbieritypedef D3D_INCLUDE_TYPE D3D10_INCLUDE_TYPE;
7592617aeac109481258f0c3863d09c1b8903d438bLuca Barbieritypedef ID3DInclude* LPD3D10INCLUDE;
7692617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
7792617aeac109481258f0c3863d09c1b8903d438bLuca Barbiericpp_quote("#define D3D10_SHVER_GET_TYPE(v) (((v) >> 16) & 0xffff)")
7892617aeac109481258f0c3863d09c1b8903d438bLuca Barbiericpp_quote("#define D3D10_SHVER_GET_MAJOR(v) (((v) >> 4) & 0xf)")
7992617aeac109481258f0c3863d09c1b8903d438bLuca Barbiericpp_quote("#define D3D10_SHVER_GET_MINOR(v) (((v) >> 0) & 0xf)")
8092617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
8192617aeac109481258f0c3863d09c1b8903d438bLuca Barbieritypedef struct _D3D10_SIGNATURE_PARAMETER_DESC
8292617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri{
8392617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	LPCSTR SemanticName;
8492617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT SemanticIndex;
8592617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT Register;
8692617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	D3D_NAME SystemValueType;
8792617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	D3D_REGISTER_COMPONENT_TYPE ComponentType;
8892617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	BYTE Mask;
8992617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	BYTE ReadWriteMask;
9092617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri} D3D10_SIGNATURE_PARAMETER_DESC;
9192617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
9292617aeac109481258f0c3863d09c1b8903d438bLuca Barbieritypedef struct _D3D10_SHADER_BUFFER_DESC
9392617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri{
9492617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	LPCSTR Name;
9592617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	D3D_CBUFFER_TYPE Type;
9692617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT Variables;
9792617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT Size;
9892617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT uFlags;
9992617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri} D3D10_SHADER_BUFFER_DESC;
10092617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
10192617aeac109481258f0c3863d09c1b8903d438bLuca Barbieritypedef struct _D3D10_SHADER_VARIABLE_DESC
10292617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri{
10392617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	LPCSTR Name;
10492617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT StartOffset;
10592617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT Size;
10692617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT uFlags;
10792617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	LPVOID DefaultValue;
10892617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT StartTexture;
10992617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT TextureSize;
11092617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT StartSampler;
11192617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT SamplerSize;
11292617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri} D3D10_SHADER_VARIABLE_DESC;
11392617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
11492617aeac109481258f0c3863d09c1b8903d438bLuca Barbieritypedef struct _D3D10_SHADER_TYPE_DESC
11592617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri{
11692617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	D3D_SHADER_VARIABLE_CLASS Class;
11792617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	D3D_SHADER_VARIABLE_TYPE Type;
11892617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT Rows;
11992617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT Columns;
12092617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT Elements;
12192617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT Members;
12292617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT Offset;
12392617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	LPCSTR Name;
12492617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri} D3D10_SHADER_TYPE_DESC;
12592617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
12692617aeac109481258f0c3863d09c1b8903d438bLuca Barbieritypedef D3D_TESSELLATOR_DOMAIN D3D10_TESSELLATOR_DOMAIN;
12792617aeac109481258f0c3863d09c1b8903d438bLuca Barbieritypedef D3D_TESSELLATOR_PARTITIONING D3D10_TESSELLATOR_PARTITIONING;
12892617aeac109481258f0c3863d09c1b8903d438bLuca Barbieritypedef D3D_TESSELLATOR_OUTPUT_PRIMITIVE D3D10_TESSELLATOR_OUTPUT_PRIMITIVE;
12992617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
13092617aeac109481258f0c3863d09c1b8903d438bLuca Barbieritypedef struct _D3D10_SHADER_DESC
13192617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri{
13292617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT Version;
13392617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	LPCSTR Creator;
13492617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT Flags;
13592617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
13692617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT ConstantBuffers;
13792617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT BoundResources;
13892617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT InputParameters;
13992617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT OutputParameters;
14092617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
14192617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT InstructionCount;
14292617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT TempRegisterCount;
14392617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT TempArrayCount;
14492617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT DefCount;
14592617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT DclCount;
14692617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT TextureNormalInstructions;
14792617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT TextureLoadInstructions;
14892617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT TextureCompInstructions;
14992617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT TextureBiasInstructions;
15092617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT TextureGradientInstructions;
15192617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT FloatInstructionCount;
15292617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT IntInstructionCount;
15392617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT UintInstructionCount;
15492617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT StaticFlowControlCount;
15592617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT DynamicFlowControlCount;
15692617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT MacroInstructionCount;
15792617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT ArrayInstructionCount;
15892617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT CutInstructionCount;
15992617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT EmitInstructionCount;
16092617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	D3D_PRIMITIVE_TOPOLOGY GSOutputTopology;
16192617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT GSMaxOutputVertexCount;
16292617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri} D3D10_SHADER_DESC;
16392617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
16492617aeac109481258f0c3863d09c1b8903d438bLuca Barbieritypedef struct _D3D10_SHADER_INPUT_BIND_DESC
16592617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri{
16692617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	LPCSTR Name;
16792617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	D3D_SHADER_INPUT_TYPE Type;
16892617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT BindPoint;
16992617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT BindCount;
17092617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
17192617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT uFlags;
17292617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	D3D_RESOURCE_RETURN_TYPE ReturnType;
17392617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	D3D_SRV_DIMENSION Dimension;
17492617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	UINT NumSamples;
17592617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri} D3D10_SHADER_INPUT_BIND_DESC;
17692617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
17792617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri[local, object, uuid("C530AD7D-9B16-4395-A979-BA2ECFF83ADD")]
17892617aeac109481258f0c3863d09c1b8903d438bLuca Barbieriinterface ID3D10ShaderReflectionType
17992617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri{
18092617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	HRESULT GetDesc(
181b6b3fbcdb14faf5a5be66112a06d3406e7a46998Luca Barbieri		[out] D3D10_SHADER_TYPE_DESC *a
18292617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	);
18392617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
18492617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	ID3D10ShaderReflectionType* GetMemberTypeByIndex(
185b6b3fbcdb14faf5a5be66112a06d3406e7a46998Luca Barbieri		[in] UINT a
18692617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	);
18792617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
18892617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	ID3D10ShaderReflectionType* GetMemberTypeByName(
189b6b3fbcdb14faf5a5be66112a06d3406e7a46998Luca Barbieri		[in] LPCSTR a
19092617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	);
19192617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
19292617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	LPCSTR GetMemberTypeName(
193b6b3fbcdb14faf5a5be66112a06d3406e7a46998Luca Barbieri		[in] UINT a
19492617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	);
19592617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri};
19692617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
19792617aeac109481258f0c3863d09c1b8903d438bLuca Barbieriinterface ID3D10ShaderReflectionConstantBuffer;
19892617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
19992617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri[object, local, uuid("1BF63C95-2650-405d-99C1-3636BD1DA0A1")]
20092617aeac109481258f0c3863d09c1b8903d438bLuca Barbieriinterface ID3D10ShaderReflectionVariable
20192617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri{
20292617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	HRESULT GetDesc(
203b6b3fbcdb14faf5a5be66112a06d3406e7a46998Luca Barbieri		[out] D3D10_SHADER_VARIABLE_DESC *a
20492617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	);
20592617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
20692617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	ID3D10ShaderReflectionType* GetType();
20792617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri};
20892617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
20992617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri[object, local, uuid("66C66A94-DDDD-4b62-A66A-F0DA33C2B4D0")]
21092617aeac109481258f0c3863d09c1b8903d438bLuca Barbieriinterface ID3D10ShaderReflectionConstantBuffer
21192617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri{
21292617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	HRESULT GetDesc(
213b6b3fbcdb14faf5a5be66112a06d3406e7a46998Luca Barbieri		[out] D3D10_SHADER_BUFFER_DESC *a
21492617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	);
21592617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
21692617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	ID3D10ShaderReflectionVariable* GetVariableByIndex(
217b6b3fbcdb14faf5a5be66112a06d3406e7a46998Luca Barbieri		[in] UINT a
21892617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	);
21992617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
22092617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	ID3D10ShaderReflectionVariable* GetVariableByName(
221b6b3fbcdb14faf5a5be66112a06d3406e7a46998Luca Barbieri		[in] LPCSTR a
22292617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	);
22392617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri};
22492617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
22592617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri[object,local,uuid("D40E20B6-F8F7-42ad-AB20-4BAF8F15DFAA")]
22692617aeac109481258f0c3863d09c1b8903d438bLuca Barbieriinterface ID3D10ShaderReflection : IUnknown
22792617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri{
22892617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	HRESULT GetDesc(
229b6b3fbcdb14faf5a5be66112a06d3406e7a46998Luca Barbieri		[out] D3D10_SHADER_DESC *a
23092617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	);
23192617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
23292617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	ID3D10ShaderReflectionConstantBuffer* GetConstantBufferByIndex(
233b6b3fbcdb14faf5a5be66112a06d3406e7a46998Luca Barbieri		[in] UINT a
23492617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	);
23592617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
23692617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	ID3D10ShaderReflectionConstantBuffer* GetConstantBufferByName(
237b6b3fbcdb14faf5a5be66112a06d3406e7a46998Luca Barbieri		[in] LPCSTR a
23892617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	);
23992617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
24092617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	HRESULT GetResourceBindingDesc(
241b6b3fbcdb14faf5a5be66112a06d3406e7a46998Luca Barbieri		[in] UINT a,
242b6b3fbcdb14faf5a5be66112a06d3406e7a46998Luca Barbieri		[out] D3D10_SHADER_INPUT_BIND_DESC *b
24392617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	);
24492617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
24592617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	HRESULT GetInputParameterDesc(
246b6b3fbcdb14faf5a5be66112a06d3406e7a46998Luca Barbieri		[in] UINT a,
247b6b3fbcdb14faf5a5be66112a06d3406e7a46998Luca Barbieri		[out] D3D10_SIGNATURE_PARAMETER_DESC *b
24892617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	);
24992617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
25092617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	HRESULT GetOutputParameterDesc
25192617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	(
252b6b3fbcdb14faf5a5be66112a06d3406e7a46998Luca Barbieri		[in] UINT a,
253b6b3fbcdb14faf5a5be66112a06d3406e7a46998Luca Barbieri		[out] D3D10_SIGNATURE_PARAMETER_DESC *b
25492617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri	);
25592617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri};
25692617aeac109481258f0c3863d09c1b8903d438bLuca Barbieri
25792617aeac109481258f0c3863d09c1b8903d438bLuca BarbieriHRESULT D3D10CompileShader(LPCSTR pSrcData, SIZE_T SrcDataLen, LPCSTR pFileName, const D3D10_SHADER_MACRO* pDefines, LPD3D10INCLUDE pInclude,
2586c598c78bd17642d731cf57b8369cc794f64ba2fLuca Barbieri	LPCSTR pFunctionName, LPCSTR pProfile, UINT Flags, ID3D10Blob** ppShader, ID3D10Blob** ppErrorMsgs);
25992617aeac109481258f0c3863d09c1b8903d438bLuca BarbieriHRESULT D3D10DisassembleShader(const void *pShader, SIZE_T BytecodeLength, BOOL EnableColorCode, LPCSTR pComments, ID3D10Blob** ppDisassembly);
26092617aeac109481258f0c3863d09c1b8903d438bLuca BarbieriLPCSTR D3D10GetPixelShaderProfile(ID3D10Device *pDevice);
26192617aeac109481258f0c3863d09c1b8903d438bLuca BarbieriLPCSTR D3D10GetVertexShaderProfile(ID3D10Device *pDevice);
26292617aeac109481258f0c3863d09c1b8903d438bLuca BarbieriLPCSTR D3D10GetGeometryShaderProfile(ID3D10Device *pDevice);
26392617aeac109481258f0c3863d09c1b8903d438bLuca BarbieriHRESULT D3D10ReflectShader(const void *pShaderBytecode, SIZE_T BytecodeLength, ID3D10ShaderReflection **ppReflector);
26492617aeac109481258f0c3863d09c1b8903d438bLuca BarbieriHRESULT D3D10PreprocessShader(LPCSTR pSrcData, SIZE_T SrcDataSize, LPCSTR pFileName, const D3D10_SHADER_MACRO* pDefines,
2656c598c78bd17642d731cf57b8369cc794f64ba2fLuca Barbieri	LPD3D10INCLUDE pInclude, ID3D10Blob** ppShaderText, ID3D10Blob** ppErrorMsgs);
26692617aeac109481258f0c3863d09c1b8903d438bLuca BarbieriHRESULT D3D10GetInputSignatureBlob(const void *pShaderBytecode, SIZE_T BytecodeLength, ID3D10Blob **ppSignatureBlob);
26792617aeac109481258f0c3863d09c1b8903d438bLuca BarbieriHRESULT D3D10GetOutputSignatureBlob(const void *pShaderBytecode, SIZE_T BytecodeLength, ID3D10Blob **ppSignatureBlob);
26892617aeac109481258f0c3863d09c1b8903d438bLuca BarbieriHRESULT D3D10GetInputAndOutputSignatureBlob(const void *pShaderBytecode, SIZE_T BytecodeLength, ID3D10Blob **ppSignatureBlob);
26992617aeac109481258f0c3863d09c1b8903d438bLuca BarbieriHRESULT D3D10GetShaderDebugInfo(const void *pShaderBytecode, SIZE_T BytecodeLength, ID3D10Blob** ppDebugInfo);
270