On 28/06/17 11:33 AM, John Brooks wrote: > There is no need for page faults to force BOs into visible VRAM if it's > full, and the time it takes to do so is great enough to cause noticeable > stuttering. Add GTT as a possible placement so that if visible VRAM is > full, page faults move BOs to GTT instead of evicting other BOs from VRAM. > > Signed-off-by: John Brooks <john@xxxxxxxxxxxxx> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 16 +++++++++------- > 1 file changed, 9 insertions(+), 7 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c > index 658d7b1..a215d8c 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c > @@ -968,19 +968,21 @@ int amdgpu_bo_fault_reserve_notify(struct ttm_buffer_object *bo) > /* hurrah the memory is not visible ! */ > atomic64_inc(&adev->num_vram_cpu_page_faults); > abo->flags |= AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED; > - amdgpu_ttm_placement_from_domain(abo, AMDGPU_GEM_DOMAIN_VRAM); > + amdgpu_ttm_placement_from_domain(abo, AMDGPU_GEM_DOMAIN_VRAM | > + AMDGPU_GEM_DOMAIN_GTT); > + > + /* Avoid costly evictions; only set GTT as a busy placement */ > + abo->placement.num_busy_placement = 1; > + abo->placement.busy_placement = &abo->placements[1]; > > r = ttm_bo_validate(bo, &abo->placement, false, false); > - if (unlikely(r == -ENOMEM)) { > - amdgpu_ttm_placement_from_domain(abo, AMDGPU_GEM_DOMAIN_GTT); > - return ttm_bo_validate(bo, &abo->placement, false, false); > - } else if (unlikely(r != 0)) { > + if (unlikely(r != 0)) > return r; > - } > > offset = bo->mem.start << PAGE_SHIFT; > /* this should never happen */ > - if ((offset + size) > adev->mc.visible_vram_size) > + if (bo->mem.mem_type == TTM_PL_VRAM && > + (offset + size) > adev->mc.visible_vram_size) > return -EINVAL; > > return 0; > Reviewed-by: Michel Dänzer <michel.daenzer@xxxxxxx> -- Earthling Michel Dänzer | http://www.amd.com Libre software enthusiast | Mesa and X developer _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel