spirv-reader: refactor image access tests
Bug: tint:349 Change-Id: I0cd3dc6d6704f5b636a14542993c39d3f6ea5f59 Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/34101 Commit-Queue: David Neto <dneto@google.com> Reviewed-by: Ben Clayton <bclayton@google.com> Auto-Submit: David Neto <dneto@google.com>
This commit is contained in:
parent
76e5f17313
commit
e5aa390e15
|
@ -1188,21 +1188,23 @@ INSTANTIATE_TEST_SUITE_P(Images,
|
||||||
// Test emission of variables when we have sampled image accesses in
|
// Test emission of variables when we have sampled image accesses in
|
||||||
// executable code.
|
// executable code.
|
||||||
|
|
||||||
struct DeclSampledImageCase {
|
struct SampledImageCase {
|
||||||
std::string inst; // The provoking image access instruction.
|
// SPIR-V image type, excluding result ID and opcode
|
||||||
std::string var_decl; // WGSL variable declaration
|
std::string spirv_image_type_details;
|
||||||
std::string texture_builtin; // WGSL texture usage.
|
std::string spirv_image_access; // The provoking image access instruction.
|
||||||
|
std::string var_decl; // WGSL variable declaration
|
||||||
|
std::string texture_builtin; // WGSL texture usage.
|
||||||
};
|
};
|
||||||
inline std::ostream& operator<<(std::ostream& out,
|
inline std::ostream& operator<<(std::ostream& out, const SampledImageCase& c) {
|
||||||
const DeclSampledImageCase& c) {
|
out << "ImageCase(" << c.spirv_image_type_details << "\n"
|
||||||
out << "DeclSampledImageCase(" << c.inst << "\n"
|
<< c.spirv_image_access << "\n"
|
||||||
<< c.var_decl << "\n"
|
<< c.var_decl << "\n"
|
||||||
<< c.texture_builtin << ")";
|
<< c.texture_builtin << ")";
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
using SpvParserTest_DeclHandle_SampledImage =
|
using SpvParserTest_DeclHandle_SampledImage =
|
||||||
SpvParserTestBase<::testing::TestWithParam<DeclSampledImageCase>>;
|
SpvParserTestBase<::testing::TestWithParam<SampledImageCase>>;
|
||||||
|
|
||||||
TEST_P(SpvParserTest_DeclHandle_SampledImage, Variable) {
|
TEST_P(SpvParserTest_DeclHandle_SampledImage, Variable) {
|
||||||
const auto assembly = Preamble() + R"(
|
const auto assembly = Preamble() + R"(
|
||||||
|
@ -1217,13 +1219,17 @@ TEST_P(SpvParserTest_DeclHandle_SampledImage, Variable) {
|
||||||
OpDecorate %20 Binding 1
|
OpDecorate %20 Binding 1
|
||||||
OpDecorate %30 DescriptorSet 0
|
OpDecorate %30 DescriptorSet 0
|
||||||
OpDecorate %30 Binding 1
|
OpDecorate %30 Binding 1
|
||||||
)" + CommonTypes() + R"(
|
)" + CommonBasicTypes() +
|
||||||
; Vulkan ignores the "depth" parameter on OpTypeImage.
|
R"(
|
||||||
; So this image type can serve for both regular sampling and depth-compare.
|
%sampler = OpTypeSampler
|
||||||
%si_ty = OpTypeSampledImage %f_texture_2d
|
%ptr_sampler = OpTypePointer UniformConstant %sampler
|
||||||
|
%im_ty = OpTypeImage )" +
|
||||||
|
GetParam().spirv_image_type_details + R"(
|
||||||
|
%ptr_im_ty = OpTypePointer UniformConstant %im_ty
|
||||||
|
%si_ty = OpTypeSampledImage %im_ty
|
||||||
|
|
||||||
%10 = OpVariable %ptr_sampler UniformConstant
|
%10 = OpVariable %ptr_sampler UniformConstant
|
||||||
%20 = OpVariable %ptr_f_texture_2d UniformConstant
|
%20 = OpVariable %ptr_im_ty UniformConstant
|
||||||
%30 = OpVariable %ptr_sampler UniformConstant ; comparison sampler, when needed
|
%30 = OpVariable %ptr_sampler UniformConstant ; comparison sampler, when needed
|
||||||
|
|
||||||
%main = OpFunction %void None %voidfn
|
%main = OpFunction %void None %voidfn
|
||||||
|
@ -1244,10 +1250,11 @@ TEST_P(SpvParserTest_DeclHandle_SampledImage, Variable) {
|
||||||
%offsets2d = OpCopyObject %v2int %value_offset
|
%offsets2d = OpCopyObject %v2int %value_offset
|
||||||
|
|
||||||
%sam = OpLoad %sampler %10
|
%sam = OpLoad %sampler %10
|
||||||
%im = OpLoad %f_texture_2d %20
|
%im = OpLoad %im_ty %20
|
||||||
%sampled_image = OpSampledImage %si_ty %im %sam
|
%sampled_image = OpSampledImage %si_ty %im %sam
|
||||||
|
|
||||||
)" + GetParam().inst + R"(
|
)" + GetParam().spirv_image_access +
|
||||||
|
R"(
|
||||||
|
|
||||||
OpReturn
|
OpReturn
|
||||||
OpFunctionEnd
|
OpFunctionEnd
|
||||||
|
@ -1265,49 +1272,12 @@ TEST_P(SpvParserTest_DeclHandle_SampledImage, Variable) {
|
||||||
// TODO(dneto): Test variable declaration and texture builtins provoked by
|
// TODO(dneto): Test variable declaration and texture builtins provoked by
|
||||||
// use of an image access instruction inside helper function.
|
// use of an image access instruction inside helper function.
|
||||||
TEST_P(SpvParserTest_RegisterHandleUsage_SampledImage, DISABLED_FunctionParam) {
|
TEST_P(SpvParserTest_RegisterHandleUsage_SampledImage, DISABLED_FunctionParam) {
|
||||||
const auto assembly = Preamble() + CommonTypes() + R"(
|
|
||||||
%f_ty = OpTypeFunction %void %ptr_sampler %ptr_f_texture_2d
|
|
||||||
%si_ty = OpTypeSampledImage %f_texture_2d
|
|
||||||
%coords = OpConstantNull %v2float
|
|
||||||
%component = OpConstant %uint 1
|
|
||||||
|
|
||||||
%10 = OpVariable %ptr_sampler UniformConstant
|
|
||||||
%20 = OpVariable %ptr_f_texture_2d UniformConstant
|
|
||||||
|
|
||||||
%func = OpFunction %void None %f_ty
|
|
||||||
%110 = OpFunctionParameter %ptr_sampler
|
|
||||||
%120 = OpFunctionParameter %ptr_f_texture_2d
|
|
||||||
%func_entry = OpLabel
|
|
||||||
%sam = OpLoad %sampler %110
|
|
||||||
%im = OpLoad %f_texture_2d %120
|
|
||||||
%sampled_image = OpSampledImage %si_ty %im %sam
|
|
||||||
|
|
||||||
)" + GetParam().inst + R"(
|
|
||||||
|
|
||||||
OpReturn
|
|
||||||
OpFunctionEnd
|
|
||||||
|
|
||||||
%main = OpFunction %void None %voidfn
|
|
||||||
%entry = OpLabel
|
|
||||||
%foo = OpFunctionCall %void %func %10 %20
|
|
||||||
OpReturn
|
|
||||||
OpFunctionEnd
|
|
||||||
)";
|
|
||||||
auto p = parser(test::Assemble(assembly));
|
|
||||||
ASSERT_TRUE(p->BuildInternalModule()) << p->error() << assembly << std::endl;
|
|
||||||
EXPECT_TRUE(p->RegisterHandleUsage()) << p->error() << assembly << std::endl;
|
|
||||||
EXPECT_TRUE(p->error().empty()) << p->error() << assembly << std::endl;
|
|
||||||
Usage su = p->GetHandleUsage(10);
|
|
||||||
Usage iu = p->GetHandleUsage(20);
|
|
||||||
|
|
||||||
EXPECT_THAT(su.to_str(), Eq(GetParam().expected_sampler_usage));
|
|
||||||
EXPECT_THAT(iu.to_str(), Eq(GetParam().expected_image_usage));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
INSTANTIATE_TEST_SUITE_P(
|
INSTANTIATE_TEST_SUITE_P(
|
||||||
DISABLED_ImageGather,
|
DISABLED_ImageGather,
|
||||||
SpvParserTest_DeclHandle_SampledImage,
|
SpvParserTest_DeclHandle_SampledImage,
|
||||||
::testing::ValuesIn(std::vector<DeclSampledImageCase>{
|
::testing::ValuesIn(std::vector<SampledImageCase>{
|
||||||
// TODO(dneto): OpImageGather
|
// TODO(dneto): OpImageGather
|
||||||
// TODO(dneto): OpImageGather with ConstOffset (signed and unsigned)
|
// TODO(dneto): OpImageGather with ConstOffset (signed and unsigned)
|
||||||
// TODO(dneto): OpImageGather with Offset (signed and unsigned)
|
// TODO(dneto): OpImageGather with Offset (signed and unsigned)
|
||||||
|
@ -1317,7 +1287,7 @@ INSTANTIATE_TEST_SUITE_P(
|
||||||
INSTANTIATE_TEST_SUITE_P(
|
INSTANTIATE_TEST_SUITE_P(
|
||||||
DISABLED_ImageDrefGather,
|
DISABLED_ImageDrefGather,
|
||||||
SpvParserTest_DeclHandle_SampledImage,
|
SpvParserTest_DeclHandle_SampledImage,
|
||||||
::testing::ValuesIn(std::vector<DeclSampledImageCase>{
|
::testing::ValuesIn(std::vector<SampledImageCase>{
|
||||||
// TODO(dneto): OpImageDrefGather
|
// TODO(dneto): OpImageDrefGather
|
||||||
// TODO(dneto): OpImageDrefGather with ConstOffset (signed and
|
// TODO(dneto): OpImageDrefGather with ConstOffset (signed and
|
||||||
// unsigned)
|
// unsigned)
|
||||||
|
@ -1331,9 +1301,10 @@ INSTANTIATE_TEST_SUITE_P(
|
||||||
::testing::Values(
|
::testing::Values(
|
||||||
|
|
||||||
// OpImageSampleImplicitLod
|
// OpImageSampleImplicitLod
|
||||||
DeclSampledImageCase{"%result = OpImageSampleImplicitLod "
|
SampledImageCase{"%float 2D 0 0 0 1 Unknown",
|
||||||
"%v4float %sampled_image %coords12",
|
"%result = OpImageSampleImplicitLod "
|
||||||
R"(
|
"%v4float %sampled_image %coords12",
|
||||||
|
R"(
|
||||||
DecoratedVariable{
|
DecoratedVariable{
|
||||||
Decorations{
|
Decorations{
|
||||||
SetDecoration{0}
|
SetDecoration{0}
|
||||||
|
@ -1352,7 +1323,7 @@ INSTANTIATE_TEST_SUITE_P(
|
||||||
uniform_constant
|
uniform_constant
|
||||||
__sampled_texture_2d__f32
|
__sampled_texture_2d__f32
|
||||||
})",
|
})",
|
||||||
R"(
|
R"(
|
||||||
Call[not set]{
|
Call[not set]{
|
||||||
Identifier[not set]{textureSample}
|
Identifier[not set]{textureSample}
|
||||||
(
|
(
|
||||||
|
@ -1363,7 +1334,8 @@ INSTANTIATE_TEST_SUITE_P(
|
||||||
})"},
|
})"},
|
||||||
|
|
||||||
// OpImageSampleImplicitLod with ConstOffset
|
// OpImageSampleImplicitLod with ConstOffset
|
||||||
DeclSampledImageCase{
|
SampledImageCase{
|
||||||
|
"%float 2D 0 0 0 1 Unknown",
|
||||||
"%result = OpImageSampleImplicitLod "
|
"%result = OpImageSampleImplicitLod "
|
||||||
"%v4float %sampled_image %coords12 ConstOffset %offsets2d",
|
"%v4float %sampled_image %coords12 ConstOffset %offsets2d",
|
||||||
R"(
|
R"(
|
||||||
|
@ -1397,9 +1369,10 @@ INSTANTIATE_TEST_SUITE_P(
|
||||||
})"},
|
})"},
|
||||||
|
|
||||||
// OpImageSampleImplicitLod with Bias
|
// OpImageSampleImplicitLod with Bias
|
||||||
DeclSampledImageCase{"%result = OpImageSampleImplicitLod "
|
SampledImageCase{"%float 2D 0 0 0 1 Unknown",
|
||||||
"%v4float %sampled_image %coords12 Bias %float_7",
|
"%result = OpImageSampleImplicitLod "
|
||||||
R"(
|
"%v4float %sampled_image %coords12 Bias %float_7",
|
||||||
|
R"(
|
||||||
DecoratedVariable{
|
DecoratedVariable{
|
||||||
Decorations{
|
Decorations{
|
||||||
SetDecoration{0}
|
SetDecoration{0}
|
||||||
|
@ -1418,7 +1391,7 @@ INSTANTIATE_TEST_SUITE_P(
|
||||||
uniform_constant
|
uniform_constant
|
||||||
__sampled_texture_2d__f32
|
__sampled_texture_2d__f32
|
||||||
})",
|
})",
|
||||||
R"(
|
R"(
|
||||||
Call[not set]{
|
Call[not set]{
|
||||||
Identifier[not set]{textureSampleBias}
|
Identifier[not set]{textureSampleBias}
|
||||||
(
|
(
|
||||||
|
@ -1432,11 +1405,11 @@ INSTANTIATE_TEST_SUITE_P(
|
||||||
// OpImageSampleImplicitLod with Bias and ConstOffset
|
// OpImageSampleImplicitLod with Bias and ConstOffset
|
||||||
// TODO(dneto): OpImageSampleImplicitLod with Bias and unsigned
|
// TODO(dneto): OpImageSampleImplicitLod with Bias and unsigned
|
||||||
// ConstOffset
|
// ConstOffset
|
||||||
DeclSampledImageCase{
|
SampledImageCase{"%float 2D 0 0 0 1 Unknown",
|
||||||
"%result = OpImageSampleImplicitLod "
|
"%result = OpImageSampleImplicitLod "
|
||||||
"%v4float %sampled_image %coords12 Bias|ConstOffset "
|
"%v4float %sampled_image %coords12 Bias|ConstOffset "
|
||||||
"%float_7 %offsets2d",
|
"%float_7 %offsets2d",
|
||||||
R"(
|
R"(
|
||||||
DecoratedVariable{
|
DecoratedVariable{
|
||||||
Decorations{
|
Decorations{
|
||||||
SetDecoration{0}
|
SetDecoration{0}
|
||||||
|
@ -1455,7 +1428,7 @@ INSTANTIATE_TEST_SUITE_P(
|
||||||
uniform_constant
|
uniform_constant
|
||||||
__sampled_texture_2d__f32
|
__sampled_texture_2d__f32
|
||||||
})",
|
})",
|
||||||
R"(
|
R"(
|
||||||
Call[not set]{
|
Call[not set]{
|
||||||
Identifier[not set]{textureSampleBias}
|
Identifier[not set]{textureSampleBias}
|
||||||
(
|
(
|
||||||
|
@ -1476,14 +1449,14 @@ INSTANTIATE_TEST_SUITE_P(
|
||||||
::testing::Values(
|
::testing::Values(
|
||||||
|
|
||||||
// OpImageSampleImplicitLod
|
// OpImageSampleImplicitLod
|
||||||
DeclSampledImageCase{R"(
|
SampledImageCase{"%float 2D 0 0 0 1 Unknown", R"(
|
||||||
%sam_dref = OpLoad %sampler %30
|
%sam_dref = OpLoad %sampler %30
|
||||||
%sampled_dref_image = OpSampledImage %si_ty %im %sam_dref
|
%sampled_dref_image = OpSampledImage %si_ty %im %sam_dref
|
||||||
|
|
||||||
%200 = OpImageSampleImplicitLod %v4float %sampled_image %coords12
|
%200 = OpImageSampleImplicitLod %v4float %sampled_image %coords12
|
||||||
%210 = OpImageSampleDrefImplicitLod %v4float %sampled_dref_image %coords12 %depth
|
%210 = OpImageSampleDrefImplicitLod %v4float %sampled_dref_image %coords12 %depth
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
DecoratedVariable{
|
DecoratedVariable{
|
||||||
Decorations{
|
Decorations{
|
||||||
SetDecoration{0}
|
SetDecoration{0}
|
||||||
|
@ -1511,7 +1484,7 @@ INSTANTIATE_TEST_SUITE_P(
|
||||||
uniform_constant
|
uniform_constant
|
||||||
__sampler_comparison
|
__sampler_comparison
|
||||||
})",
|
})",
|
||||||
R"(
|
R"(
|
||||||
VariableDeclStatement{
|
VariableDeclStatement{
|
||||||
VariableConst{
|
VariableConst{
|
||||||
x_200
|
x_200
|
||||||
|
@ -1553,9 +1526,10 @@ INSTANTIATE_TEST_SUITE_P(
|
||||||
SpvParserTest_DeclHandle_SampledImage,
|
SpvParserTest_DeclHandle_SampledImage,
|
||||||
::testing::Values(
|
::testing::Values(
|
||||||
// ImageSampleDrefImplicitLod
|
// ImageSampleDrefImplicitLod
|
||||||
DeclSampledImageCase{"%result = OpImageSampleDrefImplicitLod "
|
SampledImageCase{"%float 2D 0 0 0 1 Unknown",
|
||||||
"%v4float %sampled_image %coords12 %depth",
|
"%result = OpImageSampleDrefImplicitLod "
|
||||||
R"(
|
"%v4float %sampled_image %coords12 %depth",
|
||||||
|
R"(
|
||||||
DecoratedVariable{
|
DecoratedVariable{
|
||||||
Decorations{
|
Decorations{
|
||||||
SetDecoration{0}
|
SetDecoration{0}
|
||||||
|
@ -1574,7 +1548,7 @@ INSTANTIATE_TEST_SUITE_P(
|
||||||
uniform_constant
|
uniform_constant
|
||||||
__depth_texture_2d
|
__depth_texture_2d
|
||||||
})",
|
})",
|
||||||
R"(
|
R"(
|
||||||
Call[not set]{
|
Call[not set]{
|
||||||
Identifier[not set]{textureSampleCompare}
|
Identifier[not set]{textureSampleCompare}
|
||||||
(
|
(
|
||||||
|
@ -1586,7 +1560,8 @@ INSTANTIATE_TEST_SUITE_P(
|
||||||
})"},
|
})"},
|
||||||
|
|
||||||
// ImageSampleDrefImplicitLod with ConstOffset
|
// ImageSampleDrefImplicitLod with ConstOffset
|
||||||
DeclSampledImageCase{
|
SampledImageCase{
|
||||||
|
"%float 2D 0 0 0 1 Unknown",
|
||||||
"%result = OpImageSampleDrefImplicitLod %v4float "
|
"%result = OpImageSampleDrefImplicitLod %v4float "
|
||||||
"%sampled_image %coords12 %depth ConstOffset %offsets2d",
|
"%sampled_image %coords12 %depth ConstOffset %offsets2d",
|
||||||
R"(
|
R"(
|
||||||
|
@ -1628,10 +1603,10 @@ INSTANTIATE_TEST_SUITE_P(
|
||||||
::testing::Values(
|
::testing::Values(
|
||||||
|
|
||||||
// OpImageSampleExplicitLod - using Lod
|
// OpImageSampleExplicitLod - using Lod
|
||||||
DeclSampledImageCase{
|
SampledImageCase{"%float 2D 0 0 0 1 Unknown",
|
||||||
"%result = OpImageSampleExplicitLod "
|
"%result = OpImageSampleExplicitLod "
|
||||||
"%v4float %sampled_image %coords12 Lod %float_null",
|
"%v4float %sampled_image %coords12 Lod %float_null",
|
||||||
R"(
|
R"(
|
||||||
DecoratedVariable{
|
DecoratedVariable{
|
||||||
Decorations{
|
Decorations{
|
||||||
SetDecoration{0}
|
SetDecoration{0}
|
||||||
|
@ -1650,7 +1625,7 @@ INSTANTIATE_TEST_SUITE_P(
|
||||||
uniform_constant
|
uniform_constant
|
||||||
__sampled_texture_2d__f32
|
__sampled_texture_2d__f32
|
||||||
})",
|
})",
|
||||||
R"(
|
R"(
|
||||||
Call[not set]{
|
Call[not set]{
|
||||||
Identifier[not set]{textureSampleLevel}
|
Identifier[not set]{textureSampleLevel}
|
||||||
(
|
(
|
||||||
|
@ -1664,11 +1639,11 @@ INSTANTIATE_TEST_SUITE_P(
|
||||||
// OpImageSampleExplicitLod - using Lod and ConstOffset
|
// OpImageSampleExplicitLod - using Lod and ConstOffset
|
||||||
// TODO(dneto) OpImageSampleExplicitLod - using Lod and unsigned
|
// TODO(dneto) OpImageSampleExplicitLod - using Lod and unsigned
|
||||||
// ConstOffset
|
// ConstOffset
|
||||||
DeclSampledImageCase{
|
SampledImageCase{"%float 2D 0 0 0 1 Unknown",
|
||||||
"%result = OpImageSampleExplicitLod "
|
"%result = OpImageSampleExplicitLod "
|
||||||
"%v4float %sampled_image %coords12 Lod|ConstOffset "
|
"%v4float %sampled_image %coords12 Lod|ConstOffset "
|
||||||
"%float_null %offsets2d",
|
"%float_null %offsets2d",
|
||||||
R"(
|
R"(
|
||||||
DecoratedVariable{
|
DecoratedVariable{
|
||||||
Decorations{
|
Decorations{
|
||||||
SetDecoration{0}
|
SetDecoration{0}
|
||||||
|
@ -1687,7 +1662,7 @@ INSTANTIATE_TEST_SUITE_P(
|
||||||
uniform_constant
|
uniform_constant
|
||||||
__sampled_texture_2d__f32
|
__sampled_texture_2d__f32
|
||||||
})",
|
})",
|
||||||
R"(
|
R"(
|
||||||
Call[not set]{
|
Call[not set]{
|
||||||
Identifier[not set]{textureSampleLevel}
|
Identifier[not set]{textureSampleLevel}
|
||||||
(
|
(
|
||||||
|
@ -1700,7 +1675,8 @@ INSTANTIATE_TEST_SUITE_P(
|
||||||
})"},
|
})"},
|
||||||
|
|
||||||
// OpImageSampleExplicitLod - using Grad
|
// OpImageSampleExplicitLod - using Grad
|
||||||
DeclSampledImageCase{
|
SampledImageCase{
|
||||||
|
"%float 2D 0 0 0 1 Unknown",
|
||||||
"%result = OpImageSampleExplicitLod "
|
"%result = OpImageSampleExplicitLod "
|
||||||
"%v4float %sampled_image %coords12 Grad %float_7 %float_null",
|
"%v4float %sampled_image %coords12 Grad %float_7 %float_null",
|
||||||
R"(
|
R"(
|
||||||
|
@ -1737,11 +1713,11 @@ INSTANTIATE_TEST_SUITE_P(
|
||||||
// OpImageSampleExplicitLod - using Grad and ConstOffset
|
// OpImageSampleExplicitLod - using Grad and ConstOffset
|
||||||
// TODO(dneto): OpImageSampleExplicitLod - using Grad and unsigned
|
// TODO(dneto): OpImageSampleExplicitLod - using Grad and unsigned
|
||||||
// ConstOffset
|
// ConstOffset
|
||||||
DeclSampledImageCase{
|
SampledImageCase{"%float 2D 0 0 0 1 Unknown",
|
||||||
"%result = OpImageSampleExplicitLod "
|
"%result = OpImageSampleExplicitLod "
|
||||||
"%v4float %sampled_image %coords12 Grad|ConstOffset "
|
"%v4float %sampled_image %coords12 Grad|ConstOffset "
|
||||||
"%float_7 %float_null %offsets2d",
|
"%float_7 %float_null %offsets2d",
|
||||||
R"(
|
R"(
|
||||||
DecoratedVariable{
|
DecoratedVariable{
|
||||||
Decorations{
|
Decorations{
|
||||||
SetDecoration{0}
|
SetDecoration{0}
|
||||||
|
@ -1760,7 +1736,7 @@ INSTANTIATE_TEST_SUITE_P(
|
||||||
uniform_constant
|
uniform_constant
|
||||||
__sampled_texture_2d__f32
|
__sampled_texture_2d__f32
|
||||||
})",
|
})",
|
||||||
R"(
|
R"(
|
||||||
Call[not set]{
|
Call[not set]{
|
||||||
Identifier[not set]{textureSampleGrad}
|
Identifier[not set]{textureSampleGrad}
|
||||||
(
|
(
|
||||||
|
@ -1774,8 +1750,8 @@ INSTANTIATE_TEST_SUITE_P(
|
||||||
})"}));
|
})"}));
|
||||||
|
|
||||||
struct ImageCoordsCase {
|
struct ImageCoordsCase {
|
||||||
std::string spirv_image_type_details; // SPIR-V image type, excluding result
|
// SPIR-V image type, excluding result ID and opcode
|
||||||
// ID and opcode
|
std::string spirv_image_type_details;
|
||||||
std::string spirv_image_access;
|
std::string spirv_image_access;
|
||||||
std::string expected_error;
|
std::string expected_error;
|
||||||
std::vector<std::string> expected_expressions;
|
std::vector<std::string> expected_expressions;
|
||||||
|
|
Loading…
Reference in New Issue