For the series: Reviewed-by: Marek Olšák <marek.ol...@amd.com>
Marek On Wed, Jun 22, 2016 at 11:40 AM, Nicolai Hähnle <nhaeh...@gmail.com> wrote: > From: Nicolai Hähnle <nicolai.haeh...@amd.com> > > This should help flush out GPU VM faults. > --- > src/gallium/winsys/radeon/drm/radeon_drm_bo.c | 4 +++- > src/gallium/winsys/radeon/drm/radeon_drm_winsys.c | 4 +++- > src/gallium/winsys/radeon/drm/radeon_drm_winsys.h | 1 + > 3 files changed, 7 insertions(+), 2 deletions(-) > > diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_bo.c > b/src/gallium/winsys/radeon/drm/radeon_drm_bo.c > index 2c10e2e..58b52a4 100644 > --- a/src/gallium/winsys/radeon/drm/radeon_drm_bo.c > +++ b/src/gallium/winsys/radeon/drm/radeon_drm_bo.c > @@ -555,8 +555,10 @@ static struct radeon_bo *radeon_create_bo(struct > radeon_drm_winsys *rws, > > if (rws->info.has_virtual_memory) { > struct drm_radeon_gem_va va; > + unsigned va_gap_size; > > - bo->va = radeon_bomgr_find_va(rws, size, alignment); > + va_gap_size = rws->check_vm ? MAX2(4 * alignment, 64 * 1024) : 0; > + bo->va = radeon_bomgr_find_va(rws, size + va_gap_size, alignment); > > va.handle = bo->handle; > va.vm_id = 0; > diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c > b/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c > index 1f296f4..625ea8a 100644 > --- a/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c > +++ b/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c > @@ -527,6 +527,8 @@ static boolean do_winsys_init(struct radeon_drm_winsys > *ws) > (ws->info.family == CHIP_HAWAII && > ws->accel_working2 < 3); > > + ws->check_vm = strstr(debug_get_option("R600_DEBUG", ""), "check_vm") != > NULL; > + > return TRUE; > } > > @@ -742,7 +744,7 @@ radeon_drm_winsys_create(int fd, radeon_screen_create_t > screen_create) > if (!do_winsys_init(ws)) > goto fail1; > > - pb_cache_init(&ws->bo_cache, 500000, 2.0f, 0, > + pb_cache_init(&ws->bo_cache, 500000, ws->check_vm ? 1.0f : 2.0f, 0, > MIN2(ws->info.vram_size, ws->info.gart_size), > radeon_bo_destroy, > radeon_bo_can_reclaim); > diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_winsys.h > b/src/gallium/winsys/radeon/drm/radeon_drm_winsys.h > index c429aba..fdbaebe 100644 > --- a/src/gallium/winsys/radeon/drm/radeon_drm_winsys.h > +++ b/src/gallium/winsys/radeon/drm/radeon_drm_winsys.h > @@ -91,6 +91,7 @@ struct radeon_drm_winsys { > > uint64_t va_offset; > struct list_head va_holes; > + bool check_vm; > > struct radeon_surface_manager *surf_man; > > -- > 2.7.4 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev