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
|
\note This function can only be called before create() and has no effect if
|
||||||
called afterwards.
|
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)
|
void QVulkanInstance::setApiVersion(const QVersionNumber &vulkanVersion)
|
||||||
{
|
{
|
||||||
|
@ -153,7 +153,14 @@ void tst_QVulkan::vulkanVersionRequest()
|
|||||||
inst.destroy();
|
inst.destroy();
|
||||||
|
|
||||||
inst.setApiVersion(QVersionNumber(10, 0, 0));
|
inst.setApiVersion(QVersionNumber(10, 0, 0));
|
||||||
QVERIFY(!inst.create());
|
|
||||||
|
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);
|
QCOMPARE(inst.errorCode(), VK_ERROR_INCOMPATIBLE_DRIVER);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user