Module: Mesa
Branch: master
Commit: 4b15b5e803eb4705f8532e6cc41cfdc8bd065de9
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=4b15b5e803eb4705f8532e6cc41cfdc8bd065de9

Author: Dave Airlie <airl...@redhat.com>
Date:   Mon Mar 12 10:21:21 2018 +1000

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 <airl...@redhat.com>

---

 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 77854680e5..cf3c3bac4b 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 f62d0d0981..9a96c6eb83 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;

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to