summaryrefslogtreecommitdiff
path: root/src/video_core/vulkan_common
diff options
context:
space:
mode:
authorGravatar ReinUsesLisp2021-06-24 02:41:09 -0300
committerGravatar ameerj2021-07-22 21:51:39 -0400
commit7dafa96ab59892b7f1fbffdb61e4326e6443955f (patch)
tree5ab58d56860db635542ea1ec24be258bd86b40b9 /src/video_core/vulkan_common
parentvk_graphics_pipeline: Implement conservative rendering (diff)
downloadyuzu-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.cpp6
-rw-r--r--src/video_core/vulkan_common/vulkan_device.h6
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.