struct_buf6.hlsl 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. // RUN: %dxilver 1.2 | %dxc -E main -T ps_6_2 %s | FileCheck %s
  2. // CHECK-NOT: @dx.op.bufferLoad
  3. // CHECK-NOT: @dx.op.bufferStore
  4. // CHECK: @dx.op.rawBufferLoad
  5. // CHECK: @dx.op.rawBufferStore
  6. struct Foo
  7. {
  8. float2 a;
  9. float3 b;
  10. int2 c[4];
  11. };
  12. StructuredBuffer<Foo> buf1;
  13. RWStructuredBuffer<Foo> buf2;
  14. float4 main(float idx1 : Idx1, float idx2 : Idx2) : SV_Target
  15. {
  16. uint status;
  17. float4 r = 0;
  18. r.xy += buf1.Load(idx1).a;
  19. r.xyz += buf1.Load(idx1).b;
  20. r.wy += buf1.Load(idx1).c[idx2];
  21. r.xy += buf1.Load(idx2, status).a; r += status;
  22. r.xyz += buf1.Load(idx2, status).b; r += status;
  23. r.wy += buf1.Load(idx2, status).c[idx2]; r += status;
  24. r.xy += buf2.Load(idx1+200).a;
  25. r.xyz += buf2.Load(idx1+200).b;
  26. r.wy += buf2.Load(idx1+200).c[idx2];
  27. r.xy += buf2.Load(idx2+200, status).a; r += status;
  28. r.xyz += buf2.Load(idx2+200, status).b; r += status;
  29. r.wy += buf2.Load(idx2+200, status).c[idx2]; r += status;
  30. buf2[idx1*3].a = r.xy;
  31. buf2[idx1*3].b = r.xyz;
  32. buf2[idx1*3].c[idx2] = r.yw;
  33. buf2[0].a = buf1.Load(1).b.xy;
  34. return r;
  35. }