gather_cs.hlsl 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. // RUN: %dxc -E main -T cs_6_0 %s | FileCheck %s
  2. SamplerState samp1 : register(s5);
  3. Texture2D<float4> text1 : register(t3);
  4. struct InOut {
  5. float2 coord;
  6. float4 result;
  7. };
  8. RWStructuredBuffer<InOut> Data;
  9. // CHECK: define void @main()
  10. [numthreads(64,1,1)]
  11. void main(uint id : SV_GroupIndex)
  12. {
  13. float2 a = Data[id].coord;
  14. uint status;
  15. float4 r = 0;
  16. r += text1.Gather(samp1, a);
  17. r += text1.Gather(samp1, a, uint2(-5, 7));
  18. r += text1.Gather(samp1, a, uint2(-3, 2), status); r += CheckAccessFullyMapped(status);
  19. a *= 1.125; // Prevent GatherCmpRed from being optimized to equivalent GatherCmp above
  20. r += text1.GatherAlpha(samp1, a);
  21. r += text1.GatherAlpha(samp1, a, uint2(-3,8));
  22. r += text1.GatherAlpha(samp1, a, uint2(-3,8),status); r += CheckAccessFullyMapped(status);
  23. r += text1.GatherAlpha(samp1, a, uint2(-3,8),uint2(-2,3), uint2(-3,8),uint2(-2,3));
  24. r += text1.GatherAlpha(samp1, a, uint2(-3,8),uint2(8,-3), uint2(8,-3), uint2(-3,2), status); r+=CheckAccessFullyMapped(status);
  25. r += text1.GatherBlue(samp1, a);
  26. r += text1.GatherBlue(samp1, a, uint2(-3,8));
  27. r += text1.GatherBlue(samp1, a, uint2(-3,8),status); r += CheckAccessFullyMapped(status);
  28. r += text1.GatherBlue(samp1, a, uint2(-3,8),uint2(-2,3), uint2(-3,8),uint2(-2,3));
  29. r += text1.GatherBlue(samp1, a, uint2(-3,8),uint2(8,-3), uint2(8,-3), uint2(-3,2), status); r+=CheckAccessFullyMapped(status);
  30. r += text1.GatherGreen(samp1, a);
  31. r += text1.GatherGreen(samp1, a, uint2(-3,8));
  32. r += text1.GatherGreen(samp1, a, uint2(-3,8),status); r += CheckAccessFullyMapped(status);
  33. r += text1.GatherGreen(samp1, a, uint2(-3,8),uint2(-2,3), uint2(-3,8),uint2(-2,3));
  34. r += text1.GatherGreen(samp1, a, uint2(-3,8),uint2(8,-3), uint2(8,-3), uint2(-3,2), status); r+=CheckAccessFullyMapped(status);
  35. r += text1.GatherRed(samp1, a);
  36. r += text1.GatherRed(samp1, a, uint2(-3,8));
  37. r += text1.GatherRed(samp1, a, uint2(-3,8),status); r += CheckAccessFullyMapped(status);
  38. r += text1.GatherRed(samp1, a, uint2(-3,8),uint2(-2,3), uint2(-3,8),uint2(-2,3));
  39. r += text1.GatherRed(samp1, a, uint2(-3,8),uint2(8,-3), uint2(8,-3), uint2(-3,2), status); r+=CheckAccessFullyMapped(status);
  40. Data[id].result = r;
  41. }