From: Marek Olšák Date: Sat, 4 Aug 2012 18:02:30 +0000 (+0200) Subject: winsys/radeon: print error if CS is overflowed X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=a7f4d3b740d4c85b0dc2b006c30c2bc4a3ed8597;p=mesa.git winsys/radeon: print error if CS is overflowed and don't submit the CS to the kernel. --- diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_cs.c b/src/gallium/winsys/radeon/drm/radeon_drm_cs.c index 186c5bce9ca..7e0f2f98a3b 100644 --- a/src/gallium/winsys/radeon/drm/radeon_drm_cs.c +++ b/src/gallium/winsys/radeon/drm/radeon_drm_cs.c @@ -438,6 +438,10 @@ static void radeon_drm_cs_flush(struct radeon_winsys_cs *rcs, unsigned flags) struct radeon_drm_cs *cs = radeon_drm_cs(rcs); struct radeon_cs_context *tmp; + if (rcs->cdw > RADEON_MAX_CMDBUF_DWORDS) { + fprintf(stderr, "radeon: command stream overflowed\n"); + } + radeon_drm_cs_sync_flush(cs); /* Flip command streams. */ @@ -445,8 +449,8 @@ static void radeon_drm_cs_flush(struct radeon_winsys_cs *rcs, unsigned flags) cs->csc = cs->cst; cs->cst = tmp; - /* If the CS is not empty, emit it in a separate thread. */ - if (cs->base.cdw) { + /* If the CS is not empty or overflowed, emit it in a separate thread. */ + if (cs->base.cdw && cs->base.cdw <= RADEON_MAX_CMDBUF_DWORDS) { unsigned i, crelocs = cs->cst->crelocs; cs->cst->chunks[0].length_dw = cs->base.cdw;