On Mon, Jun 19, 2017 at 11:06:49AM +0100, Chris Wilson wrote: > To avoid a forward declaration in the next patch, move the definition of > add_exec_bo() earlier. > > Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk> > Cc: Kenneth Graunke <kenn...@whitecape.org> > Cc: Matt Turner <matts...@gmail.com> > Cc: Jason Ekstrand <jason.ekstr...@intel.com>
Needs to be rebased when patch 2 is updated, but ack. -Daniel > --- > src/mesa/drivers/dri/i965/intel_batchbuffer.c | 106 > +++++++++++++------------- > 1 file changed, 53 insertions(+), 53 deletions(-) > > diff --git a/src/mesa/drivers/dri/i965/intel_batchbuffer.c > b/src/mesa/drivers/dri/i965/intel_batchbuffer.c > index 7129209c26..15aaf01e52 100644 > --- a/src/mesa/drivers/dri/i965/intel_batchbuffer.c > +++ b/src/mesa/drivers/dri/i965/intel_batchbuffer.c > @@ -87,6 +87,59 @@ intel_batchbuffer_init(struct intel_batchbuffer *batch, > } > } > > +#define READ_ONCE(x) (*(volatile __typeof__(x) *)&(x)) > + > +static unsigned int > +add_exec_bo(struct intel_batchbuffer *batch, struct brw_bo *bo) > +{ > + if (bo != batch->bo) { > + unsigned int index = READ_ONCE(bo->index); > + > + if (index < batch->exec_count && batch->exec_bos[index] == bo) > + return index; > + > + /* May have been shared between multiple active batches */ > + for (index = 0; index < batch->exec_count; index++) { > + if (batch->exec_bos[index] == bo) > + return index; > + } > + > + brw_bo_reference(bo); > + } > + > + if (batch->exec_count == batch->exec_array_size) { > + batch->exec_array_size *= 2; > + batch->exec_bos = > + realloc(batch->exec_bos, > + batch->exec_array_size * sizeof(batch->exec_bos[0])); > + batch->exec_objects = > + realloc(batch->exec_objects, > + batch->exec_array_size * sizeof(batch->exec_objects[0])); > + } > + > + struct drm_i915_gem_exec_object2 *validation_entry = > + &batch->exec_objects[batch->exec_count]; > + validation_entry->handle = bo->gem_handle; > + if (bo == batch->bo) { > + validation_entry->relocation_count = batch->reloc_count; > + validation_entry->relocs_ptr = (uintptr_t) batch->relocs; > + } else { > + validation_entry->relocation_count = 0; > + validation_entry->relocs_ptr = 0; > + } > + validation_entry->alignment = bo->align; > + validation_entry->offset = bo->offset64; > + validation_entry->flags = bo->kflags; > + validation_entry->rsvd1 = 0; > + validation_entry->rsvd2 = 0; > + > + bo->index = batch->exec_count; > + batch->exec_bos[batch->exec_count] = bo; > + batch->aperture_space += bo->size; > + > + return batch->exec_count++; > +} > + > static void > intel_batchbuffer_reset(struct intel_batchbuffer *batch, > struct brw_bufmgr *bufmgr, > @@ -515,59 +568,6 @@ throttle(struct brw_context *brw) > } > } > > -#define READ_ONCE(x) (*(volatile __typeof__(x) *)&(x)) > - > -static unsigned int > -add_exec_bo(struct intel_batchbuffer *batch, struct brw_bo *bo) > -{ > - if (bo != batch->bo) { > - unsigned int index = READ_ONCE(bo->index); > - > - if (index < batch->exec_count && batch->exec_bos[index] == bo) > - return index; > - > - /* May have been shared between multiple active batches */ > - for (index = 0; index < batch->exec_count; index++) { > - if (batch->exec_bos[index] == bo) > - return index; > - } > - > - brw_bo_reference(bo); > - } > - > - if (batch->exec_count == batch->exec_array_size) { > - batch->exec_array_size *= 2; > - batch->exec_bos = > - realloc(batch->exec_bos, > - batch->exec_array_size * sizeof(batch->exec_bos[0])); > - batch->exec_objects = > - realloc(batch->exec_objects, > - batch->exec_array_size * sizeof(batch->exec_objects[0])); > - } > - > - struct drm_i915_gem_exec_object2 *validation_entry = > - &batch->exec_objects[batch->exec_count]; > - validation_entry->handle = bo->gem_handle; > - if (bo == batch->bo) { > - validation_entry->relocation_count = batch->reloc_count; > - validation_entry->relocs_ptr = (uintptr_t) batch->relocs; > - } else { > - validation_entry->relocation_count = 0; > - validation_entry->relocs_ptr = 0; > - } > - validation_entry->alignment = bo->align; > - validation_entry->offset = bo->offset64; > - validation_entry->flags = bo->kflags; > - validation_entry->rsvd1 = 0; > - validation_entry->rsvd2 = 0; > - > - bo->index = batch->exec_count; > - batch->exec_bos[batch->exec_count] = bo; > - batch->aperture_space += bo->size; > - > - return batch->exec_count++; > -} > - > static int > execbuffer(int fd, > struct intel_batchbuffer *batch, > -- > 2.11.0 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev