From c6763ba195f833837f214d91f641630fd8cb26e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Mon, 16 Nov 2020 13:40:48 +0100 Subject: [PATCH] Vk: XFAIL image memory requirements test on a SwiftShader. For some reason it wants me to allocate 16 bytes more. Why can't that be stored somewhere else, I wonder? Hm, and for this I implemented VK_KHR_driver_properties only to discover that the info is not queryable if we run the tests with KHR_get_physical_device_properties2 disabled. Sigh. --- src/Magnum/Vk/Test/ImageVkTest.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/Magnum/Vk/Test/ImageVkTest.cpp b/src/Magnum/Vk/Test/ImageVkTest.cpp index db840a707..57763a186 100644 --- a/src/Magnum/Vk/Test/ImageVkTest.cpp +++ b/src/Magnum/Vk/Test/ImageVkTest.cpp @@ -23,6 +23,7 @@ DEALINGS IN THE SOFTWARE. */ +#include #include #include "Magnum/Vk/DeviceProperties.h" @@ -213,7 +214,15 @@ void ImageVkTest::memoryRequirements() { Image image{device(), info, NoAllocate}; MemoryRequirements requirements = image.memoryRequirements(); - CORRADE_COMPARE(requirements.size(), 128*64*4); + { + /* Can't use device().properties().driver() == + DeviceDriver::GoogleSwiftShader because that information is not + available when we run with KHR_get_physical_device_properties2 + disabled :/ */ + CORRADE_EXPECT_FAIL_IF(device().properties().name().hasPrefix("SwiftShader") && requirements.size() == 128*64*4 + 16, + "SwiftShader reports 16 bytes (two pointers?) more than expected for a linear tiling."); + CORRADE_COMPARE(requirements.size(), 128*64*4); + } } void ImageVkTest::bindMemory() {