raw_buf3.hlsl 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. // RUN: %dxc -E main -T ps_6_0 -HV 2018 %s | FileCheck %s
  2. // CHECK-NOT: @dx.op.rawBufferLoad
  3. // CHECK: call %dx.types.ResRet.i32 @dx.op.bufferLoad.i32
  4. // CHECK: call %dx.types.ResRet.f32 @dx.op.bufferLoad.f32
  5. // CHECK: call double @dx.op.makeDouble.f64
  6. // CHECK: call double @dx.op.makeDouble.f64
  7. // CHECK: call double @dx.op.makeDouble.f64
  8. // CHECK: call double @dx.op.makeDouble.f64
  9. // Store by default will store what's passed in
  10. // CHECK: call void @dx.op.bufferStore.f32
  11. // CHECK: call void @dx.op.bufferStore.i32
  12. // CHECK: call void @dx.op.bufferStore.i32
  13. // CHECK: call void @dx.op.bufferStore.i32
  14. ByteAddressBuffer buf1;
  15. RWByteAddressBuffer buf2;
  16. float4 main(uint idx1 : IDX1, uint idx2 : IDX2) : SV_Target {
  17. uint status;
  18. float4 r = float4(0,0,0,0);
  19. r.x += buf1.Load(idx1);
  20. r.xy += buf1.Load2(idx1, status);
  21. r.xyz += buf1.Load3(idx1);
  22. r.xyzw += buf1.Load4(idx1, status);
  23. r.x += buf2.Load(idx2, status);
  24. r.xy += buf2.Load2(idx2);
  25. r.xyz += buf2.Load3(idx2, status);
  26. r.xyzw += buf2.Load4(idx2);
  27. r.x += buf1.Load<float>(idx1, status);
  28. r.xy += buf1.Load<float2>(idx1);
  29. r.xyz += buf1.Load<float3>(idx1, status);
  30. r.xyzw += buf1.Load<float4>(idx1);
  31. r.x += buf2.Load<float>(idx2);
  32. r.xy += buf2.Load<float2>(idx2, status);
  33. r.xyz += buf2.Load<float3>(idx2);
  34. r.xyzw += buf2.Load<float4>(idx2, status);
  35. r.x += buf1.Load<double>(idx1);
  36. r.xy += buf1.Load<double2>(idx1, status);
  37. r.x += buf2.Load<double>(idx2, status);
  38. r.xy += buf2.Load<double2>(idx2);
  39. buf2.Store(1, r.x);
  40. buf2.Store2(1, r.xy);
  41. buf2.Store3(1, r.xyz);
  42. buf2.Store4(1, r);
  43. return r;
  44. }