dawn-cmake/test/tint/bug/dawn/947.wgsl.expected.glsl
Zhaoming Jiang 6ab5d3c151 Tint/transform: make AddBlockAttribute always do wrapping if possible
This CL make transform AddBlockAttribute always try to wrap types used
by buffer variables into a struct, in order to generate valid GLSL code
for assigning one buffer struct variable to another buffer struct
variable.

Fixed: tint:1735
Change-Id: I009d8a9ca7ecea1dc0ad6164275c964a18acb33f
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/108023
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Zhaoming Jiang <zhaoming.jiang@intel.com>
2022-11-02 02:25:38 +00:00

79 lines
1.9 KiB
GLSL

#version 310 es
layout(location = 0) out vec2 texcoords_1;
struct Uniforms {
vec2 u_scale;
vec2 u_offset;
};
layout(binding = 0, std140) uniform uniforms_block_ubo {
Uniforms inner;
} uniforms;
struct VertexOutputs {
vec2 texcoords;
vec4 position;
};
VertexOutputs vs_main(uint VertexIndex) {
vec2 texcoord[3] = vec2[3](vec2(-0.5f, 0.0f), vec2(1.5f, 0.0f), vec2(0.5f, 2.0f));
VertexOutputs tint_symbol = VertexOutputs(vec2(0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f));
tint_symbol.position = vec4(((texcoord[VertexIndex] * 2.0f) - vec2(1.0f)), 0.0f, 1.0f);
bool flipY = (uniforms.inner.u_scale.y < 0.0f);
if (flipY) {
tint_symbol.texcoords = ((((texcoord[VertexIndex] * uniforms.inner.u_scale) + uniforms.inner.u_offset) * vec2(1.0f, -1.0f)) + vec2(0.0f, 1.0f));
} else {
tint_symbol.texcoords = ((((texcoord[VertexIndex] * vec2(1.0f, -1.0f)) + vec2(0.0f, 1.0f)) * uniforms.inner.u_scale) + uniforms.inner.u_offset);
}
return tint_symbol;
}
void main() {
gl_PointSize = 1.0;
VertexOutputs inner_result = vs_main(uint(gl_VertexID));
texcoords_1 = inner_result.texcoords;
gl_Position = inner_result.position;
gl_Position.y = -(gl_Position.y);
gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
return;
}
#version 310 es
precision mediump float;
layout(location = 0) in vec2 texcoord_1;
layout(location = 0) out vec4 value;
struct Uniforms {
vec2 u_scale;
vec2 u_offset;
};
struct VertexOutputs {
vec2 texcoords;
vec4 position;
};
bool tint_discard = false;
vec4 fs_main(vec2 texcoord) {
vec2 clampedTexcoord = clamp(texcoord, vec2(0.0f), vec2(1.0f));
if (!(all(equal(clampedTexcoord, texcoord)))) {
tint_discard = true;
return vec4(0.0f);
}
vec4 srcColor = vec4(0.0f);
return srcColor;
}
void tint_discard_func() {
discard;
}
void main() {
vec4 inner_result = fs_main(texcoord_1);
if (tint_discard) {
tint_discard_func();
return;
}
value = inner_result;
return;
}