glslang/Test/hlsl.structbuffer.coherent.frag
steve-lunarg 5da1f038d8 HLSL: implement 4 (of 6) structuredbuffer types
This is a partial implemention of structurebuffers supporting:

* structured buffer types of:
*   StructuredBuffer
*   RWStructuredBuffer
*   ByteAddressBuffer
*   RWByteAddressBuffer

* Atomic operations on RWByteAddressBuffer

* Load/Load[234], Store/Store[234], GetDimensions methods (where allowed by type)

* globallycoherent flag

But NOT yet supporting:

* AppendStructuredBuffer / ConsumeStructuredBuffer types
* IncrementCounter/DecrementCounter methods

Please note: the stride returned by GetDimensions is as calculated by glslang for std430,
and may not match other environments in all cases.
2017-02-21 15:51:49 -07:00

24 lines
413 B
GLSL

struct sb_t
{
float3 color;
bool test;
};
globallycoherent RWStructuredBuffer<sb_t> sbuf;
globallycoherent RWStructuredBuffer<float> sbuf2;
float4 main(uint pos : FOO) : SV_Target0
{
sbuf2[pos+1] = 42;
uint size;
uint stride;
sbuf.GetDimensions(size, stride);
if (sbuf[pos].test)
return float4(sbuf[pos].color + sbuf2[pos], 0);
else
return size + stride;
}