/************************************************************************** * * 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 "d3dcommon.idl"; typedef enum D3D11_SHADER_VERSION_TYPE { D3D11_SHVER_PIXEL_SHADER, D3D11_SHVER_VERTEX_SHADER, D3D11_SHVER_GEOMETRY_SHADER, D3D11_SHVER_HULL_SHADER, D3D11_SHVER_DOMAIN_SHADER, D3D11_SHVER_COMPUTE_SHADER, } D3D11_SHADER_VERSION_TYPE; cpp_quote("#define D3D11_SHVER_GET_TYPE(v) (((v) >> 16) & 0xffff)") cpp_quote("#define D3D11_SHVER_GET_MAJOR(v) (((v) >> 4) & 0xf)") cpp_quote("#define D3D11_SHVER_GET_MINOR(v) (((v) >> 0) & 0xf)") typedef D3D_RESOURCE_RETURN_TYPE D3D11_RESOURCE_RETURN_TYPE; typedef D3D_CBUFFER_TYPE D3D11_CBUFFER_TYPE; typedef struct _D3D11_SIGNATURE_PARAMETER_DESC { LPCSTR SemanticName; UINT SemanticIndex; UINT Register; D3D_NAME SystemValueType; D3D_REGISTER_COMPONENT_TYPE ComponentType; BYTE Mask; BYTE ReadWriteMask; UINT Stream; } D3D11_SIGNATURE_PARAMETER_DESC; typedef struct _D3D11_SHADER_BUFFER_DESC { LPCSTR Name; D3D_CBUFFER_TYPE Type; UINT Variables; UINT Size; UINT uFlags; } D3D11_SHADER_BUFFER_DESC; typedef struct _D3D11_SHADER_VARIABLE_DESC { LPCSTR Name; UINT StartOffset; UINT Size; UINT uFlags; LPVOID DefaultValue; UINT StartTexture; UINT TextureSize; UINT StartSampler; UINT SamplerSize; } D3D11_SHADER_VARIABLE_DESC; typedef struct _D3D11_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; } D3D11_SHADER_TYPE_DESC; typedef D3D_TESSELLATOR_DOMAIN D3D11_TESSELLATOR_DOMAIN; typedef D3D_TESSELLATOR_PARTITIONING D3D11_TESSELLATOR_PARTITIONING; typedef D3D_TESSELLATOR_OUTPUT_PRIMITIVE D3D11_TESSELLATOR_OUTPUT_PRIMITIVE; typedef struct _D3D11_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; D3D_PRIMITIVE InputPrimitive; UINT PatchConstantParameters; UINT cGSInstanceCount; UINT cControlPoints; D3D_TESSELLATOR_OUTPUT_PRIMITIVE HSOutputPrimitive; D3D_TESSELLATOR_PARTITIONING HSPartitioning; D3D_TESSELLATOR_DOMAIN TessellatorDomain; UINT cBarrierInstructions; UINT cInterlockedInstructions; UINT cTextureStoreInstructions; } D3D11_SHADER_DESC; typedef struct _D3D11_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; } D3D11_SHADER_INPUT_BIND_DESC; [local, object, uuid("6e6ffa6a-9bae-4613-a51e-91652d508c21")] interface ID3D11ShaderReflectionType { HRESULT GetDesc( [out] D3D11_SHADER_TYPE_DESC *pDesc ); ID3D11ShaderReflectionType* GetMemberTypeByIndex( [in] UINT Index ); ID3D11ShaderReflectionType* GetMemberTypeByName( [in] LPCSTR Name ); LPCSTR GetMemberTypeName( [in] UINT Index ); HRESULT IsEqual( [in] ID3D11ShaderReflectionType* pType ); ID3D11ShaderReflectionType* GetSubType(); ID3D11ShaderReflectionType* GetBaseClass(); UINT GetNumInterfaces(); ID3D11ShaderReflectionType* GetInterfaceByIndex( [in] UINT uIndex ); HRESULT IsOfType( [in] ID3D11ShaderReflectionType* pType ); HRESULT ImplementsInterface( [in] ID3D11ShaderReflectionType* pBase ); }; interface ID3D11ShaderReflectionConstantBuffer; [object, local, uuid("51f23923-f3e5-4bd1-91cb-606177d8db4c")] interface ID3D11ShaderReflectionVariable { HRESULT GetDesc( [out] D3D11_SHADER_VARIABLE_DESC *pDesc ); ID3D11ShaderReflectionType* GetType(); ID3D11ShaderReflectionConstantBuffer* GetBuffer(); UINT GetInterfaceSlot( [in] UINT uArrayIndex ); }; [object, local, uuid("eb62d63d-93dd-4318-8ae8-c6f83ad371b8")] interface ID3D11ShaderReflectionConstantBuffer { HRESULT GetDesc( [out] D3D11_SHADER_BUFFER_DESC *pDesc ); ID3D11ShaderReflectionVariable* GetVariableByIndex( [in] UINT Index ); ID3D11ShaderReflectionVariable* GetVariableByName( [in] LPCSTR Name ); }; [object,local,uuid("0a233719-3960-4578-9d7c-203b8b1d9cc1")] interface ID3D11ShaderReflection { HRESULT GetDesc( [out] D3D11_SHADER_DESC *pDesc ); ID3D11ShaderReflectionConstantBuffer* GetConstantBufferByIndex( [in] UINT Index ); ID3D11ShaderReflectionConstantBuffer* GetConstantBufferByName( [in] LPCSTR Name ); HRESULT GetResourceBindingDesc( [in] UINT ResourceIndex, [out] D3D11_SHADER_INPUT_BIND_DESC *pDesc ); HRESULT GetInputParameterDesc( [in] UINT ParameterIndex, [out] D3D11_SIGNATURE_PARAMETER_DESC *pDesc ); HRESULT GetOutputParameterDesc ( [in] UINT ParameterIndex, [out] D3D11_SIGNATURE_PARAMETER_DESC *pDesc ); HRESULT GetPatchConstantParameterDesc( [in] UINT ParameterIndex, [out] D3D11_SIGNATURE_PARAMETER_DESC *pDesc ); ID3D11ShaderReflectionVariable* GetVariableByName( [in] LPCSTR Name ); HRESULT GetResourceBindingDescByName( [in] LPCSTR Name, [out] D3D11_SHADER_INPUT_BIND_DESC *pDesc ); UINT GetMovInstructionCount(); UINT GetMovcInstructionCount(); UINT GetConversionInstructionCount(); UINT GetBitwiseInstructionCount(); D3D_PRIMITIVE GetGSInputPrimitive(); BOOL IsSampleFrequencyShader(); UINT GetNumInterfaceSlots(); HRESULT GetMinFeatureLevel( [out] D3D_FEATURE_LEVEL* pLevel ); UINT GetThreadGroupSize( [out,optional] UINT* pSizeX, [out,optional] UINT* pSizeY, [out,optional] UINT* pSizeZ ); };