radv: Don't redundantly emit pipelines after secondary cmd buffer.
authorBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Tue, 12 Sep 2017 22:12:48 +0000 (00:12 +0200)
committerBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Fri, 15 Sep 2017 21:12:25 +0000 (23:12 +0200)
Reviewed-by: Dave Airlie <airlied@redhat.com>
src/amd/vulkan/radv_cmd_buffer.c

index 5f22733..4ba552e 100644 (file)
@@ -2653,16 +2653,17 @@ void radv_CmdExecuteCommands(
                                assert(secondary->ring_offsets_idx == primary->ring_offsets_idx);
                }
                primary->device->ws->cs_execute_secondary(primary->cs, secondary->cs);
+
+               primary->state.emitted_pipeline = secondary->state.emitted_pipeline;
+               primary->state.emitted_compute_pipeline = secondary->state.emitted_compute_pipeline;
+               primary->state.last_primitive_reset_en = secondary->state.last_primitive_reset_en;
+               primary->state.last_primitive_reset_index = secondary->state.last_primitive_reset_index;
        }
 
-       /* if we execute secondary we need to re-emit out pipelines */
+       /* if we execute secondary we need to mark some stuff to reset dirty */
        if (commandBufferCount) {
-               primary->state.emitted_pipeline = NULL;
-               primary->state.emitted_compute_pipeline = NULL;
                primary->state.dirty |= RADV_CMD_DIRTY_PIPELINE;
                primary->state.dirty |= RADV_CMD_DIRTY_DYNAMIC_ALL;
-               primary->state.last_primitive_reset_en = -1;
-               primary->state.last_primitive_reset_index = 0;
                radv_mark_descriptor_sets_dirty(primary);
        }
 }