panvk: add get_subqueue_stages

This is a minor refactoring with no functional change.

Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32074>
This commit is contained in:
Chia-I Wu 2024-11-08 09:08:12 -08:00 committed by Marge Bot
parent 764cb8aebb
commit 4a598e946c

View file

@ -189,6 +189,30 @@ panvk_per_arch(EndCommandBuffer)(VkCommandBuffer commandBuffer)
return vk_command_buffer_end(&cmdbuf->vk);
}
static VkPipelineStageFlags2
get_subqueue_stages(enum panvk_subqueue_id subqueue)
{
switch (subqueue) {
case PANVK_SUBQUEUE_VERTEX_TILER:
return VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT |
VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT |
VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT |
VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT;
case PANVK_SUBQUEUE_FRAGMENT:
return VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT |
VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT |
VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT |
VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT |
VK_PIPELINE_STAGE_2_COPY_BIT | VK_PIPELINE_STAGE_2_RESOLVE_BIT |
VK_PIPELINE_STAGE_2_BLIT_BIT | VK_PIPELINE_STAGE_2_CLEAR_BIT;
case PANVK_SUBQUEUE_COMPUTE:
return VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT |
VK_PIPELINE_STAGE_2_COPY_BIT;
default:
unreachable("Invalid subqueue id");
}
}
static bool
src_stages_need_draw_flush(VkPipelineStageFlags2 stages)
{
@ -207,24 +231,7 @@ static bool
stages_cover_subqueue(enum panvk_subqueue_id subqueue,
VkPipelineStageFlags2 stages)
{
static const VkPipelineStageFlags2 queue_coverage[PANVK_SUBQUEUE_COUNT] = {
[PANVK_SUBQUEUE_VERTEX_TILER] =
VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT |
VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT |
VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT |
VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT,
[PANVK_SUBQUEUE_FRAGMENT] =
VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT |
VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT |
VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT |
VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT |
VK_PIPELINE_STAGE_2_COPY_BIT | VK_PIPELINE_STAGE_2_BLIT_BIT |
VK_PIPELINE_STAGE_2_RESOLVE_BIT | VK_PIPELINE_STAGE_2_CLEAR_BIT,
[PANVK_SUBQUEUE_COMPUTE] =
VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT | VK_PIPELINE_STAGE_2_COPY_BIT,
};
return (stages & queue_coverage[subqueue]) != 0;
return (stages & get_subqueue_stages(subqueue)) != 0;
}
static uint32_t