480acdad18
When trying to validate buffer sizes, we usually need to bail out when using SpecConstantOps, but for some very specific cases where we allow unsized arrays currently, we can safely allow "unknown" sized arrays as well. This is probably the best we can do, when we have even more difficult cases than this, we throw a more sensible error message.
47 lines
901 B
Plaintext
47 lines
901 B
Plaintext
#version 450
|
|
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
|
|
|
#ifndef SPIRV_CROSS_CONSTANT_ID_0
|
|
#define SPIRV_CROSS_CONSTANT_ID_0 100
|
|
#endif
|
|
const int a = SPIRV_CROSS_CONSTANT_ID_0;
|
|
#ifndef SPIRV_CROSS_CONSTANT_ID_1
|
|
#define SPIRV_CROSS_CONSTANT_ID_1 200
|
|
#endif
|
|
const int b = SPIRV_CROSS_CONSTANT_ID_1;
|
|
#ifndef SPIRV_CROSS_CONSTANT_ID_2
|
|
#define SPIRV_CROSS_CONSTANT_ID_2 300
|
|
#endif
|
|
const int c = SPIRV_CROSS_CONSTANT_ID_2;
|
|
const int _18 = (c + 50);
|
|
#ifndef SPIRV_CROSS_CONSTANT_ID_3
|
|
#define SPIRV_CROSS_CONSTANT_ID_3 400
|
|
#endif
|
|
const int e = SPIRV_CROSS_CONSTANT_ID_3;
|
|
|
|
struct A
|
|
{
|
|
int member0[a];
|
|
int member1[b];
|
|
};
|
|
|
|
struct B
|
|
{
|
|
int member0[b];
|
|
int member1[a];
|
|
};
|
|
|
|
layout(binding = 0, std430) buffer SSBO
|
|
{
|
|
A member_a;
|
|
B member_b;
|
|
int v[a];
|
|
int w[_18];
|
|
} _22;
|
|
|
|
void main()
|
|
{
|
|
_22.w[gl_GlobalInvocationID.x] += (_22.v[gl_GlobalInvocationID.x] + e);
|
|
}
|
|
|