glsl: Wrap non-struct buffer types in structs
Use the AddSpirvBlockDecoration transform to do this. Add expected results for all of the new E2E tests. The arrayLength() tests all fail as this is not yet implemented for the GLSL backend. The other tests all pass except two that assign whole structs to buffers, which is also a pre-existing issue. Bug: tint:1372 Change-Id: I230197b43a5561e619866419d642ffc1ed085aac Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/76164 Reviewed-by: Ben Clayton <bclayton@google.com> Reviewed-by: Stephen White <senorblanco@chromium.org> Kokoro: Kokoro <noreply+kokoro@google.com>
This commit is contained in:
parent
51e55b244e
commit
ae8c65620e
|
@ -17,6 +17,7 @@
|
|||
#include <utility>
|
||||
|
||||
#include "src/program_builder.h"
|
||||
#include "src/transform/add_spirv_block_decoration.h"
|
||||
#include "src/transform/calculate_array_length.h"
|
||||
#include "src/transform/canonicalize_entry_point_io.h"
|
||||
#include "src/transform/decompose_memory_access.h"
|
||||
|
@ -75,6 +76,7 @@ Output Glsl::Run(const Program* in, const DataMap& inputs) {
|
|||
manager.Add<ExternalTextureTransform>();
|
||||
manager.Add<PromoteInitializersToConstVar>();
|
||||
manager.Add<PadArrayElements>();
|
||||
manager.Add<AddSpirvBlockDecoration>();
|
||||
|
||||
// For now, canonicalize to structs for all IO, as in HLSL.
|
||||
// TODO(senorblanco): we could skip this by accessing global entry point
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
#version 310 es
|
||||
precision mediump float;
|
||||
|
||||
struct tint_symbol_block {
|
||||
float inner[4];
|
||||
};
|
||||
|
||||
layout (binding = 0) buffer tint_symbol_block_1 {
|
||||
float inner[4];
|
||||
} tint_symbol;
|
||||
layout (binding = 1) buffer tint_symbol_block_2 {
|
||||
float inner[4];
|
||||
} tint_symbol_1;
|
||||
|
||||
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
||||
void tint_symbol_2() {
|
||||
tint_symbol_1.inner = tint_symbol.inner;
|
||||
return;
|
||||
}
|
||||
void main() {
|
||||
tint_symbol_2();
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
#version 310 es
|
||||
precision mediump float;
|
||||
|
||||
struct tint_symbol_block {
|
||||
float inner;
|
||||
};
|
||||
|
||||
layout (binding = 0) buffer tint_symbol_block_1 {
|
||||
float inner;
|
||||
} tint_symbol;
|
||||
layout (binding = 1) buffer tint_symbol_block_2 {
|
||||
float inner;
|
||||
} tint_symbol_1;
|
||||
|
||||
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
||||
void tint_symbol_2() {
|
||||
tint_symbol_1.inner = tint_symbol.inner;
|
||||
return;
|
||||
}
|
||||
void main() {
|
||||
tint_symbol_2();
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
#version 310 es
|
||||
precision mediump float;
|
||||
|
||||
struct tint_symbol_block {
|
||||
int inner;
|
||||
};
|
||||
|
||||
layout (binding = 0) buffer tint_symbol_block_1 {
|
||||
int inner;
|
||||
} tint_symbol;
|
||||
layout (binding = 1) buffer tint_symbol_block_2 {
|
||||
int inner;
|
||||
} tint_symbol_1;
|
||||
|
||||
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
||||
void tint_symbol_2() {
|
||||
tint_symbol_1.inner = tint_symbol.inner;
|
||||
return;
|
||||
}
|
||||
void main() {
|
||||
tint_symbol_2();
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
#version 310 es
|
||||
precision mediump float;
|
||||
|
||||
struct tint_symbol_block {
|
||||
mat2 inner;
|
||||
};
|
||||
|
||||
layout (binding = 0) buffer tint_symbol_block_1 {
|
||||
mat2 inner;
|
||||
} tint_symbol;
|
||||
layout (binding = 1) buffer tint_symbol_block_2 {
|
||||
mat2 inner;
|
||||
} tint_symbol_1;
|
||||
|
||||
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
||||
void tint_symbol_2() {
|
||||
tint_symbol_1.inner = tint_symbol.inner;
|
||||
return;
|
||||
}
|
||||
void main() {
|
||||
tint_symbol_2();
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
#version 310 es
|
||||
precision mediump float;
|
||||
|
||||
struct tint_symbol_block {
|
||||
mat2x3 inner;
|
||||
};
|
||||
|
||||
layout (binding = 0) buffer tint_symbol_block_1 {
|
||||
mat2x3 inner;
|
||||
} tint_symbol;
|
||||
layout (binding = 1) buffer tint_symbol_block_2 {
|
||||
mat2x3 inner;
|
||||
} tint_symbol_1;
|
||||
|
||||
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
||||
void tint_symbol_2() {
|
||||
tint_symbol_1.inner = tint_symbol.inner;
|
||||
return;
|
||||
}
|
||||
void main() {
|
||||
tint_symbol_2();
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
#version 310 es
|
||||
precision mediump float;
|
||||
|
||||
struct tint_symbol_block {
|
||||
mat3x2 inner;
|
||||
};
|
||||
|
||||
layout (binding = 0) buffer tint_symbol_block_1 {
|
||||
mat3x2 inner;
|
||||
} tint_symbol;
|
||||
layout (binding = 1) buffer tint_symbol_block_2 {
|
||||
mat3x2 inner;
|
||||
} tint_symbol_1;
|
||||
|
||||
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
||||
void tint_symbol_2() {
|
||||
tint_symbol_1.inner = tint_symbol.inner;
|
||||
return;
|
||||
}
|
||||
void main() {
|
||||
tint_symbol_2();
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
#version 310 es
|
||||
precision mediump float;
|
||||
|
||||
struct tint_symbol_block {
|
||||
mat4 inner;
|
||||
};
|
||||
|
||||
layout (binding = 0) buffer tint_symbol_block_1 {
|
||||
mat4 inner;
|
||||
} tint_symbol;
|
||||
layout (binding = 1) buffer tint_symbol_block_2 {
|
||||
mat4 inner;
|
||||
} tint_symbol_1;
|
||||
|
||||
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
||||
void tint_symbol_2() {
|
||||
tint_symbol_1.inner = tint_symbol.inner;
|
||||
return;
|
||||
}
|
||||
void main() {
|
||||
tint_symbol_2();
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
#version 310 es
|
||||
precision mediump float;
|
||||
|
||||
|
||||
layout (binding = 0) buffer tint_symbol_block_1 {
|
||||
float inner[];
|
||||
} tint_symbol;
|
||||
layout (binding = 1) buffer tint_symbol_block_2 {
|
||||
float inner[];
|
||||
} tint_symbol_1;
|
||||
|
||||
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
||||
void tint_symbol_2() {
|
||||
tint_symbol_1.inner[0] = tint_symbol.inner[0];
|
||||
return;
|
||||
}
|
||||
void main() {
|
||||
tint_symbol_2();
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
SKIP: FAILED
|
||||
|
||||
#version 310 es
|
||||
precision mediump float;
|
||||
|
||||
struct Inner {
|
||||
float f;
|
||||
};
|
||||
struct S {
|
||||
Inner inner;
|
||||
};
|
||||
|
||||
layout (binding = 0) buffer S_1 {
|
||||
Inner inner;
|
||||
} tint_symbol;
|
||||
layout (binding = 1) buffer S_2 {
|
||||
Inner inner;
|
||||
} tint_symbol_1;
|
||||
|
||||
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
||||
void tint_symbol_2() {
|
||||
tint_symbol_1 = tint_symbol;
|
||||
return;
|
||||
}
|
||||
void main() {
|
||||
tint_symbol_2();
|
||||
}
|
||||
|
||||
|
||||
Error parsing GLSL shader:
|
||||
ERROR: 0:20: 'assign' : cannot convert from 'layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer structure{ global mediump float f} inner}' to 'layout( binding=1 column_major shared) buffer block{layout( column_major shared) buffer structure{ global mediump float f} inner}'
|
||||
ERROR: 0:20: '' : compilation terminated
|
||||
ERROR: 2 compilation errors. No code generated.
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
#version 310 es
|
||||
precision mediump float;
|
||||
|
||||
struct tint_symbol_block {
|
||||
uint inner;
|
||||
};
|
||||
|
||||
layout (binding = 0) buffer tint_symbol_block_1 {
|
||||
uint inner;
|
||||
} tint_symbol;
|
||||
layout (binding = 1) buffer tint_symbol_block_2 {
|
||||
uint inner;
|
||||
} tint_symbol_1;
|
||||
|
||||
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
||||
void tint_symbol_2() {
|
||||
tint_symbol_1.inner = tint_symbol.inner;
|
||||
return;
|
||||
}
|
||||
void main() {
|
||||
tint_symbol_2();
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
#version 310 es
|
||||
precision mediump float;
|
||||
|
||||
struct tint_symbol_block {
|
||||
ivec2 inner;
|
||||
};
|
||||
|
||||
layout (binding = 0) buffer tint_symbol_block_1 {
|
||||
ivec2 inner;
|
||||
} tint_symbol;
|
||||
layout (binding = 1) buffer tint_symbol_block_2 {
|
||||
ivec2 inner;
|
||||
} tint_symbol_1;
|
||||
|
||||
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
||||
void tint_symbol_2() {
|
||||
tint_symbol_1.inner = tint_symbol.inner;
|
||||
return;
|
||||
}
|
||||
void main() {
|
||||
tint_symbol_2();
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
#version 310 es
|
||||
precision mediump float;
|
||||
|
||||
struct tint_symbol_block {
|
||||
uvec3 inner;
|
||||
};
|
||||
|
||||
layout (binding = 0) buffer tint_symbol_block_1 {
|
||||
uvec3 inner;
|
||||
} tint_symbol;
|
||||
layout (binding = 1) buffer tint_symbol_block_2 {
|
||||
uvec3 inner;
|
||||
} tint_symbol_1;
|
||||
|
||||
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
||||
void tint_symbol_2() {
|
||||
tint_symbol_1.inner = tint_symbol.inner;
|
||||
return;
|
||||
}
|
||||
void main() {
|
||||
tint_symbol_2();
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
#version 310 es
|
||||
precision mediump float;
|
||||
|
||||
struct tint_symbol_block {
|
||||
vec4 inner;
|
||||
};
|
||||
|
||||
layout (binding = 0) buffer tint_symbol_block_1 {
|
||||
vec4 inner;
|
||||
} tint_symbol;
|
||||
layout (binding = 1) buffer tint_symbol_block_2 {
|
||||
vec4 inner;
|
||||
} tint_symbol_1;
|
||||
|
||||
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
||||
void tint_symbol_2() {
|
||||
tint_symbol_1.inner = tint_symbol.inner;
|
||||
return;
|
||||
}
|
||||
void main() {
|
||||
tint_symbol_2();
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
#version 310 es
|
||||
precision mediump float;
|
||||
|
||||
struct u_block {
|
||||
vec4 inner[4];
|
||||
};
|
||||
|
||||
layout (binding = 0) uniform u_block_1 {
|
||||
vec4 inner[4];
|
||||
} u;
|
||||
|
||||
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
||||
void tint_symbol() {
|
||||
vec4 x[4] = u.inner;
|
||||
return;
|
||||
}
|
||||
void main() {
|
||||
tint_symbol();
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
#version 310 es
|
||||
precision mediump float;
|
||||
|
||||
struct u_block {
|
||||
float inner;
|
||||
};
|
||||
|
||||
layout (binding = 0) uniform u_block_1 {
|
||||
float inner;
|
||||
} u;
|
||||
|
||||
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
||||
void tint_symbol() {
|
||||
float x = u.inner;
|
||||
return;
|
||||
}
|
||||
void main() {
|
||||
tint_symbol();
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
#version 310 es
|
||||
precision mediump float;
|
||||
|
||||
struct u_block {
|
||||
int inner;
|
||||
};
|
||||
|
||||
layout (binding = 0) uniform u_block_1 {
|
||||
int inner;
|
||||
} u;
|
||||
|
||||
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
||||
void tint_symbol() {
|
||||
int x = u.inner;
|
||||
return;
|
||||
}
|
||||
void main() {
|
||||
tint_symbol();
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
#version 310 es
|
||||
precision mediump float;
|
||||
|
||||
struct u_block {
|
||||
mat2 inner;
|
||||
};
|
||||
|
||||
layout (binding = 0) uniform u_block_1 {
|
||||
mat2 inner;
|
||||
} u;
|
||||
|
||||
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
||||
void tint_symbol() {
|
||||
mat2 x = u.inner;
|
||||
return;
|
||||
}
|
||||
void main() {
|
||||
tint_symbol();
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
#version 310 es
|
||||
precision mediump float;
|
||||
|
||||
struct u_block {
|
||||
mat2x3 inner;
|
||||
};
|
||||
|
||||
layout (binding = 0) uniform u_block_1 {
|
||||
mat2x3 inner;
|
||||
} u;
|
||||
|
||||
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
||||
void tint_symbol() {
|
||||
mat2x3 x = u.inner;
|
||||
return;
|
||||
}
|
||||
void main() {
|
||||
tint_symbol();
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
#version 310 es
|
||||
precision mediump float;
|
||||
|
||||
struct u_block {
|
||||
mat3x2 inner;
|
||||
};
|
||||
|
||||
layout (binding = 0) uniform u_block_1 {
|
||||
mat3x2 inner;
|
||||
} u;
|
||||
|
||||
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
||||
void tint_symbol() {
|
||||
mat3x2 x = u.inner;
|
||||
return;
|
||||
}
|
||||
void main() {
|
||||
tint_symbol();
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
#version 310 es
|
||||
precision mediump float;
|
||||
|
||||
struct u_block {
|
||||
mat4 inner;
|
||||
};
|
||||
|
||||
layout (binding = 0) uniform u_block_1 {
|
||||
mat4 inner;
|
||||
} u;
|
||||
|
||||
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
||||
void tint_symbol() {
|
||||
mat4 x = u.inner;
|
||||
return;
|
||||
}
|
||||
void main() {
|
||||
tint_symbol();
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
SKIP: FAILED
|
||||
|
||||
#version 310 es
|
||||
precision mediump float;
|
||||
|
||||
struct Inner {
|
||||
float f;
|
||||
};
|
||||
struct S {
|
||||
Inner inner;
|
||||
};
|
||||
|
||||
layout (binding = 0) uniform S_1 {
|
||||
Inner inner;
|
||||
} u;
|
||||
|
||||
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
||||
void tint_symbol() {
|
||||
S x = u;
|
||||
return;
|
||||
}
|
||||
void main() {
|
||||
tint_symbol();
|
||||
}
|
||||
|
||||
|
||||
Error parsing GLSL shader:
|
||||
ERROR: 0:17: '=' : cannot convert from 'layout( binding=0 column_major shared) uniform block{layout( column_major shared) uniform structure{ global mediump float f} inner}' to ' temp structure{ global structure{ global mediump float f} inner}'
|
||||
ERROR: 0:17: '' : compilation terminated
|
||||
ERROR: 2 compilation errors. No code generated.
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
#version 310 es
|
||||
precision mediump float;
|
||||
|
||||
struct u_block {
|
||||
uint inner;
|
||||
};
|
||||
|
||||
layout (binding = 0) uniform u_block_1 {
|
||||
uint inner;
|
||||
} u;
|
||||
|
||||
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
||||
void tint_symbol() {
|
||||
uint x = u.inner;
|
||||
return;
|
||||
}
|
||||
void main() {
|
||||
tint_symbol();
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
#version 310 es
|
||||
precision mediump float;
|
||||
|
||||
struct u_block {
|
||||
ivec2 inner;
|
||||
};
|
||||
|
||||
layout (binding = 0) uniform u_block_1 {
|
||||
ivec2 inner;
|
||||
} u;
|
||||
|
||||
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
||||
void tint_symbol() {
|
||||
ivec2 x = u.inner;
|
||||
return;
|
||||
}
|
||||
void main() {
|
||||
tint_symbol();
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
#version 310 es
|
||||
precision mediump float;
|
||||
|
||||
struct u_block {
|
||||
uvec3 inner;
|
||||
};
|
||||
|
||||
layout (binding = 0) uniform u_block_1 {
|
||||
uvec3 inner;
|
||||
} u;
|
||||
|
||||
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
||||
void tint_symbol() {
|
||||
uvec3 x = u.inner;
|
||||
return;
|
||||
}
|
||||
void main() {
|
||||
tint_symbol();
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
#version 310 es
|
||||
precision mediump float;
|
||||
|
||||
struct u_block {
|
||||
vec4 inner;
|
||||
};
|
||||
|
||||
layout (binding = 0) uniform u_block_1 {
|
||||
vec4 inner;
|
||||
} u;
|
||||
|
||||
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
||||
void tint_symbol() {
|
||||
vec4 x = u.inner;
|
||||
return;
|
||||
}
|
||||
void main() {
|
||||
tint_symbol();
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
SKIP: FAILED
|
||||
|
||||
#version 310 es
|
||||
precision mediump float;
|
||||
|
||||
|
||||
layout (binding = 0) buffer G_block_1 {
|
||||
int inner[];
|
||||
} G;
|
||||
|
||||
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
||||
void tint_symbol() {
|
||||
uint tint_symbol_2 = 0u;
|
||||
G.inner.GetDimensions(tint_symbol_2);
|
||||
uint tint_symbol_3 = (tint_symbol_2 / 4u);
|
||||
uint l1 = tint_symbol_3;
|
||||
return;
|
||||
}
|
||||
void main() {
|
||||
tint_symbol();
|
||||
}
|
||||
|
||||
|
||||
Error parsing GLSL shader:
|
||||
ERROR: 0:12: '.' : cannot apply to an array: GetDimensions
|
||||
ERROR: 0:12: '' : compilation terminated
|
||||
ERROR: 2 compilation errors. No code generated.
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
SKIP: FAILED
|
||||
|
||||
#version 310 es
|
||||
precision mediump float;
|
||||
|
||||
|
||||
layout (binding = 0) buffer G_block_1 {
|
||||
int inner[];
|
||||
} G;
|
||||
|
||||
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
||||
void tint_symbol() {
|
||||
uint tint_symbol_2 = 0u;
|
||||
G.inner.GetDimensions(tint_symbol_2);
|
||||
uint tint_symbol_3 = (tint_symbol_2 / 4u);
|
||||
uint l1 = tint_symbol_3;
|
||||
return;
|
||||
}
|
||||
void main() {
|
||||
tint_symbol();
|
||||
}
|
||||
|
||||
|
||||
Error parsing GLSL shader:
|
||||
ERROR: 0:12: '.' : cannot apply to an array: GetDimensions
|
||||
ERROR: 0:12: '' : compilation terminated
|
||||
ERROR: 2 compilation errors. No code generated.
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
SKIP: FAILED
|
||||
|
||||
#version 310 es
|
||||
precision mediump float;
|
||||
|
||||
|
||||
layout (binding = 0) buffer G_block_1 {
|
||||
int inner[];
|
||||
} G;
|
||||
|
||||
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
||||
void tint_symbol() {
|
||||
uint tint_symbol_2 = 0u;
|
||||
G.inner.GetDimensions(tint_symbol_2);
|
||||
uint tint_symbol_3 = (tint_symbol_2 / 4u);
|
||||
uint l1 = tint_symbol_3;
|
||||
return;
|
||||
}
|
||||
void main() {
|
||||
tint_symbol();
|
||||
}
|
||||
|
||||
|
||||
Error parsing GLSL shader:
|
||||
ERROR: 0:12: '.' : cannot apply to an array: GetDimensions
|
||||
ERROR: 0:12: '' : compilation terminated
|
||||
ERROR: 2 compilation errors. No code generated.
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
SKIP: FAILED
|
||||
|
||||
#version 310 es
|
||||
precision mediump float;
|
||||
|
||||
|
||||
layout (binding = 0) buffer G_block_1 {
|
||||
int inner[];
|
||||
} G;
|
||||
|
||||
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
||||
void tint_symbol() {
|
||||
uint tint_symbol_2 = 0u;
|
||||
G.inner.GetDimensions(tint_symbol_2);
|
||||
uint tint_symbol_3 = (tint_symbol_2 / 4u);
|
||||
uint l1 = tint_symbol_3;
|
||||
return;
|
||||
}
|
||||
void main() {
|
||||
tint_symbol();
|
||||
}
|
||||
|
||||
|
||||
Error parsing GLSL shader:
|
||||
ERROR: 0:12: '.' : cannot apply to an array: GetDimensions
|
||||
ERROR: 0:12: '' : compilation terminated
|
||||
ERROR: 2 compilation errors. No code generated.
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue