On Wed, May 08, 2013 at 04:33:09PM +0100, Chris Wilson wrote: > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=59771 > Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk> I guess we've walked past a "please stop and return" sign here a bit. Originally this was just add for opportunistic state emission in mesa (and still documents that check_aperture will return fobar). But then uxa started to abuse it to reset batches completely in commit 441ef916ae6569c88b3d6abaf7fea4d69be49d76 Author: Chris Wilson <chris at chris-wilson.co.uk> Date: Thu Jan 10 19:14:21 2013 +0000 intel: Throttle harder which required some band-aids in libdrm to have some semblances of working commit fdda97007b1dbf95beb16a0e3510fd36c89e8c33 Author: Chris Wilson <chris at chris-wilson.co.uk> Date: Fri Jan 11 00:55:12 2013 +0000 intel: Remove the fence count contributions when clearing relocs Apparently not yet good enough. Personally I vote for reverting the libdrm patch and doing a normal wait_rendering + unref/bo realloc for the uxa throttling. -Daniel > --- > intel/intel_bufmgr_gem.c | 13 ++++++++++--- > 1 file changed, 10 insertions(+), 3 deletions(-) > > diff --git a/intel/intel_bufmgr_gem.c b/intel/intel_bufmgr_gem.c > index 3cf8503..6ebeec9 100644 > --- a/intel/intel_bufmgr_gem.c > +++ b/intel/intel_bufmgr_gem.c > @@ -1746,6 +1746,7 @@ drm_intel_gem_bo_clear_relocs(drm_intel_bo *bo, int start) > drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo; > int i; > struct timespec time; > + int fence_count; > > clock_gettime(CLOCK_MONOTONIC, &time); > > @@ -1753,13 +1754,19 @@ drm_intel_gem_bo_clear_relocs(drm_intel_bo *bo, int start) > /* Unreference the cleared target buffers */ > for (i = start; i < bo_gem->reloc_count; i++) { > drm_intel_bo_gem *target_bo_gem = (drm_intel_bo_gem *) bo_gem->reloc_target_info[i].bo; > - if (&target_bo_gem->bo != bo) { > - bo_gem->reloc_tree_fences -= target_bo_gem->reloc_tree_fences; > + if (&target_bo_gem->bo != bo) > drm_intel_gem_bo_unreference_locked_timed(&target_bo_gem->bo, > time.tv_sec); > - } > } > bo_gem->reloc_count = start; > + > + fence_count = 0; > + for (i = 0; i < bo_gem->reloc_count; i++) { > + drm_intel_bo_gem *target_bo_gem = (drm_intel_bo_gem *) bo_gem->reloc_target_info[i].bo; > + if (&target_bo_gem->bo != bo) > + fence_count += target_bo_gem->reloc_tree_fences; > + } > + bo_gem->reloc_tree_fences = fence_count; > } > > /** > -- > 1.7.10.4 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx at lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch