empty_struct2.hlsl 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. // RUN: %dxc -E main -T vs_6_0 -Vd -validator-version 0.0 %s | %D3DReflect %s | FileCheck %s
  2. // Make sure nest empty struct works.
  3. struct KillerStruct {};
  4. struct InnerStruct {
  5. KillerStruct s;
  6. };
  7. struct OuterStruct {
  8. InnerStruct s;
  9. };
  10. cbuffer Params_cbuffer : register(b0) {
  11. OuterStruct constants;
  12. float4 foo;
  13. };
  14. cbuffer Params_cbuffer2 : register(b1) {
  15. InnerStruct constArray[1];
  16. float4 bar;
  17. };
  18. float4 main(float4 pos : POSITION) : SV_POSITION { return foo + bar; }
  19. // CHECK: ID3D12ShaderReflection:
  20. // CHECK: D3D12_SHADER_BUFFER_DESC:
  21. // CHECK: Shader Version: Vertex 6.0
  22. // CHECK: ConstantBuffers: 2
  23. // CHECK: BoundResources: 2
  24. // CHECK: InputParameters: 1
  25. // CHECK: OutputParameters: 1
  26. // CHECK: Constant Buffers:
  27. // CHECK: ID3D12ShaderReflectionConstantBuffer:
  28. // CHECK: D3D12_SHADER_BUFFER_DESC: Name: Params_cbuffer
  29. // CHECK: Type: D3D_CT_CBUFFER
  30. // CHECK: Size: 16
  31. // CHECK: Num Variables: 2
  32. // CHECK: {
  33. // CHECK: ID3D12ShaderReflectionVariable:
  34. // CHECK: D3D12_SHADER_VARIABLE_DESC: Name: constants
  35. // CHECK: ID3D12ShaderReflectionType:
  36. // CHECK: D3D12_SHADER_TYPE_DESC: Name: OuterStruct
  37. // CHECK: Class: D3D_SVC_STRUCT
  38. // CHECK: Type: D3D_SVT_VOID
  39. // CHECK: Rows: 1
  40. // CHECK: CBuffer: Params_cbuffer
  41. // CHECK: ID3D12ShaderReflectionVariable:
  42. // CHECK: D3D12_SHADER_VARIABLE_DESC: Name: foo
  43. // CHECK: Size: 16
  44. // CHECK: uFlags: 0x2
  45. // CHECK: ID3D12ShaderReflectionType:
  46. // CHECK: D3D12_SHADER_TYPE_DESC: Name: float4
  47. // CHECK: Class: D3D_SVC_VECTOR
  48. // CHECK: Type: D3D_SVT_FLOAT
  49. // CHECK: Rows: 1
  50. // CHECK: Columns: 4
  51. // CHECK: CBuffer: Params_cbuffer
  52. // CHECK: }
  53. // CHECK: ID3D12ShaderReflectionConstantBuffer:
  54. // CHECK: D3D12_SHADER_BUFFER_DESC: Name: Params_cbuffer2
  55. // CHECK: Type: D3D_CT_CBUFFER
  56. // CHECK: Size: 16
  57. // CHECK: uFlags: 0
  58. // CHECK: Num Variables: 2
  59. // CHECK: {
  60. // CHECK: ID3D12ShaderReflectionVariable:
  61. // CHECK: D3D12_SHADER_VARIABLE_DESC: Name: constArray
  62. // CHECK: Size: 0
  63. // CHECK: StartOffset: 0
  64. // CHECK: uFlags: 0
  65. // CHECK: DefaultValue: <nullptr>
  66. // CHECK: ID3D12ShaderReflectionType:
  67. // CHECK: D3D12_SHADER_TYPE_DESC: Name: InnerStruct
  68. // CHECK: Class: D3D_SVC_STRUCT
  69. // CHECK: Type: D3D_SVT_VOID
  70. // CHECK: Elements: 1
  71. // CHECK: Rows: 1
  72. // CHECK: Columns: 0
  73. // CHECK: Members: 0
  74. // CHECK: Offset: 0
  75. // CHECK: CBuffer: Params_cbuffer2
  76. // CHECK: ID3D12ShaderReflectionVariable:
  77. // CHECK: D3D12_SHADER_VARIABLE_DESC: Name: bar
  78. // CHECK: Size: 16
  79. // CHECK: StartOffset: 0
  80. // CHECK: uFlags: 0x2
  81. // CHECK: DefaultValue: <nullptr>
  82. // CHECK: ID3D12ShaderReflectionType:
  83. // CHECK: D3D12_SHADER_TYPE_DESC: Name: float4
  84. // CHECK: Class: D3D_SVC_VECTOR
  85. // CHECK: Type: D3D_SVT_FLOAT
  86. // CHECK: Elements: 0
  87. // CHECK: Rows: 1
  88. // CHECK: Columns: 4
  89. // CHECK: Members: 0
  90. // CHECK: Offset: 0
  91. // CHECK: CBuffer: Params_cbuffer2
  92. // CHECK: }
  93. // CHECK: Bound Resources:
  94. // CHECK: D3D12_SHADER_BUFFER_DESC: Name: Params_cbuffer
  95. // CHECK: Type: D3D_SIT_CBUFFER
  96. // CHECK: uID: 0
  97. // CHECK: BindPoint: 0
  98. // CHECK: Dimension: D3D_SRV_DIMENSION_UNKNOWN