From 35d629a7302c260d5711af8bfa0db24739e360f4 Mon Sep 17 00:00:00 2001 From: squidbus <175574877+squidbus@users.noreply.github.com> Date: Fri, 12 Jul 2024 00:20:23 -0700 Subject: [PATCH] Downgrade Vulkan requirement to 1.2 with extensions. --- src/video_core/renderer_vulkan/vk_instance.cpp | 15 ++++++++++----- src/video_core/renderer_vulkan/vk_platform.h | 2 +- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/video_core/renderer_vulkan/vk_instance.cpp b/src/video_core/renderer_vulkan/vk_instance.cpp index 430cb73df..7fc981ee4 100644 --- a/src/video_core/renderer_vulkan/vk_instance.cpp +++ b/src/video_core/renderer_vulkan/vk_instance.cpp @@ -180,6 +180,8 @@ bool Instance::CreateDevice() { color_write_en = add_extension(VK_EXT_COLOR_WRITE_ENABLE_EXTENSION_NAME); color_write_en &= add_extension(VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME); const auto calibrated_timestamps = add_extension(VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME); + add_extension(VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME); + add_extension(VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME); const auto family_properties = physical_device.getQueueFamilyProperties(); if (family_properties.empty()) { @@ -210,7 +212,6 @@ bool Instance::CreateDevice() { }; const auto vk12_features = feature_chain.get(); - const auto vk13_features = feature_chain.get(); vk::StructureChain device_chain = { vk::DeviceCreateInfo{ .queueCreateInfoCount = 1u, @@ -244,10 +245,14 @@ bool Instance::CreateDevice() { .hostQueryReset = vk12_features.hostQueryReset, .timelineSemaphore = vk12_features.timelineSemaphore, }, - vk::PhysicalDeviceVulkan13Features{ - .shaderDemoteToHelperInvocation = vk13_features.shaderDemoteToHelperInvocation, - .dynamicRendering = vk13_features.dynamicRendering, - .maintenance4 = vk13_features.maintenance4, + vk::PhysicalDeviceMaintenance4FeaturesKHR{ + .maintenance4 = true, + }, + vk::PhysicalDeviceDynamicRenderingFeaturesKHR{ + .dynamicRendering = true, + }, + vk::PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT{ + .shaderDemoteToHelperInvocation = true, }, vk::PhysicalDeviceCustomBorderColorFeaturesEXT{ .customBorderColors = true, diff --git a/src/video_core/renderer_vulkan/vk_platform.h b/src/video_core/renderer_vulkan/vk_platform.h index 793f2f3e6..582de3831 100644 --- a/src/video_core/renderer_vulkan/vk_platform.h +++ b/src/video_core/renderer_vulkan/vk_platform.h @@ -17,7 +17,7 @@ class WindowSDL; namespace Vulkan { -constexpr u32 TargetVulkanApiVersion = VK_API_VERSION_1_3; +constexpr u32 TargetVulkanApiVersion = VK_API_VERSION_1_2; vk::SurfaceKHR CreateSurface(vk::Instance instance, const Frontend::WindowSDL& emu_window);