Fix Texture1DTo2D not appending .x for builtin as a call statement
Remove the early return for call statement case, but always
append .x to builtin::kTextureDimensions in Texture1DTo2D
transform.
Bug: tint:2060
Change-Id: Ic3c0c1abc2c4fcba290b723f01029c6b3f039547
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/157062
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Stephen White <senorblanco@chromium.org>
Commit-Queue: Shrek Shao <shrekshao@google.com>
diff --git a/src/dawn/tests/end2end/StorageTextureTests.cpp b/src/dawn/tests/end2end/StorageTextureTests.cpp
index ff0b802..7da7872 100644
--- a/src/dawn/tests/end2end/StorageTextureTests.cpp
+++ b/src/dawn/tests/end2end/StorageTextureTests.cpp
@@ -784,9 +784,6 @@
// Verify 1D write-only storage textures work correctly.
TEST_P(StorageTextureTests, Writeonly1DStorageTexture) {
- // TODO(crbug.com/tint/2060): shader compile error for glsl writer.
- DAWN_TEST_UNSUPPORTED_IF(IsOpenGL() || IsOpenGLES());
-
constexpr wgpu::TextureFormat kTextureFormat = wgpu::TextureFormat::R32Uint;
// Prepare the write-only storage texture.
diff --git a/src/tint/lang/glsl/writer/ast_raise/texture_1d_to_2d.cc b/src/tint/lang/glsl/writer/ast_raise/texture_1d_to_2d.cc
index 4dc3480..df5452a 100644
--- a/src/tint/lang/glsl/writer/ast_raise/texture_1d_to_2d.cc
+++ b/src/tint/lang/glsl/writer/ast_raise/texture_1d_to_2d.cc
@@ -154,11 +154,6 @@
}
if (builtin->Fn() == wgsl::BuiltinFn::kTextureDimensions) {
- // If this textureDimensions() call is in a CallStatement, we can leave it
- // unmodified since the return value will be dropped on the floor anyway.
- if (call->Stmt()->Declaration()->Is<ast::CallStatement>()) {
- return nullptr;
- }
auto* new_call = ctx.CloneWithoutTransform(c);
return ctx.dst->MemberAccessor(new_call, "x");
}
diff --git a/src/tint/lang/glsl/writer/ast_raise/texture_1d_to_2d_test.cc b/src/tint/lang/glsl/writer/ast_raise/texture_1d_to_2d_test.cc
index 35de36b..7441fe3 100644
--- a/src/tint/lang/glsl/writer/ast_raise/texture_1d_to_2d_test.cc
+++ b/src/tint/lang/glsl/writer/ast_raise/texture_1d_to_2d_test.cc
@@ -153,17 +153,21 @@
TEST_F(Texture1DTo2DTest, Global1DDeclAndTextureDimensionsInCallStmt) {
auto* src = R"(
-@group(0) @binding(0) var t : texture_1d<f32>;
+@group(0) @binding(0) var st : texture_storage_1d<r32uint, write>;
+
+@group(0) @binding(1) var t : texture_1d<f32>;
fn main() {
- _ = textureDimensions(t);
+ textureStore(st, clamp(5, 0, i32((textureDimensions(st) - 1))), vec4u(0, 0, 0, 0));
}
)";
auto* expect = R"(
-@group(0) @binding(0) var t : texture_2d<f32>;
+@group(0) @binding(0) var st : texture_storage_2d<r32uint, write>;
+
+@group(0) @binding(1) var t : texture_2d<f32>;
fn main() {
- _ = textureDimensions(t).x;
+ textureStore(st, vec2<i32>(clamp(5, 0, i32((textureDimensions(st).x - 1))), 0), vec4u(0, 0, 0, 0));
}
)";