Browse Source

Vk: VK_KHR_create_renderpass depends on KHR_maintenance2 and multiview.

The validation layer complained. So enable these two implicitly as well
if we're on 1.0.

And since those are now disabled in certain test runs to test related
code paths, DeviceVkTest needs to be updated to skip affected tests if
this happens.
pull/504/head
Vladimír Vondruš 5 years ago
parent
commit
1e7fafdd75
  1. 2
      package/archlinux/PKGBUILD
  2. 2
      package/archlinux/PKGBUILD-coverage
  3. 2
      package/archlinux/PKGBUILD-release
  4. 2
      package/ci/unix-desktop-vulkan.sh
  5. 11
      src/Magnum/Vk/Device.cpp
  6. 3
      src/Magnum/Vk/Test/DeviceVkTest.cpp

2
package/archlinux/PKGBUILD

@ -78,7 +78,7 @@ check() {
MAGNUM_DEVICE=cpu CORRADE_TEST_SKIP_BENCHMARKS=ON CORRADE_TEST_COLOR=ON ctest --output-on-failure -j5 -R VkTest
for device in "" cpu; do
MAGNUM_DEVICE=$device MAGNUM_VULKAN_VERSION=1.0 CORRADE_TEST_SKIP_BENCHMARKS=ON CORRADE_TEST_COLOR=ON ctest --output-on-failure -j5 -R VkTest
MAGNUM_DEVICE=$device MAGNUM_DISABLE_EXTENSIONS="VK_KHR_get_physical_device_properties2 VK_KHR_get_memory_requirements2 VK_KHR_bind_memory2 VK_KHR_create_renderpass2 VK_KHR_copy_commands2 VK_KHR_maintenance1" MAGNUM_VULKAN_VERSION=1.0 CORRADE_TEST_SKIP_BENCHMARKS=ON CORRADE_TEST_COLOR=ON ctest --output-on-failure -j5 -R VkTest
MAGNUM_DEVICE=$device MAGNUM_DISABLE_EXTENSIONS="VK_KHR_get_physical_device_properties2 VK_KHR_get_memory_requirements2 VK_KHR_bind_memory2 VK_KHR_create_renderpass2 VK_KHR_copy_commands2 VK_KHR_maintenance1 VK_KHR_multiview VK_KHR_maintenance2" MAGNUM_VULKAN_VERSION=1.0 CORRADE_TEST_SKIP_BENCHMARKS=ON CORRADE_TEST_COLOR=ON ctest --output-on-failure -j5 -R VkTest
done
}

2
package/archlinux/PKGBUILD-coverage

