GLSL: swizzle out the dimension on cube arrays.
Note: ES doesn't support cube arrays, so this fixes the tests but does
not cause them to pass.
Bug: tint:1461
Change-Id: Ia2b1ffacab83dae58ac1b50eb04457da270d73e2
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/82363
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
diff --git a/src/tint/writer/glsl/generator_impl.cc b/src/tint/writer/glsl/generator_impl.cc
index f0ffc53..0daf65e 100644
--- a/src/tint/writer/glsl/generator_impl.cc
+++ b/src/tint/writer/glsl/generator_impl.cc
@@ -1303,9 +1303,10 @@
}
}
out << ")";
- // textureSize() on sampler2dArray returns the array size in the
+ // textureSize() on array samplers returns the array size in the
// final component, so strip it out.
- if (texture_type->dim() == ast::TextureDimension::k2dArray) {
+ if (texture_type->dim() == ast::TextureDimension::k2dArray ||
+ texture_type->dim() == ast::TextureDimension::kCubeArray) {
out << ".xy";
}
return true;
diff --git a/test/tint/builtins/gen/textureDimensions/221f22.wgsl.expected.glsl b/test/tint/builtins/gen/textureDimensions/221f22.wgsl.expected.glsl
index e94b6af..d98cab1 100644
--- a/test/tint/builtins/gen/textureDimensions/221f22.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/textureDimensions/221f22.wgsl.expected.glsl
@@ -4,7 +4,7 @@
uniform highp isamplerCubeArray arg_0_1;
void textureDimensions_221f22() {
- ivec2 res = textureSize(arg_0_1, 0);
+ ivec2 res = textureSize(arg_0_1, 0).xy;
}
vec4 vertex_main() {
@@ -31,7 +31,7 @@
uniform highp isamplerCubeArray arg_0_1;
void textureDimensions_221f22() {
- ivec2 res = textureSize(arg_0_1, 0);
+ ivec2 res = textureSize(arg_0_1, 0).xy;
}
void fragment_main() {
@@ -53,7 +53,7 @@
uniform highp isamplerCubeArray arg_0_1;
void textureDimensions_221f22() {
- ivec2 res = textureSize(arg_0_1, 0);
+ ivec2 res = textureSize(arg_0_1, 0).xy;
}
void compute_main() {
diff --git a/test/tint/builtins/gen/textureDimensions/4152a6.wgsl.expected.glsl b/test/tint/builtins/gen/textureDimensions/4152a6.wgsl.expected.glsl
index 04f0869..25170ca 100644
--- a/test/tint/builtins/gen/textureDimensions/4152a6.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/textureDimensions/4152a6.wgsl.expected.glsl
@@ -4,7 +4,7 @@
uniform highp usamplerCubeArray arg_0_1;
void textureDimensions_4152a6() {
- ivec2 res = textureSize(arg_0_1, 0);
+ ivec2 res = textureSize(arg_0_1, 0).xy;
}
vec4 vertex_main() {
@@ -31,7 +31,7 @@
uniform highp usamplerCubeArray arg_0_1;
void textureDimensions_4152a6() {
- ivec2 res = textureSize(arg_0_1, 0);
+ ivec2 res = textureSize(arg_0_1, 0).xy;
}
void fragment_main() {
@@ -53,7 +53,7 @@
uniform highp usamplerCubeArray arg_0_1;
void textureDimensions_4152a6() {
- ivec2 res = textureSize(arg_0_1, 0);
+ ivec2 res = textureSize(arg_0_1, 0).xy;
}
void compute_main() {
diff --git a/test/tint/builtins/gen/textureDimensions/50a9ee.wgsl.expected.glsl b/test/tint/builtins/gen/textureDimensions/50a9ee.wgsl.expected.glsl
index 61d47e0..02b83e4 100644
--- a/test/tint/builtins/gen/textureDimensions/50a9ee.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/textureDimensions/50a9ee.wgsl.expected.glsl
@@ -4,7 +4,7 @@
uniform highp samplerCubeArray arg_0_1;
void textureDimensions_50a9ee() {
- ivec2 res = textureSize(arg_0_1, 0);
+ ivec2 res = textureSize(arg_0_1, 0).xy;
}
vec4 vertex_main() {
@@ -31,7 +31,7 @@
uniform highp samplerCubeArray arg_0_1;
void textureDimensions_50a9ee() {
- ivec2 res = textureSize(arg_0_1, 0);
+ ivec2 res = textureSize(arg_0_1, 0).xy;
}
void fragment_main() {
@@ -53,7 +53,7 @@
uniform highp samplerCubeArray arg_0_1;
void textureDimensions_50a9ee() {
- ivec2 res = textureSize(arg_0_1, 0);
+ ivec2 res = textureSize(arg_0_1, 0).xy;
}
void compute_main() {
diff --git a/test/tint/builtins/gen/textureDimensions/8f20bf.wgsl.expected.glsl b/test/tint/builtins/gen/textureDimensions/8f20bf.wgsl.expected.glsl
index 192b65f..9276c34 100644
--- a/test/tint/builtins/gen/textureDimensions/8f20bf.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/textureDimensions/8f20bf.wgsl.expected.glsl
@@ -4,7 +4,7 @@
uniform highp samplerCubeArray arg_0_1;
void textureDimensions_8f20bf() {
- ivec2 res = textureSize(arg_0_1, 0);
+ ivec2 res = textureSize(arg_0_1, 0).xy;
}
vec4 vertex_main() {
@@ -31,7 +31,7 @@
uniform highp samplerCubeArray arg_0_1;
void textureDimensions_8f20bf() {
- ivec2 res = textureSize(arg_0_1, 0);
+ ivec2 res = textureSize(arg_0_1, 0).xy;
}
void fragment_main() {
@@ -53,7 +53,7 @@
uniform highp samplerCubeArray arg_0_1;
void textureDimensions_8f20bf() {
- ivec2 res = textureSize(arg_0_1, 0);
+ ivec2 res = textureSize(arg_0_1, 0).xy;
}
void compute_main() {
diff --git a/test/tint/builtins/gen/textureDimensions/90340b.wgsl.expected.glsl b/test/tint/builtins/gen/textureDimensions/90340b.wgsl.expected.glsl
index c524db9..e8a38c8 100644
--- a/test/tint/builtins/gen/textureDimensions/90340b.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/textureDimensions/90340b.wgsl.expected.glsl
@@ -4,7 +4,7 @@
uniform highp samplerCubeArray arg_0_1;
void textureDimensions_90340b() {
- ivec2 res = textureSize(arg_0_1, 0);
+ ivec2 res = textureSize(arg_0_1, 0).xy;
}
vec4 vertex_main() {
@@ -31,7 +31,7 @@
uniform highp samplerCubeArray arg_0_1;
void textureDimensions_90340b() {
- ivec2 res = textureSize(arg_0_1, 0);
+ ivec2 res = textureSize(arg_0_1, 0).xy;
}
void fragment_main() {
@@ -53,7 +53,7 @@
uniform highp samplerCubeArray arg_0_1;
void textureDimensions_90340b() {
- ivec2 res = textureSize(arg_0_1, 0);
+ ivec2 res = textureSize(arg_0_1, 0).xy;
}
void compute_main() {
diff --git a/test/tint/builtins/gen/textureDimensions/a01845.wgsl.expected.glsl b/test/tint/builtins/gen/textureDimensions/a01845.wgsl.expected.glsl
index 1be537d..5449a07 100644
--- a/test/tint/builtins/gen/textureDimensions/a01845.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/textureDimensions/a01845.wgsl.expected.glsl
@@ -4,7 +4,7 @@
uniform highp samplerCubeArray arg_0_1;
void textureDimensions_a01845() {
- ivec2 res = textureSize(arg_0_1, 0);
+ ivec2 res = textureSize(arg_0_1, 0).xy;
}
vec4 vertex_main() {
@@ -31,7 +31,7 @@
uniform highp samplerCubeArray arg_0_1;
void textureDimensions_a01845() {
- ivec2 res = textureSize(arg_0_1, 0);
+ ivec2 res = textureSize(arg_0_1, 0).xy;
}
void fragment_main() {
@@ -53,7 +53,7 @@
uniform highp samplerCubeArray arg_0_1;
void textureDimensions_a01845() {
- ivec2 res = textureSize(arg_0_1, 0);
+ ivec2 res = textureSize(arg_0_1, 0).xy;
}
void compute_main() {
diff --git a/test/tint/builtins/gen/textureDimensions/ba1481.wgsl.expected.glsl b/test/tint/builtins/gen/textureDimensions/ba1481.wgsl.expected.glsl
index 0e70b6c..3da3b8e 100644
--- a/test/tint/builtins/gen/textureDimensions/ba1481.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/textureDimensions/ba1481.wgsl.expected.glsl
@@ -1,6 +1,6 @@
SKIP: FAILED
-../../src/tint/writer/glsl/generator_impl.cc:2571 internal compiler error: Multiplanar external texture transform was not run.
+../../src/tint/writer/glsl/generator_impl.cc:2572 internal compiler error: Multiplanar external texture transform was not run.
********************************************************************
diff --git a/test/tint/builtins/gen/textureDimensions/d83c45.wgsl.expected.glsl b/test/tint/builtins/gen/textureDimensions/d83c45.wgsl.expected.glsl
index 74f97fd..faa5564 100644
--- a/test/tint/builtins/gen/textureDimensions/d83c45.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/textureDimensions/d83c45.wgsl.expected.glsl
@@ -4,7 +4,7 @@
uniform highp usamplerCubeArray arg_0_1;
void textureDimensions_d83c45() {
- ivec2 res = textureSize(arg_0_1, 0);
+ ivec2 res = textureSize(arg_0_1, 0).xy;
}
vec4 vertex_main() {
@@ -31,7 +31,7 @@
uniform highp usamplerCubeArray arg_0_1;
void textureDimensions_d83c45() {
- ivec2 res = textureSize(arg_0_1, 0);
+ ivec2 res = textureSize(arg_0_1, 0).xy;
}
void fragment_main() {
@@ -53,7 +53,7 @@
uniform highp usamplerCubeArray arg_0_1;
void textureDimensions_d83c45() {
- ivec2 res = textureSize(arg_0_1, 0);
+ ivec2 res = textureSize(arg_0_1, 0).xy;
}
void compute_main() {
diff --git a/test/tint/builtins/gen/textureDimensions/e927be.wgsl.expected.glsl b/test/tint/builtins/gen/textureDimensions/e927be.wgsl.expected.glsl
index f579795..ac71e97 100644
--- a/test/tint/builtins/gen/textureDimensions/e927be.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/textureDimensions/e927be.wgsl.expected.glsl
@@ -4,7 +4,7 @@
uniform highp isamplerCubeArray arg_0_1;
void textureDimensions_e927be() {
- ivec2 res = textureSize(arg_0_1, 0);
+ ivec2 res = textureSize(arg_0_1, 0).xy;
}
vec4 vertex_main() {
@@ -31,7 +31,7 @@
uniform highp isamplerCubeArray arg_0_1;
void textureDimensions_e927be() {
- ivec2 res = textureSize(arg_0_1, 0);
+ ivec2 res = textureSize(arg_0_1, 0).xy;
}
void fragment_main() {
@@ -53,7 +53,7 @@
uniform highp isamplerCubeArray arg_0_1;
void textureDimensions_e927be() {
- ivec2 res = textureSize(arg_0_1, 0);
+ ivec2 res = textureSize(arg_0_1, 0).xy;
}
void compute_main() {
diff --git a/test/tint/builtins/gen/textureLoad/8acf41.wgsl.expected.glsl b/test/tint/builtins/gen/textureLoad/8acf41.wgsl.expected.glsl
index 0e70b6c..3da3b8e 100644
--- a/test/tint/builtins/gen/textureLoad/8acf41.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/textureLoad/8acf41.wgsl.expected.glsl
@@ -1,6 +1,6 @@
SKIP: FAILED
-../../src/tint/writer/glsl/generator_impl.cc:2571 internal compiler error: Multiplanar external texture transform was not run.
+../../src/tint/writer/glsl/generator_impl.cc:2572 internal compiler error: Multiplanar external texture transform was not run.
********************************************************************
diff --git a/test/tint/builtins/gen/textureSampleLevel/979816.wgsl.expected.glsl b/test/tint/builtins/gen/textureSampleLevel/979816.wgsl.expected.glsl
index 0e70b6c..3da3b8e 100644
--- a/test/tint/builtins/gen/textureSampleLevel/979816.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/textureSampleLevel/979816.wgsl.expected.glsl
@@ -1,6 +1,6 @@
SKIP: FAILED
-../../src/tint/writer/glsl/generator_impl.cc:2571 internal compiler error: Multiplanar external texture transform was not run.
+../../src/tint/writer/glsl/generator_impl.cc:2572 internal compiler error: Multiplanar external texture transform was not run.
********************************************************************
diff --git a/test/tint/unittest/reader/spirv/ImageQuerySizeLod_Arrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.glsl b/test/tint/unittest/reader/spirv/ImageQuerySizeLod_Arrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.glsl
index 8c3d294..c124d09 100644
--- a/test/tint/unittest/reader/spirv/ImageQuerySizeLod_Arrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.glsl
+++ b/test/tint/unittest/reader/spirv/ImageQuerySizeLod_Arrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.glsl
@@ -22,7 +22,7 @@
vec2 coords12 = vf12;
vec3 coords123 = vf123;
vec4 coords1234 = vf1234;
- ivec3 x_99 = ivec3(textureSize(x_20_1, i1).xy, textureSize(x_20_1, 0).z);
+ ivec3 x_99 = ivec3(textureSize(x_20_1, i1).xy.xy, textureSize(x_20_1, 0).z);
return;
}
diff --git a/test/tint/unittest/reader/spirv/ImageQuerySizeLod_Arrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.glsl b/test/tint/unittest/reader/spirv/ImageQuerySizeLod_Arrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.glsl
index 8c3d294..c124d09 100644
--- a/test/tint/unittest/reader/spirv/ImageQuerySizeLod_Arrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.glsl
+++ b/test/tint/unittest/reader/spirv/ImageQuerySizeLod_Arrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.glsl
@@ -22,7 +22,7 @@
vec2 coords12 = vf12;
vec3 coords123 = vf123;
vec4 coords1234 = vf1234;
- ivec3 x_99 = ivec3(textureSize(x_20_1, i1).xy, textureSize(x_20_1, 0).z);
+ ivec3 x_99 = ivec3(textureSize(x_20_1, i1).xy.xy, textureSize(x_20_1, 0).z);
return;
}