spv.layoutNested.vert 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #version 450
  2. // should get 3 SPV types for S: no layout, 140, and 430, plus extras for interpolation or invariant differences
  3. struct S
  4. {
  5. highp uvec3 a;
  6. mediump mat2 b[4];
  7. lowp uint c;
  8. };
  9. layout(set = 0, binding = 0, std140) uniform Block140
  10. {
  11. mediump int u;
  12. S s[2][3];
  13. mediump vec2 v;
  14. } inst140;
  15. layout(set = 0, binding = 1, std430) buffer Block430
  16. {
  17. mediump int u;
  18. S s[2][3];
  19. mediump vec2 v;
  20. } inst430;
  21. S s;
  22. // should get 5 SPV types for T: no layout, 140/row, 140/col, 430/row, and 430/col
  23. struct T {
  24. mat2 m;
  25. int a;
  26. };
  27. T t;
  28. struct Nestor {
  29. T nestorT;
  30. };
  31. layout(set = 1, binding = 0, std140) uniform Bt1
  32. {
  33. layout(row_major) Nestor nt;
  34. } Btn1;
  35. layout(set = 1, binding = 0, std140) uniform Bt2
  36. {
  37. layout(column_major) Nestor nt;
  38. } Btn2;
  39. layout(row_major, set = 1, binding = 0, std140) uniform Bt3
  40. {
  41. layout(column_major) Nestor ntcol;
  42. Nestor ntrow; // should be row major decoration version of Nestor
  43. } Btn3;
  44. layout(set = 1, binding = 0, std430) buffer bBt1
  45. {
  46. layout(row_major) Nestor nt;
  47. } bBtn1;
  48. layout(set = 1, binding = 0, std430) buffer bBt2
  49. {
  50. layout(column_major) Nestor nt;
  51. } bBtn2;
  52. layout(set = 1, binding = 0, std430) buffer bBt3
  53. {
  54. layout(row_major) Nestor ntcol;
  55. Nestor ntrow; // should be col major decoration version of Nestor
  56. } bBtn3;
  57. void main()
  58. {
  59. }
  60. flat out S sout;
  61. invariant out S soutinv;