summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2022-11-12 11:27:06 +0100
committerGitHub <noreply@github.com>2022-11-12 11:27:06 +0100
commit08091ff3e38665181fedcc476a7b83b84159e7a4 (patch)
tree8d059005c6e74fff1ccae781068b12e58ccdc816 /src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp
parentMerge pull request #9224 from liamwhite/services-arent-processes (diff)
parentFix regs regression with OpenGL two-sided stencil, and re-add data invalidation reg (diff)
downloadyuzu-08091ff3e38665181fedcc476a7b83b84159e7a4.tar
yuzu-08091ff3e38665181fedcc476a7b83b84159e7a4.tar.gz
yuzu-08091ff3e38665181fedcc476a7b83b84159e7a4.tar.bz2
yuzu-08091ff3e38665181fedcc476a7b83b84159e7a4.tar.lz
yuzu-08091ff3e38665181fedcc476a7b83b84159e7a4.tar.xz
yuzu-08091ff3e38665181fedcc476a7b83b84159e7a4.tar.zst
yuzu-08091ff3e38665181fedcc476a7b83b84159e7a4.zip
Diffstat (limited to 'src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp')
-rw-r--r--src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp b/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp
index 1aa116cea..ef75c126c 100644
--- a/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp
+++ b/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp
@@ -680,6 +680,15 @@ void GraphicsPipeline::MakePipeline(VkRenderPass render_pass) {
.lineStippleFactor = 0,
.lineStipplePattern = 0,
};
+ VkPipelineRasterizationConservativeStateCreateInfoEXT conservative_raster{
+ .sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT,
+ .pNext = nullptr,
+ .flags = 0,
+ .conservativeRasterizationMode = key.state.conservative_raster_enable != 0
+ ? VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT
+ : VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT,
+ .extraPrimitiveOverestimationSize = 0.0f,
+ };
VkPipelineRasterizationProvokingVertexStateCreateInfoEXT provoking_vertex{
.sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT,
.pNext = nullptr,
@@ -690,6 +699,9 @@ void GraphicsPipeline::MakePipeline(VkRenderPass render_pass) {
if (IsLine(input_assembly_topology) && device.IsExtLineRasterizationSupported()) {
line_state.pNext = std::exchange(rasterization_ci.pNext, &line_state);
}
+ if (device.IsExtConservativeRasterizationSupported()) {
+ conservative_raster.pNext = std::exchange(rasterization_ci.pNext, &conservative_raster);
+ }
if (device.IsExtProvokingVertexSupported()) {
provoking_vertex.pNext = std::exchange(rasterization_ci.pNext, &provoking_vertex);
}