diff options
Diffstat (limited to 'tests/auto/gui/qvulkan')
-rw-r--r-- | tests/auto/gui/qvulkan/CMakeLists.txt | 11 | ||||
-rw-r--r-- | tests/auto/gui/qvulkan/tst_qvulkan.cpp | 30 |
2 files changed, 31 insertions, 10 deletions
diff --git a/tests/auto/gui/qvulkan/CMakeLists.txt b/tests/auto/gui/qvulkan/CMakeLists.txt index 7cca165ed2..d4e2dd6f87 100644 --- a/tests/auto/gui/qvulkan/CMakeLists.txt +++ b/tests/auto/gui/qvulkan/CMakeLists.txt @@ -1,13 +1,20 @@ -# Generated from qvulkan.pro. +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause ##################################################################### ## tst_qvulkan Test: ##################################################################### +if(NOT QT_BUILD_STANDALONE_TESTS AND NOT QT_BUILDING_QT) + cmake_minimum_required(VERSION 3.16) + project(tst_qvulkan LANGUAGES CXX) + find_package(Qt6BuildInternals REQUIRED COMPONENTS STANDALONE_TEST) +endif() + qt_internal_add_test(tst_qvulkan SOURCES tst_qvulkan.cpp - PUBLIC_LIBRARIES + LIBRARIES Qt::CorePrivate Qt::Gui Qt::GuiPrivate diff --git a/tests/auto/gui/qvulkan/tst_qvulkan.cpp b/tests/auto/gui/qvulkan/tst_qvulkan.cpp index f01777a1e9..c8f5c27481 100644 --- a/tests/auto/gui/qvulkan/tst_qvulkan.cpp +++ b/tests/auto/gui/qvulkan/tst_qvulkan.cpp @@ -1,5 +1,5 @@ // Copyright (C) 2017 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only #include <QtGui/QVulkanInstance> #include <QtGui/QVulkanFunctions> @@ -88,6 +88,10 @@ void tst_QVulkan::vulkanCheckSupported() void tst_QVulkan::vulkan11() { +#ifdef Q_OS_ANDROID + if (QNativeInterface::QAndroidApplication::sdkVersion() >= 31) + QSKIP("Fails on Android 12 (QTBUG-105739)"); +#endif #if VK_VERSION_1_1 QVulkanInstance inst; if (inst.supportedApiVersion() < QVersionNumber(1, 1)) @@ -137,15 +141,17 @@ void tst_QVulkan::vulkan11() QByteArray deviceUuid = QByteArray::fromRawData((const char *) deviceIdProps.deviceUUID, VK_UUID_SIZE).toHex(); QByteArray driverUuid = QByteArray::fromRawData((const char *) deviceIdProps.driverUUID, VK_UUID_SIZE).toHex(); qDebug() << "deviceUUID" << deviceUuid << "driverUUID" << driverUuid; + const bool deviceUuidZero = std::find_if(deviceUuid.cbegin(), deviceUuid.cend(), [](char c) -> bool { return c; }) == deviceUuid.cend(); + const bool driverUuidZero = std::find_if(driverUuid.cbegin(), driverUuid.cend(), [](char c) -> bool { return c; }) == driverUuid.cend(); // deviceUUID cannot be all zero as per spec - bool seenNonZero = false; - for (int i = 0; i < VK_UUID_SIZE; ++i) { - if (deviceIdProps.deviceUUID[i]) { - seenNonZero = true; - break; - } + if (!driverUuidZero) { + // ...but then there are implementations such as some + // versions of Mesa lavapipe, that returns all zeroes + // for both uuids. skip the check if the driver uuid + // was zero too. + // https://gitlab.freedesktop.org/mesa/mesa/-/issues/5875 + QVERIFY(!deviceUuidZero); } - QVERIFY(seenNonZero); } else { qDebug("Physical device is not Vulkan 1.1 capable"); } @@ -160,6 +166,10 @@ void tst_QVulkan::vulkan11() void tst_QVulkan::vulkanPlainWindow() { +#ifdef Q_OS_ANDROID + QSKIP("Fails on Android 7 emulator (QTBUG-108328)"); +#endif + QVulkanInstance inst; if (!inst.create()) QSKIP("Vulkan init failed; skip"); @@ -447,6 +457,10 @@ void tst_QVulkan::vulkanWindowRenderer() void tst_QVulkan::vulkanWindowGrab() { +#ifdef Q_OS_ANDROID + if (QNativeInterface::QAndroidApplication::sdkVersion() >= 31) + QSKIP("Fails on Android 12 (QTBUG-105739)"); +#endif QVulkanInstance inst; inst.setLayers(QByteArrayList() << "VK_LAYER_KHRONOS_validation"); if (!inst.create()) |