winapi_ui_automation/um/
d3d11shader.rs

1// Licensed under the Apache License, Version 2.0
2// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
3// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
4// All files in the project carrying such notice may not be copied, modified, or distributed
5// except according to those terms.
6use ctypes::c_int;
7use shared::basetsd::UINT64;
8use shared::minwindef::{BOOL, BYTE, INT, LPVOID, UINT};
9use um::d3dcommon::{
10    D3D_CBUFFER_TYPE, D3D_FEATURE_LEVEL, D3D_INTERPOLATION_MODE, D3D_MIN_PRECISION, D3D_NAME,
11    D3D_PARAMETER_FLAGS, D3D_PRIMITIVE, D3D_PRIMITIVE_TOPOLOGY, D3D_REGISTER_COMPONENT_TYPE,
12    D3D_RESOURCE_RETURN_TYPE, D3D_SHADER_INPUT_TYPE, D3D_SHADER_VARIABLE_CLASS,
13    D3D_SHADER_VARIABLE_TYPE, D3D_SRV_DIMENSION, D3D_TESSELLATOR_DOMAIN,
14    D3D_TESSELLATOR_OUTPUT_PRIMITIVE, D3D_TESSELLATOR_PARTITIONING, ID3DBlob,
15};
16use um::unknwnbase::{IUnknown, IUnknownVtbl};
17use um::winnt::{HRESULT, LPCSTR};
18ENUM!{enum D3D11_SHADER_VERSION_TYPE {
19    D3D11_SHVER_PIXEL_SHADER = 0,
20    D3D11_SHVER_VERTEX_SHADER = 1,
21    D3D11_SHVER_GEOMETRY_SHADER = 2,
22    D3D11_SHVER_HULL_SHADER = 3,
23    D3D11_SHVER_DOMAIN_SHADER = 4,
24    D3D11_SHVER_COMPUTE_SHADER = 5,
25    D3D11_SHVER_RESERVED0 = 0xFFF0,
26}}
27pub const D3D_RETURN_PARAMETER_INDEX: c_int = -1;
28pub type D3D11_RESOURCE_RETURN_TYPE = D3D_RESOURCE_RETURN_TYPE;
29pub type D3D11_CBUFFER_TYPE = D3D_CBUFFER_TYPE;
30STRUCT!{struct D3D11_SIGNATURE_PARAMETER_DESC {
31    SemanticName: LPCSTR,
32    SemanticIndex: UINT,
33    Register: UINT,
34    SystemValueType: D3D_NAME,
35    ComponentType: D3D_REGISTER_COMPONENT_TYPE,
36    Mask: BYTE,
37    ReadWriteMask: BYTE,
38    Stream: UINT,
39    MinPrecision: D3D_MIN_PRECISION,
40}}
41STRUCT!{struct D3D11_SHADER_BUFFER_DESC {
42    Name: LPCSTR,
43    Type: D3D_CBUFFER_TYPE,
44    Variables: UINT,
45    Size: UINT,
46    uFlags: UINT,
47}}
48STRUCT!{struct D3D11_SHADER_VARIABLE_DESC {
49    Name: LPCSTR,
50    StartOffset: UINT,
51    Size: UINT,
52    uFlags: UINT,
53    DefaultValue: LPVOID,
54    StartTexture: UINT,
55    TextureSize: UINT,
56    StartSampler: UINT,
57    SamplerSize: UINT,
58}}
59STRUCT!{struct D3D11_SHADER_TYPE_DESC {
60    Class: D3D_SHADER_VARIABLE_CLASS,
61    Type: D3D_SHADER_VARIABLE_TYPE,
62    Rows: UINT,
63    Columns: UINT,
64    Elements: UINT,
65    Members: UINT,
66    Offset: UINT,
67    Name: LPCSTR,
68}}
69pub type D3D11_TESSELLATOR_DOMAIN = D3D_TESSELLATOR_DOMAIN;
70pub type D3D11_TESSELLATOR_PARTITIONING = D3D_TESSELLATOR_PARTITIONING;
71pub type D3D11_TESSELLATOR_OUTPUT_PRIMITIVE = D3D_TESSELLATOR_OUTPUT_PRIMITIVE;
72STRUCT!{struct D3D11_SHADER_DESC {
73    Version: UINT,
74    Creator: LPCSTR,
75    Flags: UINT,
76    ConstantBuffers: UINT,
77    BoundResources: UINT,
78    InputParameters: UINT,
79    OutputParameters: UINT,
80    InstructionCount: UINT,
81    TempRegisterCount: UINT,
82    TempArrayCount: UINT,
83    DefCount: UINT,
84    DclCount: UINT,
85    TextureNormalInstructions: UINT,
86    TextureLoadInstructions: UINT,
87    TextureCompInstructions: UINT,
88    TextureBiasInstructions: UINT,
89    TextureGradientInstructions: UINT,
90    FloatInstructionCount: UINT,
91    IntInstructionCount: UINT,
92    UintInstructionCount: UINT,
93    StaticFlowControlCount: UINT,
94    DynamicFlowControlCount: UINT,
95    MacroInstructionCount: UINT,
96    ArrayInstructionCount: UINT,
97    CutInstructionCount: UINT,
98    EmitInstructionCount: UINT,
99    GSOutputTopology: D3D_PRIMITIVE_TOPOLOGY,
100    GSMaxOutputVertexCount: UINT,
101    InputPrimitive: D3D_PRIMITIVE,
102    PatchConstantParameters: UINT,
103    cGSInstanceCount: UINT,
104    cControlPoints: UINT,
105    HSOutputPrimitive: D3D_TESSELLATOR_OUTPUT_PRIMITIVE,
106    HSPartitioning: D3D_TESSELLATOR_PARTITIONING,
107    TessellatorDomain: D3D_TESSELLATOR_DOMAIN,
108    cBarrierInstructions: UINT,
109    cInterlockedInstructions: UINT,
110    cTextureStoreInstructions: UINT,
111}}
112STRUCT!{struct D3D11_SHADER_INPUT_BIND_DESC {
113    Name: LPCSTR,
114    Type: D3D_SHADER_INPUT_TYPE,
115    BindPoint: UINT,
116    BindCount: UINT,
117    uFlags: UINT,
118    ReturnType: D3D_RESOURCE_RETURN_TYPE,
119    Dimension: D3D_SRV_DIMENSION,
120    NumSamples: UINT,
121}}
122pub const D3D_SHADER_REQUIRES_DOUBLES: UINT64 = 0x00000001;
123pub const D3D_SHADER_REQUIRES_EARLY_DEPTH_STENCIL: UINT64 = 0x00000002;
124pub const D3D_SHADER_REQUIRES_UAVS_AT_EVERY_STAGE: UINT64 = 0x00000004;
125pub const D3D_SHADER_REQUIRES_64_UAVS: UINT64 = 0x00000008;
126pub const D3D_SHADER_REQUIRES_MINIMUM_PRECISION: UINT64 = 0x00000010;
127pub const D3D_SHADER_REQUIRES_11_1_DOUBLE_EXTENSIONS: UINT64 = 0x00000020;
128pub const D3D_SHADER_REQUIRES_11_1_SHADER_EXTENSIONS: UINT64 = 0x00000040;
129pub const D3D_SHADER_REQUIRES_LEVEL_9_COMPARISON_FILTERING: UINT64 = 0x00000080;
130pub const D3D_SHADER_REQUIRES_TILED_RESOURCES: UINT64 = 0x00000100;
131STRUCT!{struct D3D11_LIBRARY_DESC {
132    Creator: LPCSTR,
133    Flags: UINT,
134    FunctionCount: UINT,
135}}
136STRUCT!{struct D3D11_FUNCTION_DESC {
137    Version: UINT,
138    Creator: LPCSTR,
139    Flags: UINT,
140    ConstantBuffers: UINT,
141    BoundResources: UINT,
142    InstructionCount: UINT,
143    TempRegisterCount: UINT,
144    TempArrayCount: UINT,
145    DefCount: UINT,
146    DclCount: UINT,
147    TextureNormalInstructions: UINT,
148    TextureLoadInstructions: UINT,
149    TextureCompInstructions: UINT,
150    TextureBiasInstructions: UINT,
151    TextureGradientInstructions: UINT,
152    FloatInstructionCount: UINT,
153    IntInstructionCount: UINT,
154    UintInstructionCount: UINT,
155    StaticFlowControlCount: UINT,
156    DynamicFlowControlCount: UINT,
157    MacroInstructionCount: UINT,
158    ArrayInstructionCount: UINT,
159    MovInstructionCount: UINT,
160    MovcInstructionCount: UINT,
161    ConversionInstructionCount: UINT,
162    BitwiseInstructionCount: UINT,
163    MinFeatureLevel: D3D_FEATURE_LEVEL,
164    RequiredFeatureFlags: UINT64,
165    Name: LPCSTR,
166    FunctionParameterCount: INT,
167    HasReturn: BOOL,
168    Has10Level9VertexShader: BOOL,
169    Has10Level9PixelShader: BOOL,
170}}
171STRUCT!{struct D3D11_PARAMETER_DESC {
172    Name: LPCSTR,
173    SemanticName: LPCSTR,
174    Type: D3D_SHADER_VARIABLE_TYPE,
175    Class: D3D_SHADER_VARIABLE_CLASS,
176    Rows: UINT,
177    Columns: UINT,
178    InterpolationMode: D3D_INTERPOLATION_MODE,
179    Flags: D3D_PARAMETER_FLAGS,
180    FirstInRegister: UINT,
181    FirstInComponent: UINT,
182    FirstOutRegister: UINT,
183    FirstOutComponent: UINT,
184}}
185DEFINE_GUID!{IID_ID3D11ShaderReflectionType,
186    0x6e6ffa6a, 0x9bae, 0x4613, 0xa5, 0x1e, 0x91, 0x65, 0x2d, 0x50, 0x8c, 0x21}
187RIDL!{#[uuid(0x6e6ffa6a, 0x9bae, 0x4613, 0xa5, 0x1e, 0x91, 0x65, 0x2d, 0x50, 0x8c, 0x21)]
188interface ID3D11ShaderReflectionType(ID3D11ShaderReflectionTypeVtbl) {
189    fn GetDesc(
190        pDesc: *mut D3D11_SHADER_TYPE_DESC,
191    ) -> HRESULT,
192    fn GetMemberTypeByIndex(
193        Index: UINT,
194    ) -> *mut ID3D11ShaderReflectionType,
195    fn GetMemberTypeByName(
196        Name: LPCSTR,
197    ) -> *mut ID3D11ShaderReflectionType,
198    fn GetMemberTypeName(
199        Index: UINT,
200    ) -> LPCSTR,
201    fn IsEqual(
202        pType: *mut ID3D11ShaderReflectionType,
203    ) -> HRESULT,
204    fn GetSubType() -> *mut ID3D11ShaderReflectionType,
205    fn GetBaseClass() -> *mut ID3D11ShaderReflectionType,
206    fn GetNumInterfaces() -> UINT,
207    fn GetInterfaceByIndex(
208        uIndex: UINT,
209    ) -> *mut ID3D11ShaderReflectionType,
210    fn IsOfType(
211        pType: *mut ID3D11ShaderReflectionType,
212    ) -> HRESULT,
213    fn ImplementsInterface(
214        pBase: *mut ID3D11ShaderReflectionType,
215    ) -> HRESULT,
216}}
217DEFINE_GUID!{IID_ID3D11ShaderReflectionVariable,
218    0x51f23923, 0xf3e5, 0x4bd1, 0x91, 0xcb, 0x60, 0x61, 0x77, 0xd8, 0xdb, 0x4c}
219RIDL!{#[uuid(0x51f23923, 0xf3e5, 0x4bd1, 0x91, 0xcb, 0x60, 0x61, 0x77, 0xd8, 0xdb, 0x4c)]
220interface ID3D11ShaderReflectionVariable(ID3D11ShaderReflectionVariableVtbl) {
221    fn GetDesc(
222        pDesc: *mut D3D11_SHADER_VARIABLE_DESC,
223    ) -> HRESULT,
224    fn GetType() -> *mut ID3D11ShaderReflectionType,
225    fn GetBuffer() -> *mut ID3D11ShaderReflectionConstantBuffer,
226    fn GetInterfaceSlot(
227        uArrayIndex: UINT,
228    ) -> UINT,
229}}
230DEFINE_GUID!{IID_ID3D11ShaderReflectionConstantBuffer,
231    0xeb62d63d, 0x93dd, 0x4318, 0x8a, 0xe8, 0xc6, 0xf8, 0x3a, 0xd3, 0x71, 0xb8}
232RIDL!{#[uuid(0xeb62d63d, 0x93dd, 0x4318, 0x8a, 0xe8, 0xc6, 0xf8, 0x3a, 0xd3, 0x71, 0xb8)]
233interface ID3D11ShaderReflectionConstantBuffer(ID3D11ShaderReflectionConstantBufferVtbl) {
234    fn GetDesc(
235        pDesc: *mut D3D11_SHADER_BUFFER_DESC,
236    ) -> HRESULT,
237    fn GetVariableByIndex(
238        Index: UINT,
239    ) -> *mut ID3D11ShaderReflectionVariable,
240    fn GetVariableByName(
241        Name: LPCSTR,
242    ) -> *mut ID3D11ShaderReflectionVariable,
243}}
244DEFINE_GUID!{IID_ID3D11ShaderReflection,
245    0x8d536ca1, 0x0cca, 0x4956, 0xa8, 0x37, 0x78, 0x69, 0x63, 0x75, 0x55, 0x84}
246RIDL!{#[uuid(0x8d536ca1, 0x0cca, 0x4956, 0xa8, 0x37, 0x78, 0x69, 0x63, 0x75, 0x55, 0x84)]
247interface ID3D11ShaderReflection(ID3D11ShaderReflectionVtbl): IUnknown(IUnknownVtbl) {
248    fn GetDesc(
249        pDesc: *mut D3D11_SHADER_DESC,
250    ) -> HRESULT,
251    fn GetConstantBufferByIndex(
252        Index: UINT,
253    ) -> *mut ID3D11ShaderReflectionConstantBuffer,
254    fn GetConstantBufferByName(
255        Name: LPCSTR,
256    ) -> *mut ID3D11ShaderReflectionConstantBuffer,
257    fn GetResourceBindingDesc(
258        ResourceIndex: UINT,
259        pDesc: *mut D3D11_SHADER_INPUT_BIND_DESC,
260    ) -> HRESULT,
261    fn GetInputParameterDesc(
262        ParameterIndex: UINT,
263        pDesc: *mut D3D11_SIGNATURE_PARAMETER_DESC,
264    ) -> HRESULT,
265    fn GetOutputParameterDesc(
266        ParameterIndex: UINT,
267        pDesc: *mut D3D11_SIGNATURE_PARAMETER_DESC,
268    ) -> HRESULT,
269    fn GetPatchConstantParameterDesc(
270        ParameterIndex: UINT,
271        pDesc: *mut D3D11_SIGNATURE_PARAMETER_DESC,
272    ) -> HRESULT,
273    fn GetVariableByName(
274        Name: LPCSTR,
275    ) -> *mut ID3D11ShaderReflectionVariable,
276    fn GetResourceBindingDescByName(
277        Name: LPCSTR,
278        pDesc: *mut D3D11_SHADER_INPUT_BIND_DESC,
279    ) -> HRESULT,
280    fn GetMovInstructionCount() -> UINT,
281    fn GetMovcInstructionCount() -> UINT,
282    fn GetConversionInstructionCount() -> UINT,
283    fn GetBitwiseInstructionCount() -> UINT,
284    fn GetGSInputPrimitive() -> D3D_PRIMITIVE,
285    fn IsSampleFrequencyShader() -> BOOL,
286    fn GetNumInterfaceSlots() -> UINT,
287    fn GetMinFeatureLevel(
288        pLevel: *mut D3D_FEATURE_LEVEL,
289    ) -> HRESULT,
290    fn GetThreadGroupSize(
291        pSizeX: *mut UINT,
292        pSizeY: *mut UINT,
293        pSizeZ: *mut UINT,
294    ) -> UINT,
295    fn GetRequiresFlags() -> UINT64,
296}}
297DEFINE_GUID!{IID_ID3D11LibraryReflection,
298    0x54384f1b, 0x5b3e, 0x4bb7, 0xae, 0x01, 0x60, 0xba, 0x30, 0x97, 0xcb, 0xb6}
299RIDL!{#[uuid(0x54384f1b, 0x5b3e, 0x4bb7, 0xae, 0x01, 0x60, 0xba, 0x30, 0x97, 0xcb, 0xb6)]
300interface ID3D11LibraryReflection(ID3D11LibraryReflectionVtbl): IUnknown(IUnknownVtbl) {
301    fn GetDesc(
302        pDesc: *mut D3D11_LIBRARY_DESC,
303    ) -> HRESULT,
304    fn GetFunctionByIndex(
305        FunctionIndex: INT,
306    ) -> *mut ID3D11FunctionReflection,
307}}
308DEFINE_GUID!{IID_ID3D11FunctionReflection,
309    0x207bcecb, 0xd683, 0x4a06, 0xa8, 0xa3, 0x9b, 0x14, 0x9b, 0x9f, 0x73, 0xa4}
310RIDL!{#[uuid(0x207bcecb, 0xd683, 0x4a06, 0xa8, 0xa3, 0x9b, 0x14, 0x9b, 0x9f, 0x73, 0xa4)]
311interface ID3D11FunctionReflection(ID3D11FunctionReflectionVtbl) {
312    fn GetDesc(
313        pDesc: *mut D3D11_FUNCTION_DESC,
314    ) -> HRESULT,
315    fn GetConstantBufferByIndex(
316        BufferIndex: UINT,
317    ) -> *mut ID3D11ShaderReflectionConstantBuffer,
318    fn GetConstantBufferByName(
319        Name: LPCSTR,
320    ) -> *mut ID3D11ShaderReflectionConstantBuffer,
321    fn GetResourceBindingDesc(
322        ResourceIndex: UINT,
323        pDesc: *mut D3D11_SHADER_INPUT_BIND_DESC,
324    ) -> HRESULT,
325    fn GetVariableByName(
326        Name: LPCSTR,
327    ) -> *mut ID3D11ShaderReflectionVariable,
328    fn GetResourceBindingDescByName(
329        Name: LPCSTR,
330        pDesc: *mut D3D11_SHADER_INPUT_BIND_DESC,
331    ) -> HRESULT,
332    fn GetFunctionParameter(
333        ParameterIndex: INT,
334    ) -> *mut ID3D11FunctionParameterReflection,
335}}
336DEFINE_GUID!{IID_ID3D11FunctionParameterReflection,
337    0x42757488, 0x334f, 0x47fe, 0x98, 0x2e, 0x1a, 0x65, 0xd0, 0x8c, 0xc4, 0x62}
338RIDL!{#[uuid(0x42757488, 0x334f, 0x47fe, 0x98, 0x2e, 0x1a, 0x65, 0xd0, 0x8c, 0xc4, 0x62)]
339interface ID3D11FunctionParameterReflection(ID3D11FunctionParameterReflectionVtbl) {
340    fn GetDesc(
341        pDesc: *mut D3D11_PARAMETER_DESC,
342    ) -> HRESULT,
343}}
344DEFINE_GUID!{IID_ID3D11Module,
345    0xcac701ee, 0x80fc, 0x4122, 0x82, 0x42, 0x10, 0xb3, 0x9c, 0x8c, 0xec, 0x34}
346RIDL!{#[uuid(0xcac701ee, 0x80fc, 0x4122, 0x82, 0x42, 0x10, 0xb3, 0x9c, 0x8c, 0xec, 0x34)]
347interface ID3D11Module(ID3D11ModuleVtbl): IUnknown(IUnknownVtbl) {
348    fn CreateInstance(
349        pNamespace: LPCSTR,
350        ppModuleInstance: *mut *mut ID3D11ModuleInstance,
351    ) -> HRESULT,
352}}
353DEFINE_GUID!{IID_ID3D11ModuleInstance,
354    0x469e07f7, 0x045a, 0x48d5, 0xaa, 0x12, 0x68, 0xa4, 0x78, 0xcd, 0xf7, 0x5d}
355RIDL!{#[uuid(0x469e07f7, 0x045a, 0x48d5, 0xaa, 0x12, 0x68, 0xa4, 0x78, 0xcd, 0xf7, 0x5d)]
356interface ID3D11ModuleInstance(ID3D11ModuleInstanceVtbl): IUnknown(IUnknownVtbl) {
357    fn BindConstantBuffer(
358        uSrcSlot: UINT,
359        uDstSlot: UINT,
360        cbDstOffset: UINT,
361    ) -> HRESULT,
362    fn BindConstantBufferByName(
363        pName: LPCSTR,
364        uDstSlot: UINT,
365        cbDstOffset: UINT,
366    ) -> HRESULT,
367    fn BindResource(
368        uSrcSlot: UINT,
369        uDstSlot: UINT,
370        uCount: UINT,
371    ) -> HRESULT,
372    fn BindResourceByName(
373        pName: LPCSTR,
374        uDstSlot: UINT,
375        uCount: UINT,
376    ) -> HRESULT,
377    fn BindSampler(
378        uSrcSlot: UINT,
379        uDstSlot: UINT,
380        uCount: UINT,
381    ) -> HRESULT,
382    fn BindSamplerByName(
383        pName: LPCSTR,
384        uDstSlot: UINT,
385        uCount: UINT,
386    ) -> HRESULT,
387    fn BindUnorderedAccessView(
388        uSrcSlot: UINT,
389        uDstSlot: UINT,
390        uCount: UINT,
391    ) -> HRESULT,
392    fn BindUnorderedAccessViewByName(
393        pName: LPCSTR,
394        uDstSlot: UINT,
395        uCount: UINT,
396    ) -> HRESULT,
397    fn BindResourceAsUnorderedAccessView(
398        uSrcSrvSlot: UINT,
399        uDstUavSlot: UINT,
400        uCount: UINT,
401    ) -> HRESULT,
402    fn BindResourceAsUnorderedAccessViewByName(
403        pSrvName: LPCSTR,
404        uDstUavSlot: UINT,
405        uCount: UINT,
406    ) -> HRESULT,
407}}
408DEFINE_GUID!{IID_ID3D11Linker,
409    0x59a6cd0e, 0xe10d, 0x4c1f, 0x88, 0xc0, 0x63, 0xab, 0xa1, 0xda, 0xf3, 0x0e}
410RIDL!{#[uuid(0x59a6cd0e, 0xe10d, 0x4c1f, 0x88, 0xc0, 0x63, 0xab, 0xa1, 0xda, 0xf3, 0x0e)]
411interface ID3D11Linker(ID3D11LinkerVtbl): IUnknown(IUnknownVtbl) {
412    fn Link(
413        pEntry: *mut ID3D11ModuleInstance,
414        pEntryName: LPCSTR,
415        pTargetName: LPCSTR,
416        uFlags: UINT,
417        ppShaderBlob: *mut *mut ID3DBlob,
418        ppErrorBuffer: *mut *mut ID3DBlob,
419    ) -> HRESULT,
420    fn UseLibrary(
421        pLibraryMI: *mut ID3D11ModuleInstance,
422    ) -> HRESULT,
423    fn AddClipPlaneFromCBuffer(
424        uCBufferSlot: UINT,
425        uCBufferEntry: UINT,
426    ) -> HRESULT,
427}}
428DEFINE_GUID!{IID_ID3D11LinkingNode,
429    0xd80dd70c, 0x8d2f, 0x4751, 0x94, 0xa1, 0x03, 0xc7, 0x9b, 0x35, 0x56, 0xdb}
430RIDL!{#[uuid(0xd80dd70c, 0x8d2f, 0x4751, 0x94, 0xa1, 0x03, 0xc7, 0x9b, 0x35, 0x56, 0xdb)]
431interface ID3D11LinkingNode(ID3D11LinkingNodeVtbl): IUnknown(IUnknownVtbl) {}}
432DEFINE_GUID!{IID_ID3D11FunctionLinkingGraph,
433    0x54133220, 0x1ce8, 0x43d3, 0x82, 0x36, 0x98, 0x55, 0xc5, 0xce, 0xec, 0xff}
434RIDL!{#[uuid(0x54133220, 0x1ce8, 0x43d3, 0x82, 0x36, 0x98, 0x55, 0xc5, 0xce, 0xec, 0xff)]
435interface ID3D11FunctionLinkingGraph(ID3D11FunctionLinkingGraphVtbl): IUnknown(IUnknownVtbl) {
436    fn CreateModuleInstance(
437        ppModuleInstance: *mut *mut ID3D11ModuleInstance,
438        ppErrorBuffer: *mut *mut ID3DBlob,
439    ) -> HRESULT,
440    fn SetInputSignature(
441        pInputParameters: *const D3D11_PARAMETER_DESC,
442        cInputParameters: UINT,
443        ppInputNode: *mut *mut ID3D11LinkingNode,
444    ) -> HRESULT,
445    fn SetOutputSignature(
446        pOutputParameters: *const D3D11_PARAMETER_DESC,
447        cOutputParameters: UINT,
448        ppOutputNode: *mut *mut ID3D11LinkingNode,
449    ) -> HRESULT,
450    fn CallFunction(
451        pModuleInstanceNamespace: LPCSTR,
452        pModuleWithFunctionPrototype: *mut ID3D11Module,
453        pFunctionName: LPCSTR,
454        ppCallNode: *mut *mut ID3D11LinkingNode,
455    ) -> HRESULT,
456    fn PassValue(
457        pSrcNode: *mut ID3D11LinkingNode,
458        SrcParameterIndex: INT,
459        pDstNode: *mut ID3D11LinkingNode,
460        DstParameterIndex: INT,
461    ) -> HRESULT,
462    fn PassValueWithSwizzle(
463        pSrcNode: *mut ID3D11LinkingNode,
464        SrcParameterIndex: INT,
465        pSrcSwizzle: LPCSTR,
466        pDstNode: *mut ID3D11LinkingNode,
467        DstParameterIndex: INT,
468        pDstSwizzle: LPCSTR,
469    ) -> HRESULT,
470    fn GetLastError(
471        ppErrorBuffer: *mut *mut ID3DBlob,
472    ) -> HRESULT,
473    fn GenerateHlsl(
474        uFlags: UINT,
475        ppBuffer: *mut *mut ID3DBlob,
476    ) -> HRESULT,
477}}