diff options
| author | 2021-06-23 03:32:41 -0300 | |
|---|---|---|
| committer | 2021-07-22 21:51:39 -0400 | |
| commit | 4f052a1f393d45843eabc237e21757be15f20062 (patch) | |
| tree | 7624b3e6f6f77f2301a575918a680b887d905ff4 /src/video_core/vulkan_common | |
| parent | shader: Only verify shader when graphics debugging is enabled (diff) | |
| download | yuzu-4f052a1f393d45843eabc237e21757be15f20062.tar.gz yuzu-4f052a1f393d45843eabc237e21757be15f20062.tar.xz yuzu-4f052a1f393d45843eabc237e21757be15f20062.zip | |
vk_graphics_pipeline: Implement conservative rendering
Diffstat (limited to 'src/video_core/vulkan_common')
| -rw-r--r-- | src/video_core/vulkan_common/vulkan_device.cpp | 6 | ||||
| -rw-r--r-- | src/video_core/vulkan_common/vulkan_device.h | 6 |
2 files changed, 12 insertions, 0 deletions
diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp index 9d918de8d..7b184d2f8 100644 --- a/src/video_core/vulkan_common/vulkan_device.cpp +++ b/src/video_core/vulkan_common/vulkan_device.cpp | |||
| @@ -412,6 +412,10 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR | |||
| 412 | LOG_INFO(Render_Vulkan, "Device doesn't support extended dynamic state"); | 412 | LOG_INFO(Render_Vulkan, "Device doesn't support extended dynamic state"); |
| 413 | } | 413 | } |
| 414 | 414 | ||
| 415 | if (!ext_conservative_rasterization) { | ||
| 416 | LOG_INFO(Render_Vulkan, "Device doesn't support conservative rasterization"); | ||
| 417 | } | ||
| 418 | |||
| 415 | VkPhysicalDeviceProvokingVertexFeaturesEXT provoking_vertex; | 419 | VkPhysicalDeviceProvokingVertexFeaturesEXT provoking_vertex; |
| 416 | if (ext_provoking_vertex) { | 420 | if (ext_provoking_vertex) { |
| 417 | provoking_vertex = { | 421 | provoking_vertex = { |
| @@ -776,6 +780,8 @@ std::vector<const char*> Device::LoadExtensions(bool requires_surface) { | |||
| 776 | true); | 780 | true); |
| 777 | test(ext_tooling_info, VK_EXT_TOOLING_INFO_EXTENSION_NAME, true); | 781 | test(ext_tooling_info, VK_EXT_TOOLING_INFO_EXTENSION_NAME, true); |
| 778 | test(ext_shader_stencil_export, VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME, true); | 782 | test(ext_shader_stencil_export, VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME, true); |
| 783 | test(ext_conservative_rasterization, VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME, | ||
| 784 | true); | ||
| 779 | test(has_ext_transform_feedback, VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME, false); | 785 | test(has_ext_transform_feedback, VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME, false); |
| 780 | test(has_ext_custom_border_color, VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME, false); | 786 | test(has_ext_custom_border_color, VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME, false); |
| 781 | test(has_ext_extended_dynamic_state, VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME, false); | 787 | test(has_ext_extended_dynamic_state, VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME, false); |
diff --git a/src/video_core/vulkan_common/vulkan_device.h b/src/video_core/vulkan_common/vulkan_device.h index 40d00a52f..a9c0a0e4d 100644 --- a/src/video_core/vulkan_common/vulkan_device.h +++ b/src/video_core/vulkan_common/vulkan_device.h | |||
| @@ -264,6 +264,11 @@ public: | |||
| 264 | return ext_shader_stencil_export; | 264 | return ext_shader_stencil_export; |
| 265 | } | 265 | } |
| 266 | 266 | ||
| 267 | /// Returns true if the device supports VK_EXT_conservative_rasterization. | ||
| 268 | bool IsExtConservativeRasterizationSupported() const { | ||
| 269 | return ext_conservative_rasterization; | ||
| 270 | } | ||
| 271 | |||
| 267 | /// Returns true if the device supports VK_EXT_provoking_vertex. | 272 | /// Returns true if the device supports VK_EXT_provoking_vertex. |
| 268 | bool IsExtProvokingVertexSupported() const { | 273 | bool IsExtProvokingVertexSupported() const { |
| 269 | return ext_provoking_vertex; | 274 | return ext_provoking_vertex; |
| @@ -374,6 +379,7 @@ private: | |||
| 374 | bool ext_vertex_input_dynamic_state{}; ///< Support for VK_EXT_vertex_input_dynamic_state. | 379 | bool ext_vertex_input_dynamic_state{}; ///< Support for VK_EXT_vertex_input_dynamic_state. |
| 375 | bool ext_shader_stencil_export{}; ///< Support for VK_EXT_shader_stencil_export. | 380 | bool ext_shader_stencil_export{}; ///< Support for VK_EXT_shader_stencil_export. |
| 376 | bool ext_shader_atomic_int64{}; ///< Support for VK_KHR_shader_atomic_int64. | 381 | bool ext_shader_atomic_int64{}; ///< Support for VK_KHR_shader_atomic_int64. |
| 382 | bool ext_conservative_rasterization{}; ///< Support for VK_EXT_conservative_rasterization. | ||
| 377 | bool ext_provoking_vertex{}; ///< Support for VK_EXT_provoking_vertex. | 383 | bool ext_provoking_vertex{}; ///< Support for VK_EXT_provoking_vertex. |
| 378 | bool nv_device_diagnostics_config{}; ///< Support for VK_NV_device_diagnostics_config. | 384 | bool nv_device_diagnostics_config{}; ///< Support for VK_NV_device_diagnostics_config. |
| 379 | bool has_renderdoc{}; ///< Has RenderDoc attached | 385 | bool has_renderdoc{}; ///< Has RenderDoc attached |