mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-08-14 16:09:17 +00:00
This transform converts all separate texture/sampler references in a program into combined texture/samplers. This is required for GLSL, which does not support separate texture/samplers. As input, the transform requires a map from the unique sampler/texture pairs previously gathered by the Resolver to strings, which will be used as the names of the newly-generated combined samplers. Note that binding points are unused by GLSL, and so are set to (0, 0) with collision detection disabled. All function signatures containing textures or samplers are rewritten, as well as function calls and texture intrinsic calls. For texture intrinsic calls, a placeholder sampler is used to satisfy the subsequent Resolver pass (GLSL texture intrinsics do not require a separate sampler, but WGSL intrinsics do). The placeholder is also used if the shader contains only texture references (e.g., textureLoad). Bug: tint:1366 Change-Id: Iff8407d28fdc2a8adac5cb655707a08c8553c389 Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/77080 Reviewed-by: Ben Clayton <bclayton@google.com> Kokoro: Kokoro <noreply+kokoro@google.com> Commit-Queue: Stephen White <senorblanco@chromium.org>
119 lines
2.1 KiB
GLSL
119 lines
2.1 KiB
GLSL
#version 310 es
|
|
precision mediump float;
|
|
|
|
vec4 tint_symbol_1 = vec4(0.0f, 0.0f, 0.0f, 0.0f);
|
|
uniform highp sampler2DMS arg_0_1;
|
|
|
|
void textureLoad_6273b1() {
|
|
float res = 0.0f;
|
|
vec4 x_17 = vec4(texelFetch(arg_0_1, ivec2(0, 0), 1).x, 0.0f, 0.0f, 0.0f);
|
|
res = x_17.x;
|
|
return;
|
|
}
|
|
|
|
void tint_symbol_2(vec4 tint_symbol) {
|
|
tint_symbol_1 = tint_symbol;
|
|
return;
|
|
}
|
|
|
|
void vertex_main_1() {
|
|
textureLoad_6273b1();
|
|
tint_symbol_2(vec4(0.0f, 0.0f, 0.0f, 0.0f));
|
|
return;
|
|
}
|
|
|
|
struct vertex_main_out {
|
|
vec4 tint_symbol_1_1;
|
|
};
|
|
struct tint_symbol_3 {
|
|
vec4 tint_symbol_1_1;
|
|
};
|
|
|
|
vertex_main_out vertex_main_inner() {
|
|
vertex_main_1();
|
|
vertex_main_out tint_symbol_4 = vertex_main_out(tint_symbol_1);
|
|
return tint_symbol_4;
|
|
}
|
|
|
|
tint_symbol_3 vertex_main() {
|
|
vertex_main_out inner_result = vertex_main_inner();
|
|
tint_symbol_3 wrapper_result = tint_symbol_3(vec4(0.0f, 0.0f, 0.0f, 0.0f));
|
|
wrapper_result.tint_symbol_1_1 = inner_result.tint_symbol_1_1;
|
|
return wrapper_result;
|
|
}
|
|
void main() {
|
|
tint_symbol_3 outputs;
|
|
outputs = vertex_main();
|
|
gl_Position = outputs.tint_symbol_1_1;
|
|
gl_Position.y = -gl_Position.y;
|
|
}
|
|
|
|
|
|
#version 310 es
|
|
precision mediump float;
|
|
|
|
uniform highp sampler2DMS arg_0_1;
|
|
|
|
void textureLoad_6273b1() {
|
|
float res = 0.0f;
|
|
vec4 x_17 = vec4(texelFetch(arg_0_1, ivec2(0, 0), 1).x, 0.0f, 0.0f, 0.0f);
|
|
res = x_17.x;
|
|
return;
|
|
}
|
|
|
|
struct vertex_main_out {
|
|
vec4 tint_symbol_1_1;
|
|
};
|
|
struct tint_symbol_3 {
|
|
vec4 tint_symbol_1_1;
|
|
};
|
|
|
|
void fragment_main_1() {
|
|
textureLoad_6273b1();
|
|
return;
|
|
}
|
|
|
|
void fragment_main() {
|
|
fragment_main_1();
|
|
return;
|
|
}
|
|
void main() {
|
|
fragment_main();
|
|
}
|
|
|
|
|
|
#version 310 es
|
|
precision mediump float;
|
|
|
|
uniform highp sampler2DMS arg_0_1;
|
|
|
|
void textureLoad_6273b1() {
|
|
float res = 0.0f;
|
|
vec4 x_17 = vec4(texelFetch(arg_0_1, ivec2(0, 0), 1).x, 0.0f, 0.0f, 0.0f);
|
|
res = x_17.x;
|
|
return;
|
|
}
|
|
|
|
struct vertex_main_out {
|
|
vec4 tint_symbol_1_1;
|
|
};
|
|
struct tint_symbol_3 {
|
|
vec4 tint_symbol_1_1;
|
|
};
|
|
|
|
void compute_main_1() {
|
|
textureLoad_6273b1();
|
|
return;
|
|
}
|
|
|
|
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
|
void compute_main() {
|
|
compute_main_1();
|
|
return;
|
|
}
|
|
void main() {
|
|
compute_main();
|
|
}
|
|
|
|
|