From df9694e98e87417bdca62cbc348687883b9ca43c Mon Sep 17 00:00:00 2001 From: Connor Abbott Date: Mon, 12 Dec 2022 21:21:17 +0100 Subject: [PATCH] tu: Use vk_pipeline_get_renderpass_flags() With this we can remove usage of VkSelfDependencyInfoMESA. Reviewed-by: Emma Anholt Reviewed-by: Faith Ekstrand Part-of: --- src/freedreno/vulkan/tu_cmd_buffer.cc | 16 ---------------- src/freedreno/vulkan/tu_pipeline.cc | 17 +++++------------ 2 files changed, 5 insertions(+), 28 deletions(-) diff --git a/src/freedreno/vulkan/tu_cmd_buffer.cc b/src/freedreno/vulkan/tu_cmd_buffer.cc index 4ffec4f..eb372fc 100644 --- a/src/freedreno/vulkan/tu_cmd_buffer.cc +++ b/src/freedreno/vulkan/tu_cmd_buffer.cc @@ -4438,22 +4438,6 @@ tu_CmdBeginRendering(VkCommandBuffer commandBuffer, } } - if (TU_DEBUG(DYNAMIC)) { - const VkRenderingSelfDependencyInfoMESA *self_dependency = - vk_find_struct_const(pRenderingInfo->pNext, RENDERING_SELF_DEPENDENCY_INFO_MESA); - if (self_dependency && - (self_dependency->colorSelfDependencies || - self_dependency->depthSelfDependency || - self_dependency->stencilSelfDependency)) { - /* Mesa's renderpass emulation requires us to use normal attachments - * for input attachments, and currently doesn't try to keep track of - * which color/depth attachment an input attachment corresponds to. - * So when there's a self-dependency, we have to use sysmem. - */ - cmd->state.rp.disable_gmem = true; - } - } - tu_choose_gmem_layout(cmd); cmd->state.renderpass_cache.pending_flush_bits = diff --git a/src/freedreno/vulkan/tu_pipeline.cc b/src/freedreno/vulkan/tu_pipeline.cc index e8d7dc6..6d18e87 100644 --- a/src/freedreno/vulkan/tu_pipeline.cc +++ b/src/freedreno/vulkan/tu_pipeline.cc @@ -4964,6 +4964,8 @@ tu_pipeline_builder_init_graphics( builder->create_info->pRasterizationState->rasterizerDiscardEnable && !rasterizer_discard_dynamic; + VkPipelineCreateFlags rendering_flags = builder->create_info->flags; + if (builder->state & (VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT | VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT | @@ -5014,16 +5016,7 @@ tu_pipeline_builder_init_graphics( builder->subpass_feedback_loop_ds = false; builder->subpass_feedback_loop_color = false; - const VkRenderingSelfDependencyInfoMESA *self_dependency = - vk_find_struct_const(rendering_info->pNext, RENDERING_SELF_DEPENDENCY_INFO_MESA); - - if (self_dependency) { - builder->subpass_feedback_loop_ds = - self_dependency->depthSelfDependency || - self_dependency->stencilSelfDependency; - builder->subpass_feedback_loop_color = - self_dependency->colorSelfDependencies; - } + rendering_flags = vk_get_pipeline_rendering_flags(builder->create_info); if (!builder->rasterizer_discard) { builder->depth_attachment_format = @@ -5077,12 +5070,12 @@ tu_pipeline_builder_init_graphics( } } - if (builder->create_info->flags & VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT) { + if (rendering_flags & VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT) { builder->subpass_feedback_loop_color = true; builder->feedback_loop_may_involve_textures = true; } - if (builder->create_info->flags & VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT) { + if (rendering_flags & VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT) { builder->subpass_feedback_loop_ds = true; builder->feedback_loop_may_involve_textures = true; } -- 2.7.4