1 // Copyright © 2016, Peter Atashian
2 // Licensed under the MIT License <LICENSE.md>
3 use super::*;
4 pub type D3D10_RESOURCE_RETURN_TYPE = D3D_RESOURCE_RETURN_TYPE;
5 pub type D3D10_CBUFFER_TYPE = D3D_CBUFFER_TYPE;
6 STRUCT!{struct D3D10_SHADER_DESC {
7     Version: UINT,
8     Creator: LPCSTR,
9     Flags: UINT,
10     ConstantBuffers: UINT,
11     BoundResources: UINT,
12     InputParameters: UINT,
13     OutputParameters: UINT,
14     InstructionCount: UINT,
15     TempRegisterCount: UINT,
16     TempArrayCount: UINT,
17     DefCount: UINT,
18     DclCount: UINT,
19     TextureNormalInstructions: UINT,
20     TextureLoadInstructions: UINT,
21     TextureCompInstructions: UINT,
22     TextureBiasInstructions: UINT,
23     TextureGradientInstructions: UINT,
24     FloatInstructionCount: UINT,
25     IntInstructionCount: UINT,
26     UintInstructionCount: UINT,
27     StaticFlowControlCount: UINT,
28     DynamicFlowControlCount: UINT,
29     MacroInstructionCount: UINT,
30     ArrayInstructionCount: UINT,
31     CutInstructionCount: UINT,
32     EmitInstructionCount: UINT,
33     GSOutputTopology: D3D_PRIMITIVE_TOPOLOGY,
34     GSMaxOutputVertexCount: UINT,
35 }}
36 STRUCT!{struct D3D10_SHADER_BUFFER_DESC {
37     Name: LPCSTR,
38     Type: D3D10_CBUFFER_TYPE,
39     Variables: UINT,
40     Size: UINT,
41     uFlags: UINT,
42 }}
43 STRUCT!{struct D3D10_SHADER_VARIABLE_DESC {
44     Name: LPCSTR,
45     StartOffset: UINT,
46     Size: UINT,
47     uFlags: UINT,
48     DefaultValue: LPVOID,
49 }}
50 STRUCT!{struct D3D10_SHADER_TYPE_DESC {
51     Class: D3D_SHADER_VARIABLE_CLASS,
52     Type: D3D_SHADER_VARIABLE_TYPE,
53     Rows: UINT,
54     Columns: UINT,
55     Elements: UINT,
56     Members: UINT,
57     Offset: UINT,
58 }}
59 STRUCT!{struct D3D10_SHADER_INPUT_BIND_DESC {
60     Name: LPCSTR,
61     Type: D3D_SHADER_INPUT_TYPE,
62     BindPoint: UINT,
63     BindCount: UINT,
64     uFlags: UINT,
65     ReturnType: D3D_RESOURCE_RETURN_TYPE,
66     Dimension: D3D_SRV_DIMENSION,
67     NumSamples: UINT,
68 }}
69 STRUCT!{struct D3D10_SIGNATURE_PARAMETER_DESC {
70     SemanticName: LPCSTR,
71     SemanticIndex: UINT,
72     Register: UINT,
73     SystemValueType: D3D_NAME,
74     ComponentType: D3D_REGISTER_COMPONENT_TYPE,
75     Mask: BYTE,
76     ReadWriteMask: BYTE,
77 }}
78 RIDL!{interface ID3D10ShaderReflectionType(ID3D10ShaderReflectionTypeVtbl) {
79     fn GetDesc(&mut self, pDesc: *mut D3D10_SHADER_TYPE_DESC) -> HRESULT,
80     fn GetMemberTypeByIndex(&mut self, Index: UINT) -> *mut ID3D10ShaderReflectionType,
81     fn GetMemberTypeByName(&mut self, Name: LPCSTR) -> *mut ID3D10ShaderReflectionType,
82     fn GetMemberTypeName(&mut self, Index: UINT) -> LPCSTR
83 }}
84 RIDL!{interface ID3D10ShaderReflectionVariable(ID3D10ShaderReflectionVariableVtbl) {
85     fn GetDesc(&mut self, pDesc: *mut D3D10_SHADER_VARIABLE_DESC) -> HRESULT,
86     fn GetType(&mut self) -> *mut ID3D10ShaderReflectionType
87 }}
88 RIDL!{interface ID3D10ShaderReflectionConstantBuffer(ID3D10ShaderReflectionConstantBufferVtbl) {
89     fn GetDesc(&mut self, pDesc: *mut D3D10_SHADER_BUFFER_DESC) -> HRESULT,
90     fn GetVariableByIndex(&mut self, Index: UINT) -> *mut ID3D10ShaderReflectionVariable,
91     fn GetVariableByName(&mut self, Name: LPCSTR) -> *mut ID3D10ShaderReflectionVariable
92 }}
93 RIDL!{interface ID3D10ShaderReflection(ID3D10ShaderReflectionVtbl): IUnknown(IUnknownVtbl) {
94     fn GetDesc(&mut self, pDesc: *mut D3D10_SHADER_DESC) -> HRESULT,
95     fn GetConstantBufferByIndex(
96         &mut self, Index: UINT
97     ) -> *mut ID3D10ShaderReflectionConstantBuffer,
98     fn GetConstantBufferByName(
99         &mut self, Name: LPCSTR
100     ) -> *mut ID3D10ShaderReflectionConstantBuffer,
101     fn GetResourceBindingDesc(
102         &mut self, ResourceIndex: UINT, pDesc: *mut D3D10_SHADER_INPUT_BIND_DESC
103     ) -> HRESULT,
104     fn GetInputParameterDesc(
105         &mut self, ParameterIndex: UINT, pDesc: *mut D3D10_SIGNATURE_PARAMETER_DESC
106     ) -> HRESULT,
107     fn GetOutputParameterDesc(
108         &mut self, ParameterIndex: UINT, pDesc: *mut D3D10_SIGNATURE_PARAMETER_DESC
109     ) -> HRESULT
110 }}
111