| /************************************************************************** |
| * |
| * Copyright 2010 Luca Barbieri |
| * |
| * Permission is hereby granted, free of charge, to any person obtaining |
| * a copy of this software and associated documentation files (the |
| * "Software"), to deal in the Software without restriction, including |
| * without limitation the rights to use, copy, modify, merge, publish, |
| * distribute, sublicense, and/or sell copies of the Software, and to |
| * permit persons to whom the Software is furnished to do so, subject to |
| * the following conditions: |
| * |
| * The above copyright notice and this permission notice (including the |
| * next paragraph) shall be included in all copies or substantial |
| * portions of the Software. |
| * |
| * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
| * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
| * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. |
| * IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE |
| * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION |
| * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION |
| * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
| * |
| **************************************************************************/ |
| |
| import "d3d10.idl"; |
| |
| cpp_quote("#define D3D10_TX_VERSION(a, b) (('T' << 24) | ('X' << 16) | ((a) << 8) | (b)))") |
| |
| const unsigned int D3D10_SHADER_DEBUG = (1 << 0); |
| const unsigned int D3D10_SHADER_SKIP_VALIDATION = (1 << 1); |
| const unsigned int D3D10_SHADER_SKIP_OPTIMIZATION = (1 << 2); |
| const unsigned int D3D10_SHADER_PACK_MATRIX_ROW_MAJOR = (1 << 3); |
| const unsigned int D3D10_SHADER_PACK_MATRIX_COLUMN_MAJOR = (1 << 4); |
| const unsigned int D3D10_SHADER_PARTIAL_PRECISION = (1 << 5); |
| const unsigned int D3D10_SHADER_FORCE_VS_SOFTWARE_NO_OPT = (1 << 6); |
| const unsigned int D3D10_SHADER_FORCE_PS_SOFTWARE_NO_OPT = (1 << 7); |
| const unsigned int D3D10_SHADER_NO_PRESHADER = (1 << 8); |
| const unsigned int D3D10_SHADER_AVOID_FLOW_CONTROL = (1 << 9); |
| const unsigned int D3D10_SHADER_PREFER_FLOW_CONTROL = (1 << 10); |
| const unsigned int D3D10_SHADER_ENABLE_STRICTNESS = (1 << 11); |
| const unsigned int D3D10_SHADER_ENABLE_BACKWARDS_COMPATIBILITY = (1 << 12); |
| const unsigned int D3D10_SHADER_IEEE_STRICTNESS = (1 << 13); |
| const unsigned int D3D10_SHADER_WARNINGS_ARE_ERRORS = (1 << 18); |
| |
| |
| const unsigned int D3D10_SHADER_OPTIMIZATION_LEVEL0 = (1 << 14); |
| const unsigned int D3D10_SHADER_OPTIMIZATION_LEVEL1 = 0; |
| const unsigned int D3D10_SHADER_OPTIMIZATION_LEVEL2 = ((1 << 14) | (1 << 15)); |
| const unsigned int D3D10_SHADER_OPTIMIZATION_LEVEL3 = (1 << 15); |
| |
| typedef D3D_SHADER_MACRO D3D10_SHADER_MACRO; |
| typedef D3D10_SHADER_MACRO* LPD3D10_SHADER_MACRO; |
| |
| |
| typedef D3D_SHADER_VARIABLE_CLASS D3D10_SHADER_VARIABLE_CLASS; |
| typedef D3D10_SHADER_VARIABLE_CLASS* LPD3D10_SHADER_VARIABLE_CLASS; |
| typedef D3D_SHADER_VARIABLE_FLAGS D3D10_SHADER_VARIABLE_FLAGS; |
| typedef D3D10_SHADER_VARIABLE_FLAGS* LPD3D10_SHADER_VARIABLE_FLAGS; |
| typedef D3D_SHADER_VARIABLE_TYPE D3D10_SHADER_VARIABLE_TYPE; |
| typedef D3D10_SHADER_VARIABLE_TYPE* LPD3D10_SHADER_VARIABLE_TYPE; |
| typedef D3D_SHADER_INPUT_FLAGS D3D10_SHADER_INPUT_FLAGS; |
| typedef D3D10_SHADER_INPUT_FLAGS* LPD3D10_SHADER_INPUT_FLAGS; |
| typedef D3D_SHADER_INPUT_TYPE D3D10_SHADER_INPUT_TYPE; |
| typedef D3D10_SHADER_INPUT_TYPE* LPD3D10_SHADER_INPUT_TYPE; |
| typedef D3D_SHADER_CBUFFER_FLAGS D3D10_SHADER_CBUFFER_FLAGS; |
| typedef D3D10_SHADER_CBUFFER_FLAGS* LPD3D10_SHADER_CBUFFER_FLAGS; |
| typedef D3D_CBUFFER_TYPE D3D10_CBUFFER_TYPE; |
| typedef D3D10_CBUFFER_TYPE* LPD3D10_CBUFFER_TYPE; |
| typedef D3D_NAME D3D10_NAME; |
| typedef D3D_RESOURCE_RETURN_TYPE D3D10_RESOURCE_RETURN_TYPE; |
| typedef D3D_REGISTER_COMPONENT_TYPE D3D10_REGISTER_COMPONENT_TYPE; |
| typedef D3D_INCLUDE_TYPE D3D10_INCLUDE_TYPE; |
| typedef ID3DInclude* LPD3D10INCLUDE; |
| |
| cpp_quote("#define D3D10_SHVER_GET_TYPE(v) (((v) >> 16) & 0xffff)") |
| cpp_quote("#define D3D10_SHVER_GET_MAJOR(v) (((v) >> 4) & 0xf)") |
| cpp_quote("#define D3D10_SHVER_GET_MINOR(v) (((v) >> 0) & 0xf)") |
| |
| typedef struct _D3D10_SIGNATURE_PARAMETER_DESC |
| { |
| LPCSTR SemanticName; |
| UINT SemanticIndex; |
| UINT Register; |
| D3D_NAME SystemValueType; |
| D3D_REGISTER_COMPONENT_TYPE ComponentType; |
| BYTE Mask; |
| BYTE ReadWriteMask; |
| } D3D10_SIGNATURE_PARAMETER_DESC; |
| |
| typedef struct _D3D10_SHADER_BUFFER_DESC |
| { |
| LPCSTR Name; |
| D3D_CBUFFER_TYPE Type; |
| UINT Variables; |
| UINT Size; |
| UINT uFlags; |
| } D3D10_SHADER_BUFFER_DESC; |
| |
| typedef struct _D3D10_SHADER_VARIABLE_DESC |
| { |
| LPCSTR Name; |
| UINT StartOffset; |
| UINT Size; |
| UINT uFlags; |
| LPVOID DefaultValue; |
| UINT StartTexture; |
| UINT TextureSize; |
| UINT StartSampler; |
| UINT SamplerSize; |
| } D3D10_SHADER_VARIABLE_DESC; |
| |
| typedef struct _D3D10_SHADER_TYPE_DESC |
| { |
| D3D_SHADER_VARIABLE_CLASS Class; |
| D3D_SHADER_VARIABLE_TYPE Type; |
| UINT Rows; |
| UINT Columns; |
| UINT Elements; |
| UINT Members; |
| UINT Offset; |
| LPCSTR Name; |
| } D3D10_SHADER_TYPE_DESC; |
| |
| typedef D3D_TESSELLATOR_DOMAIN D3D10_TESSELLATOR_DOMAIN; |
| typedef D3D_TESSELLATOR_PARTITIONING D3D10_TESSELLATOR_PARTITIONING; |
| typedef D3D_TESSELLATOR_OUTPUT_PRIMITIVE D3D10_TESSELLATOR_OUTPUT_PRIMITIVE; |
| |
| typedef struct _D3D10_SHADER_DESC |
| { |
| UINT Version; |
| LPCSTR Creator; |
| UINT Flags; |
| |
| UINT ConstantBuffers; |
| UINT BoundResources; |
| UINT InputParameters; |
| UINT OutputParameters; |
| |
| UINT InstructionCount; |
| UINT TempRegisterCount; |
| UINT TempArrayCount; |
| UINT DefCount; |
| UINT DclCount; |
| UINT TextureNormalInstructions; |
| UINT TextureLoadInstructions; |
| UINT TextureCompInstructions; |
| UINT TextureBiasInstructions; |
| UINT TextureGradientInstructions; |
| UINT FloatInstructionCount; |
| UINT IntInstructionCount; |
| UINT UintInstructionCount; |
| UINT StaticFlowControlCount; |
| UINT DynamicFlowControlCount; |
| UINT MacroInstructionCount; |
| UINT ArrayInstructionCount; |
| UINT CutInstructionCount; |
| UINT EmitInstructionCount; |
| D3D_PRIMITIVE_TOPOLOGY GSOutputTopology; |
| UINT GSMaxOutputVertexCount; |
| } D3D10_SHADER_DESC; |
| |
| typedef struct _D3D10_SHADER_INPUT_BIND_DESC |
| { |
| LPCSTR Name; |
| D3D_SHADER_INPUT_TYPE Type; |
| UINT BindPoint; |
| UINT BindCount; |
| |
| UINT uFlags; |
| D3D_RESOURCE_RETURN_TYPE ReturnType; |
| D3D_SRV_DIMENSION Dimension; |
| UINT NumSamples; |
| } D3D10_SHADER_INPUT_BIND_DESC; |
| |
| [local, object, uuid("C530AD7D-9B16-4395-A979-BA2ECFF83ADD")] |
| interface ID3D10ShaderReflectionType |
| { |
| HRESULT GetDesc( |
| [out] D3D10_SHADER_TYPE_DESC *a |
| ); |
| |
| ID3D10ShaderReflectionType* GetMemberTypeByIndex( |
| [in] UINT a |
| ); |
| |
| ID3D10ShaderReflectionType* GetMemberTypeByName( |
| [in] LPCSTR a |
| ); |
| |
| LPCSTR GetMemberTypeName( |
| [in] UINT a |
| ); |
| }; |
| |
| interface ID3D10ShaderReflectionConstantBuffer; |
| |
| [object, local, uuid("1BF63C95-2650-405d-99C1-3636BD1DA0A1")] |
| interface ID3D10ShaderReflectionVariable |
| { |
| HRESULT GetDesc( |
| [out] D3D10_SHADER_VARIABLE_DESC *a |
| ); |
| |
| ID3D10ShaderReflectionType* GetType(); |
| }; |
| |
| [object, local, uuid("66C66A94-DDDD-4b62-A66A-F0DA33C2B4D0")] |
| interface ID3D10ShaderReflectionConstantBuffer |
| { |
| HRESULT GetDesc( |
| [out] D3D10_SHADER_BUFFER_DESC *a |
| ); |
| |
| ID3D10ShaderReflectionVariable* GetVariableByIndex( |
| [in] UINT a |
| ); |
| |
| ID3D10ShaderReflectionVariable* GetVariableByName( |
| [in] LPCSTR a |
| ); |
| }; |
| |
| [object,local,uuid("D40E20B6-F8F7-42ad-AB20-4BAF8F15DFAA")] |
| interface ID3D10ShaderReflection : IUnknown |
| { |
| HRESULT GetDesc( |
| [out] D3D10_SHADER_DESC *a |
| ); |
| |
| ID3D10ShaderReflectionConstantBuffer* GetConstantBufferByIndex( |
| [in] UINT a |
| ); |
| |
| ID3D10ShaderReflectionConstantBuffer* GetConstantBufferByName( |
| [in] LPCSTR a |
| ); |
| |
| HRESULT GetResourceBindingDesc( |
| [in] UINT a, |
| [out] D3D10_SHADER_INPUT_BIND_DESC *b |
| ); |
| |
| HRESULT GetInputParameterDesc( |
| [in] UINT a, |
| [out] D3D10_SIGNATURE_PARAMETER_DESC *b |
| ); |
| |
| HRESULT GetOutputParameterDesc |
| ( |
| [in] UINT a, |
| [out] D3D10_SIGNATURE_PARAMETER_DESC *b |
| ); |
| }; |
| |
| HRESULT D3D10CompileShader(LPCSTR pSrcData, SIZE_T SrcDataLen, LPCSTR pFileName, const D3D10_SHADER_MACRO* pDefines, LPD3D10INCLUDE pInclude, |
| LPCSTR pFunctionName, LPCSTR pProfile, UINT Flags, ID3D10Blob** ppShader, ID3D10Blob** ppErrorMsgs); |
| HRESULT D3D10DisassembleShader(const void *pShader, SIZE_T BytecodeLength, BOOL EnableColorCode, LPCSTR pComments, ID3D10Blob** ppDisassembly); |
| LPCSTR D3D10GetPixelShaderProfile(ID3D10Device *pDevice); |
| LPCSTR D3D10GetVertexShaderProfile(ID3D10Device *pDevice); |
| LPCSTR D3D10GetGeometryShaderProfile(ID3D10Device *pDevice); |
| HRESULT D3D10ReflectShader(const void *pShaderBytecode, SIZE_T BytecodeLength, ID3D10ShaderReflection **ppReflector); |
| HRESULT D3D10PreprocessShader(LPCSTR pSrcData, SIZE_T SrcDataSize, LPCSTR pFileName, const D3D10_SHADER_MACRO* pDefines, |
| LPD3D10INCLUDE pInclude, ID3D10Blob** ppShaderText, ID3D10Blob** ppErrorMsgs); |
| HRESULT D3D10GetInputSignatureBlob(const void *pShaderBytecode, SIZE_T BytecodeLength, ID3D10Blob **ppSignatureBlob); |
| HRESULT D3D10GetOutputSignatureBlob(const void *pShaderBytecode, SIZE_T BytecodeLength, ID3D10Blob **ppSignatureBlob); |
| HRESULT D3D10GetInputAndOutputSignatureBlob(const void *pShaderBytecode, SIZE_T BytecodeLength, ID3D10Blob **ppSignatureBlob); |
| HRESULT D3D10GetShaderDebugInfo(const void *pShaderBytecode, SIZE_T BytecodeLength, ID3D10Blob** ppDebugInfo); |