From: Samuel Pitoiset Date: Wed, 11 Oct 2017 14:10:43 +0000 (+0200) Subject: radv: always dirty some states after executing secondary buffers X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=b253f3189ac6440103ae70784030a577f36100a5;p=mesa.git radv: always dirty some states after executing secondary buffers The spec requires the number of buffer to be greater than 0. Signed-off-by: Samuel Pitoiset Reviewed-by: Bas Nieuwenhuizen --- diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index b01f1ee7efa..64e7e2637b9 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -2622,6 +2622,8 @@ void radv_CmdExecuteCommands( { RADV_FROM_HANDLE(radv_cmd_buffer, primary, commandBuffer); + assert(commandBufferCount > 0); + /* Emit pending flushes on primary prior to executing secondary */ si_emit_cache_flush(primary); @@ -2671,12 +2673,12 @@ void radv_CmdExecuteCommands( primary->state.last_primitive_reset_index = secondary->state.last_primitive_reset_index; } - /* if we execute secondary we need to mark some stuff to reset dirty */ - if (commandBufferCount) { - primary->state.dirty |= RADV_CMD_DIRTY_PIPELINE; - primary->state.dirty |= RADV_CMD_DIRTY_DYNAMIC_ALL; - radv_mark_descriptor_sets_dirty(primary); - } + /* After executing commands from secondary buffers we have to dirty + * some states. + */ + primary->state.dirty |= RADV_CMD_DIRTY_PIPELINE; + primary->state.dirty |= RADV_CMD_DIRTY_DYNAMIC_ALL; + radv_mark_descriptor_sets_dirty(primary); } VkResult radv_CreateCommandPool(