|  | /* | 
|  | * Copyright 2020 Paul Gofman for CodeWeavers | 
|  | * | 
|  | * This library is free software; you can redistribute it and/or | 
|  | * modify it under the terms of the GNU Lesser General Public | 
|  | * License as published by the Free Software Foundation; either | 
|  | * version 2.1 of the License, or (at your option) any later version. | 
|  | * | 
|  | * This library is distributed in the hope that it will be useful, | 
|  | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
|  | * Lesser General Public License for more details. | 
|  | * | 
|  | * You should have received a copy of the GNU Lesser General Public | 
|  | * License along with this library; if not, write to the Free Software | 
|  | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA | 
|  | */ | 
|  |  | 
|  | import "oaidl.idl"; | 
|  | import "ocidl.idl"; | 
|  | import "d3dcommon.idl"; | 
|  |  | 
|  | typedef enum D3D12_SHADER_VERSION_TYPE | 
|  | { | 
|  | D3D12_SHVER_PIXEL_SHADER = 0x0, | 
|  | D3D12_SHVER_VERTEX_SHADER = 0x1, | 
|  | D3D12_SHVER_GEOMETRY_SHADER = 0x2, | 
|  | D3D12_SHVER_HULL_SHADER = 0x3, | 
|  | D3D12_SHVER_DOMAIN_SHADER = 0x4, | 
|  | D3D12_SHVER_COMPUTE_SHADER = 0x5, | 
|  | D3D12_SHVER_RESERVED0 = 0xfff0, | 
|  | } D3D12_SHADER_VERSION_TYPE; | 
|  |  | 
|  | cpp_quote("#define D3D12_SHVER_GET_TYPE(v) (((v) >> 16) & 0xffff)") | 
|  | cpp_quote("#define D3D12_SHVER_GET_MAJOR(v) (((v) >> 4) & 0xf)") | 
|  | cpp_quote("#define D3D12_SHVER_GET_MINOR(v) (((v) >> 0) & 0xf)") | 
|  |  | 
|  | typedef struct _D3D12_SHADER_DESC | 
|  | { | 
|  | UINT Version; | 
|  | const char *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; | 
|  | } D3D12_SHADER_DESC; | 
|  |  | 
|  | typedef struct _D3D12_SHADER_VARIABLE_DESC | 
|  | { | 
|  | const char *Name; | 
|  | UINT StartOffset; | 
|  | UINT Size; | 
|  | UINT uFlags; | 
|  | void *DefaultValue; | 
|  | UINT StartTexture; | 
|  | UINT TextureSize; | 
|  | UINT StartSampler; | 
|  | UINT SamplerSize; | 
|  | } D3D12_SHADER_VARIABLE_DESC; | 
|  |  | 
|  | typedef struct _D3D12_SHADER_TYPE_DESC | 
|  | { | 
|  | D3D_SHADER_VARIABLE_CLASS Class; | 
|  | D3D_SHADER_VARIABLE_TYPE Type; | 
|  | UINT Rows; | 
|  | UINT Columns; | 
|  | UINT Elements; | 
|  | UINT Members; | 
|  | UINT Offset; | 
|  | const char *Name; | 
|  | } D3D12_SHADER_TYPE_DESC; | 
|  |  | 
|  | typedef struct _D3D12_SHADER_BUFFER_DESC | 
|  | { | 
|  | const char *Name; | 
|  | D3D_CBUFFER_TYPE Type; | 
|  | UINT Variables; | 
|  | UINT Size; | 
|  | UINT uFlags; | 
|  | } D3D12_SHADER_BUFFER_DESC; | 
|  |  | 
|  | typedef struct _D3D12_SHADER_INPUT_BIND_DESC | 
|  | { | 
|  | const char *Name; | 
|  | D3D_SHADER_INPUT_TYPE Type; | 
|  | UINT BindPoint; | 
|  | UINT BindCount; | 
|  | UINT uFlags; | 
|  | D3D_RESOURCE_RETURN_TYPE ReturnType; | 
|  | D3D_SRV_DIMENSION Dimension; | 
|  | UINT NumSamples; | 
|  | UINT Space; | 
|  | UINT uID; | 
|  | } D3D12_SHADER_INPUT_BIND_DESC; | 
|  |  | 
|  | typedef struct _D3D12_SIGNATURE_PARAMETER_DESC | 
|  | { | 
|  | const char *SemanticName; | 
|  | UINT SemanticIndex; | 
|  | UINT Register; | 
|  | D3D_NAME SystemValueType; | 
|  | D3D_REGISTER_COMPONENT_TYPE ComponentType; | 
|  | BYTE Mask; | 
|  | BYTE ReadWriteMask; | 
|  | UINT Stream; | 
|  | D3D_MIN_PRECISION MinPrecision; | 
|  | } D3D12_SIGNATURE_PARAMETER_DESC; | 
|  |  | 
|  | typedef struct _D3D12_PARAMETER_DESC | 
|  | { | 
|  | const char *Name; | 
|  | const char *SemanticName; | 
|  | D3D_SHADER_VARIABLE_TYPE Type; | 
|  | D3D_SHADER_VARIABLE_CLASS Class; | 
|  | UINT Rows; | 
|  | UINT Columns; | 
|  | D3D_INTERPOLATION_MODE InterpolationMode; | 
|  | D3D_PARAMETER_FLAGS Flags; | 
|  | UINT FirstInRegister; | 
|  | UINT FirstInComponent; | 
|  | UINT FirstOutRegister; | 
|  | UINT FirstOutComponent; | 
|  | } D3D12_PARAMETER_DESC; | 
|  |  | 
|  | typedef struct _D3D12_FUNCTION_DESC | 
|  | { | 
|  | UINT Version; | 
|  | const char *Creator; | 
|  | UINT Flags; | 
|  | UINT ConstantBuffers; | 
|  | UINT BoundResources; | 
|  | 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 MovInstructionCount; | 
|  | UINT MovcInstructionCount; | 
|  | UINT ConversionInstructionCount; | 
|  | UINT BitwiseInstructionCount; | 
|  | D3D_FEATURE_LEVEL MinFeatureLevel; | 
|  | UINT64 RequiredFeatureFlags; | 
|  | const char *Name; | 
|  | INT FunctionParameterCount; | 
|  | BOOL HasReturn; | 
|  | BOOL Has10Level9VertexShader; | 
|  | BOOL Has10Level9PixelShader; | 
|  | } D3D12_FUNCTION_DESC; | 
|  |  | 
|  | typedef struct _D3D12_LIBRARY_DESC | 
|  | { | 
|  | const char *Creator; | 
|  | UINT Flags; | 
|  | UINT FunctionCount; | 
|  | } D3D12_LIBRARY_DESC; | 
|  |  | 
|  | interface ID3D12ShaderReflectionConstantBuffer; | 
|  |  | 
|  | [ | 
|  | uuid(e913c351-783d-48ca-a1d1-4f306284ad56), | 
|  | object, | 
|  | local, | 
|  | ] | 
|  | interface ID3D12ShaderReflectionType | 
|  | { | 
|  | HRESULT GetDesc(D3D12_SHADER_TYPE_DESC *desc); | 
|  | ID3D12ShaderReflectionType *GetMemberTypeByIndex(UINT index); | 
|  | ID3D12ShaderReflectionType *GetMemberTypeByName(const char *name); | 
|  | const char *GetMemberTypeName(UINT index); | 
|  | HRESULT IsEqual(ID3D12ShaderReflectionType *type); | 
|  | ID3D12ShaderReflectionType *GetSubType(); | 
|  | ID3D12ShaderReflectionType *GetBaseClass(); | 
|  | UINT GetNumInterfaces(); | 
|  | ID3D12ShaderReflectionType *GetInterfaceByIndex(UINT index); | 
|  | HRESULT IsOfType(ID3D12ShaderReflectionType *type); | 
|  | HRESULT ImplementsInterface(ID3D12ShaderReflectionType *base); | 
|  | } | 
|  |  | 
|  | [ | 
|  | uuid(8337a8a6-a216-444a-b2f4-314733a73aea), | 
|  | object, | 
|  | local, | 
|  | ] | 
|  | interface ID3D12ShaderReflectionVariable | 
|  | { | 
|  | HRESULT GetDesc(D3D12_SHADER_VARIABLE_DESC *desc); | 
|  | ID3D12ShaderReflectionType *GetType(); | 
|  | ID3D12ShaderReflectionConstantBuffer *GetBuffer(); | 
|  | UINT GetInterfaceSlot(UINT index); | 
|  | } | 
|  |  | 
|  | [ | 
|  | uuid(c59598b4-48b3-4869-b9b1-b1618b14a8b7), | 
|  | object, | 
|  | local, | 
|  | ] | 
|  | interface ID3D12ShaderReflectionConstantBuffer | 
|  | { | 
|  | HRESULT GetDesc(D3D12_SHADER_BUFFER_DESC *desc); | 
|  | ID3D12ShaderReflectionVariable *GetVariableByIndex(UINT index); | 
|  | ID3D12ShaderReflectionVariable *GetVariableByName(const char *name); | 
|  | } | 
|  |  | 
|  | [ | 
|  | uuid(5a58797d-a72c-478d-8ba2-efc6b0efe88e), | 
|  | object, | 
|  | local, | 
|  | ] | 
|  | interface ID3D12ShaderReflection : IUnknown | 
|  | { | 
|  | HRESULT GetDesc(D3D12_SHADER_DESC *desc); | 
|  | ID3D12ShaderReflectionConstantBuffer *GetConstantBufferByIndex(UINT index); | 
|  | ID3D12ShaderReflectionConstantBuffer *GetConstantBufferByName(const char *name); | 
|  | HRESULT GetResourceBindingDesc(UINT index, D3D12_SHADER_INPUT_BIND_DESC *desc); | 
|  | HRESULT GetInputParameterDesc(UINT index, D3D12_SIGNATURE_PARAMETER_DESC *desc); | 
|  | HRESULT GetOutputParameterDesc(UINT index, D3D12_SIGNATURE_PARAMETER_DESC *desc); | 
|  | HRESULT GetPatchConstantParameterDesc(UINT index, D3D12_SIGNATURE_PARAMETER_DESC *desc); | 
|  | ID3D12ShaderReflectionVariable *GetVariableByName(const char *name); | 
|  | HRESULT GetResourceBindingDescByName(const char *name, D3D12_SHADER_INPUT_BIND_DESC *desc); | 
|  | UINT GetMovInstructionCount(); | 
|  | UINT GetMovcInstructionCount(); | 
|  | UINT GetConversionInstructionCount(); | 
|  | UINT GetBitwiseInstructionCount(); | 
|  | D3D_PRIMITIVE GetGSInputPrimitive(); | 
|  | BOOL IsSampleFrequencyShader(); | 
|  | UINT GetNumInterfaceSlots(); | 
|  | HRESULT GetMinFeatureLevel(D3D_FEATURE_LEVEL *level); | 
|  | UINT GetThreadGroupSize(UINT *sizex, UINT *sizey, UINT *sizez); | 
|  | UINT64 GetRequiresFlags(); | 
|  | } | 
|  |  | 
|  | [ | 
|  | uuid(ec25f42d-7006-4f2b-b33e-02cc3375733f), | 
|  | object, | 
|  | local, | 
|  | ] | 
|  | interface ID3D12FunctionParameterReflection | 
|  | { | 
|  | HRESULT GetDesc(D3D12_PARAMETER_DESC *desc); | 
|  | } | 
|  |  | 
|  | [ | 
|  | uuid(1108795c-2772-4ba9-b2a8-d464dc7e2799), | 
|  | object, | 
|  | local, | 
|  | ] | 
|  | interface ID3D12FunctionReflection | 
|  | { | 
|  | HRESULT GetDesc(D3D12_FUNCTION_DESC *desc); | 
|  | ID3D12ShaderReflectionConstantBuffer *GetConstantBufferByIndex(UINT index); | 
|  | ID3D12ShaderReflectionConstantBuffer *GetConstantBufferByName(const char *name); | 
|  | HRESULT GetResourceBindingDesc(UINT index, D3D12_SHADER_INPUT_BIND_DESC *desc); | 
|  | ID3D12ShaderReflectionVariable *GetVariableByName(const char *name); | 
|  | HRESULT GetResourceBindingDescByName(const char *name, D3D12_SHADER_INPUT_BIND_DESC *desc); | 
|  | ID3D12FunctionParameterReflection *GetFunctionParameter(INT index); | 
|  | } | 
|  |  | 
|  | [ | 
|  | uuid(8e349d19-54db-4a56-9dc9-119d87bdb804), | 
|  | object, | 
|  | local, | 
|  | ] | 
|  | interface ID3D12LibraryReflection : IUnknown | 
|  | { | 
|  | HRESULT GetDesc(D3D12_LIBRARY_DESC *desc); | 
|  | ID3D12FunctionReflection *GetFunctionByIndex(INT index); | 
|  | } |