Merge changes I6c21b03d,Ic6136d02,I988c0288,I21d11818,I79fa8162, ...
* changes:
Update src/Pipeline/SpirvShaderInstructions.inl
Update SPIR-V Tools to f37547c73
Squashed 'third_party/SPIRV-Tools/' changes from b0e22d28f5e..f37547c73a9
Update SPIR-V Headers to 8bb2420b4
Squashed 'third_party/SPIRV-Headers/' changes from 104ecc356c1..8bb2420b44a
Mend git merge history for SPIRV-Headers and SPIRV-Tools
Mend git merge history for SPIRV-Headers and SPIRV-Tools
Revert 9dff6a3bb5 to mend git merge history for SPIRV-Headers and SPIRV-Tools
Squashed 'third_party/SPIRV-Tools/' changes from a61d07a7276..b0e22d28f5e
Squashed 'third_party/SPIRV-Headers/' changes from 7845730cab6..104ecc356c1
diff --git a/src/Reactor/Reactor.hpp b/src/Reactor/Reactor.hpp
index d3e1d5a..40a596a 100644
--- a/src/Reactor/Reactor.hpp
+++ b/src/Reactor/Reactor.hpp
@@ -3392,10 +3392,52 @@
CastToReactor(std::forward<RArgs>(args))...);
}
-// Calls the Reactor function pointer fptr with the signature
-// FUNCTION_SIGNATURE and arguments.
+// NonVoidFunction<F> and VoidFunction<F> are helper classes which define ReturnType
+// when F matches a non-void fuction signature or void function signature, respectively,
+// as the function's return type.
+template<typename F>
+struct NonVoidFunction
+{};
+
+template<typename Return, typename... Arguments>
+struct NonVoidFunction<Return(Arguments...)>
+{
+ using ReturnType = Return;
+};
+
+template<typename... Arguments>
+struct NonVoidFunction<void(Arguments...)>
+{
+};
+
+template<typename F>
+using NonVoidFunctionReturnType = typename NonVoidFunction<F>::ReturnType;
+
+template<typename F>
+struct VoidFunction
+{};
+
+template<typename... Arguments>
+struct VoidFunction<void(Arguments...)>
+{
+ using ReturnType = void;
+};
+
+template<typename F>
+using VoidFunctionReturnType = typename VoidFunction<F>::ReturnType;
+
+// Calls the Reactor function pointer fptr with the signature FUNCTION_SIGNATURE and arguments.
+// Overload for calling functions with non-void return type.
template<typename FUNCTION_SIGNATURE, typename... RArgs>
-inline void Call(Pointer<Byte> fptr, RArgs &&... args)
+inline CToReactorT<NonVoidFunctionReturnType<FUNCTION_SIGNATURE>> Call(Pointer<Byte> fptr, RArgs &&... args)
+{
+ return CallHelper<FUNCTION_SIGNATURE>::Call(fptr, CastToReactor(std::forward<RArgs>(args))...);
+}
+
+// Calls the Reactor function pointer fptr with the signature FUNCTION_SIGNATURE and arguments.
+// Overload for calling functions with void return type.
+template<typename FUNCTION_SIGNATURE, typename... RArgs>
+inline VoidFunctionReturnType<FUNCTION_SIGNATURE> Call(Pointer<Byte> fptr, RArgs &&... args)
{
CallHelper<FUNCTION_SIGNATURE>::Call(fptr, CastToReactor(std::forward<RArgs>(args))...);
}
diff --git a/src/Reactor/Routine.hpp b/src/Reactor/Routine.hpp
index 1c0ae1f..eb8929d 100644
--- a/src/Reactor/Routine.hpp
+++ b/src/Reactor/Routine.hpp
@@ -28,7 +28,7 @@
virtual const void *getEntry(int index = 0) const = 0;
};
-// RoutineT is a type-safe wrapper around a Routine and its callable entry, returned by FunctionT
+// RoutineT is a type-safe wrapper around a Routine and its function entry, returned by FunctionT
template<typename FunctionType>
class RoutineT;
@@ -36,6 +36,8 @@
class RoutineT<Return(Arguments...)>
{
public:
+ using FunctionType = Return (*)(Arguments...);
+
RoutineT() = default;
explicit RoutineT(const std::shared_ptr<Routine> &routine)
@@ -43,30 +45,29 @@
{
if(routine)
{
- callable = reinterpret_cast<CallableType>(const_cast<void *>(routine->getEntry(0)));
+ function = reinterpret_cast<FunctionType>(const_cast<void *>(routine->getEntry(0)));
}
}
operator bool() const
{
- return callable != nullptr;
+ return function != nullptr;
}
template<typename... Args>
Return operator()(Args &&... args) const
{
- return callable(std::forward<Args>(args)...);
+ return function(std::forward<Args>(args)...);
}
- const void *getEntry() const
+ const FunctionType getEntry() const
{
- return reinterpret_cast<void *>(callable);
+ return function;
}
private:
std::shared_ptr<Routine> routine;
- using CallableType = Return (*)(Arguments...);
- CallableType callable = nullptr;
+ FunctionType function = nullptr;
};
} // namespace rr
diff --git a/tests/ReactorUnitTests/ReactorUnitTests.cpp b/tests/ReactorUnitTests/ReactorUnitTests.cpp
index 1f01e7c..fb7da84 100644
--- a/tests/ReactorUnitTests/ReactorUnitTests.cpp
+++ b/tests/ReactorUnitTests/ReactorUnitTests.cpp
@@ -27,7 +27,7 @@
using namespace rr;
-std::string testName()
+static std::string testName()
{
auto info = ::testing::UnitTest::GetInstance()->current_test_info();
return std::string{ info->test_suite_name() } + "_" + info->name();
@@ -78,6 +78,66 @@
EXPECT_EQ(result, reference(&one[1], 2));
}
+// This test demonstrates the use of a 'trampoline', where a routine calls
+// a static function which then generates another routine during the execution
+// of the first routine. Also note the code generated for the second routine
+// depends on a parameter passed to the first routine.
+TEST(ReactorUnitTests, Trampoline)
+{
+ using SecondaryFunc = int(int, int);
+
+ static auto generateSecondary = [](int upDown) {
+ FunctionT<SecondaryFunc> secondary;
+ {
+ Int x = secondary.Arg<0>();
+ Int y = secondary.Arg<1>();
+ Int r;
+
+ if(upDown > 0)
+ {
+ r = x + y;
+ }
+ else if(upDown < 0)
+ {
+ r = x - y;
+ }
+ else
+ {
+ r = 0;
+ }
+
+ Return(r);
+ }
+
+ static auto routine = secondary((testName() + "_secondary").c_str());
+ return routine.getEntry();
+ };
+
+ using SecondaryGeneratorFunc = SecondaryFunc *(*)(int);
+ SecondaryGeneratorFunc secondaryGenerator = (SecondaryGeneratorFunc)generateSecondary;
+
+ using PrimaryFunc = int(int, int, int);
+ RoutineT<PrimaryFunc> routine;
+ {
+ FunctionT<PrimaryFunc> primary;
+ {
+ Int x = primary.Arg<0>();
+ Int y = primary.Arg<1>();
+ Int z = primary.Arg<2>();
+
+ Pointer<Byte> secondary = Call(secondaryGenerator, z);
+ Int r = Call<SecondaryFunc>(secondary, x, y);
+
+ Return(r);
+ }
+
+ routine = primary((testName() + "_primary").c_str());
+ }
+
+ int result = routine(100, 20, -3);
+ EXPECT_EQ(result, 80);
+}
+
TEST(ReactorUnitTests, Uninitialized)
{
FunctionT<int()> function;
diff --git a/tests/regres/testlists/vk-master-NOT_SUPPORTED.txt b/tests/regres/testlists/vk-master-NOT_SUPPORTED.txt
index ea455a3..03b994d 100644
--- a/tests/regres/testlists/vk-master-NOT_SUPPORTED.txt
+++ b/tests/regres/testlists/vk-master-NOT_SUPPORTED.txt
Binary files differ
diff --git a/tests/regres/testlists/vk-master-PASS.txt b/tests/regres/testlists/vk-master-PASS.txt
index 389838a..9ecdf52 100644
--- a/tests/regres/testlists/vk-master-PASS.txt
+++ b/tests/regres/testlists/vk-master-PASS.txt
@@ -158643,6 +158643,7 @@
dEQP-VK.renderpass2.dedicated_allocation.simple.color_unused_omit_blend_state
dEQP-VK.renderpass2.dedicated_allocation.simple.no_attachments
dEQP-VK.renderpass2.dedicated_allocation.simple.stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.misc.properties
dEQP-VK.renderpass2.multiple_subpasses_multiple_command_buffers.test
dEQP-VK.renderpass2.suballocation.attachment.1.0
dEQP-VK.renderpass2.suballocation.attachment.1.12
diff --git a/tests/regres/testlists/vk-master-UNSUPPORTED.txt b/tests/regres/testlists/vk-master-UNSUPPORTED.txt
index 59e3520..16bd728 100644
--- a/tests/regres/testlists/vk-master-UNSUPPORTED.txt
+++ b/tests/regres/testlists/vk-master-UNSUPPORTED.txt
@@ -1,3 +1,183 @@
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_17_1.samples_4.d16_unorm.depth_zero_stencil_none_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_17_1.samples_4.d16_unorm.depth_zero_stencil_none_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_17_1.samples_4.d16_unorm.depth_zero_stencil_zero_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_17_1.samples_4.d16_unorm.depth_zero_stencil_zero_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_17_1.samples_4.d32_sfloat.depth_zero_stencil_none_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_17_1.samples_4.d32_sfloat.depth_zero_stencil_none_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_17_1.samples_4.d32_sfloat.depth_zero_stencil_zero_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_17_1.samples_4.d32_sfloat.depth_zero_stencil_zero_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_17_1.samples_4.d32_sfloat_s8_uint.depth_none_stencil_zero_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_17_1.samples_4.d32_sfloat_s8_uint.depth_none_stencil_zero_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_17_1.samples_4.d32_sfloat_s8_uint.depth_none_stencil_zero_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_17_1.samples_4.d32_sfloat_s8_uint.depth_none_stencil_zero_unused_resolve_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_17_1.samples_4.d32_sfloat_s8_uint.depth_zero_stencil_none_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_17_1.samples_4.d32_sfloat_s8_uint.depth_zero_stencil_none_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_17_1.samples_4.d32_sfloat_s8_uint.depth_zero_stencil_none_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_17_1.samples_4.d32_sfloat_s8_uint.depth_zero_stencil_none_unused_resolve_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_17_1.samples_4.d32_sfloat_s8_uint.depth_zero_stencil_zero_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_17_1.samples_4.d32_sfloat_s8_uint.depth_zero_stencil_zero_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_17_1.samples_4.d32_sfloat_s8_uint.depth_zero_stencil_zero_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_17_1.samples_4.d32_sfloat_s8_uint.depth_zero_stencil_zero_unused_resolve_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_17_1.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_none_stencil_zero_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_17_1.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_none_stencil_zero_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_17_1.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_none_stencil_zero_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_17_1.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_none_stencil_zero_unused_resolve_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_17_1.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_zero_stencil_none_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_17_1.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_zero_stencil_none_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_17_1.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_zero_stencil_none_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_17_1.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_zero_stencil_none_unused_resolve_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_17_1.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_zero_stencil_zero_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_17_1.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_zero_stencil_zero_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_17_1.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_zero_stencil_zero_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_17_1.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_zero_stencil_zero_unused_resolve_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_17_1.samples_4.s8_uint.depth_none_stencil_zero_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_17_1.samples_4.s8_uint.depth_none_stencil_zero_unused_resolve_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_17_1.samples_4.s8_uint.depth_zero_stencil_zero_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_17_1.samples_4.s8_uint.depth_zero_stencil_zero_unused_resolve_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_32_32.samples_4.d16_unorm.depth_zero_stencil_none_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_32_32.samples_4.d16_unorm.depth_zero_stencil_none_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_32_32.samples_4.d16_unorm.depth_zero_stencil_zero_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_32_32.samples_4.d16_unorm.depth_zero_stencil_zero_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_32_32.samples_4.d32_sfloat.depth_zero_stencil_none_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_32_32.samples_4.d32_sfloat.depth_zero_stencil_none_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_32_32.samples_4.d32_sfloat.depth_zero_stencil_zero_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_32_32.samples_4.d32_sfloat.depth_zero_stencil_zero_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_32_32.samples_4.d32_sfloat_s8_uint.depth_none_stencil_zero_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_32_32.samples_4.d32_sfloat_s8_uint.depth_none_stencil_zero_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_32_32.samples_4.d32_sfloat_s8_uint.depth_none_stencil_zero_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_32_32.samples_4.d32_sfloat_s8_uint.depth_none_stencil_zero_unused_resolve_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_32_32.samples_4.d32_sfloat_s8_uint.depth_zero_stencil_none_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_32_32.samples_4.d32_sfloat_s8_uint.depth_zero_stencil_none_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_32_32.samples_4.d32_sfloat_s8_uint.depth_zero_stencil_none_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_32_32.samples_4.d32_sfloat_s8_uint.depth_zero_stencil_none_unused_resolve_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_32_32.samples_4.d32_sfloat_s8_uint.depth_zero_stencil_zero_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_32_32.samples_4.d32_sfloat_s8_uint.depth_zero_stencil_zero_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_32_32.samples_4.d32_sfloat_s8_uint.depth_zero_stencil_zero_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_32_32.samples_4.d32_sfloat_s8_uint.depth_zero_stencil_zero_unused_resolve_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_32_32.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_none_stencil_zero_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_32_32.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_none_stencil_zero_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_32_32.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_none_stencil_zero_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_32_32.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_none_stencil_zero_unused_resolve_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_32_32.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_zero_stencil_none_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_32_32.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_zero_stencil_none_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_32_32.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_zero_stencil_none_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_32_32.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_zero_stencil_none_unused_resolve_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_32_32.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_zero_stencil_zero_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_32_32.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_zero_stencil_zero_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_32_32.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_zero_stencil_zero_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_32_32.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_zero_stencil_zero_unused_resolve_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_32_32.samples_4.s8_uint.depth_none_stencil_zero_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_32_32.samples_4.s8_uint.depth_none_stencil_zero_unused_resolve_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_32_32.samples_4.s8_uint.depth_zero_stencil_zero_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_32_32.samples_4.s8_uint.depth_zero_stencil_zero_unused_resolve_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_49_13.samples_4.d16_unorm.depth_zero_stencil_none_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_49_13.samples_4.d16_unorm.depth_zero_stencil_none_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_49_13.samples_4.d16_unorm.depth_zero_stencil_zero_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_49_13.samples_4.d16_unorm.depth_zero_stencil_zero_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_49_13.samples_4.d32_sfloat.depth_zero_stencil_none_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_49_13.samples_4.d32_sfloat.depth_zero_stencil_none_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_49_13.samples_4.d32_sfloat.depth_zero_stencil_zero_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_49_13.samples_4.d32_sfloat.depth_zero_stencil_zero_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_49_13.samples_4.d32_sfloat_s8_uint.depth_none_stencil_zero_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_49_13.samples_4.d32_sfloat_s8_uint.depth_none_stencil_zero_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_49_13.samples_4.d32_sfloat_s8_uint.depth_none_stencil_zero_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_49_13.samples_4.d32_sfloat_s8_uint.depth_none_stencil_zero_unused_resolve_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_49_13.samples_4.d32_sfloat_s8_uint.depth_zero_stencil_none_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_49_13.samples_4.d32_sfloat_s8_uint.depth_zero_stencil_none_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_49_13.samples_4.d32_sfloat_s8_uint.depth_zero_stencil_none_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_49_13.samples_4.d32_sfloat_s8_uint.depth_zero_stencil_none_unused_resolve_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_49_13.samples_4.d32_sfloat_s8_uint.depth_zero_stencil_zero_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_49_13.samples_4.d32_sfloat_s8_uint.depth_zero_stencil_zero_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_49_13.samples_4.d32_sfloat_s8_uint.depth_zero_stencil_zero_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_49_13.samples_4.d32_sfloat_s8_uint.depth_zero_stencil_zero_unused_resolve_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_49_13.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_none_stencil_zero_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_49_13.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_none_stencil_zero_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_49_13.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_none_stencil_zero_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_49_13.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_none_stencil_zero_unused_resolve_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_49_13.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_zero_stencil_none_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_49_13.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_zero_stencil_none_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_49_13.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_zero_stencil_none_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_49_13.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_zero_stencil_none_unused_resolve_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_49_13.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_zero_stencil_zero_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_49_13.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_zero_stencil_zero_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_49_13.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_zero_stencil_zero_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_49_13.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_zero_stencil_zero_unused_resolve_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_49_13.samples_4.s8_uint.depth_none_stencil_zero_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_49_13.samples_4.s8_uint.depth_none_stencil_zero_unused_resolve_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_49_13.samples_4.s8_uint.depth_zero_stencil_zero_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_49_13.samples_4.s8_uint.depth_zero_stencil_zero_unused_resolve_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_5_1.samples_4.d16_unorm.depth_zero_stencil_none_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_5_1.samples_4.d16_unorm.depth_zero_stencil_none_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_5_1.samples_4.d16_unorm.depth_zero_stencil_zero_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_5_1.samples_4.d16_unorm.depth_zero_stencil_zero_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_5_1.samples_4.d32_sfloat.depth_zero_stencil_none_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_5_1.samples_4.d32_sfloat.depth_zero_stencil_none_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_5_1.samples_4.d32_sfloat.depth_zero_stencil_zero_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_5_1.samples_4.d32_sfloat.depth_zero_stencil_zero_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_5_1.samples_4.d32_sfloat_s8_uint.depth_none_stencil_zero_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_5_1.samples_4.d32_sfloat_s8_uint.depth_none_stencil_zero_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_5_1.samples_4.d32_sfloat_s8_uint.depth_none_stencil_zero_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_5_1.samples_4.d32_sfloat_s8_uint.depth_none_stencil_zero_unused_resolve_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_5_1.samples_4.d32_sfloat_s8_uint.depth_zero_stencil_none_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_5_1.samples_4.d32_sfloat_s8_uint.depth_zero_stencil_none_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_5_1.samples_4.d32_sfloat_s8_uint.depth_zero_stencil_none_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_5_1.samples_4.d32_sfloat_s8_uint.depth_zero_stencil_none_unused_resolve_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_5_1.samples_4.d32_sfloat_s8_uint.depth_zero_stencil_zero_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_5_1.samples_4.d32_sfloat_s8_uint.depth_zero_stencil_zero_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_5_1.samples_4.d32_sfloat_s8_uint.depth_zero_stencil_zero_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_5_1.samples_4.d32_sfloat_s8_uint.depth_zero_stencil_zero_unused_resolve_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_5_1.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_none_stencil_zero_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_5_1.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_none_stencil_zero_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_5_1.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_none_stencil_zero_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_5_1.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_none_stencil_zero_unused_resolve_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_5_1.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_zero_stencil_none_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_5_1.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_zero_stencil_none_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_5_1.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_zero_stencil_none_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_5_1.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_zero_stencil_none_unused_resolve_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_5_1.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_zero_stencil_zero_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_5_1.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_zero_stencil_zero_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_5_1.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_zero_stencil_zero_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_5_1.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_zero_stencil_zero_unused_resolve_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_5_1.samples_4.s8_uint.depth_none_stencil_zero_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_5_1.samples_4.s8_uint.depth_none_stencil_zero_unused_resolve_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_5_1.samples_4.s8_uint.depth_zero_stencil_zero_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_5_1.samples_4.s8_uint.depth_zero_stencil_zero_unused_resolve_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_8_32.samples_4.d16_unorm.depth_zero_stencil_none_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_8_32.samples_4.d16_unorm.depth_zero_stencil_none_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_8_32.samples_4.d16_unorm.depth_zero_stencil_zero_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_8_32.samples_4.d16_unorm.depth_zero_stencil_zero_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_8_32.samples_4.d32_sfloat.depth_zero_stencil_none_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_8_32.samples_4.d32_sfloat.depth_zero_stencil_none_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_8_32.samples_4.d32_sfloat.depth_zero_stencil_zero_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_8_32.samples_4.d32_sfloat.depth_zero_stencil_zero_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_8_32.samples_4.d32_sfloat_s8_uint.depth_none_stencil_zero_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_8_32.samples_4.d32_sfloat_s8_uint.depth_none_stencil_zero_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_8_32.samples_4.d32_sfloat_s8_uint.depth_none_stencil_zero_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_8_32.samples_4.d32_sfloat_s8_uint.depth_none_stencil_zero_unused_resolve_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_8_32.samples_4.d32_sfloat_s8_uint.depth_zero_stencil_none_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_8_32.samples_4.d32_sfloat_s8_uint.depth_zero_stencil_none_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_8_32.samples_4.d32_sfloat_s8_uint.depth_zero_stencil_none_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_8_32.samples_4.d32_sfloat_s8_uint.depth_zero_stencil_none_unused_resolve_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_8_32.samples_4.d32_sfloat_s8_uint.depth_zero_stencil_zero_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_8_32.samples_4.d32_sfloat_s8_uint.depth_zero_stencil_zero_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_8_32.samples_4.d32_sfloat_s8_uint.depth_zero_stencil_zero_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_8_32.samples_4.d32_sfloat_s8_uint.depth_zero_stencil_zero_unused_resolve_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_8_32.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_none_stencil_zero_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_8_32.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_none_stencil_zero_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_8_32.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_none_stencil_zero_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_8_32.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_none_stencil_zero_unused_resolve_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_8_32.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_zero_stencil_none_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_8_32.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_zero_stencil_none_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_8_32.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_zero_stencil_none_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_8_32.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_zero_stencil_none_unused_resolve_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_8_32.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_zero_stencil_zero_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_8_32.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_zero_stencil_zero_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_8_32.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_zero_stencil_zero_unused_resolve_testing_depth
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_8_32.samples_4.d32_sfloat_s8_uint_separate_layouts.depth_zero_stencil_zero_unused_resolve_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_8_32.samples_4.s8_uint.depth_none_stencil_zero_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_8_32.samples_4.s8_uint.depth_none_stencil_zero_unused_resolve_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_8_32.samples_4.s8_uint.depth_zero_stencil_zero_testing_stencil
+dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_8_32.samples_4.s8_uint.depth_zero_stencil_zero_unused_resolve_testing_stencil
dEQP-VK.robustness.image_robustness.bind.notemplate.r32i.dontunroll.nonvolatile.sampled_image.no_fmt_qual.img.samples_1.1d.comp
dEQP-VK.robustness.image_robustness.bind.notemplate.r32i.dontunroll.nonvolatile.sampled_image.no_fmt_qual.img.samples_1.1d_array.comp
dEQP-VK.robustness.image_robustness.bind.notemplate.r32i.dontunroll.nonvolatile.sampled_image.no_fmt_qual.img.samples_1.2d.comp