mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-08-03 18:55:39 +00:00
Fixes a stack overflow when traversing particularly deep graphs. This changes the iteration order which changes some of the diagnostic notes, but the diagnostics are still correct and deterministic so it does not matter. Fixed: chromium:47418 Change-Id: I2def633b6d96d1525027f7929b0fa0a6fba0efeb Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/90140 Auto-Submit: James Price <jrprice@google.com> Kokoro: Kokoro <noreply+kokoro@google.com> Reviewed-by: Ben Clayton <bclayton@google.com>
54 lines
1.8 KiB
WebGPU Shading Language
54 lines
1.8 KiB
WebGPU Shading Language
bug/dawn/947.wgsl:59:20 warning: 'textureSample' must only be called from uniform control flow
|
|
var srcColor = textureSample(myTexture, mySampler, texcoord);
|
|
^^^^^^^^^^^^^
|
|
|
|
bug/dawn/947.wgsl:55:5 note: control flow depends on non-uniform value
|
|
if (!all(clampedTexcoord == texcoord)) {
|
|
^^
|
|
|
|
bug/dawn/947.wgsl:55:33 note: reading from user-defined input 'texcoord' may result in a non-uniform value
|
|
if (!all(clampedTexcoord == texcoord)) {
|
|
^^^^^^^^
|
|
|
|
struct Uniforms {
|
|
u_scale : vec2<f32>,
|
|
u_offset : vec2<f32>,
|
|
}
|
|
|
|
@binding(0) @group(0) var<uniform> uniforms : Uniforms;
|
|
|
|
struct VertexOutputs {
|
|
@location(0)
|
|
texcoords : vec2<f32>,
|
|
@builtin(position)
|
|
position : vec4<f32>,
|
|
}
|
|
|
|
@stage(vertex)
|
|
fn vs_main(@builtin(vertex_index) VertexIndex : u32) -> VertexOutputs {
|
|
var texcoord = array<vec2<f32>, 3>(vec2<f32>(-0.5, 0.0), vec2<f32>(1.5, 0.0), vec2<f32>(0.5, 2.0));
|
|
var output : VertexOutputs;
|
|
output.position = vec4<f32>(((texcoord[VertexIndex] * 2.0) - vec2<f32>(1.0, 1.0)), 0.0, 1.0);
|
|
var flipY = (uniforms.u_scale.y < 0.0);
|
|
if (flipY) {
|
|
output.texcoords = ((((texcoord[VertexIndex] * uniforms.u_scale) + uniforms.u_offset) * vec2<f32>(1.0, -1.0)) + vec2<f32>(0.0, 1.0));
|
|
} else {
|
|
output.texcoords = ((((texcoord[VertexIndex] * vec2<f32>(1.0, -1.0)) + vec2<f32>(0.0, 1.0)) * uniforms.u_scale) + uniforms.u_offset);
|
|
}
|
|
return output;
|
|
}
|
|
|
|
@binding(1) @group(0) var mySampler : sampler;
|
|
|
|
@binding(2) @group(0) var myTexture : texture_2d<f32>;
|
|
|
|
@stage(fragment)
|
|
fn fs_main(@location(0) texcoord : vec2<f32>) -> @location(0) vec4<f32> {
|
|
var clampedTexcoord = clamp(texcoord, vec2<f32>(0.0, 0.0), vec2<f32>(1.0, 1.0));
|
|
if (!(all((clampedTexcoord == texcoord)))) {
|
|
discard;
|
|
}
|
|
var srcColor = textureSample(myTexture, mySampler, texcoord);
|
|
return srcColor;
|
|
}
|