diff --git a/src/video_core/renderer_vulkan/vk_instance.cpp b/src/video_core/renderer_vulkan/vk_instance.cpp index d86cc0f67..e3c90aff4 100644 --- a/src/video_core/renderer_vulkan/vk_instance.cpp +++ b/src/video_core/renderer_vulkan/vk_instance.cpp @@ -449,6 +449,8 @@ bool Instance::CreateDevice() { add_extension(VK_KHR_SWAPCHAIN_EXTENSION_NAME); image_format_list = add_extension(VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME); + create_renderpass2 = add_extension(VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME); + depth_stencil_resolve = add_extension(VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME); shader_stencil_export = add_extension(VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME); external_memory_host = add_extension(VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME); tooling_info = add_extension(VK_EXT_TOOLING_INFO_EXTENSION_NAME); @@ -518,9 +520,11 @@ bool Instance::CreateDevice() { .features{ .robustBufferAccess = features.robustBufferAccess, .geometryShader = features.geometryShader, + .sampleRateShading = features.sampleRateShading, .logicOp = features.logicOp, .samplerAnisotropy = features.samplerAnisotropy, .fragmentStoresAndAtomics = features.fragmentStoresAndAtomics, + .shaderStorageImageMultisample = features.shaderStorageImageMultisample, .shaderClipDistance = features.shaderClipDistance, }, }, diff --git a/src/video_core/renderer_vulkan/vk_instance.h b/src/video_core/renderer_vulkan/vk_instance.h index f6fbc28fb..e7420278c 100644 --- a/src/video_core/renderer_vulkan/vk_instance.h +++ b/src/video_core/renderer_vulkan/vk_instance.h @@ -251,6 +251,11 @@ public: return triangle_fan_supported; } + // Returns true when sampleRateShading, VK_KHR_create_renderpass2, VK_KHR_depth_stencil_resolve + bool IsMultiSampleSupported() const { + return features.sampleRateShading && create_renderpass2 && depth_stencil_resolve; + } + /// Returns true if dynamic indices can be used inside shaders. bool IsImageArrayDynamicIndexSupported() const { return features.shaderSampledImageArrayDynamicIndexing; @@ -330,6 +335,8 @@ protected: bool index_type_uint8{}; bool fragment_shader_interlock{}; bool image_format_list{}; + bool create_renderpass2{}; + bool depth_stencil_resolve{}; bool pipeline_creation_cache_control{}; bool fragment_shader_barycentric{}; bool shader_stencil_export{};