pvr: Create deferred control stream for secondary command buffers.
Signed-off-by: Rajnesh Kanwal <rajnesh.kanwal@imgtec.com> Reviewed-by: Karmjit Mahil <Karmjit.Mahil@imgtec.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18871>
This commit is contained in:
@@ -1635,6 +1635,18 @@ static void pvr_reset_graphics_dirty_state(struct pvr_cmd_buffer_state *state,
|
||||
state->dirty.viewport = true;
|
||||
}
|
||||
|
||||
static inline bool
|
||||
pvr_cmd_uses_deferred_cs_cmds(struct pvr_cmd_buffer *const cmd_buffer)
|
||||
{
|
||||
const VkCommandBufferUsageFlags deferred_control_stream_flags =
|
||||
VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT &
|
||||
VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT;
|
||||
|
||||
return cmd_buffer->vk.level == VK_COMMAND_BUFFER_LEVEL_SECONDARY &&
|
||||
(cmd_buffer->usage_flags & deferred_control_stream_flags) ==
|
||||
deferred_control_stream_flags;
|
||||
}
|
||||
|
||||
static VkResult pvr_cmd_buffer_start_sub_cmd(struct pvr_cmd_buffer *cmd_buffer,
|
||||
enum pvr_sub_cmd_type type)
|
||||
{
|
||||
@@ -1688,9 +1700,15 @@ static VkResult pvr_cmd_buffer_start_sub_cmd(struct pvr_cmd_buffer *cmd_buffer,
|
||||
sub_cmd->gfx.empty_cmd = true;
|
||||
|
||||
pvr_reset_graphics_dirty_state(state, true);
|
||||
pvr_csb_init(device,
|
||||
PVR_CMD_STREAM_TYPE_GRAPHICS,
|
||||
&sub_cmd->gfx.control_stream);
|
||||
if (pvr_cmd_uses_deferred_cs_cmds(cmd_buffer)) {
|
||||
pvr_csb_init(device,
|
||||
PVR_CMD_STREAM_TYPE_GRAPHICS_DEFERRED,
|
||||
&sub_cmd->gfx.control_stream);
|
||||
} else {
|
||||
pvr_csb_init(device,
|
||||
PVR_CMD_STREAM_TYPE_GRAPHICS,
|
||||
&sub_cmd->gfx.control_stream);
|
||||
}
|
||||
break;
|
||||
|
||||
case PVR_SUB_CMD_TYPE_COMPUTE:
|
||||
@@ -4257,18 +4275,6 @@ static void pvr_setup_ppp_control(struct pvr_cmd_buffer *const cmd_buffer)
|
||||
}
|
||||
}
|
||||
|
||||
static inline bool
|
||||
pvr_cmd_uses_deferred_cs_cmds(struct pvr_cmd_buffer *const cmd_buffer)
|
||||
{
|
||||
const VkCommandBufferUsageFlags deferred_control_stream_flags =
|
||||
VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT &
|
||||
VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT;
|
||||
|
||||
return cmd_buffer->vk.level == VK_COMMAND_BUFFER_LEVEL_SECONDARY &&
|
||||
(cmd_buffer->usage_flags & deferred_control_stream_flags) ==
|
||||
deferred_control_stream_flags;
|
||||
}
|
||||
|
||||
/* Largest valid PPP State update in words = 31
|
||||
* 1 - Header
|
||||
* 3 - Stream Out Config words 0, 1 and 2
|
||||
|
Reference in New Issue
Block a user