Add testing for 1D w/ level textureLoad overload
BUG=tint:516
Change-Id: Ic075dc52618bc6d2492e82538f0f02d45f925ddf
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/42700
Auto-Submit: Ryan Harrison <rharrison@chromium.org>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
diff --git a/src/ast/intrinsic_texture_helper_test.cc b/src/ast/intrinsic_texture_helper_test.cc
index 958ba7c..b9ec2f9 100644
--- a/src/ast/intrinsic_texture_helper_test.cc
+++ b/src/ast/intrinsic_texture_helper_test.cc
@@ -1701,6 +1701,51 @@
},
},
{
+ ValidTextureOverload::kLoad1dLevelF32,
+ "textureLoad(t : texture_1d<f32>,\n"
+ " coords : i32,\n"
+ " level : i32) -> vec4<f32>",
+ TextureKind::kRegular,
+ type::TextureDimension::k1d,
+ TextureDataType::kF32,
+ "textureLoad",
+ [](ProgramBuilder* b) {
+ return b->ExprList("texture", // t
+ 1, // coords
+ 3); // level
+ },
+ },
+ {
+ ValidTextureOverload::kLoad1dLevelU32,
+ "textureLoad(t : texture_1d<u32>,\n"
+ " coords : i32,\n"
+ " level : i32) -> vec4<u32>",
+ TextureKind::kRegular,
+ type::TextureDimension::k1d,
+ TextureDataType::kU32,
+ "textureLoad",
+ [](ProgramBuilder* b) {
+ return b->ExprList("texture", // t
+ 1, // coords
+ 3); // level
+ },
+ },
+ {
+ ValidTextureOverload::kLoad1dLevelI32,
+ "textureLoad(t : texture_1d<i32>,\n"
+ " coords : i32,\n"
+ " level : i32) -> vec4<i32>",
+ TextureKind::kRegular,
+ type::TextureDimension::k1d,
+ TextureDataType::kI32,
+ "textureLoad",
+ [](ProgramBuilder* b) {
+ return b->ExprList("texture", // t
+ 1, // coords
+ 3); // level
+ },
+ },
+ {
ValidTextureOverload::kLoad2dF32,
"textureLoad(t : texture_2d<f32>,\n"
" coords : vec2<i32>) -> vec4<f32>",
diff --git a/src/ast/intrinsic_texture_helper_test.h b/src/ast/intrinsic_texture_helper_test.h
index 626e7ea..17fac28 100644
--- a/src/ast/intrinsic_texture_helper_test.h
+++ b/src/ast/intrinsic_texture_helper_test.h
@@ -137,6 +137,9 @@
kLoad1dF32,
kLoad1dU32,
kLoad1dI32,
+ kLoad1dLevelF32,
+ kLoad1dLevelU32,
+ kLoad1dLevelI32,
kLoad2dF32,
kLoad2dU32,
kLoad2dI32,
@@ -165,7 +168,7 @@
kLoadDepth2dLevelF32,
kLoadDepth2dArrayF32,
kLoadDepth2dArrayLevelF32,
- kLoadStorageRO1dRgba32float, // Not permutated for all texel formats
+ kLoadStorageRO1dRgba32float, // Not permutated for all texel formats
kLoadStorageRO2dRgba8unorm,
kLoadStorageRO2dRgba8snorm,
kLoadStorageRO2dRgba8uint,
diff --git a/src/type_determiner_test.cc b/src/type_determiner_test.cc
index 9c8de62..9ae97b5 100644
--- a/src/type_determiner_test.cc
+++ b/src/type_determiner_test.cc
@@ -3391,6 +3391,12 @@
return R"(textureLoad(texture, coords))";
case ValidTextureOverload::kLoad1dI32:
return R"(textureLoad(texture, coords))";
+ case ValidTextureOverload::kLoad1dLevelF32:
+ return R"(textureLoad(texture, coords, level))";
+ case ValidTextureOverload::kLoad1dLevelU32:
+ return R"(textureLoad(texture, coords, level))";
+ case ValidTextureOverload::kLoad1dLevelI32:
+ return R"(textureLoad(texture, coords, level))";
case ValidTextureOverload::kLoad2dF32:
return R"(textureLoad(texture, coords))";
case ValidTextureOverload::kLoad2dU32:
diff --git a/src/writer/hlsl/generator_impl_intrinsic_texture_test.cc b/src/writer/hlsl/generator_impl_intrinsic_texture_test.cc
index 283b38e..c63dd7d 100644
--- a/src/writer/hlsl/generator_impl_intrinsic_texture_test.cc
+++ b/src/writer/hlsl/generator_impl_intrinsic_texture_test.cc
@@ -311,6 +311,12 @@
return R"(texture_tint_0.Load(int2(1, 0)))";
case ValidTextureOverload::kLoad1dI32:
return R"(texture_tint_0.Load(int2(1, 0)))";
+ case ValidTextureOverload::kLoad1dLevelF32:
+ return R"(texture_tint_0.Load(int2(1, 0), 3))";
+ case ValidTextureOverload::kLoad1dLevelU32:
+ return R"(texture_tint_0.Load(int2(1, 0), 3))";
+ case ValidTextureOverload::kLoad1dLevelI32:
+ return R"(texture_tint_0.Load(int2(1, 0), 3))";
case ValidTextureOverload::kLoad2dF32:
return R"(texture_tint_0.Load(int3(1, 2, 0)))";
case ValidTextureOverload::kLoad2dU32:
diff --git a/src/writer/msl/generator_impl_intrinsic_texture_test.cc b/src/writer/msl/generator_impl_intrinsic_texture_test.cc
index 48664ae..f4f8412 100644
--- a/src/writer/msl/generator_impl_intrinsic_texture_test.cc
+++ b/src/writer/msl/generator_impl_intrinsic_texture_test.cc
@@ -196,6 +196,12 @@
return R"(texture_tint_0.read(1))";
case ValidTextureOverload::kLoad1dI32:
return R"(texture_tint_0.read(1))";
+ case ValidTextureOverload::kLoad1dLevelF32:
+ return R"(texture_tint_0.read(1, 3))";
+ case ValidTextureOverload::kLoad1dLevelU32:
+ return R"(texture_tint_0.read(1, 3))";
+ case ValidTextureOverload::kLoad1dLevelI32:
+ return R"(texture_tint_0.read(1, 3))";
case ValidTextureOverload::kLoad2dF32:
return R"(texture_tint_0.read(int2(1, 2)))";
case ValidTextureOverload::kLoad2dU32:
diff --git a/src/writer/spirv/builder_intrinsic_texture_test.cc b/src/writer/spirv/builder_intrinsic_texture_test.cc
index 7abc537..b1ca0dc 100644
--- a/src/writer/spirv/builder_intrinsic_texture_test.cc
+++ b/src/writer/spirv/builder_intrinsic_texture_test.cc
@@ -2612,6 +2612,71 @@
R"(
OpCapability Sampled1D
)"};
+ case ValidTextureOverload::kLoad1dLevelF32:
+ return {
+ R"(
+%4 = OpTypeFloat 32
+%3 = OpTypeImage %4 1D 0 0 0 1 Unknown
+%2 = OpTypePointer UniformConstant %3
+%1 = OpVariable %2 UniformConstant
+%7 = OpTypeSampler
+%6 = OpTypePointer UniformConstant %7
+%5 = OpVariable %6 UniformConstant
+%9 = OpTypeVector %4 4
+%11 = OpTypeInt 32 1
+%12 = OpConstant %11 1
+%13 = OpConstant %11 3
+)",
+ R"(
+%10 = OpLoad %3 %1
+%8 = OpImageFetch %9 %10 %12 Lod %13
+)",
+ R"(
+OpCapability Sampled1D
+)"};
+ case ValidTextureOverload::kLoad1dLevelU32:
+ return {
+ R"(
+%4 = OpTypeInt 32 0
+%3 = OpTypeImage %4 1D 0 0 0 1 Unknown
+%2 = OpTypePointer UniformConstant %3
+%1 = OpVariable %2 UniformConstant
+%7 = OpTypeSampler
+%6 = OpTypePointer UniformConstant %7
+%5 = OpVariable %6 UniformConstant
+%9 = OpTypeVector %4 4
+%11 = OpTypeInt 32 1
+%12 = OpConstant %11 1
+%13 = OpConstant %11 3
+)",
+ R"(
+%10 = OpLoad %3 %1
+%8 = OpImageFetch %9 %10 %12 Lod %13
+)",
+ R"(
+OpCapability Sampled1D
+)"};
+ case ValidTextureOverload::kLoad1dLevelI32:
+ return {
+ R"(
+%4 = OpTypeInt 32 1
+%3 = OpTypeImage %4 1D 0 0 0 1 Unknown
+%2 = OpTypePointer UniformConstant %3
+%1 = OpVariable %2 UniformConstant
+%7 = OpTypeSampler
+%6 = OpTypePointer UniformConstant %7
+%5 = OpVariable %6 UniformConstant
+%9 = OpTypeVector %4 4
+%11 = OpConstant %4 1
+%12 = OpConstant %4 3
+)",
+ R"(
+%10 = OpLoad %3 %1
+%8 = OpImageFetch %9 %10 %11 Lod %12
+)",
+ R"(
+OpCapability Sampled1D
+)"};
case ValidTextureOverload::kLoad2dF32:
return {
R"(