xkslang/Test/spv.310.comp

38 строки
885 B
Plaintext

#version 310 es
precision highp float;
layout (local_size_x = 16, local_size_y = 32, local_size_z = 4) in;
shared float s;
shared int i;
buffer outb {
float f;
float g;
float h;
vec3 uns[]; // this makes it look like the "second" set of 3 floats in a struct, which LLVM
// takes advantage of when optimizing, giving confusing results, like thinking
// &outbname.uns[18].x == &outbname[9].uns.x
} outbname;
buffer outbna {
int k;
vec4 na;
} outbnamena;
buffer outs {
vec4 va[];
} outnames;
void main()
{
barrier();
outbname.f = s;
outbnamena.na = vec4(s);
s = outbname.uns[18].x; // TODO: see note above
//outbname.uns[17] = vec3(3.0); // TODO: see note above, this one bitcasts, which isn't handled
outbname.uns[i] = vec3(s);
outnames.va[gl_LocalInvocationID.x] = vec4(s);
}