nvk: Call cmd_buffer_begin_* based on queue flags

Reviewed-by: Faith Ekstrand <faith.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36651>
This commit is contained in:
Mel Henning
2025-08-04 15:31:44 -04:00
committed by Marge Bot
parent 66017ae4a6
commit 87d6840110
+20 -2
View File
@@ -120,6 +120,20 @@ nvk_reset_cmd_buffer(struct vk_command_buffer *vk_cmd_buffer,
memset(&cmd->state, 0, sizeof(cmd->state));
}
static VkQueueFlags
nvk_cmd_buffer_queue_flags(struct nvk_cmd_buffer *cmd)
{
const struct nvk_device *dev = nvk_cmd_buffer_device(cmd);
const struct nvk_physical_device *pdev = nvk_device_physical(dev);
uint32_t queue_family_index = cmd->vk.pool->queue_family_index;
assert(queue_family_index < pdev->queue_family_count);
const struct nvk_queue_family *queue_family =
&pdev->queue_families[queue_family_index];
return queue_family->queue_flags;
}
const struct vk_command_buffer_ops nvk_cmd_buffer_ops = {
.create = nvk_create_cmd_buffer,
.reset = nvk_reset_cmd_buffer,
@@ -348,6 +362,7 @@ nvk_BeginCommandBuffer(VkCommandBuffer commandBuffer,
const VkCommandBufferBeginInfo *pBeginInfo)
{
VK_FROM_HANDLE(nvk_cmd_buffer, cmd, commandBuffer);
VkQueueFlags queue_flags = nvk_cmd_buffer_queue_flags(cmd);
nvk_reset_cmd_buffer(&cmd->vk, 0);
@@ -356,8 +371,11 @@ nvk_BeginCommandBuffer(VkCommandBuffer commandBuffer,
P_MTHD(p, NV90B5, NOP);
P_NV90B5_NOP(p, 0);
nvk_cmd_buffer_begin_compute(cmd, pBeginInfo);
nvk_cmd_buffer_begin_graphics(cmd, pBeginInfo);
if (queue_flags & VK_QUEUE_COMPUTE_BIT)
nvk_cmd_buffer_begin_compute(cmd, pBeginInfo);
if (queue_flags & VK_QUEUE_GRAPHICS_BIT)
nvk_cmd_buffer_begin_graphics(cmd, pBeginInfo);
return VK_SUCCESS;
}