radv: Optimize calling radv_save_descriptors.

uint32_t data[MAX_SETS * 2] = {}; was getting executed before
the exit and took significant amounts of time. By having the
check outside the function, we skip the execution of the clear.

Reviewed-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
Bas Nieuwenhuizen 2017-11-04 00:14:55 +01:00
parent cecbcf4b2d
commit 608af05ffb

View file

@ -484,9 +484,6 @@ radv_save_descriptors(struct radv_cmd_buffer *cmd_buffer)
uint32_t data[MAX_SETS * 2] = {};
uint64_t va;
if (!device->trace_bo)
return;
va = radv_buffer_get_va(device->trace_bo) + 24;
MAYBE_UNUSED unsigned cdw_max = radeon_check_space(device->ws,
@ -1723,7 +1720,8 @@ radv_flush_descriptors(struct radv_cmd_buffer *cmd_buffer,
cmd_buffer->state.descriptors_dirty = 0;
cmd_buffer->state.push_descriptors_dirty = false;
radv_save_descriptors(cmd_buffer);
if (cmd_buffer->device->trace_bo)
radv_save_descriptors(cmd_buffer);
assert(cmd_buffer->cs->cdw <= cdw_max);
}