Merge pull request #11630 from Kelebek1/clear_stencil_requires_depth_test
Enable depth test on depthstencil clear path
This commit is contained in:
		| @@ -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, | ||||
|   | ||||
| @@ -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), | ||||
|   | ||||
		Reference in New Issue
	
	Block a user