anv/batch_chain: Clean up the reloc list swapping code

This commit is contained in:
Jason Ekstrand
2015-09-23 17:16:40 -07:00
parent 041f5ea089
commit 76be58efce
+6 -8
View File
@@ -895,21 +895,19 @@ anv_cmd_buffer_prepare_execbuf(struct anv_cmd_buffer *cmd_buffer)
*/
if (first_batch_bo->bo.index != cmd_buffer->execbuf2.bo_count - 1) {
uint32_t idx = first_batch_bo->bo.index;
uint32_t last_idx = cmd_buffer->execbuf2.bo_count - 1;
struct drm_i915_gem_exec_object2 tmp_obj =
cmd_buffer->execbuf2.objects[idx];
assert(cmd_buffer->execbuf2.bos[idx] == &first_batch_bo->bo);
cmd_buffer->execbuf2.objects[idx] =
cmd_buffer->execbuf2.objects[cmd_buffer->execbuf2.bo_count - 1];
cmd_buffer->execbuf2.bos[idx] =
cmd_buffer->execbuf2.bos[cmd_buffer->execbuf2.bo_count - 1];
cmd_buffer->execbuf2.objects[idx] = cmd_buffer->execbuf2.objects[last_idx];
cmd_buffer->execbuf2.bos[idx] = cmd_buffer->execbuf2.bos[last_idx];
cmd_buffer->execbuf2.bos[idx]->index = idx;
cmd_buffer->execbuf2.objects[cmd_buffer->execbuf2.bo_count - 1] = tmp_obj;
cmd_buffer->execbuf2.bos[cmd_buffer->execbuf2.bo_count - 1] =
&first_batch_bo->bo;
first_batch_bo->bo.index = cmd_buffer->execbuf2.bo_count - 1;
cmd_buffer->execbuf2.objects[last_idx] = tmp_obj;
cmd_buffer->execbuf2.bos[last_idx] = &first_batch_bo->bo;
first_batch_bo->bo.index = last_idx;
}
/* Now we go through and fixup all of the relocation lists to point to