From e0f7e9fc2f0b39b9e939ff48edea29950f125420 Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Mon, 8 Sep 2014 16:49:29 +0100 Subject: [PATCH] sna: Initialise and check for batch space commit 30932a7b9d255c2037bee19e01aa3edc37b07386 Author: Chris Wilson Date: Mon Sep 8 12:41:06 2014 +0100 sna: Avoid u16 underflow when computing reserved batch space relied on gcc a little to much to warn me when I missed initialising 'rem' References: https://bugs.freedesktop.org/show_bug.cgi?id=77074 Signed-off-by: Chris Wilson --- src/sna/sna_blt.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/sna/sna_blt.c b/src/sna/sna_blt.c index 25b6ef55..17ed828f 100644 --- a/src/sna/sna_blt.c +++ b/src/sna/sna_blt.c @@ -176,7 +176,8 @@ static bool sna_blt_fill_init(struct sna *sna, { uint32_t *b; - if (!kgem_check_reloc(kgem, 1)) { + if (!kgem_check_batch(kgem, 24) || + !kgem_check_reloc(kgem, 1)) { _kgem_submit(kgem); if (!kgem_check_bo_fenced(kgem, bo)) return false; @@ -1799,6 +1800,7 @@ static void blt_composite_copy_boxes__thread64(struct sna *sna, int nbox_this_time, rem; nbox_this_time = nbox; + rem = kgem_batch_space(kgem); if (10*nbox_this_time > rem) nbox_this_time = rem / 10; if (2*nbox_this_time > KGEM_RELOC_SIZE(kgem) - kgem->nreloc) @@ -3496,7 +3498,8 @@ bool sna_blt_fill_boxes(struct sna *sna, uint8_t alu, { uint32_t *b; - if (!kgem_check_reloc(kgem, 1)) { + if (!kgem_check_batch(kgem, 24) || + !kgem_check_reloc(kgem, 1)) { _kgem_submit(kgem); if (!kgem_check_bo_fenced(&sna->kgem, bo)) return false; @@ -3556,6 +3559,7 @@ bool sna_blt_fill_boxes(struct sna *sna, uint8_t alu, int nbox_this_time, rem; nbox_this_time = nbox; + rem = kgem_batch_space(kgem); if (3*nbox_this_time > rem) nbox_this_time = rem / 3; assert(nbox_this_time); @@ -3632,6 +3636,7 @@ bool sna_blt_fill_boxes(struct sna *sna, uint8_t alu, kgem->nbatch += 9; } assert(kgem->nbatch < kgem->surface); + assert(kgem_check_batch(kgem, 3)); } } while (nbox);