[glsl] Add fuzzer precondition for read-write storage textures
GLES 3.1 only supports r32f, r32i, and r32ui for read-write storage
textures.
Change-Id: I29c2697c574dbc841050dd5c790b387bc115c7ea
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/213634
Reviewed-by: dan sinclair <dsinclair@chromium.org>
diff --git a/src/tint/lang/glsl/writer/writer_fuzz.cc b/src/tint/lang/glsl/writer/writer_fuzz.cc
index 89c2dfa..6f789a9 100644
--- a/src/tint/lang/glsl/writer/writer_fuzz.cc
+++ b/src/tint/lang/glsl/writer/writer_fuzz.cc
@@ -30,6 +30,7 @@
#include "src/tint/lang/core/ir/var.h"
#include "src/tint/lang/core/type/input_attachment.h"
#include "src/tint/lang/core/type/pointer.h"
+#include "src/tint/lang/core/type/storage_texture.h"
#include "src/tint/lang/glsl/writer/helpers/generate_bindings.h"
#include "src/tint/lang/glsl/writer/writer.h"
@@ -62,6 +63,20 @@
if (!found) {
return false;
}
+
+ // Check texel formats for read-write storage textures.
+ if (auto* st = ptr->StoreType()->As<core::type::StorageTexture>()) {
+ if (st->Access() == core::Access::kReadWrite) {
+ switch (st->TexelFormat()) {
+ case core::TexelFormat::kR32Float:
+ case core::TexelFormat::kR32Sint:
+ case core::TexelFormat::kR32Uint:
+ break;
+ default:
+ return false;
+ }
+ }
+ }
}
if (ptr->AddressSpace() == core::AddressSpace::kPushConstant) {