From 9aa251c675cb57ae9ced6df6c17cecb7916c57f7 Mon Sep 17 00:00:00 2001 From: Andreas Reich Date: Mon, 28 Jun 2021 20:50:12 +0200 Subject: [PATCH] fix conservative rasterization for vulkan --- wgpu-hal/src/vulkan/device.rs | 7 +++++++ wgpu-types/src/lib.rs | 1 - wgpu/examples/conservative-raster/main.rs | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/wgpu-hal/src/vulkan/device.rs b/wgpu-hal/src/vulkan/device.rs index a54621bf64..3248921d2c 100644 --- a/wgpu-hal/src/vulkan/device.rs +++ b/wgpu-hal/src/vulkan/device.rs @@ -1192,6 +1192,13 @@ impl crate::Device for super::Device { if let Some(face) = desc.primitive.cull_mode { vk_rasterization = vk_rasterization.cull_mode(conv::map_cull_face(face)) } + let mut vk_rasterization_conservative_state = + vk::PipelineRasterizationConservativeStateCreateInfoEXT::builder() + .conservative_rasterization_mode(vk::ConservativeRasterizationModeEXT::OVERESTIMATE) + .build(); + if desc.primitive.conservative { + vk_rasterization = vk_rasterization.push_next(&mut vk_rasterization_conservative_state); + } let mut vk_depth_stencil = vk::PipelineDepthStencilStateCreateInfo::builder(); if let Some(ref ds) = desc.depth_stencil { diff --git a/wgpu-types/src/lib.rs b/wgpu-types/src/lib.rs index c05f8c2a67..0f1a107517 100644 --- a/wgpu-types/src/lib.rs +++ b/wgpu-types/src/lib.rs @@ -448,7 +448,6 @@ bitflags::bitflags! { /// Only triangles are supported. /// /// Supported platforms: - /// - DX12 /// - Vulkan /// /// This is a native only feature. diff --git a/wgpu/examples/conservative-raster/main.rs b/wgpu/examples/conservative-raster/main.rs index 8cdde1b946..718e10dc2a 100644 --- a/wgpu/examples/conservative-raster/main.rs +++ b/wgpu/examples/conservative-raster/main.rs @@ -320,7 +320,7 @@ fn conservative_raster() { width: 1024, height: 768, optional_features: wgpu::Features::default(), - base_test_parameters: framework::test_common::TestParameters::default().failure(), + base_test_parameters: framework::test_common::TestParameters::default(), tollerance: 0, max_outliers: 0, });