mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-11 22:44:04 +00:00
writer/hlsl: Swizzle depth texture intrinsics
HLSL usually implicitly casts a vector down to a scalar, but this breaks when passing the vector to RWByteAddressBuffer.Store (for DXC only). Fixed: tint:827 Change-Id: I67d0bc6e9185de3d434a7aaeb575d83850111ec5 Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/55760 Auto-Submit: Ben Clayton <bclayton@google.com> Kokoro: Kokoro <noreply+kokoro@google.com> Reviewed-by: David Neto <dneto@google.com> Commit-Queue: Ben Clayton <bclayton@google.com>
This commit is contained in:
committed by
Tint LUCI CQ
parent
9cae45e6ca
commit
c8434889d8
@@ -1561,6 +1561,7 @@ bool GeneratorImpl::EmitTextureCall(std::ostream& pre,
|
||||
return false;
|
||||
|
||||
bool pack_mip_in_coords = false;
|
||||
uint32_t hlsl_ret_width = 4u;
|
||||
|
||||
switch (intrinsic->Type()) {
|
||||
case sem::IntrinsicType::kTextureSample:
|
||||
@@ -1577,9 +1578,11 @@ bool GeneratorImpl::EmitTextureCall(std::ostream& pre,
|
||||
break;
|
||||
case sem::IntrinsicType::kTextureSampleCompare:
|
||||
out << ".SampleCmp(";
|
||||
hlsl_ret_width = 1;
|
||||
break;
|
||||
case sem::IntrinsicType::kTextureSampleCompareLevel:
|
||||
out << ".SampleCmpLevelZero(";
|
||||
hlsl_ret_width = 1;
|
||||
break;
|
||||
case sem::IntrinsicType::kTextureLoad:
|
||||
out << ".Load(";
|
||||
@@ -1630,28 +1633,52 @@ bool GeneratorImpl::EmitTextureCall(std::ostream& pre,
|
||||
}
|
||||
} else if (pack_mip_in_coords) {
|
||||
// Mip level needs to be appended to the coordinates, but is always zero.
|
||||
if (!emit_vector_appended_with_i32_zero(param_coords))
|
||||
if (!emit_vector_appended_with_i32_zero(param_coords)) {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
if (!EmitExpression(pre, out, param_coords))
|
||||
if (!EmitExpression(pre, out, param_coords)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
for (auto usage : {Usage::kDepthRef, Usage::kBias, Usage::kLevel, Usage::kDdx,
|
||||
Usage::kDdy, Usage::kSampleIndex, Usage::kOffset}) {
|
||||
if (auto* e = arg(usage)) {
|
||||
out << ", ";
|
||||
if (!EmitExpression(pre, out, e))
|
||||
if (!EmitExpression(pre, out, e)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (intrinsic->Type() == sem::IntrinsicType::kTextureStore) {
|
||||
out << "] = ";
|
||||
if (!EmitExpression(pre, out, arg(Usage::kValue)))
|
||||
if (!EmitExpression(pre, out, arg(Usage::kValue))) {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
out << ")";
|
||||
|
||||
// If the intrinsic return type does not match the number of elements of the
|
||||
// HLSL intrinsic, we need to swizzle the expression to generate the correct
|
||||
// number of components.
|
||||
uint32_t wgsl_ret_width = 1;
|
||||
if (auto* vec = intrinsic->ReturnType()->As<sem::Vector>()) {
|
||||
wgsl_ret_width = vec->size();
|
||||
}
|
||||
if (wgsl_ret_width < hlsl_ret_width) {
|
||||
out << ".";
|
||||
for (uint32_t i = 0; i < wgsl_ret_width; i++) {
|
||||
out << "xyz"[i];
|
||||
}
|
||||
}
|
||||
if (wgsl_ret_width > hlsl_ret_width) {
|
||||
TINT_ICE(diagnostics_) << "WGSL return width (" << wgsl_ret_width
|
||||
<< ") is wider than HLSL return width ("
|
||||
<< hlsl_ret_width << ") for " << intrinsic->Type();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
@@ -44,7 +44,7 @@ ExpectedResult expected_texture_overload(
|
||||
R"(int tint_tmp;
|
||||
tint_symbol.GetDimensions(tint_tmp);
|
||||
)",
|
||||
"tint_tmp",
|
||||
"tint_tmp;",
|
||||
};
|
||||
case ValidTextureOverload::kDimensions2d:
|
||||
case ValidTextureOverload::kDimensionsDepth2d:
|
||||
@@ -54,14 +54,14 @@ ExpectedResult expected_texture_overload(
|
||||
R"(int2 tint_tmp;
|
||||
tint_symbol.GetDimensions(tint_tmp.x, tint_tmp.y);
|
||||
)",
|
||||
"tint_tmp",
|
||||
"tint_tmp;",
|
||||
};
|
||||
case ValidTextureOverload::kDimensionsMultisampled2d:
|
||||
return {
|
||||
R"(int3 tint_tmp;
|
||||
tint_symbol.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
|
||||
)",
|
||||
"tint_tmp.xy",
|
||||
"tint_tmp.xy;",
|
||||
};
|
||||
|
||||
case ValidTextureOverload::kDimensions2dArray:
|
||||
@@ -72,7 +72,7 @@ ExpectedResult expected_texture_overload(
|
||||
R"(int3 tint_tmp;
|
||||
tint_symbol.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
|
||||
)",
|
||||
"tint_tmp.xy",
|
||||
"tint_tmp.xy;",
|
||||
};
|
||||
case ValidTextureOverload::kDimensions3d:
|
||||
case ValidTextureOverload::kDimensionsStorageRO3d:
|
||||
@@ -81,7 +81,7 @@ ExpectedResult expected_texture_overload(
|
||||
R"(int3 tint_tmp;
|
||||
tint_symbol.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
|
||||
)",
|
||||
"tint_tmp",
|
||||
"tint_tmp;",
|
||||
};
|
||||
case ValidTextureOverload::kDimensionsCube:
|
||||
case ValidTextureOverload::kDimensionsDepthCube:
|
||||
@@ -89,7 +89,7 @@ ExpectedResult expected_texture_overload(
|
||||
R"(int2 tint_tmp;
|
||||
tint_symbol.GetDimensions(tint_tmp.x, tint_tmp.y);
|
||||
)",
|
||||
"tint_tmp",
|
||||
"tint_tmp;",
|
||||
};
|
||||
case ValidTextureOverload::kDimensionsCubeArray:
|
||||
case ValidTextureOverload::kDimensionsDepthCubeArray:
|
||||
@@ -97,7 +97,7 @@ ExpectedResult expected_texture_overload(
|
||||
R"(int3 tint_tmp;
|
||||
tint_symbol.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
|
||||
)",
|
||||
"tint_tmp.xy",
|
||||
"tint_tmp.xy;",
|
||||
};
|
||||
case ValidTextureOverload::kDimensions2dLevel:
|
||||
case ValidTextureOverload::kDimensionsDepth2dLevel:
|
||||
@@ -105,7 +105,7 @@ ExpectedResult expected_texture_overload(
|
||||
R"(int3 tint_tmp;
|
||||
tint_symbol.GetDimensions(1, tint_tmp.x, tint_tmp.y, tint_tmp.z);
|
||||
)",
|
||||
"tint_tmp.xy",
|
||||
"tint_tmp.xy;",
|
||||
};
|
||||
case ValidTextureOverload::kDimensions2dArrayLevel:
|
||||
case ValidTextureOverload::kDimensionsDepth2dArrayLevel:
|
||||
@@ -113,14 +113,14 @@ ExpectedResult expected_texture_overload(
|
||||
R"(int4 tint_tmp;
|
||||
tint_symbol.GetDimensions(1, tint_tmp.x, tint_tmp.y, tint_tmp.z, tint_tmp.w);
|
||||
)",
|
||||
"tint_tmp.xy",
|
||||
"tint_tmp.xy;",
|
||||
};
|
||||
case ValidTextureOverload::kDimensions3dLevel:
|
||||
return {
|
||||
R"(int4 tint_tmp;
|
||||
tint_symbol.GetDimensions(1, tint_tmp.x, tint_tmp.y, tint_tmp.z, tint_tmp.w);
|
||||
)",
|
||||
"tint_tmp.xyz",
|
||||
"tint_tmp.xyz;",
|
||||
};
|
||||
case ValidTextureOverload::kDimensionsCubeLevel:
|
||||
case ValidTextureOverload::kDimensionsDepthCubeLevel:
|
||||
@@ -128,7 +128,7 @@ ExpectedResult expected_texture_overload(
|
||||
R"(int3 tint_tmp;
|
||||
tint_symbol.GetDimensions(1, tint_tmp.x, tint_tmp.y, tint_tmp.z);
|
||||
)",
|
||||
"tint_tmp.xy",
|
||||
"tint_tmp.xy;",
|
||||
};
|
||||
case ValidTextureOverload::kDimensionsCubeArrayLevel:
|
||||
case ValidTextureOverload::kDimensionsDepthCubeArrayLevel:
|
||||
@@ -136,7 +136,7 @@ ExpectedResult expected_texture_overload(
|
||||
R"(int4 tint_tmp;
|
||||
tint_symbol.GetDimensions(1, tint_tmp.x, tint_tmp.y, tint_tmp.z, tint_tmp.w);
|
||||
)",
|
||||
"tint_tmp.xy",
|
||||
"tint_tmp.xy;",
|
||||
};
|
||||
case ValidTextureOverload::kNumLayers2dArray:
|
||||
case ValidTextureOverload::kNumLayersDepth2dArray:
|
||||
@@ -147,7 +147,7 @@ ExpectedResult expected_texture_overload(
|
||||
R"(int3 tint_tmp;
|
||||
tint_symbol.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
|
||||
)",
|
||||
"tint_tmp.z",
|
||||
"tint_tmp.z;",
|
||||
};
|
||||
case ValidTextureOverload::kNumLevels2d:
|
||||
case ValidTextureOverload::kNumLevelsCube:
|
||||
@@ -157,7 +157,7 @@ ExpectedResult expected_texture_overload(
|
||||
R"(int3 tint_tmp;
|
||||
tint_symbol.GetDimensions(0, tint_tmp.x, tint_tmp.y, tint_tmp.z);
|
||||
)",
|
||||
"tint_tmp.z",
|
||||
"tint_tmp.z;",
|
||||
};
|
||||
case ValidTextureOverload::kNumLevels2dArray:
|
||||
case ValidTextureOverload::kNumLevels3d:
|
||||
@@ -168,165 +168,165 @@ ExpectedResult expected_texture_overload(
|
||||
R"(int4 tint_tmp;
|
||||
tint_symbol.GetDimensions(0, tint_tmp.x, tint_tmp.y, tint_tmp.z, tint_tmp.w);
|
||||
)",
|
||||
"tint_tmp.w",
|
||||
"tint_tmp.w;",
|
||||
};
|
||||
case ValidTextureOverload::kNumSamplesMultisampled2d:
|
||||
return {
|
||||
R"(int3 tint_tmp;
|
||||
tint_symbol.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
|
||||
)",
|
||||
"tint_tmp.z",
|
||||
"tint_tmp.z;",
|
||||
};
|
||||
case ValidTextureOverload::kSample1dF32:
|
||||
return R"(tint_symbol.Sample(tint_symbol_1, 1.0f))";
|
||||
return R"(tint_symbol.Sample(tint_symbol_1, 1.0f);)";
|
||||
case ValidTextureOverload::kSample2dF32:
|
||||
return R"(tint_symbol.Sample(tint_symbol_1, float2(1.0f, 2.0f)))";
|
||||
return R"(tint_symbol.Sample(tint_symbol_1, float2(1.0f, 2.0f));)";
|
||||
case ValidTextureOverload::kSample2dOffsetF32:
|
||||
return R"(tint_symbol.Sample(tint_symbol_1, float2(1.0f, 2.0f), int2(3, 4)))";
|
||||
return R"(tint_symbol.Sample(tint_symbol_1, float2(1.0f, 2.0f), int2(3, 4));)";
|
||||
case ValidTextureOverload::kSample2dArrayF32:
|
||||
return R"(tint_symbol.Sample(tint_symbol_1, float3(1.0f, 2.0f, float(3))))";
|
||||
return R"(tint_symbol.Sample(tint_symbol_1, float3(1.0f, 2.0f, float(3)));)";
|
||||
case ValidTextureOverload::kSample2dArrayOffsetF32:
|
||||
return R"(tint_symbol.Sample(tint_symbol_1, float3(1.0f, 2.0f, float(3)), int2(4, 5)))";
|
||||
return R"(tint_symbol.Sample(tint_symbol_1, float3(1.0f, 2.0f, float(3)), int2(4, 5));)";
|
||||
case ValidTextureOverload::kSample3dF32:
|
||||
return R"(tint_symbol.Sample(tint_symbol_1, float3(1.0f, 2.0f, 3.0f)))";
|
||||
return R"(tint_symbol.Sample(tint_symbol_1, float3(1.0f, 2.0f, 3.0f));)";
|
||||
case ValidTextureOverload::kSample3dOffsetF32:
|
||||
return R"(tint_symbol.Sample(tint_symbol_1, float3(1.0f, 2.0f, 3.0f), int3(4, 5, 6)))";
|
||||
return R"(tint_symbol.Sample(tint_symbol_1, float3(1.0f, 2.0f, 3.0f), int3(4, 5, 6));)";
|
||||
case ValidTextureOverload::kSampleCubeF32:
|
||||
return R"(tint_symbol.Sample(tint_symbol_1, float3(1.0f, 2.0f, 3.0f)))";
|
||||
return R"(tint_symbol.Sample(tint_symbol_1, float3(1.0f, 2.0f, 3.0f));)";
|
||||
case ValidTextureOverload::kSampleCubeArrayF32:
|
||||
return R"(tint_symbol.Sample(tint_symbol_1, float4(1.0f, 2.0f, 3.0f, float(4))))";
|
||||
return R"(tint_symbol.Sample(tint_symbol_1, float4(1.0f, 2.0f, 3.0f, float(4)));)";
|
||||
case ValidTextureOverload::kSampleDepth2dF32:
|
||||
return R"(tint_symbol.Sample(tint_symbol_1, float2(1.0f, 2.0f)))";
|
||||
return R"(tint_symbol.Sample(tint_symbol_1, float2(1.0f, 2.0f)).x;)";
|
||||
case ValidTextureOverload::kSampleDepth2dOffsetF32:
|
||||
return R"(tint_symbol.Sample(tint_symbol_1, float2(1.0f, 2.0f), int2(3, 4)))";
|
||||
return R"(tint_symbol.Sample(tint_symbol_1, float2(1.0f, 2.0f), int2(3, 4)).x;)";
|
||||
case ValidTextureOverload::kSampleDepth2dArrayF32:
|
||||
return R"(tint_symbol.Sample(tint_symbol_1, float3(1.0f, 2.0f, float(3))))";
|
||||
return R"(tint_symbol.Sample(tint_symbol_1, float3(1.0f, 2.0f, float(3))).x;)";
|
||||
case ValidTextureOverload::kSampleDepth2dArrayOffsetF32:
|
||||
return R"(tint_symbol.Sample(tint_symbol_1, float3(1.0f, 2.0f, float(3)), int2(4, 5)))";
|
||||
return R"(tint_symbol.Sample(tint_symbol_1, float3(1.0f, 2.0f, float(3)), int2(4, 5)).x;)";
|
||||
case ValidTextureOverload::kSampleDepthCubeF32:
|
||||
return R"(tint_symbol.Sample(tint_symbol_1, float3(1.0f, 2.0f, 3.0f)))";
|
||||
return R"(tint_symbol.Sample(tint_symbol_1, float3(1.0f, 2.0f, 3.0f)).x;)";
|
||||
case ValidTextureOverload::kSampleDepthCubeArrayF32:
|
||||
return R"(tint_symbol.Sample(tint_symbol_1, float4(1.0f, 2.0f, 3.0f, float(4))))";
|
||||
return R"(tint_symbol.Sample(tint_symbol_1, float4(1.0f, 2.0f, 3.0f, float(4))).x;)";
|
||||
case ValidTextureOverload::kSampleBias2dF32:
|
||||
return R"(tint_symbol.SampleBias(tint_symbol_1, float2(1.0f, 2.0f), 3.0f))";
|
||||
return R"(tint_symbol.SampleBias(tint_symbol_1, float2(1.0f, 2.0f), 3.0f);)";
|
||||
case ValidTextureOverload::kSampleBias2dOffsetF32:
|
||||
return R"(tint_symbol.SampleBias(tint_symbol_1, float2(1.0f, 2.0f), 3.0f, int2(4, 5)))";
|
||||
return R"(tint_symbol.SampleBias(tint_symbol_1, float2(1.0f, 2.0f), 3.0f, int2(4, 5));)";
|
||||
case ValidTextureOverload::kSampleBias2dArrayF32:
|
||||
return R"(tint_symbol.SampleBias(tint_symbol_1, float3(1.0f, 2.0f, float(4)), 3.0f))";
|
||||
return R"(tint_symbol.SampleBias(tint_symbol_1, float3(1.0f, 2.0f, float(4)), 3.0f);)";
|
||||
case ValidTextureOverload::kSampleBias2dArrayOffsetF32:
|
||||
return R"(tint_symbol.SampleBias(tint_symbol_1, float3(1.0f, 2.0f, float(3)), 4.0f, int2(5, 6)))";
|
||||
return R"(tint_symbol.SampleBias(tint_symbol_1, float3(1.0f, 2.0f, float(3)), 4.0f, int2(5, 6));)";
|
||||
case ValidTextureOverload::kSampleBias3dF32:
|
||||
return R"(tint_symbol.SampleBias(tint_symbol_1, float3(1.0f, 2.0f, 3.0f), 4.0f))";
|
||||
return R"(tint_symbol.SampleBias(tint_symbol_1, float3(1.0f, 2.0f, 3.0f), 4.0f);)";
|
||||
case ValidTextureOverload::kSampleBias3dOffsetF32:
|
||||
return R"(tint_symbol.SampleBias(tint_symbol_1, float3(1.0f, 2.0f, 3.0f), 4.0f, int3(5, 6, 7)))";
|
||||
return R"(tint_symbol.SampleBias(tint_symbol_1, float3(1.0f, 2.0f, 3.0f), 4.0f, int3(5, 6, 7));)";
|
||||
case ValidTextureOverload::kSampleBiasCubeF32:
|
||||
return R"(tint_symbol.SampleBias(tint_symbol_1, float3(1.0f, 2.0f, 3.0f), 4.0f))";
|
||||
return R"(tint_symbol.SampleBias(tint_symbol_1, float3(1.0f, 2.0f, 3.0f), 4.0f);)";
|
||||
case ValidTextureOverload::kSampleBiasCubeArrayF32:
|
||||
return R"(tint_symbol.SampleBias(tint_symbol_1, float4(1.0f, 2.0f, 3.0f, float(3)), 4.0f))";
|
||||
return R"(tint_symbol.SampleBias(tint_symbol_1, float4(1.0f, 2.0f, 3.0f, float(3)), 4.0f);)";
|
||||
case ValidTextureOverload::kSampleLevel2dF32:
|
||||
return R"(tint_symbol.SampleLevel(tint_symbol_1, float2(1.0f, 2.0f), 3.0f))";
|
||||
return R"(tint_symbol.SampleLevel(tint_symbol_1, float2(1.0f, 2.0f), 3.0f);)";
|
||||
case ValidTextureOverload::kSampleLevel2dOffsetF32:
|
||||
return R"(tint_symbol.SampleLevel(tint_symbol_1, float2(1.0f, 2.0f), 3.0f, int2(4, 5)))";
|
||||
return R"(tint_symbol.SampleLevel(tint_symbol_1, float2(1.0f, 2.0f), 3.0f, int2(4, 5));)";
|
||||
case ValidTextureOverload::kSampleLevel2dArrayF32:
|
||||
return R"(tint_symbol.SampleLevel(tint_symbol_1, float3(1.0f, 2.0f, float(3)), 4.0f))";
|
||||
return R"(tint_symbol.SampleLevel(tint_symbol_1, float3(1.0f, 2.0f, float(3)), 4.0f);)";
|
||||
case ValidTextureOverload::kSampleLevel2dArrayOffsetF32:
|
||||
return R"(tint_symbol.SampleLevel(tint_symbol_1, float3(1.0f, 2.0f, float(3)), 4.0f, int2(5, 6)))";
|
||||
return R"(tint_symbol.SampleLevel(tint_symbol_1, float3(1.0f, 2.0f, float(3)), 4.0f, int2(5, 6));)";
|
||||
case ValidTextureOverload::kSampleLevel3dF32:
|
||||
return R"(tint_symbol.SampleLevel(tint_symbol_1, float3(1.0f, 2.0f, 3.0f), 4.0f))";
|
||||
return R"(tint_symbol.SampleLevel(tint_symbol_1, float3(1.0f, 2.0f, 3.0f), 4.0f);)";
|
||||
case ValidTextureOverload::kSampleLevel3dOffsetF32:
|
||||
return R"(tint_symbol.SampleLevel(tint_symbol_1, float3(1.0f, 2.0f, 3.0f), 4.0f, int3(5, 6, 7)))";
|
||||
return R"(tint_symbol.SampleLevel(tint_symbol_1, float3(1.0f, 2.0f, 3.0f), 4.0f, int3(5, 6, 7));)";
|
||||
case ValidTextureOverload::kSampleLevelCubeF32:
|
||||
return R"(tint_symbol.SampleLevel(tint_symbol_1, float3(1.0f, 2.0f, 3.0f), 4.0f))";
|
||||
return R"(tint_symbol.SampleLevel(tint_symbol_1, float3(1.0f, 2.0f, 3.0f), 4.0f);)";
|
||||
case ValidTextureOverload::kSampleLevelCubeArrayF32:
|
||||
return R"(tint_symbol.SampleLevel(tint_symbol_1, float4(1.0f, 2.0f, 3.0f, float(4)), 5.0f))";
|
||||
return R"(tint_symbol.SampleLevel(tint_symbol_1, float4(1.0f, 2.0f, 3.0f, float(4)), 5.0f);)";
|
||||
case ValidTextureOverload::kSampleLevelDepth2dF32:
|
||||
return R"(tint_symbol.SampleLevel(tint_symbol_1, float2(1.0f, 2.0f), 3))";
|
||||
return R"(tint_symbol.SampleLevel(tint_symbol_1, float2(1.0f, 2.0f), 3).x;)";
|
||||
case ValidTextureOverload::kSampleLevelDepth2dOffsetF32:
|
||||
return R"(tint_symbol.SampleLevel(tint_symbol_1, float2(1.0f, 2.0f), 3, int2(4, 5)))";
|
||||
return R"(tint_symbol.SampleLevel(tint_symbol_1, float2(1.0f, 2.0f), 3, int2(4, 5)).x;)";
|
||||
case ValidTextureOverload::kSampleLevelDepth2dArrayF32:
|
||||
return R"(tint_symbol.SampleLevel(tint_symbol_1, float3(1.0f, 2.0f, float(3)), 4))";
|
||||
return R"(tint_symbol.SampleLevel(tint_symbol_1, float3(1.0f, 2.0f, float(3)), 4).x;)";
|
||||
case ValidTextureOverload::kSampleLevelDepth2dArrayOffsetF32:
|
||||
return R"(tint_symbol.SampleLevel(tint_symbol_1, float3(1.0f, 2.0f, float(3)), 4, int2(5, 6)))";
|
||||
return R"(tint_symbol.SampleLevel(tint_symbol_1, float3(1.0f, 2.0f, float(3)), 4, int2(5, 6)).x;)";
|
||||
case ValidTextureOverload::kSampleLevelDepthCubeF32:
|
||||
return R"(tint_symbol.SampleLevel(tint_symbol_1, float3(1.0f, 2.0f, 3.0f), 4))";
|
||||
return R"(tint_symbol.SampleLevel(tint_symbol_1, float3(1.0f, 2.0f, 3.0f), 4).x;)";
|
||||
case ValidTextureOverload::kSampleLevelDepthCubeArrayF32:
|
||||
return R"(tint_symbol.SampleLevel(tint_symbol_1, float4(1.0f, 2.0f, 3.0f, float(4)), 5))";
|
||||
return R"(tint_symbol.SampleLevel(tint_symbol_1, float4(1.0f, 2.0f, 3.0f, float(4)), 5).x;)";
|
||||
case ValidTextureOverload::kSampleGrad2dF32:
|
||||
return R"(tint_symbol.SampleGrad(tint_symbol_1, float2(1.0f, 2.0f), float2(3.0f, 4.0f), float2(5.0f, 6.0f)))";
|
||||
return R"(tint_symbol.SampleGrad(tint_symbol_1, float2(1.0f, 2.0f), float2(3.0f, 4.0f), float2(5.0f, 6.0f));)";
|
||||
case ValidTextureOverload::kSampleGrad2dOffsetF32:
|
||||
return R"(tint_symbol.SampleGrad(tint_symbol_1, float2(1.0f, 2.0f), float2(3.0f, 4.0f), float2(5.0f, 6.0f), int2(7, 8)))";
|
||||
return R"(tint_symbol.SampleGrad(tint_symbol_1, float2(1.0f, 2.0f), float2(3.0f, 4.0f), float2(5.0f, 6.0f), int2(7, 8));)";
|
||||
case ValidTextureOverload::kSampleGrad2dArrayF32:
|
||||
return R"(tint_symbol.SampleGrad(tint_symbol_1, float3(1.0f, 2.0f, float(3)), float2(4.0f, 5.0f), float2(6.0f, 7.0f)))";
|
||||
return R"(tint_symbol.SampleGrad(tint_symbol_1, float3(1.0f, 2.0f, float(3)), float2(4.0f, 5.0f), float2(6.0f, 7.0f));)";
|
||||
case ValidTextureOverload::kSampleGrad2dArrayOffsetF32:
|
||||
return R"(tint_symbol.SampleGrad(tint_symbol_1, float3(1.0f, 2.0f, float(3)), float2(4.0f, 5.0f), float2(6.0f, 7.0f), int2(8, 9)))";
|
||||
return R"(tint_symbol.SampleGrad(tint_symbol_1, float3(1.0f, 2.0f, float(3)), float2(4.0f, 5.0f), float2(6.0f, 7.0f), int2(8, 9));)";
|
||||
case ValidTextureOverload::kSampleGrad3dF32:
|
||||
return R"(tint_symbol.SampleGrad(tint_symbol_1, float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f)))";
|
||||
return R"(tint_symbol.SampleGrad(tint_symbol_1, float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f));)";
|
||||
case ValidTextureOverload::kSampleGrad3dOffsetF32:
|
||||
return R"(tint_symbol.SampleGrad(tint_symbol_1, float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f), int3(10, 11, 12)))";
|
||||
return R"(tint_symbol.SampleGrad(tint_symbol_1, float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f), int3(10, 11, 12));)";
|
||||
case ValidTextureOverload::kSampleGradCubeF32:
|
||||
return R"(tint_symbol.SampleGrad(tint_symbol_1, float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f)))";
|
||||
return R"(tint_symbol.SampleGrad(tint_symbol_1, float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f));)";
|
||||
case ValidTextureOverload::kSampleGradCubeArrayF32:
|
||||
return R"(tint_symbol.SampleGrad(tint_symbol_1, float4(1.0f, 2.0f, 3.0f, float(4)), float3(5.0f, 6.0f, 7.0f), float3(8.0f, 9.0f, 10.0f)))";
|
||||
return R"(tint_symbol.SampleGrad(tint_symbol_1, float4(1.0f, 2.0f, 3.0f, float(4)), float3(5.0f, 6.0f, 7.0f), float3(8.0f, 9.0f, 10.0f));)";
|
||||
case ValidTextureOverload::kSampleCompareDepth2dF32:
|
||||
return R"(tint_symbol.SampleCmp(tint_symbol_1, float2(1.0f, 2.0f), 3.0f))";
|
||||
return R"(tint_symbol.SampleCmp(tint_symbol_1, float2(1.0f, 2.0f), 3.0f);)";
|
||||
case ValidTextureOverload::kSampleCompareDepth2dOffsetF32:
|
||||
return R"(tint_symbol.SampleCmp(tint_symbol_1, float2(1.0f, 2.0f), 3.0f, int2(4, 5)))";
|
||||
return R"(tint_symbol.SampleCmp(tint_symbol_1, float2(1.0f, 2.0f), 3.0f, int2(4, 5));)";
|
||||
case ValidTextureOverload::kSampleCompareDepth2dArrayF32:
|
||||
return R"(tint_symbol.SampleCmp(tint_symbol_1, float3(1.0f, 2.0f, float(4)), 3.0f))";
|
||||
return R"(tint_symbol.SampleCmp(tint_symbol_1, float3(1.0f, 2.0f, float(4)), 3.0f);)";
|
||||
case ValidTextureOverload::kSampleCompareDepth2dArrayOffsetF32:
|
||||
return R"(tint_symbol.SampleCmp(tint_symbol_1, float3(1.0f, 2.0f, float(4)), 3.0f, int2(5, 6)))";
|
||||
return R"(tint_symbol.SampleCmp(tint_symbol_1, float3(1.0f, 2.0f, float(4)), 3.0f, int2(5, 6));)";
|
||||
case ValidTextureOverload::kSampleCompareDepthCubeF32:
|
||||
return R"(tint_symbol.SampleCmp(tint_symbol_1, float3(1.0f, 2.0f, 3.0f), 4.0f))";
|
||||
return R"(tint_symbol.SampleCmp(tint_symbol_1, float3(1.0f, 2.0f, 3.0f), 4.0f);)";
|
||||
case ValidTextureOverload::kSampleCompareDepthCubeArrayF32:
|
||||
return R"(tint_symbol.SampleCmp(tint_symbol_1, float4(1.0f, 2.0f, 3.0f, float(4)), 5.0f))";
|
||||
return R"(tint_symbol.SampleCmp(tint_symbol_1, float4(1.0f, 2.0f, 3.0f, float(4)), 5.0f);)";
|
||||
case ValidTextureOverload::kSampleCompareLevelDepth2dF32:
|
||||
return R"(tint_symbol.SampleCmpLevelZero(tint_symbol_1, float2(1.0f, 2.0f), 3.0f))";
|
||||
return R"(tint_symbol.SampleCmpLevelZero(tint_symbol_1, float2(1.0f, 2.0f), 3.0f);)";
|
||||
case ValidTextureOverload::kSampleCompareLevelDepth2dOffsetF32:
|
||||
return R"(tint_symbol.SampleCmpLevelZero(tint_symbol_1, float2(1.0f, 2.0f), 3.0f, int2(4, 5)))";
|
||||
return R"(tint_symbol.SampleCmpLevelZero(tint_symbol_1, float2(1.0f, 2.0f), 3.0f, int2(4, 5));)";
|
||||
case ValidTextureOverload::kSampleCompareLevelDepth2dArrayF32:
|
||||
return R"(tint_symbol.SampleCmpLevelZero(tint_symbol_1, float3(1.0f, 2.0f, float(4)), 3.0f))";
|
||||
return R"(tint_symbol.SampleCmpLevelZero(tint_symbol_1, float3(1.0f, 2.0f, float(4)), 3.0f);)";
|
||||
case ValidTextureOverload::kSampleCompareLevelDepth2dArrayOffsetF32:
|
||||
return R"(tint_symbol.SampleCmpLevelZero(tint_symbol_1, float3(1.0f, 2.0f, float(4)), 3.0f, int2(5, 6)))";
|
||||
return R"(tint_symbol.SampleCmpLevelZero(tint_symbol_1, float3(1.0f, 2.0f, float(4)), 3.0f, int2(5, 6));)";
|
||||
case ValidTextureOverload::kSampleCompareLevelDepthCubeF32:
|
||||
return R"(tint_symbol.SampleCmpLevelZero(tint_symbol_1, float3(1.0f, 2.0f, 3.0f), 4.0f))";
|
||||
return R"(tint_symbol.SampleCmpLevelZero(tint_symbol_1, float3(1.0f, 2.0f, 3.0f), 4.0f);)";
|
||||
case ValidTextureOverload::kSampleCompareLevelDepthCubeArrayF32:
|
||||
return R"(tint_symbol.SampleCmpLevelZero(tint_symbol_1, float4(1.0f, 2.0f, 3.0f, float(4)), 5.0f))";
|
||||
return R"(tint_symbol.SampleCmpLevelZero(tint_symbol_1, float4(1.0f, 2.0f, 3.0f, float(4)), 5.0f);)";
|
||||
case ValidTextureOverload::kLoad1dLevelF32:
|
||||
return R"(tint_symbol.Load(int2(1, 0), 3))";
|
||||
return R"(tint_symbol.Load(int2(1, 0), 3);)";
|
||||
case ValidTextureOverload::kLoad1dLevelU32:
|
||||
return R"(tint_symbol.Load(int2(1, 0), 3))";
|
||||
return R"(tint_symbol.Load(int2(1, 0), 3);)";
|
||||
case ValidTextureOverload::kLoad1dLevelI32:
|
||||
return R"(tint_symbol.Load(int2(1, 0), 3))";
|
||||
return R"(tint_symbol.Load(int2(1, 0), 3);)";
|
||||
case ValidTextureOverload::kLoad2dLevelF32:
|
||||
return R"(tint_symbol.Load(int3(1, 2, 0), 3))";
|
||||
return R"(tint_symbol.Load(int3(1, 2, 0), 3);)";
|
||||
case ValidTextureOverload::kLoad2dLevelU32:
|
||||
return R"(tint_symbol.Load(int3(1, 2, 0), 3))";
|
||||
return R"(tint_symbol.Load(int3(1, 2, 0), 3);)";
|
||||
case ValidTextureOverload::kLoad2dLevelI32:
|
||||
return R"(tint_symbol.Load(int3(1, 2, 0), 3))";
|
||||
return R"(tint_symbol.Load(int3(1, 2, 0), 3);)";
|
||||
case ValidTextureOverload::kLoad2dArrayLevelF32:
|
||||
return R"(tint_symbol.Load(int4(1, 2, 3, 0), 4))";
|
||||
return R"(tint_symbol.Load(int4(1, 2, 3, 0), 4);)";
|
||||
case ValidTextureOverload::kLoad2dArrayLevelU32:
|
||||
return R"(tint_symbol.Load(int4(1, 2, 3, 0), 4))";
|
||||
return R"(tint_symbol.Load(int4(1, 2, 3, 0), 4);)";
|
||||
case ValidTextureOverload::kLoad2dArrayLevelI32:
|
||||
return R"(tint_symbol.Load(int4(1, 2, 3, 0), 4))";
|
||||
return R"(tint_symbol.Load(int4(1, 2, 3, 0), 4);)";
|
||||
case ValidTextureOverload::kLoad3dLevelF32:
|
||||
return R"(tint_symbol.Load(int4(1, 2, 3, 0), 4))";
|
||||
return R"(tint_symbol.Load(int4(1, 2, 3, 0), 4);)";
|
||||
case ValidTextureOverload::kLoad3dLevelU32:
|
||||
return R"(tint_symbol.Load(int4(1, 2, 3, 0), 4))";
|
||||
return R"(tint_symbol.Load(int4(1, 2, 3, 0), 4);)";
|
||||
case ValidTextureOverload::kLoad3dLevelI32:
|
||||
return R"(tint_symbol.Load(int4(1, 2, 3, 0), 4))";
|
||||
return R"(tint_symbol.Load(int4(1, 2, 3, 0), 4);)";
|
||||
case ValidTextureOverload::kLoadMultisampled2dF32:
|
||||
return R"(tint_symbol.Load(int3(1, 2, 0), 3))";
|
||||
return R"(tint_symbol.Load(int3(1, 2, 0), 3);)";
|
||||
case ValidTextureOverload::kLoadMultisampled2dU32:
|
||||
return R"(tint_symbol.Load(int3(1, 2, 0), 3))";
|
||||
return R"(tint_symbol.Load(int3(1, 2, 0), 3);)";
|
||||
case ValidTextureOverload::kLoadMultisampled2dI32:
|
||||
return R"(tint_symbol.Load(int3(1, 2, 0), 3))";
|
||||
return R"(tint_symbol.Load(int3(1, 2, 0), 3);)";
|
||||
case ValidTextureOverload::kLoadDepth2dLevelF32:
|
||||
return R"(tint_symbol.Load(int3(1, 2, 0), 3))";
|
||||
return R"(tint_symbol.Load(int3(1, 2, 0), 3).x;)";
|
||||
case ValidTextureOverload::kLoadDepth2dArrayLevelF32:
|
||||
return R"(tint_symbol.Load(int4(1, 2, 3, 0), 4))";
|
||||
return R"(tint_symbol.Load(int4(1, 2, 3, 0), 4).x;)";
|
||||
case ValidTextureOverload::kLoadStorageRO1dRgba32float:
|
||||
return R"(tint_symbol.Load(int2(1, 0)))";
|
||||
return R"(tint_symbol.Load(int2(1, 0));)";
|
||||
case ValidTextureOverload::kLoadStorageRO2dRgba8unorm:
|
||||
case ValidTextureOverload::kLoadStorageRO2dRgba8snorm:
|
||||
case ValidTextureOverload::kLoadStorageRO2dRgba8uint:
|
||||
@@ -343,19 +343,19 @@ ExpectedResult expected_texture_overload(
|
||||
case ValidTextureOverload::kLoadStorageRO2dRgba32uint:
|
||||
case ValidTextureOverload::kLoadStorageRO2dRgba32sint:
|
||||
case ValidTextureOverload::kLoadStorageRO2dRgba32float:
|
||||
return R"(tint_symbol.Load(int3(1, 2, 0)))";
|
||||
return R"(tint_symbol.Load(int3(1, 2, 0));)";
|
||||
case ValidTextureOverload::kLoadStorageRO2dArrayRgba32float:
|
||||
return R"(tint_symbol.Load(int4(1, 2, 3, 0)))";
|
||||
return R"(tint_symbol.Load(int4(1, 2, 3, 0));)";
|
||||
case ValidTextureOverload::kLoadStorageRO3dRgba32float:
|
||||
return R"(tint_symbol.Load(int4(1, 2, 3, 0)))";
|
||||
return R"(tint_symbol.Load(int4(1, 2, 3, 0));)";
|
||||
case ValidTextureOverload::kStoreWO1dRgba32float:
|
||||
return R"(tint_symbol[1] = float4(2.0f, 3.0f, 4.0f, 5.0f))";
|
||||
return R"(tint_symbol[1] = float4(2.0f, 3.0f, 4.0f, 5.0f);)";
|
||||
case ValidTextureOverload::kStoreWO2dRgba32float:
|
||||
return R"(tint_symbol[int2(1, 2)] = float4(3.0f, 4.0f, 5.0f, 6.0f))";
|
||||
return R"(tint_symbol[int2(1, 2)] = float4(3.0f, 4.0f, 5.0f, 6.0f);)";
|
||||
case ValidTextureOverload::kStoreWO2dArrayRgba32float:
|
||||
return R"(tint_symbol[int3(1, 2, 3)] = float4(4.0f, 5.0f, 6.0f, 7.0f))";
|
||||
return R"(tint_symbol[int3(1, 2, 3)] = float4(4.0f, 5.0f, 6.0f, 7.0f);)";
|
||||
case ValidTextureOverload::kStoreWO3dRgba32float:
|
||||
return R"(tint_symbol[int3(1, 2, 3)] = float4(4.0f, 5.0f, 6.0f, 7.0f))";
|
||||
return R"(tint_symbol[int3(1, 2, 3)] = float4(4.0f, 5.0f, 6.0f, 7.0f);)";
|
||||
}
|
||||
return "<unmatched texture overload>";
|
||||
} // NOLINT - Ignore the length of this function
|
||||
|
||||
Reference in New Issue
Block a user