diff options
| author | 2021-04-16 16:31:15 -0300 | |
|---|---|---|
| committer | 2021-07-22 21:51:28 -0400 | |
| commit | e3514bcd6b09f623da14c4f3c4ffd988e75577ed (patch) | |
| tree | 8c7e375472cb6b654b9d462ae4a9b51575c38b93 /src/video_core | |
| parent | spirv: Bitcast non-F32 attributes to F32 (diff) | |
| download | yuzu-e3514bcd6b09f623da14c4f3c4ffd988e75577ed.tar.gz yuzu-e3514bcd6b09f623da14c4f3c4ffd988e75577ed.tar.xz yuzu-e3514bcd6b09f623da14c4f3c4ffd988e75577ed.zip | |
spirv: Implement ViewportMask with NV_viewport_array2
Diffstat (limited to 'src/video_core')
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_pipeline_cache.cpp | 1 | ||||
| -rw-r--r-- | src/video_core/vulkan_common/vulkan_device.cpp | 5 | ||||
| -rw-r--r-- | src/video_core/vulkan_common/vulkan_device.h | 6 |
3 files changed, 12 insertions, 0 deletions
diff --git a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp index 0bccc640a..4d0d3ebb7 100644 --- a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp +++ b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp | |||
| @@ -690,6 +690,7 @@ PipelineCache::PipelineCache(RasterizerVulkan& rasterizer_, Tegra::GPU& gpu_, | |||
| 690 | .support_vote = true, | 690 | .support_vote = true, |
| 691 | .support_viewport_index_layer_non_geometry = | 691 | .support_viewport_index_layer_non_geometry = |
| 692 | device.IsExtShaderViewportIndexLayerSupported(), | 692 | device.IsExtShaderViewportIndexLayerSupported(), |
| 693 | .support_viewport_mask = device.IsNvViewportArray2Supported(), | ||
| 693 | .support_typeless_image_loads = device.IsFormatlessImageLoadSupported(), | 694 | .support_typeless_image_loads = device.IsFormatlessImageLoadSupported(), |
| 694 | .warp_size_potentially_larger_than_guest = device.IsWarpSizePotentiallyBiggerThanGuest(), | 695 | .warp_size_potentially_larger_than_guest = device.IsWarpSizePotentiallyBiggerThanGuest(), |
| 695 | .support_int64_atomics = device.IsExtShaderAtomicInt64Supported(), | 696 | .support_int64_atomics = device.IsExtShaderAtomicInt64Supported(), |
diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp index f0de19ba1..72b83f99a 100644 --- a/src/video_core/vulkan_common/vulkan_device.cpp +++ b/src/video_core/vulkan_common/vulkan_device.cpp | |||
| @@ -346,6 +346,10 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR | |||
| 346 | LOG_INFO(Render_Vulkan, "Device doesn't support viewport swizzles"); | 346 | LOG_INFO(Render_Vulkan, "Device doesn't support viewport swizzles"); |
| 347 | } | 347 | } |
| 348 | 348 | ||
| 349 | if (!nv_viewport_array2) { | ||
| 350 | LOG_INFO(Render_Vulkan, "Device doesn't support viewport masks"); | ||
| 351 | } | ||
| 352 | |||
| 349 | VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR std430_layout; | 353 | VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR std430_layout; |
| 350 | if (khr_uniform_buffer_standard_layout) { | 354 | if (khr_uniform_buffer_standard_layout) { |
| 351 | std430_layout = { | 355 | std430_layout = { |
| @@ -724,6 +728,7 @@ std::vector<const char*> Device::LoadExtensions(bool requires_surface) { | |||
| 724 | } | 728 | } |
| 725 | }; | 729 | }; |
| 726 | test(nv_viewport_swizzle, VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME, true); | 730 | test(nv_viewport_swizzle, VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME, true); |
| 731 | test(nv_viewport_array2, VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME, true); | ||
| 727 | test(khr_uniform_buffer_standard_layout, | 732 | test(khr_uniform_buffer_standard_layout, |
| 728 | VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME, true); | 733 | VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME, true); |
| 729 | test(khr_spirv_1_4, VK_KHR_SPIRV_1_4_EXTENSION_NAME, true); | 734 | test(khr_spirv_1_4, VK_KHR_SPIRV_1_4_EXTENSION_NAME, true); |
diff --git a/src/video_core/vulkan_common/vulkan_device.h b/src/video_core/vulkan_common/vulkan_device.h index 4e6d13308..4415558bb 100644 --- a/src/video_core/vulkan_common/vulkan_device.h +++ b/src/video_core/vulkan_common/vulkan_device.h | |||
| @@ -169,6 +169,11 @@ public: | |||
| 169 | return nv_viewport_swizzle; | 169 | return nv_viewport_swizzle; |
| 170 | } | 170 | } |
| 171 | 171 | ||
| 172 | /// Returns true if the device supports VK_NV_viewport_array2. | ||
| 173 | bool IsNvViewportArray2Supported() const { | ||
| 174 | return nv_viewport_array2; | ||
| 175 | } | ||
| 176 | |||
| 172 | /// Returns true if the device supports VK_KHR_uniform_buffer_standard_layout. | 177 | /// Returns true if the device supports VK_KHR_uniform_buffer_standard_layout. |
| 173 | bool IsKhrUniformBufferStandardLayoutSupported() const { | 178 | bool IsKhrUniformBufferStandardLayoutSupported() const { |
| 174 | return khr_uniform_buffer_standard_layout; | 179 | return khr_uniform_buffer_standard_layout; |
| @@ -312,6 +317,7 @@ private: | |||
| 312 | bool is_shader_storage_image_multisample{}; ///< Support for image operations on MSAA images. | 317 | bool is_shader_storage_image_multisample{}; ///< Support for image operations on MSAA images. |
| 313 | bool is_blit_depth_stencil_supported{}; ///< Support for blitting from and to depth stencil. | 318 | bool is_blit_depth_stencil_supported{}; ///< Support for blitting from and to depth stencil. |
| 314 | bool nv_viewport_swizzle{}; ///< Support for VK_NV_viewport_swizzle. | 319 | bool nv_viewport_swizzle{}; ///< Support for VK_NV_viewport_swizzle. |
| 320 | bool nv_viewport_array2{}; ///< Support for VK_NV_viewport_array2. | ||
| 315 | bool khr_uniform_buffer_standard_layout{}; ///< Support for scalar uniform buffer layouts. | 321 | bool khr_uniform_buffer_standard_layout{}; ///< Support for scalar uniform buffer layouts. |
| 316 | bool khr_spirv_1_4{}; ///< Support for VK_KHR_spirv_1_4. | 322 | bool khr_spirv_1_4{}; ///< Support for VK_KHR_spirv_1_4. |
| 317 | bool khr_workgroup_memory_explicit_layout{}; ///< Support for explicit workgroup layouts. | 323 | bool khr_workgroup_memory_explicit_layout{}; ///< Support for explicit workgroup layouts. |