diff --git a/src/video_core/renderer_vulkan/vk_instance.cpp b/src/video_core/renderer_vulkan/vk_instance.cpp index 430cb73d..7fc981ee 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 793f2f3e..582de383 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);