diff options
author | liamwhite <liamwhite@users.noreply.github.com> | 2023-10-07 18:49:37 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-07 18:49:37 +0200 |
commit | bd6f9f1d91fea4cb53f005dc37974382c4051b07 (patch) | |
tree | 6b445dc5b441153c54202242322f7c4cd11fe2d1 /src/video_core | |
parent | Merge pull request #11639 from liamwhite/no-program-id-change (diff) | |
parent | Enable depth test on stencil clear path (diff) | |
download | yuzu-bd6f9f1d91fea4cb53f005dc37974382c4051b07.tar yuzu-bd6f9f1d91fea4cb53f005dc37974382c4051b07.tar.gz yuzu-bd6f9f1d91fea4cb53f005dc37974382c4051b07.tar.bz2 yuzu-bd6f9f1d91fea4cb53f005dc37974382c4051b07.tar.lz yuzu-bd6f9f1d91fea4cb53f005dc37974382c4051b07.tar.xz yuzu-bd6f9f1d91fea4cb53f005dc37974382c4051b07.tar.zst yuzu-bd6f9f1d91fea4cb53f005dc37974382c4051b07.zip |
Diffstat (limited to 'src/video_core')
-rw-r--r-- | src/video_core/renderer_vulkan/blit_image.cpp | 4 | ||||
-rw-r--r-- | src/video_core/renderer_vulkan/vk_rasterizer.cpp | 3 |
2 files changed, 5 insertions, 2 deletions
diff --git a/src/video_core/renderer_vulkan/blit_image.cpp b/src/video_core/renderer_vulkan/blit_image.cpp index 1032c9d12..182057575 100644 --- a/src/video_core/renderer_vulkan/blit_image.cpp +++ b/src/video_core/renderer_vulkan/blit_image.cpp @@ -609,6 +609,8 @@ void BlitImageHelper::ClearDepthStencil(const Framebuffer* dst_framebuffer, bool const VkPipelineLayout layout = *clear_color_pipeline_layout; scheduler.RequestRenderpass(dst_framebuffer); scheduler.Record([pipeline, layout, clear_depth, dst_region](vk::CommandBuffer cmdbuf) { + constexpr std::array blend_constants{0.0f, 0.0f, 0.0f, 0.0f}; + cmdbuf.SetBlendConstants(blend_constants.data()); cmdbuf.BindPipeline(VK_PIPELINE_BIND_POINT_GRAPHICS, pipeline); BindBlitState(cmdbuf, dst_region); cmdbuf.PushConstants(layout, VK_SHADER_STAGE_FRAGMENT_BIT, clear_depth); @@ -865,7 +867,7 @@ VkPipeline BlitImageHelper::FindOrEmplaceClearStencilPipeline( .sType = VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO, .pNext = nullptr, .flags = 0, - .depthTestEnable = VK_FALSE, + .depthTestEnable = key.depth_clear, .depthWriteEnable = key.depth_clear, .depthCompareOp = VK_COMPARE_OP_ALWAYS, .depthBoundsTestEnable = VK_FALSE, diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index 1628d76d6..83f2b6045 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp @@ -422,7 +422,8 @@ void RasterizerVulkan::Clear(u32 layer_count) { return; } - if (use_stencil && regs.stencil_front_mask != 0xFF && regs.stencil_front_mask != 0) { + if (use_stencil && framebuffer->HasAspectStencilBit() && regs.stencil_front_mask != 0xFF && + regs.stencil_front_mask != 0) { Region2D dst_region = { Offset2D{.x = clear_rect.rect.offset.x, .y = clear_rect.rect.offset.y}, Offset2D{.x = clear_rect.rect.offset.x + static_cast<s32>(clear_rect.rect.extent.width), |