mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-30 05:40:13 +01:00
panvk: allow resuming secondary cmdbufs with dynamic rendering
The removed assertion was originally added to enforce
> VUID-vkCmdExecuteCommands-pCommandBuffers-00100:
> If vkCmdExecuteCommands is not being called within a render pass
> instance, each element of pCommandBuffers must not have been recorded
> with the VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT
However, if a render pass instance is entered with vkCmdBeginRendering,
vk_command_buffer::render_pass is unset.
Code change was done by Boris, only commit description was added.
Fixes: c2299b6642 ("panvk/csf: Implement vkCmdExecuteCommands")
Co-authored-by: Boris Brezillon <boris.brezillon@collabora.com>
Signed-off-by: Benjamin Lee <benjamin.lee@collabora.com>
Reviewed-by: Mary Guillemard <mary.guillemard@collabora.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Rebecca Mckeever <rebecca.mckeever@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31813>
This commit is contained in:
parent
62715984f8
commit
2b1ec1c35d
1 changed files with 7 additions and 3 deletions
|
|
@ -1537,7 +1537,6 @@ panvk_per_arch(cmd_prepare_exec_cmd_for_draws)(
|
|||
VkResult result;
|
||||
|
||||
if (secondary->flags & VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT) {
|
||||
assert(primary->vk.render_pass);
|
||||
result = get_tiler_desc(primary);
|
||||
if (result != VK_SUCCESS)
|
||||
return;
|
||||
|
|
@ -1605,8 +1604,13 @@ panvk_cmd_draw_indirect(struct panvk_cmd_buffer *cmdbuf,
|
|||
return;
|
||||
|
||||
/* Layered indirect draw (VK_EXT_shader_viewport_index_layer) needs
|
||||
* additional changes. */
|
||||
assert(cmdbuf->state.gfx.render.layer_count == 1);
|
||||
* additional changes. We allow layer_count == 0 because that happens
|
||||
* when mixing dynamic rendering and secondary command buffers. Once
|
||||
* we decide to support layared+indirect, we'll need to pass the
|
||||
* layer_count info through the tiler descriptor, for instance by
|
||||
* re-using one of the word that's flagged 'ignored' in the descriptor
|
||||
* (word 14:23). */
|
||||
assert(cmdbuf->state.gfx.render.layer_count <= 1);
|
||||
|
||||
/* MultiDrawIndirect (.maxDrawIndirectCount) needs additional changes. */
|
||||
assert(draw->indirect.draw_count == 1);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue