vk.binding.explicit.hlsl 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. // Run: %dxc -T ps_6_0 -E main
  2. // CHECK: OpDecorate %sampler1 DescriptorSet 0
  3. // CHECK-NEXT: OpDecorate %sampler1 Binding 0
  4. [[vk::binding(0)]]
  5. SamplerState sampler1 : register(s1, space1);
  6. // CHECK: OpDecorate %sampler2 DescriptorSet 1
  7. // CHECK-NEXT: OpDecorate %sampler2 Binding 3
  8. [[vk::binding(3, 1)]]
  9. SamplerState sampler2 : register(s2);
  10. // CHECK: OpDecorate %texture1 DescriptorSet 0
  11. // CHECK-NEXT: OpDecorate %texture1 Binding 2
  12. [[vk::binding(2)]]
  13. Texture2D<float4> texture1;
  14. // CHECK: OpDecorate %texture2 DescriptorSet 2
  15. // CHECK-NEXT: OpDecorate %texture2 Binding 2
  16. [[vk::binding(2, 2)]]
  17. Texture3D<float4> texture2 : register(t0, space0);
  18. // CHECK: OpDecorate %myBuffer DescriptorSet 2
  19. // CHECK-NEXT: OpDecorate %myBuffer Binding 3
  20. [[vk::binding(3, 2)]]
  21. Buffer<int> myBuffer : register(t1, space0);
  22. // CHECK: OpDecorate %myRWBuffer DescriptorSet 1
  23. // CHECK-NEXT: OpDecorate %myRWBuffer Binding 4
  24. [[vk::binding(4, 1)]]
  25. RWBuffer<float4> myRWBuffer : register(u0, space1);
  26. // CHECK: OpDecorate %myCBuffer DescriptorSet 3
  27. // CHECK-NEXT: OpDecorate %myCBuffer Binding 10
  28. [[vk::binding(10, 3)]]
  29. cbuffer myCBuffer : register(b5, space1) {
  30. float cbfield;
  31. };
  32. struct S {
  33. float f;
  34. };
  35. // CHECK: OpDecorate %myConstantBuffer DescriptorSet 3
  36. // CHECK-NEXT: OpDecorate %myConstantBuffer Binding 5
  37. [[vk::binding(5, 3)]]
  38. ConstantBuffer<S> myConstantBuffer: register(b1, space1);
  39. // CHECK: OpDecorate %sbuffer1 DescriptorSet 0
  40. // CHECK-NEXT: OpDecorate %sbuffer1 Binding 3
  41. [[vk::binding(3)]]
  42. StructuredBuffer<S> sbuffer1 : register(t5);
  43. // CHECK: OpDecorate %sbuffer2 DescriptorSet 3
  44. // CHECK-NEXT: OpDecorate %sbuffer2 Binding 2
  45. [[vk::binding(2, 3)]]
  46. RWStructuredBuffer<S> sbuffer2 : register(u6);
  47. // CHECK: OpDecorate %asbuffer DescriptorSet 1
  48. // CHECK-NEXT: OpDecorate %asbuffer Binding 1
  49. // CHECK-NEXT: OpDecorate %csbuffer DescriptorSet 1
  50. // CHECK-NEXT: OpDecorate %csbuffer Binding 21
  51. // CHECK-NEXT: OpDecorate %counter_var_sbuffer2 DescriptorSet 3
  52. // CHECK-NEXT: OpDecorate %counter_var_sbuffer2 Binding 0
  53. // CHECK-NEXT: OpDecorate %counter_var_asbuffer DescriptorSet 1
  54. // CHECK-NEXT: OpDecorate %counter_var_asbuffer Binding 0
  55. // CHECK-NEXT: OpDecorate %counter_var_csbuffer DescriptorSet 1
  56. // CHECK-NEXT: OpDecorate %counter_var_csbuffer Binding 2
  57. [[vk::binding(1, 1)]]
  58. AppendStructuredBuffer<S> asbuffer : register(u10);
  59. // Next available "hole" in set #1: binding #0
  60. [[vk::binding(21, 1)]]
  61. ConsumeStructuredBuffer<S> csbuffer : register(u11);
  62. // Next available "hole" in set #1: binding #2
  63. float4 main() : SV_Target {
  64. return 1.0;
  65. }