On Mon, Apr 10, 2017 at 12:18:53AM -0700, Kenneth Graunke wrote: > Less boilerplate.
Reviewed-by: Daniel Vetter <daniel.vet...@ffwll.ch> > --- > src/mesa/drivers/dri/i965/brw_bufmgr.c | 57 > ++++++++++++---------------------- > 1 file changed, 20 insertions(+), 37 deletions(-) > > diff --git a/src/mesa/drivers/dri/i965/brw_bufmgr.c > b/src/mesa/drivers/dri/i965/brw_bufmgr.c > index 74d6d640bf6..2e55363ece0 100644 > --- a/src/mesa/drivers/dri/i965/brw_bufmgr.c > +++ b/src/mesa/drivers/dri/i965/brw_bufmgr.c > @@ -639,11 +639,26 @@ brw_bo_unreference(struct brw_bo *bo) > } > } > > +static void > +set_domain(struct brw_bo *bo, uint32_t read_domains, uint32_t write_domain) > +{ > + struct drm_i915_gem_set_domain sd = { > + .handle = bo->gem_handle, > + .read_domains = read_domains, > + .write_domain = write_domain, > + }; > + > + if (drmIoctl(bo->bufmgr->fd, DRM_IOCTL_I915_GEM_SET_DOMAIN, &sd) != 0) { > + DBG("%s:%d: Error setting memory domains %d (%08x %08x): %s.\n", > + __FILE__, __LINE__, bo->gem_handle, read_domains, write_domain, > + strerror(errno)); > + } > +} > + > int > brw_bo_map(struct brw_bo *bo, int write_enable) > { > struct brw_bufmgr *bufmgr = bo->bufmgr; > - struct drm_i915_gem_set_domain set_domain; > int ret; > > pthread_mutex_lock(&bufmgr->lock); > @@ -672,18 +687,8 @@ brw_bo_map(struct brw_bo *bo, int write_enable) > DBG("bo_map: %d (%s) -> %p\n", bo->gem_handle, bo->name, bo->mem_virtual); > bo->virtual = bo->mem_virtual; > > - memclear(set_domain); > - set_domain.handle = bo->gem_handle; > - set_domain.read_domains = I915_GEM_DOMAIN_CPU; > - if (write_enable) > - set_domain.write_domain = I915_GEM_DOMAIN_CPU; > - else > - set_domain.write_domain = 0; > - ret = drmIoctl(bufmgr->fd, DRM_IOCTL_I915_GEM_SET_DOMAIN, &set_domain); > - if (ret != 0) { > - DBG("%s:%d: Error setting to CPU domain %d: %s\n", > - __FILE__, __LINE__, bo->gem_handle, strerror(errno)); > - } > + set_domain(bo, I915_GEM_DOMAIN_CPU, > + write_enable ? I915_GEM_DOMAIN_CPU : 0); > > bo_mark_mmaps_incoherent(bo); > VG(VALGRIND_MAKE_MEM_DEFINED(bo->mem_virtual, bo->size)); > @@ -742,7 +747,6 @@ int > brw_bo_map_gtt(struct brw_bo *bo) > { > struct brw_bufmgr *bufmgr = bo->bufmgr; > - struct drm_i915_gem_set_domain set_domain; > int ret; > > pthread_mutex_lock(&bufmgr->lock); > @@ -762,15 +766,7 @@ brw_bo_map_gtt(struct brw_bo *bo) > * tell it when we're about to use things if we had done > * rendering and it still happens to be bound to the GTT. > */ > - memclear(set_domain); > - set_domain.handle = bo->gem_handle; > - set_domain.read_domains = I915_GEM_DOMAIN_GTT; > - set_domain.write_domain = I915_GEM_DOMAIN_GTT; > - ret = drmIoctl(bufmgr->fd, DRM_IOCTL_I915_GEM_SET_DOMAIN, &set_domain); > - if (ret != 0) { > - DBG("%s:%d: Error setting domain %d: %s\n", > - __FILE__, __LINE__, bo->gem_handle, strerror(errno)); > - } > + set_domain(bo, I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT); > > bo_mark_mmaps_incoherent(bo); > VG(VALGRIND_MAKE_MEM_DEFINED(bo->gtt_virtual, bo->size)); > @@ -903,20 +899,7 @@ brw_bo_get_subdata(struct brw_bo *bo, unsigned long > offset, > void > brw_bo_wait_rendering(struct brw_bo *bo) > { > - struct brw_bufmgr *bufmgr = bo->bufmgr; > - struct drm_i915_gem_set_domain set_domain; > - int ret; > - > - memclear(set_domain); > - set_domain.handle = bo->gem_handle; > - set_domain.read_domains = I915_GEM_DOMAIN_GTT; > - set_domain.write_domain = I915_GEM_DOMAIN_GTT; > - ret = drmIoctl(bufmgr->fd, DRM_IOCTL_I915_GEM_SET_DOMAIN, &set_domain); > - if (ret != 0) { > - DBG("%s:%d: Error setting memory domains %d (%08x %08x): %s .\n", > - __FILE__, __LINE__, bo->gem_handle, > - set_domain.read_domains, set_domain.write_domain, strerror(errno)); > - } > + set_domain(bo, I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT); > } > > /** > -- > 2.12.1 > > _______________________________________________ > 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