diff options
| author | 2021-06-24 02:41:09 -0300 | |
|---|---|---|
| committer | 2021-07-22 21:51:39 -0400 | |
| commit | 7dafa96ab59892b7f1fbffdb61e4326e6443955f (patch) | |
| tree | 5ab58d56860db635542ea1ec24be258bd86b40b9 /src/video_core/vulkan_common | |
| parent | vk_graphics_pipeline: Implement conservative rendering (diff) | |
| download | yuzu-7dafa96ab59892b7f1fbffdb61e4326e6443955f.tar.gz yuzu-7dafa96ab59892b7f1fbffdb61e4326e6443955f.tar.xz yuzu-7dafa96ab59892b7f1fbffdb61e4326e6443955f.zip | |
shader: Rework varyings and implement passthrough geometry shaders
Put all varyings into a single std::bitset with helpers to access it.
Implement passthrough geometry shaders using host's.
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 7b184d2f8..da4721e6b 100644 --- a/src/video_core/vulkan_common/vulkan_device.cpp +++ b/src/video_core/vulkan_common/vulkan_device.cpp | |||
| @@ -350,6 +350,10 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR | |||
| 350 | LOG_INFO(Render_Vulkan, "Device doesn't support viewport masks"); | 350 | LOG_INFO(Render_Vulkan, "Device doesn't support viewport masks"); |
| 351 | } | 351 | } |
| 352 | 352 | ||
| 353 | if (!nv_geometry_shader_passthrough) { | ||
| 354 | LOG_INFO(Render_Vulkan, "Device doesn't support passthrough geometry shaders"); | ||
| 355 | } | ||
| 356 | |||
| 353 | VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR std430_layout; | 357 | VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR std430_layout; |
| 354 | if (khr_uniform_buffer_standard_layout) { | 358 | if (khr_uniform_buffer_standard_layout) { |
| 355 | std430_layout = { | 359 | std430_layout = { |
| @@ -768,6 +772,8 @@ std::vector<const char*> Device::LoadExtensions(bool requires_surface) { | |||
| 768 | }; | 772 | }; |
| 769 | test(nv_viewport_swizzle, VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME, true); | 773 | test(nv_viewport_swizzle, VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME, true); |
| 770 | test(nv_viewport_array2, VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME, true); | 774 | test(nv_viewport_array2, VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME, true); |
| 775 | test(nv_geometry_shader_passthrough, VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME, | ||
| 776 | true); | ||
| 771 | test(khr_uniform_buffer_standard_layout, | 777 | test(khr_uniform_buffer_standard_layout, |
| 772 | VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME, true); | 778 | VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME, true); |
| 773 | test(khr_spirv_1_4, VK_KHR_SPIRV_1_4_EXTENSION_NAME, true); | 779 | 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 a9c0a0e4d..d0adc0127 100644 --- a/src/video_core/vulkan_common/vulkan_device.h +++ b/src/video_core/vulkan_common/vulkan_device.h | |||
| @@ -194,6 +194,11 @@ public: | |||
| 194 | return nv_viewport_array2; | 194 | return nv_viewport_array2; |
| 195 | } | 195 | } |
| 196 | 196 | ||
| 197 | /// Returns true if the device supports VK_NV_geometry_shader_passthrough. | ||
| 198 | bool IsNvGeometryShaderPassthroughSupported() const { | ||
| 199 | return nv_geometry_shader_passthrough; | ||
| 200 | } | ||
| 201 | |||
| 197 | /// Returns true if the device supports VK_KHR_uniform_buffer_standard_layout. | 202 | /// Returns true if the device supports VK_KHR_uniform_buffer_standard_layout. |
| 198 | bool IsKhrUniformBufferStandardLayoutSupported() const { | 203 | bool IsKhrUniformBufferStandardLayoutSupported() const { |
| 199 | return khr_uniform_buffer_standard_layout; | 204 | return khr_uniform_buffer_standard_layout; |
| @@ -363,6 +368,7 @@ private: | |||
| 363 | bool is_blit_depth_stencil_supported{}; ///< Support for blitting from and to depth stencil. | 368 | bool is_blit_depth_stencil_supported{}; ///< Support for blitting from and to depth stencil. |
| 364 | bool nv_viewport_swizzle{}; ///< Support for VK_NV_viewport_swizzle. | 369 | bool nv_viewport_swizzle{}; ///< Support for VK_NV_viewport_swizzle. |
| 365 | bool nv_viewport_array2{}; ///< Support for VK_NV_viewport_array2. | 370 | bool nv_viewport_array2{}; ///< Support for VK_NV_viewport_array2. |
| 371 | bool nv_geometry_shader_passthrough{}; ///< Support for VK_NV_geometry_shader_passthrough. | ||
| 366 | bool khr_uniform_buffer_standard_layout{}; ///< Support for scalar uniform buffer layouts. | 372 | bool khr_uniform_buffer_standard_layout{}; ///< Support for scalar uniform buffer layouts. |
| 367 | bool khr_spirv_1_4{}; ///< Support for VK_KHR_spirv_1_4. | 373 | bool khr_spirv_1_4{}; ///< Support for VK_KHR_spirv_1_4. |
| 368 | bool khr_workgroup_memory_explicit_layout{}; ///< Support for explicit workgroup layouts. | 374 | bool khr_workgroup_memory_explicit_layout{}; ///< Support for explicit workgroup layouts. |