[1166] | 1 | /*
|
---|
| 2 | * Copyright 2020 Paul Gofman for CodeWeavers
|
---|
| 3 | *
|
---|
| 4 | * This library is free software; you can redistribute it and/or
|
---|
| 5 | * modify it under the terms of the GNU Lesser General Public
|
---|
| 6 | * License as published by the Free Software Foundation; either
|
---|
| 7 | * version 2.1 of the License, or (at your option) any later version.
|
---|
| 8 | *
|
---|
| 9 | * This library is distributed in the hope that it will be useful,
|
---|
| 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
---|
| 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
---|
| 12 | * Lesser General Public License for more details.
|
---|
| 13 | *
|
---|
| 14 | * You should have received a copy of the GNU Lesser General Public
|
---|
| 15 | * License along with this library; if not, write to the Free Software
|
---|
| 16 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
---|
| 17 | */
|
---|
| 18 |
|
---|
| 19 | import "oaidl.idl";
|
---|
| 20 | import "ocidl.idl";
|
---|
| 21 | import "d3dcommon.idl";
|
---|
| 22 |
|
---|
| 23 | typedef enum D3D12_SHADER_VERSION_TYPE
|
---|
| 24 | {
|
---|
| 25 | D3D12_SHVER_PIXEL_SHADER = 0x0,
|
---|
| 26 | D3D12_SHVER_VERTEX_SHADER = 0x1,
|
---|
| 27 | D3D12_SHVER_GEOMETRY_SHADER = 0x2,
|
---|
| 28 | D3D12_SHVER_HULL_SHADER = 0x3,
|
---|
| 29 | D3D12_SHVER_DOMAIN_SHADER = 0x4,
|
---|
| 30 | D3D12_SHVER_COMPUTE_SHADER = 0x5,
|
---|
| 31 | D3D12_SHVER_RESERVED0 = 0xfff0,
|
---|
| 32 | } D3D12_SHADER_VERSION_TYPE;
|
---|
| 33 |
|
---|
| 34 | typedef struct _D3D12_SHADER_DESC
|
---|
| 35 | {
|
---|
| 36 | UINT Version;
|
---|
| 37 | const char *Creator;
|
---|
| 38 | UINT Flags;
|
---|
| 39 | UINT ConstantBuffers;
|
---|
| 40 | UINT BoundResources;
|
---|
| 41 | UINT InputParameters;
|
---|
| 42 | UINT OutputParameters;
|
---|
| 43 | UINT InstructionCount;
|
---|
| 44 | UINT TempRegisterCount;
|
---|
| 45 | UINT TempArrayCount;
|
---|
| 46 | UINT DefCount;
|
---|
| 47 | UINT DclCount;
|
---|
| 48 | UINT TextureNormalInstructions;
|
---|
| 49 | UINT TextureLoadInstructions;
|
---|
| 50 | UINT TextureCompInstructions;
|
---|
| 51 | UINT TextureBiasInstructions;
|
---|
| 52 | UINT TextureGradientInstructions;
|
---|
| 53 | UINT FloatInstructionCount;
|
---|
| 54 | UINT IntInstructionCount;
|
---|
| 55 | UINT UintInstructionCount;
|
---|
| 56 | UINT StaticFlowControlCount;
|
---|
| 57 | UINT DynamicFlowControlCount;
|
---|
| 58 | UINT MacroInstructionCount;
|
---|
| 59 | UINT ArrayInstructionCount;
|
---|
| 60 | UINT CutInstructionCount;
|
---|
| 61 | UINT EmitInstructionCount;
|
---|
| 62 | D3D_PRIMITIVE_TOPOLOGY GSOutputTopology;
|
---|
| 63 | UINT GSMaxOutputVertexCount;
|
---|
| 64 | D3D_PRIMITIVE InputPrimitive;
|
---|
| 65 | UINT PatchConstantParameters;
|
---|
| 66 | UINT cGSInstanceCount;
|
---|
| 67 | UINT cControlPoints;
|
---|
| 68 | D3D_TESSELLATOR_OUTPUT_PRIMITIVE HSOutputPrimitive;
|
---|
| 69 | D3D_TESSELLATOR_PARTITIONING HSPartitioning;
|
---|
| 70 | D3D_TESSELLATOR_DOMAIN TessellatorDomain;
|
---|
| 71 | UINT cBarrierInstructions;
|
---|
| 72 | UINT cInterlockedInstructions;
|
---|
| 73 | UINT cTextureStoreInstructions;
|
---|
| 74 | } D3D12_SHADER_DESC;
|
---|
| 75 |
|
---|
| 76 | typedef struct _D3D12_SHADER_VARIABLE_DESC
|
---|
| 77 | {
|
---|
| 78 | const char *Name;
|
---|
| 79 | UINT StartOffset;
|
---|
| 80 | UINT Size;
|
---|
| 81 | UINT uFlags;
|
---|
| 82 | void *DefaultValue;
|
---|
| 83 | UINT StartTexture;
|
---|
| 84 | UINT TextureSize;
|
---|
| 85 | UINT StartSampler;
|
---|
| 86 | UINT SamplerSize;
|
---|
| 87 | } D3D12_SHADER_VARIABLE_DESC;
|
---|
| 88 |
|
---|
| 89 | typedef struct _D3D12_SHADER_TYPE_DESC
|
---|
| 90 | {
|
---|
| 91 | D3D_SHADER_VARIABLE_CLASS Class;
|
---|
| 92 | D3D_SHADER_VARIABLE_TYPE Type;
|
---|
| 93 | UINT Rows;
|
---|
| 94 | UINT Columns;
|
---|
| 95 | UINT Elements;
|
---|
| 96 | UINT Members;
|
---|
| 97 | UINT Offset;
|
---|
| 98 | const char *Name;
|
---|
| 99 | } D3D12_SHADER_TYPE_DESC;
|
---|
| 100 |
|
---|
| 101 | typedef struct _D3D12_SHADER_BUFFER_DESC
|
---|
| 102 | {
|
---|
| 103 | const char *Name;
|
---|
| 104 | D3D_CBUFFER_TYPE Type;
|
---|
| 105 | UINT Variables;
|
---|
| 106 | UINT Size;
|
---|
| 107 | UINT uFlags;
|
---|
| 108 | } D3D12_SHADER_BUFFER_DESC;
|
---|
| 109 |
|
---|
| 110 | typedef struct _D3D12_SHADER_INPUT_BIND_DESC
|
---|
| 111 | {
|
---|
| 112 | const char *Name;
|
---|
| 113 | D3D_SHADER_INPUT_TYPE Type;
|
---|
| 114 | UINT BindPoint;
|
---|
| 115 | UINT BindCount;
|
---|
| 116 | UINT uFlags;
|
---|
| 117 | D3D_RESOURCE_RETURN_TYPE ReturnType;
|
---|
| 118 | D3D_SRV_DIMENSION Dimension;
|
---|
| 119 | UINT NumSamples;
|
---|
| 120 | UINT Space;
|
---|
| 121 | UINT uID;
|
---|
| 122 | } D3D12_SHADER_INPUT_BIND_DESC;
|
---|
| 123 |
|
---|
| 124 | typedef struct _D3D12_SIGNATURE_PARAMETER_DESC
|
---|
| 125 | {
|
---|
| 126 | const char *SemanticName;
|
---|
| 127 | UINT SemanticIndex;
|
---|
| 128 | UINT Register;
|
---|
| 129 | D3D_NAME SystemValueType;
|
---|
| 130 | D3D_REGISTER_COMPONENT_TYPE ComponentType;
|
---|
| 131 | BYTE Mask;
|
---|
| 132 | BYTE ReadWriteMask;
|
---|
| 133 | UINT Stream;
|
---|
| 134 | D3D_MIN_PRECISION MinPrecision;
|
---|
| 135 | } D3D12_SIGNATURE_PARAMETER_DESC;
|
---|
| 136 |
|
---|
| 137 | typedef struct _D3D12_PARAMETER_DESC
|
---|
| 138 | {
|
---|
| 139 | const char *Name;
|
---|
| 140 | const char *SemanticName;
|
---|
| 141 | D3D_SHADER_VARIABLE_TYPE Type;
|
---|
| 142 | D3D_SHADER_VARIABLE_CLASS Class;
|
---|
| 143 | UINT Rows;
|
---|
| 144 | UINT Columns;
|
---|
| 145 | D3D_INTERPOLATION_MODE InterpolationMode;
|
---|
| 146 | D3D_PARAMETER_FLAGS Flags;
|
---|
| 147 | UINT FirstInRegister;
|
---|
| 148 | UINT FirstInComponent;
|
---|
| 149 | UINT FirstOutRegister;
|
---|
| 150 | UINT FirstOutComponent;
|
---|
| 151 | } D3D12_PARAMETER_DESC;
|
---|
| 152 |
|
---|
| 153 | typedef struct _D3D12_FUNCTION_DESC
|
---|
| 154 | {
|
---|
| 155 | UINT Version;
|
---|
| 156 | const char *Creator;
|
---|
| 157 | UINT Flags;
|
---|
| 158 | UINT ConstantBuffers;
|
---|
| 159 | UINT BoundResources;
|
---|
| 160 | UINT InstructionCount;
|
---|
| 161 | UINT TempRegisterCount;
|
---|
| 162 | UINT TempArrayCount;
|
---|
| 163 | UINT DefCount;
|
---|
| 164 | UINT DclCount;
|
---|
| 165 | UINT TextureNormalInstructions;
|
---|
| 166 | UINT TextureLoadInstructions;
|
---|
| 167 | UINT TextureCompInstructions;
|
---|
| 168 | UINT TextureBiasInstructions;
|
---|
| 169 | UINT TextureGradientInstructions;
|
---|
| 170 | UINT FloatInstructionCount;
|
---|
| 171 | UINT IntInstructionCount;
|
---|
| 172 | UINT UintInstructionCount;
|
---|
| 173 | UINT StaticFlowControlCount;
|
---|
| 174 | UINT DynamicFlowControlCount;
|
---|
| 175 | UINT MacroInstructionCount;
|
---|
| 176 | UINT ArrayInstructionCount;
|
---|
| 177 | UINT MovInstructionCount;
|
---|
| 178 | UINT MovcInstructionCount;
|
---|
| 179 | UINT ConversionInstructionCount;
|
---|
| 180 | UINT BitwiseInstructionCount;
|
---|
| 181 | D3D_FEATURE_LEVEL MinFeatureLevel;
|
---|
| 182 | UINT64 RequiredFeatureFlags;
|
---|
| 183 | const char *Name;
|
---|
| 184 | INT FunctionParameterCount;
|
---|
| 185 | BOOL HasReturn;
|
---|
| 186 | BOOL Has10Level9VertexShader;
|
---|
| 187 | BOOL Has10Level9PixelShader;
|
---|
| 188 | } D3D12_FUNCTION_DESC;
|
---|
| 189 |
|
---|
| 190 | typedef struct _D3D12_LIBRARY_DESC
|
---|
| 191 | {
|
---|
| 192 | const char *Creator;
|
---|
| 193 | UINT Flags;
|
---|
| 194 | UINT FunctionCount;
|
---|
| 195 | } D3D12_LIBRARY_DESC;
|
---|
| 196 |
|
---|
| 197 | interface ID3D12ShaderReflectionConstantBuffer;
|
---|
| 198 |
|
---|
| 199 | [
|
---|
| 200 | uuid(e913c351-783d-48ca-a1d1-4f306284ad56),
|
---|
| 201 | object,
|
---|
| 202 | local,
|
---|
| 203 | ]
|
---|
| 204 | interface ID3D12ShaderReflectionType
|
---|
| 205 | {
|
---|
| 206 | HRESULT GetDesc(D3D12_SHADER_TYPE_DESC *desc);
|
---|
| 207 | ID3D12ShaderReflectionType *GetMemberTypeByIndex(UINT index);
|
---|
| 208 | ID3D12ShaderReflectionType *GetMemberTypeByName(const char *name);
|
---|
| 209 | const char *GetMemberTypeName(UINT index);
|
---|
| 210 | HRESULT IsEqual(ID3D12ShaderReflectionType *type);
|
---|
| 211 | ID3D12ShaderReflectionType *GetSubType();
|
---|
| 212 | ID3D12ShaderReflectionType *GetBaseClass();
|
---|
| 213 | UINT GetNumInterfaces();
|
---|
| 214 | ID3D12ShaderReflectionType *GetInterfaceByIndex(UINT index);
|
---|
| 215 | HRESULT IsOfType(ID3D12ShaderReflectionType *type);
|
---|
| 216 | HRESULT ImplementsInterface(ID3D12ShaderReflectionType *base);
|
---|
| 217 | }
|
---|
| 218 |
|
---|
| 219 | [
|
---|
| 220 | uuid(8337a8a6-a216-444a-b2f4-314733a73aea),
|
---|
| 221 | object,
|
---|
| 222 | local,
|
---|
| 223 | ]
|
---|
| 224 | interface ID3D12ShaderReflectionVariable
|
---|
| 225 | {
|
---|
| 226 | HRESULT GetDesc(D3D12_SHADER_VARIABLE_DESC *desc);
|
---|
| 227 | ID3D12ShaderReflectionType *GetType();
|
---|
| 228 | ID3D12ShaderReflectionConstantBuffer *GetBuffer();
|
---|
| 229 | UINT GetInterfaceSlot(UINT index);
|
---|
| 230 | }
|
---|
| 231 |
|
---|
| 232 | [
|
---|
| 233 | uuid(c59598b4-48b3-4869-b9b1-b1618b14a8b7),
|
---|
| 234 | object,
|
---|
| 235 | local,
|
---|
| 236 | ]
|
---|
| 237 | interface ID3D12ShaderReflectionConstantBuffer
|
---|
| 238 | {
|
---|
| 239 | HRESULT GetDesc(D3D12_SHADER_BUFFER_DESC *desc);
|
---|
| 240 | ID3D12ShaderReflectionVariable *GetVariableByIndex(UINT index);
|
---|
| 241 | ID3D12ShaderReflectionVariable *GetVariableByName(const char *name);
|
---|
| 242 | }
|
---|
| 243 |
|
---|
| 244 | [
|
---|
| 245 | uuid(5a58797d-a72c-478d-8ba2-efc6b0efe88e),
|
---|
| 246 | object,
|
---|
| 247 | local,
|
---|
| 248 | ]
|
---|
| 249 | interface ID3D12ShaderReflection : IUnknown
|
---|
| 250 | {
|
---|
| 251 | HRESULT GetDesc(D3D12_SHADER_DESC *desc);
|
---|
| 252 | ID3D12ShaderReflectionConstantBuffer *GetConstantBufferByIndex(UINT index);
|
---|
| 253 | ID3D12ShaderReflectionConstantBuffer *GetConstantBufferByName(const char *name);
|
---|
| 254 | HRESULT GetResourceBindingDesc(UINT index, D3D12_SHADER_INPUT_BIND_DESC *desc);
|
---|
| 255 | HRESULT GetInputParameterDesc(UINT index, D3D12_SIGNATURE_PARAMETER_DESC *desc);
|
---|
| 256 | HRESULT GetOutputParameterDesc(UINT index, D3D12_SIGNATURE_PARAMETER_DESC *desc);
|
---|
| 257 | HRESULT GetPatchConstantParameterDesc(UINT index, D3D12_SIGNATURE_PARAMETER_DESC *desc);
|
---|
| 258 | ID3D12ShaderReflectionVariable *GetVariableByName(const char *name);
|
---|
| 259 | HRESULT GetResourceBindingDescByName(const char *name, D3D12_SHADER_INPUT_BIND_DESC *desc);
|
---|
| 260 | UINT GetMovInstructionCount();
|
---|
| 261 | UINT GetMovcInstructionCount();
|
---|
| 262 | UINT GetConversionInstructionCount();
|
---|
| 263 | UINT GetBitwiseInstructionCount();
|
---|
| 264 | D3D_PRIMITIVE GetGSInputPrimitive();
|
---|
| 265 | BOOL IsSampleFrequencyShader();
|
---|
| 266 | UINT GetNumInterfaceSlots();
|
---|
| 267 | HRESULT GetMinFeatureLevel(D3D_FEATURE_LEVEL *level);
|
---|
| 268 | UINT GetThreadGroupSize(UINT *sizex, UINT *sizey, UINT *sizez);
|
---|
| 269 | UINT64 GetRequiresFlags();
|
---|
| 270 | }
|
---|
| 271 |
|
---|
| 272 | [
|
---|
| 273 | uuid(ec25f42d-7006-4f2b-b33e-02cc3375733f),
|
---|
| 274 | object,
|
---|
| 275 | local,
|
---|
| 276 | ]
|
---|
| 277 | interface ID3D12FunctionParameterReflection
|
---|
| 278 | {
|
---|
| 279 | HRESULT GetDesc(D3D12_PARAMETER_DESC *desc);
|
---|
| 280 | }
|
---|
| 281 |
|
---|
| 282 | [
|
---|
| 283 | uuid(1108795c-2772-4ba9-b2a8-d464dc7e2799),
|
---|
| 284 | object,
|
---|
| 285 | local,
|
---|
| 286 | ]
|
---|
| 287 | interface ID3D12FunctionReflection
|
---|
| 288 | {
|
---|
| 289 | HRESULT GetDesc(D3D12_FUNCTION_DESC *desc);
|
---|
| 290 | ID3D12ShaderReflectionConstantBuffer *GetConstantBufferByIndex(UINT index);
|
---|
| 291 | ID3D12ShaderReflectionConstantBuffer *GetConstantBufferByName(const char *name);
|
---|
| 292 | HRESULT GetResourceBindingDesc(UINT index, D3D12_SHADER_INPUT_BIND_DESC *desc);
|
---|
| 293 | ID3D12ShaderReflectionVariable *GetVariableByName(const char *name);
|
---|
| 294 | HRESULT GetResourceBindingDescByName(const char *name, D3D12_SHADER_INPUT_BIND_DESC *desc);
|
---|
| 295 | ID3D12FunctionParameterReflection *GetFunctionParameter(INT index);
|
---|
| 296 | }
|
---|
| 297 |
|
---|
| 298 | [
|
---|
| 299 | uuid(8e349d19-54db-4a56-9dc9-119d87bdb804),
|
---|
| 300 | object,
|
---|
| 301 | local,
|
---|
| 302 | ]
|
---|
| 303 | interface ID3D12LibraryReflection : IUnknown
|
---|
| 304 | {
|
---|
| 305 | HRESULT GetDesc(D3D12_LIBRARY_DESC *desc);
|
---|
| 306 | ID3D12FunctionReflection *GetFunctionByIndex(INT index);
|
---|
| 307 | }
|
---|