[glsl][ir] Fix types for GLSL builtins Several of the GLSL builtins are `i32` where in WGSL they are `u32`. This CL fixes the `var` creation to have the correct types so the subsequent bitcast calls do not get removed. Bug: 42251044 Change-Id: I51e4fe08cb7a0d41e75041b89756746a9a4649ff Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/208395 Commit-Queue: dan sinclair <dsinclair@chromium.org> Reviewed-by: James Price <jrprice@google.com>
diff --git a/src/tint/lang/glsl/writer/raise/shader_io.cc b/src/tint/lang/glsl/writer/raise/shader_io.cc index a13a9c6..bf1bf7a 100644 --- a/src/tint/lang/glsl/writer/raise/shader_io.cc +++ b/src/tint/lang/glsl/writer/raise/shader_io.cc
@@ -128,10 +128,18 @@ if (io.attributes.builtin) { name << GLSLBuiltinToString(*io.attributes.builtin, addrspace); - if (io.attributes.builtin == core::BuiltinValue::kSampleMask) { - ptr = ty.ptr(addrspace, ty.array(ty.i32(), 1), access); - } else { - ptr = ty.ptr(addrspace, io.type, access); + switch (io.attributes.builtin.value()) { + case core::BuiltinValue::kSampleMask: + ptr = ty.ptr(addrspace, ty.array(ty.i32(), 1), access); + break; + case core::BuiltinValue::kVertexIndex: + case core::BuiltinValue::kInstanceIndex: + case core::BuiltinValue::kSampleIndex: + ptr = ty.ptr(addrspace, ty.i32(), access); + break; + default: + ptr = ty.ptr(addrspace, io.type, access); + break; } } else { name << ir.NameOf(func).Name();