@ -79,7 +79,7 @@ check() {
MAGNUM_DEVICE=cpu CORRADE_TEST_SKIP_BENCHMARKS=ON CORRADE_TEST_COLOR=ON ctest --output-on-failure -j5 -R VkTest || true
for device in "" cpu; do
MAGNUM_DEVICE=$device MAGNUM_VULKAN_VERSION=1.0 CORRADE_TEST_SKIP_BENCHMARKS=ON CORRADE_TEST_COLOR=ON ctest --output-on-failure -j5 -R VkTest || true
MAGNUM_DEVICE=$device MAGNUM_DISABLE_EXTENSIONS="VK_KHR_get_physical_device_properties2 VK_KHR_get_memory_requirements2 VK_KHR_bind_memory2 VK_KHR_create_renderpass2 VK_KHR_copy_commands2 VK_KHR_maintenance1" MAGNUM_VULKAN_VERSION=1.0 CORRADE_TEST_SKIP_BENCHMARKS=ON CORRADE_TEST_COLOR=ON ctest --output-on-failure -j5 -R VkTest || true
MAGNUM_DEVICE=$device MAGNUM_DISABLE_EXTENSIONS="VK_KHR_get_physical_device_properties2 VK_KHR_get_memory_requirements2 VK_KHR_bind_memory2 VK_KHR_create_renderpass2 VK_KHR_copy_commands2 VK_KHR_maintenance1 VK_KHR_multiview VK_KHR_maintenance2" MAGNUM_VULKAN_VERSION=1.0 CORRADE_TEST_SKIP_BENCHMARKS=ON CORRADE_TEST_COLOR=ON ctest --output-on-failure -j5 -R VkTest || true
done
./Debug/bin/magnum-al-info > /dev/null

2
package/archlinux/PKGBUILD-release

@ -116,7 +116,7 @@ check() {
MAGNUM_DEVICE=cpu CORRADE_TEST_SKIP_BENCHMARKS=ON CORRADE_TEST_COLOR=ON ctest --output-on-failure -j5 -R VkTest
for device in "" cpu; do
MAGNUM_DEVICE=$device MAGNUM_VULKAN_VERSION=1.0 CORRADE_TEST_SKIP_BENCHMARKS=ON CORRADE_TEST_COLOR=ON ctest --output-on-failure -j5 -R VkTest
MAGNUM_DEVICE=$device MAGNUM_DISABLE_EXTENSIONS="VK_KHR_get_physical_device_properties2 VK_KHR_get_memory_requirements2 VK_KHR_bind_memory2 VK_KHR_create_renderpass2 VK_KHR_copy_commands2 VK_KHR_maintenance1" MAGNUM_VULKAN_VERSION=1.0 CORRADE_TEST_SKIP_BENCHMARKS=ON CORRADE_TEST_COLOR=ON ctest --output-on-failure -j5 -R VkTest
MAGNUM_DEVICE=$device MAGNUM_DISABLE_EXTENSIONS="VK_KHR_get_physical_device_properties2 VK_KHR_get_memory_requirements2 VK_KHR_bind_memory2 VK_KHR_create_renderpass2 VK_KHR_copy_commands2 VK_KHR_maintenance1 VK_KHR_multiview VK_KHR_maintenance2" MAGNUM_VULKAN_VERSION=1.0 CORRADE_TEST_SKIP_BENCHMARKS=ON CORRADE_TEST_COLOR=ON ctest --output-on-failure -j5 -R VkTest
done
done
}

2
package/ci/unix-desktop-vulkan.sh

@ -77,7 +77,7 @@ export CORRADE_TEST_COLOR=ON
# Keep in sync with PKGBUILD, PKGBUILD-coverage and PKGBUILD-release
ctest -V
MAGNUM_VULKAN_VERSION=1.0 CORRADE_TEST_SKIP_BENCHMARKS=ON ctest -V -R VkTest
MAGNUM_DISABLE_EXTENSIONS="VK_KHR_get_physical_device_properties2 VK_KHR_get_memory_requirements2 VK_KHR_bind_memory2 VK_KHR_create_renderpass2 VK_KHR_copy_commands2 VK_KHR_maintenance1" MAGNUM_VULKAN_VERSION=1.0 CORRADE_TEST_SKIP_BENCHMARKS=ON ctest -V -R VkTest
MAGNUM_DISABLE_EXTENSIONS="VK_KHR_get_physical_device_properties2 VK_KHR_get_memory_requirements2 VK_KHR_bind_memory2 VK_KHR_create_renderpass2 VK_KHR_copy_commands2 VK_KHR_maintenance1 VK_KHR_multiview VK_KHR_maintenance2" MAGNUM_VULKAN_VERSION=1.0 CORRADE_TEST_SKIP_BENCHMARKS=ON ctest -V -R VkTest
# Test install, after running the tests as for them it shouldn't be needed
ninja install

11
src/Magnum/Vk/Device.cpp

@ -185,6 +185,14 @@ DeviceCreateInfo::DeviceCreateInfo(DeviceProperties& deviceProperties, const Ext
if(extensionProperties->isSupported<Extensions::KHR::maintenance1>())
addEnabledExtensions<Extensions::KHR::maintenance1>();
/* Dependencies of VK_KHR_create_renderpass2, which is enabled
below. If an extension is supported, all its dependencies should
be too, so not checking for their presence again. */
if(extensionProperties->isSupported<Extensions::KHR::create_renderpass2>()) {
addEnabledExtensions<Extensions::KHR::multiview>();
addEnabledExtensions<Extensions::KHR::maintenance2>();
}
/* Used for the extra extension points in MemoryAllocationInfo */
if(extensionProperties->isSupported<Extensions::KHR::get_memory_requirements2>())
addEnabledExtensions<Extensions::KHR::get_memory_requirements2>();
@ -197,7 +205,8 @@ DeviceCreateInfo::DeviceCreateInfo(DeviceProperties& deviceProperties, const Ext
/* Only if we don't have Vulkan 1.2, on which these are core */
if(_state->version < Version::Vk12) {
/* Used for the extra extension points in RenderPassCreateInfo and
related structs */
related structs. Depends on VK_KHR_multiview and
VK_KHR_maintenance2, which were enabled above. */
if(extensionProperties->isSupported<Extensions::KHR::create_renderpass2>())
addEnabledExtensions<Extensions::KHR::create_renderpass2>();
}

3
src/Magnum/Vk/Test/DeviceVkTest.cpp

@ -277,6 +277,9 @@ void DeviceVkTest::createInfoExtensions() {
}
void DeviceVkTest::createInfoExtensionsCopiedStrings() {
if(std::getenv("MAGNUM_DISABLE_EXTENSIONS"))
CORRADE_SKIP("Can't test with the MAGNUM_DISABLE_EXTENSIONS environment variable set");
Containers::StringView globalButNotNullTerminated = "VK_KHR_maintenance25"_s.except(1);
Containers::String localButNullTerminated = Extensions::KHR::draw_indirect_count::string();

Loading…
Cancel
Save