Relax tst_qvulkan::vulkanVersionRequest to make it compatible with 1.1
The Vulkan spec changed the behavior for VkApplicationInfo::apiVersion in 1.1, conveniently breaking compatibility with all existing 1.0 logic. We can no longer assume that the 1.0 behavior, which was failing instance creation with VK_ERROR_INCOMPATIBLE_DRIVER for an unsupported version, is always in place. So do not rely on this in the test, and add a reminder in QVulkanInstance docs as well. Fixes: QTBUG-85040 Change-Id: I8f5c7a7830877b72d106c444aebfaea191083ee0 Reviewed-by: Christian Strømme <christian.stromme@qt.io>
This commit is contained in:
parent
6a8eb26bba
commit
ed231455cc
@ -531,6 +531,13 @@ void QVulkanInstance::setExtensions(const QByteArrayList &extensions)
|
||||
|
||||
\note This function can only be called before create() and has no effect if
|
||||
called afterwards.
|
||||
|
||||
\note Be aware that Vulkan 1.1 changes the behavior with regards to the
|
||||
Vulkan API version field. In Vulkan 1.0 specifying an unsupported \a
|
||||
vulkanVersion led to failing create() with \c VK_ERROR_INCOMPATIBLE_DRIVER,
|
||||
as was mandated by the specification. Starting with Vulkan 1.1, the
|
||||
specification disallows this, the driver must accept any version without
|
||||
failing the instance creation.
|
||||
*/
|
||||
void QVulkanInstance::setApiVersion(const QVersionNumber &vulkanVersion)
|
||||
{
|
||||
|
@ -153,8 +153,15 @@ void tst_QVulkan::vulkanVersionRequest()
|
||||
inst.destroy();
|
||||
|
||||
inst.setApiVersion(QVersionNumber(10, 0, 0));
|
||||
QVERIFY(!inst.create());
|
||||
QCOMPARE(inst.errorCode(), VK_ERROR_INCOMPATIBLE_DRIVER);
|
||||
|
||||
bool result = inst.create();
|
||||
|
||||
// Starting with Vulkan 1.1 the spec does not allow the implementation to
|
||||
// fail the instance creation. So check for the 1.0 behavior only when
|
||||
// create() failed, skip this verification with 1.1+ (where create() will
|
||||
// succeed for any bogus api version).
|
||||
if (!result)
|
||||
QCOMPARE(inst.errorCode(), VK_ERROR_INCOMPATIBLE_DRIVER);
|
||||
}
|
||||
|
||||
static void waitForUnexposed(QWindow *w)
|
||||
|
Loading…
x
Reference in New Issue
Block a user