writer/spriv: Cast level parameter to f32 for depth texture sampling
SPIR-V expects a f32, while WGSL has an i32 type for these. Bug: tint:143 Change-Id: I8e724f24f12154f57cddfd01dfd727e440ca8450 Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/37449 Commit-Queue: Ben Clayton <bclayton@google.com> Reviewed-by: David Neto <dneto@google.com>
This commit is contained in:
parent
9a9aa58ddd
commit
72114bd61b
|
@ -2257,8 +2257,21 @@ bool Builder::GenerateTextureIntrinsic(ast::IdentifierExpression* ident,
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
assert(pidx.level != kNotUsed);
|
assert(pidx.level != kNotUsed);
|
||||||
image_operands.emplace_back(
|
auto level = Operand::Int(0);
|
||||||
ImageOperand{SpvImageOperandsLodMask, gen_param(pidx.level)});
|
if (call->params()[pidx.level]->result_type()->Is<ast::type::I32>()) {
|
||||||
|
// Depth textures have i32 parameters for the level, but SPIR-V expects
|
||||||
|
// F32. Cast.
|
||||||
|
auto* f32 = mod_->create<ast::type::F32>();
|
||||||
|
ast::TypeConstructorExpression cast(Source{}, f32,
|
||||||
|
{call->params()[pidx.level]});
|
||||||
|
level = Operand::Int(GenerateExpression(&cast));
|
||||||
|
if (level.to_i() == 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
level = gen_param(pidx.level);
|
||||||
|
}
|
||||||
|
image_operands.emplace_back(ImageOperand{SpvImageOperandsLodMask, level});
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case ast::Intrinsic::kTextureSampleGrad: {
|
case ast::Intrinsic::kTextureSampleGrad: {
|
||||||
|
|
|
@ -1679,14 +1679,15 @@ OpCapability SampledCubeArray
|
||||||
%16 = OpConstant %4 1
|
%16 = OpConstant %4 1
|
||||||
%17 = OpConstant %4 2
|
%17 = OpConstant %4 2
|
||||||
%18 = OpConstantComposite %15 %16 %17
|
%18 = OpConstantComposite %15 %16 %17
|
||||||
%19 = OpTypeInt 32 1
|
%20 = OpTypeInt 32 1
|
||||||
%20 = OpConstant %19 3
|
%21 = OpConstant %20 3
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
%11 = OpLoad %7 %5
|
%11 = OpLoad %7 %5
|
||||||
%12 = OpLoad %3 %1
|
%12 = OpLoad %3 %1
|
||||||
%14 = OpSampledImage %13 %12 %11
|
%14 = OpSampledImage %13 %12 %11
|
||||||
%9 = OpImageSampleExplicitLod %10 %14 %18 Lod %20
|
%19 = OpConvertSToF %4 %21
|
||||||
|
%9 = OpImageSampleExplicitLod %10 %14 %18 Lod %19
|
||||||
%8 = OpCompositeExtract %4 %9 0
|
%8 = OpCompositeExtract %4 %9 0
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
|
@ -1707,18 +1708,19 @@ OpCapability SampledCubeArray
|
||||||
%16 = OpConstant %4 1
|
%16 = OpConstant %4 1
|
||||||
%17 = OpConstant %4 2
|
%17 = OpConstant %4 2
|
||||||
%18 = OpConstantComposite %15 %16 %17
|
%18 = OpConstantComposite %15 %16 %17
|
||||||
%19 = OpTypeInt 32 1
|
%20 = OpTypeInt 32 1
|
||||||
%20 = OpConstant %19 3
|
%21 = OpConstant %20 3
|
||||||
%21 = OpTypeVector %19 2
|
%22 = OpTypeVector %20 2
|
||||||
%22 = OpConstant %19 4
|
%23 = OpConstant %20 4
|
||||||
%23 = OpConstant %19 5
|
%24 = OpConstant %20 5
|
||||||
%24 = OpConstantComposite %21 %22 %23
|
%25 = OpConstantComposite %22 %23 %24
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
%11 = OpLoad %7 %5
|
%11 = OpLoad %7 %5
|
||||||
%12 = OpLoad %3 %1
|
%12 = OpLoad %3 %1
|
||||||
%14 = OpSampledImage %13 %12 %11
|
%14 = OpSampledImage %13 %12 %11
|
||||||
%9 = OpImageSampleExplicitLod %10 %14 %18 Lod|ConstOffset %20 %24
|
%19 = OpConvertSToF %4 %21
|
||||||
|
%9 = OpImageSampleExplicitLod %10 %14 %18 Lod|ConstOffset %19 %25
|
||||||
%8 = OpCompositeExtract %4 %9 0
|
%8 = OpCompositeExtract %4 %9 0
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
|
@ -1740,7 +1742,7 @@ OpCapability SampledCubeArray
|
||||||
%17 = OpConstant %4 2
|
%17 = OpConstant %4 2
|
||||||
%19 = OpTypeInt 32 1
|
%19 = OpTypeInt 32 1
|
||||||
%20 = OpConstant %19 3
|
%20 = OpConstant %19 3
|
||||||
%22 = OpConstant %19 4
|
%23 = OpConstant %19 4
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
%11 = OpLoad %7 %5
|
%11 = OpLoad %7 %5
|
||||||
|
@ -1748,6 +1750,7 @@ OpCapability SampledCubeArray
|
||||||
%14 = OpSampledImage %13 %12 %11
|
%14 = OpSampledImage %13 %12 %11
|
||||||
%18 = OpConvertSToF %4 %20
|
%18 = OpConvertSToF %4 %20
|
||||||
%21 = OpCompositeConstruct %15 %16 %17 %18
|
%21 = OpCompositeConstruct %15 %16 %17 %18
|
||||||
|
%22 = OpConvertSToF %4 %23
|
||||||
%9 = OpImageSampleExplicitLod %10 %14 %21 Lod %22
|
%9 = OpImageSampleExplicitLod %10 %14 %21 Lod %22
|
||||||
%8 = OpCompositeExtract %4 %9 0
|
%8 = OpCompositeExtract %4 %9 0
|
||||||
)",
|
)",
|
||||||
|
@ -1770,11 +1773,11 @@ OpCapability SampledCubeArray
|
||||||
%17 = OpConstant %4 2
|
%17 = OpConstant %4 2
|
||||||
%19 = OpTypeInt 32 1
|
%19 = OpTypeInt 32 1
|
||||||
%20 = OpConstant %19 3
|
%20 = OpConstant %19 3
|
||||||
%22 = OpConstant %19 4
|
%23 = OpConstant %19 4
|
||||||
%23 = OpTypeVector %19 2
|
%24 = OpTypeVector %19 2
|
||||||
%24 = OpConstant %19 5
|
%25 = OpConstant %19 5
|
||||||
%25 = OpConstant %19 6
|
%26 = OpConstant %19 6
|
||||||
%26 = OpConstantComposite %23 %24 %25
|
%27 = OpConstantComposite %24 %25 %26
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
%11 = OpLoad %7 %5
|
%11 = OpLoad %7 %5
|
||||||
|
@ -1782,7 +1785,8 @@ OpCapability SampledCubeArray
|
||||||
%14 = OpSampledImage %13 %12 %11
|
%14 = OpSampledImage %13 %12 %11
|
||||||
%18 = OpConvertSToF %4 %20
|
%18 = OpConvertSToF %4 %20
|
||||||
%21 = OpCompositeConstruct %15 %16 %17 %18
|
%21 = OpCompositeConstruct %15 %16 %17 %18
|
||||||
%9 = OpImageSampleExplicitLod %10 %14 %21 Lod|ConstOffset %22 %26
|
%22 = OpConvertSToF %4 %23
|
||||||
|
%9 = OpImageSampleExplicitLod %10 %14 %21 Lod|ConstOffset %22 %27
|
||||||
%8 = OpCompositeExtract %4 %9 0
|
%8 = OpCompositeExtract %4 %9 0
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
|
@ -1804,14 +1808,15 @@ OpCapability SampledCubeArray
|
||||||
%17 = OpConstant %4 2
|
%17 = OpConstant %4 2
|
||||||
%18 = OpConstant %4 3
|
%18 = OpConstant %4 3
|
||||||
%19 = OpConstantComposite %15 %16 %17 %18
|
%19 = OpConstantComposite %15 %16 %17 %18
|
||||||
%20 = OpTypeInt 32 1
|
%21 = OpTypeInt 32 1
|
||||||
%21 = OpConstant %20 4
|
%22 = OpConstant %21 4
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
%11 = OpLoad %7 %5
|
%11 = OpLoad %7 %5
|
||||||
%12 = OpLoad %3 %1
|
%12 = OpLoad %3 %1
|
||||||
%14 = OpSampledImage %13 %12 %11
|
%14 = OpSampledImage %13 %12 %11
|
||||||
%9 = OpImageSampleExplicitLod %10 %14 %19 Lod %21
|
%20 = OpConvertSToF %4 %22
|
||||||
|
%9 = OpImageSampleExplicitLod %10 %14 %19 Lod %20
|
||||||
%8 = OpCompositeExtract %4 %9 0
|
%8 = OpCompositeExtract %4 %9 0
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
|
@ -1833,7 +1838,7 @@ OpCapability SampledCubeArray
|
||||||
%17 = OpConstant %4 3
|
%17 = OpConstant %4 3
|
||||||
%19 = OpTypeInt 32 1
|
%19 = OpTypeInt 32 1
|
||||||
%20 = OpConstant %19 4
|
%20 = OpConstant %19 4
|
||||||
%22 = OpConstant %19 5
|
%23 = OpConstant %19 5
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
%11 = OpLoad %7 %5
|
%11 = OpLoad %7 %5
|
||||||
|
@ -1841,6 +1846,7 @@ OpCapability SampledCubeArray
|
||||||
%14 = OpSampledImage %13 %12 %11
|
%14 = OpSampledImage %13 %12 %11
|
||||||
%18 = OpConvertSToF %4 %20
|
%18 = OpConvertSToF %4 %20
|
||||||
%21 = OpCompositeConstruct %10 %15 %16 %17 %18
|
%21 = OpCompositeConstruct %10 %15 %16 %17 %18
|
||||||
|
%22 = OpConvertSToF %4 %23
|
||||||
%9 = OpImageSampleExplicitLod %10 %14 %21 Lod %22
|
%9 = OpImageSampleExplicitLod %10 %14 %21 Lod %22
|
||||||
%8 = OpCompositeExtract %4 %9 0
|
%8 = OpCompositeExtract %4 %9 0
|
||||||
)",
|
)",
|
||||||
|
|
Loading…
Reference in New Issue