From 4b15b5e803eb4705f8532e6cc41cfdc8bd065de9 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Mon, 12 Mar 2018 10:21:21 +1000 Subject: [PATCH] virgl: resize resource bo allocation if we need to. This fixes an illegal command buffer on the host seen with piglit arb_internalformat_query2-max-dimensions Signed-off-by: Dave Airlie --- src/gallium/winsys/virgl/drm/virgl_drm_winsys.c | 8 ++++++-- src/gallium/winsys/virgl/vtest/virgl_vtest_winsys.c | 8 ++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/gallium/winsys/virgl/drm/virgl_drm_winsys.c b/src/gallium/winsys/virgl/drm/virgl_drm_winsys.c index 7785468..cf3c3ba 100644 --- a/src/gallium/winsys/virgl/drm/virgl_drm_winsys.c +++ b/src/gallium/winsys/virgl/drm/virgl_drm_winsys.c @@ -620,8 +620,12 @@ static void virgl_drm_add_res(struct virgl_drm_winsys *qdws, unsigned hash = res->res_handle & (sizeof(cbuf->is_handle_added)-1); if (cbuf->cres > cbuf->nres) { - fprintf(stderr,"failure to add relocation\n"); - return; + cbuf->nres += 256; + cbuf->res_bo = realloc(cbuf->res_bo, cbuf->nres * sizeof(struct virgl_hw_buf*)); + if (!cbuf->res_bo) { + fprintf(stderr,"failure to add relocation %d, %d\n", cbuf->cres, cbuf->nres); + return; + } } cbuf->res_bo[cbuf->cres] = NULL; diff --git a/src/gallium/winsys/virgl/vtest/virgl_vtest_winsys.c b/src/gallium/winsys/virgl/vtest/virgl_vtest_winsys.c index f62d0d0..9a96c6e 100644 --- a/src/gallium/winsys/virgl/vtest/virgl_vtest_winsys.c +++ b/src/gallium/winsys/virgl/vtest/virgl_vtest_winsys.c @@ -460,8 +460,12 @@ static void virgl_vtest_add_res(struct virgl_vtest_winsys *vtws, unsigned hash = res->res_handle & (sizeof(cbuf->is_handle_added)-1); if (cbuf->cres > cbuf->nres) { - fprintf(stderr,"failure to add relocation\n"); - return; + cbuf->nres += 256; + cbuf->res_bo = realloc(cbuf->res_bo, cbuf->nres * sizeof(struct virgl_hw_buf*)); + if (!cbuf->res_bo) { + fprintf(stderr,"failure to add relocation %d, %d\n", cbuf->cres, cbuf->nres); + return; + } } cbuf->res_bo[cbuf->cres] = NULL; -- 2.7.4