| /* | 
 |  * 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; | 
 |  | 
 | 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); | 
 | } |