vk.layout.sbuffer.fxc.hlsl 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. // Run: %dxc -T ps_6_0 -E main -fvk-use-dx-layout
  2. // fxc layout:
  3. //
  4. // struct S
  5. // {
  6. //
  7. // float scalar1; // Offset: 0
  8. // double scalar2; // Offset: 8
  9. // float3 vector1; // Offset: 16
  10. // float3 vector2; // Offset: 28
  11. // double3 vector3; // Offset: 40
  12. // double3 vector4; // Offset: 64
  13. // float2x3 matrix1; // Offset: 88
  14. // row_major float2x3 matrix2; // Offset: 112
  15. // float3x2 matrix3; // Offset: 136
  16. // row_major float3x2 matrix4; // Offset: 160
  17. // float scalarArray1; // Offset: 184
  18. // double scalarArray2[2]; // Offset: 192
  19. // float3 vectorArray1; // Offset: 208
  20. // float3 vectorArray2[2]; // Offset: 220
  21. // double3 vectorArray3[3]; // Offset: 248
  22. // double3 vectorArray4[4]; // Offset: 320
  23. // float2x3 matrixArray1; // Offset: 416
  24. // row_major float2x3 matrixArray2[2];// Offset: 440
  25. // float3x2 matrixArray3[3]; // Offset: 488
  26. // row_major float3x2 matrixArray4[4];// Offset: 560
  27. //
  28. // } // Size: 656
  29. // CHECK: OpDecorate %_arr_float_uint_1 ArrayStride 4
  30. // CHECK: OpDecorate %_arr_double_uint_2 ArrayStride 8
  31. // CHECK: OpDecorate %_arr_v3float_uint_1 ArrayStride 12
  32. // CHECK: OpDecorate %_arr_v3float_uint_2 ArrayStride 12
  33. // CHECK: OpDecorate %_arr_v3double_uint_3 ArrayStride 24
  34. // CHECK: OpDecorate %_arr_v3double_uint_4 ArrayStride 24
  35. // CHECK: OpDecorate %_arr_mat2v3float_uint_1 ArrayStride 24
  36. // CHECK: OpDecorate %_arr_mat2v3float_uint_2 ArrayStride 24
  37. // CHECK: OpDecorate %_arr_mat3v2float_uint_3 ArrayStride 24
  38. // CHECK: OpDecorate %_arr_mat3v2float_uint_4 ArrayStride 24
  39. // CHECK: OpMemberDecorate %S 0 Offset 0
  40. // CHECK: OpMemberDecorate %S 1 Offset 8
  41. // CHECK: OpMemberDecorate %S 2 Offset 16
  42. // CHECK: OpMemberDecorate %S 3 Offset 28
  43. // CHECK: OpMemberDecorate %S 4 Offset 40
  44. // CHECK: OpMemberDecorate %S 5 Offset 64
  45. // CHECK: OpMemberDecorate %S 6 Offset 88
  46. // CHECK: OpMemberDecorate %S 6 MatrixStride 8
  47. // CHECK: OpMemberDecorate %S 6 RowMajor
  48. // CHECK: OpMemberDecorate %S 7 Offset 112
  49. // CHECK: OpMemberDecorate %S 7 MatrixStride 12
  50. // CHECK: OpMemberDecorate %S 7 ColMajor
  51. // CHECK: OpMemberDecorate %S 8 Offset 136
  52. // CHECK: OpMemberDecorate %S 8 MatrixStride 12
  53. // CHECK: OpMemberDecorate %S 8 RowMajor
  54. // CHECK: OpMemberDecorate %S 9 Offset 160
  55. // CHECK: OpMemberDecorate %S 9 MatrixStride 8
  56. // CHECK: OpMemberDecorate %S 9 ColMajor
  57. // CHECK: OpMemberDecorate %S 10 Offset 184
  58. // CHECK: OpMemberDecorate %S 11 Offset 192
  59. // CHECK: OpMemberDecorate %S 12 Offset 208
  60. // CHECK: OpMemberDecorate %S 13 Offset 220
  61. // CHECK: OpMemberDecorate %S 14 Offset 248
  62. // CHECK: OpMemberDecorate %S 15 Offset 320
  63. // CHECK: OpMemberDecorate %S 16 Offset 416
  64. // CHECK: OpMemberDecorate %S 16 MatrixStride 8
  65. // CHECK: OpMemberDecorate %S 16 RowMajor
  66. // CHECK: OpMemberDecorate %S 17 Offset 440
  67. // CHECK: OpMemberDecorate %S 17 MatrixStride 12
  68. // CHECK: OpMemberDecorate %S 17 ColMajor
  69. // CHECK: OpMemberDecorate %S 18 Offset 488
  70. // CHECK: OpMemberDecorate %S 18 MatrixStride 12
  71. // CHECK: OpMemberDecorate %S 18 RowMajor
  72. // CHECK: OpMemberDecorate %S 19 Offset 560
  73. // CHECK: OpMemberDecorate %S 19 MatrixStride 8
  74. // CHECK: OpMemberDecorate %S 19 ColMajor
  75. // CHECK: OpDecorate %_runtimearr_S ArrayStride 656
  76. // fxc layout:
  77. //
  78. // struct T
  79. // {
  80. //
  81. // float scalar1; // Offset: 0
  82. //
  83. // struct S
  84. // {
  85. //
  86. // float scalar1; // Offset: 8
  87. // double scalar2; // Offset: 16
  88. // float3 vector1; // Offset: 24
  89. // float3 vector2; // Offset: 36
  90. // double3 vector3; // Offset: 48
  91. // double3 vector4; // Offset: 72
  92. // float2x3 matrix1; // Offset: 96
  93. // row_major float2x3 matrix2;// Offset: 120
  94. // float3x2 matrix3; // Offset: 144
  95. // row_major float3x2 matrix4;// Offset: 168
  96. // float scalarArray1; // Offset: 192
  97. // double scalarArray2[2]; // Offset: 200
  98. // float3 vectorArray1; // Offset: 216
  99. // float3 vectorArray2[2]; // Offset: 228
  100. // double3 vectorArray3[3]; // Offset: 256
  101. // double3 vectorArray4[4]; // Offset: 328
  102. // float2x3 matrixArray1; // Offset: 424
  103. // row_major float2x3 matrixArray2[2];// Offset: 448
  104. // float3x2 matrixArray3[3]; // Offset: 496
  105. // row_major float3x2 matrixArray4[4];// Offset: 568
  106. //
  107. // } sArray[2]; // Offset: 8
  108. // float scalarArray1; // Offset: 1320
  109. // float3 vectorArray1; // Offset: 1324
  110. // float3 vector1; // Offset: 1336
  111. // float2x3 matrixArray1; // Offset: 1348
  112. // float3 vector2; // Offset: 1372
  113. // double scalarArray2[2]; // Offset: 1384
  114. // float2x3 matrix1; // Offset: 1400
  115. // double3 vector3; // Offset: 1424
  116. // row_major float2x3 matrix2; // Offset: 1448
  117. // row_major float2x3 matrixArray2[2];// Offset: 1472
  118. // float3x2 matrix3; // Offset: 1520
  119. // row_major float3x2 matrix4; // Offset: 1544
  120. // float3 vectorArray2[2]; // Offset: 1568
  121. // float3x2 matrixArray3[3]; // Offset: 1592
  122. // double3 vectorArray3[3]; // Offset: 1664
  123. // row_major float3x2 matrixArray4[4];// Offset: 1736
  124. // double3 vector4; // Offset: 1832
  125. // double3 vectorArray4[4]; // Offset: 1856
  126. // double scalar2; // Offset: 1952
  127. //
  128. // } // Size: 1960
  129. // CHECK: OpDecorate %_arr_S_uint_2 ArrayStride 656
  130. // CHECK: OpMemberDecorate %T 0 Offset 0
  131. // CHECK: OpMemberDecorate %T 1 Offset 8
  132. // CHECK: OpMemberDecorate %T 2 Offset 1320
  133. // CHECK: OpMemberDecorate %T 3 Offset 1324
  134. // CHECK: OpMemberDecorate %T 4 Offset 1336
  135. // CHECK: OpMemberDecorate %T 5 Offset 1348
  136. // CHECK: OpMemberDecorate %T 5 MatrixStride 8
  137. // CHECK: OpMemberDecorate %T 5 RowMajor
  138. // CHECK: OpMemberDecorate %T 6 Offset 1372
  139. // CHECK: OpMemberDecorate %T 7 Offset 1384
  140. // CHECK: OpMemberDecorate %T 8 Offset 1400
  141. // CHECK: OpMemberDecorate %T 8 MatrixStride 8
  142. // CHECK: OpMemberDecorate %T 8 RowMajor
  143. // CHECK: OpMemberDecorate %T 9 Offset 1424
  144. // CHECK: OpMemberDecorate %T 10 Offset 1448
  145. // CHECK: OpMemberDecorate %T 10 MatrixStride 12
  146. // CHECK: OpMemberDecorate %T 10 ColMajor
  147. // CHECK: OpMemberDecorate %T 11 Offset 1472
  148. // CHECK: OpMemberDecorate %T 11 MatrixStride 12
  149. // CHECK: OpMemberDecorate %T 11 ColMajor
  150. // CHECK: OpMemberDecorate %T 12 Offset 1520
  151. // CHECK: OpMemberDecorate %T 12 MatrixStride 12
  152. // CHECK: OpMemberDecorate %T 12 RowMajor
  153. // CHECK: OpMemberDecorate %T 13 Offset 1544
  154. // CHECK: OpMemberDecorate %T 13 MatrixStride 8
  155. // CHECK: OpMemberDecorate %T 13 ColMajor
  156. // CHECK: OpMemberDecorate %T 14 Offset 1568
  157. // CHECK: OpMemberDecorate %T 15 Offset 1592
  158. // CHECK: OpMemberDecorate %T 15 MatrixStride 12
  159. // CHECK: OpMemberDecorate %T 15 RowMajor
  160. // CHECK: OpMemberDecorate %T 16 Offset 1664
  161. // CHECK: OpMemberDecorate %T 17 Offset 1736
  162. // CHECK: OpMemberDecorate %T 17 MatrixStride 8
  163. // CHECK: OpMemberDecorate %T 17 ColMajor
  164. // CHECK: OpMemberDecorate %T 18 Offset 1832
  165. // CHECK: OpMemberDecorate %T 19 Offset 1856
  166. // CHECK: OpMemberDecorate %T 20 Offset 1952
  167. // CHECK: OpDecorate %_runtimearr_T ArrayStride 1960
  168. struct S {
  169. float scalar1;
  170. double scalar2;
  171. float3 vector1;
  172. float3 vector2;
  173. double3 vector3;
  174. double3 vector4;
  175. float2x3 matrix1;
  176. row_major float2x3 matrix2;
  177. float3x2 matrix3;
  178. row_major float3x2 matrix4;
  179. float scalarArray1[1];
  180. double scalarArray2[2];
  181. float3 vectorArray1[1];
  182. float3 vectorArray2[2];
  183. double3 vectorArray3[3];
  184. double3 vectorArray4[4];
  185. float2x3 matrixArray1[1];
  186. row_major float2x3 matrixArray2[2];
  187. float3x2 matrixArray3[3];
  188. row_major float3x2 matrixArray4[4];
  189. };
  190. struct T {
  191. float scalar1;
  192. S sArray[2];
  193. float scalarArray1[1];
  194. float3 vectorArray1[1];
  195. float3 vector1;
  196. float2x3 matrixArray1[1];
  197. float3 vector2;
  198. double scalarArray2[2];
  199. float2x3 matrix1;
  200. double3 vector3;
  201. row_major float2x3 matrix2;
  202. row_major float2x3 matrixArray2[2];
  203. float3x2 matrix3;
  204. row_major float3x2 matrix4;
  205. float3 vectorArray2[2];
  206. float3x2 matrixArray3[3];
  207. double3 vectorArray3[3];
  208. row_major float3x2 matrixArray4[4];
  209. double3 vector4;
  210. double3 vectorArray4[4];
  211. double scalar2;
  212. };
  213. StructuredBuffer<S> MySBuffer1;
  214. StructuredBuffer<T> MySBuffer2;
  215. float4 main() : SV_Target {
  216. return MySBuffer1[0].scalar1 + MySBuffer2[0].scalar1;
  217. }