diff --git a/src/sna/gen2_render.c b/src/sna/gen2_render.c index 9717aac3..e1b31d77 100644 --- a/src/sna/gen2_render.c +++ b/src/sna/gen2_render.c @@ -524,7 +524,7 @@ gen2_get_batch(struct sna *sna) _kgem_set_mode(&sna->kgem, KGEM_RENDER); } - if (sna->kgem.nreloc + 3 > KGEM_RELOC_SIZE(&sna->kgem)) { + if (!kgem_check_reloc(&sna->kgem, 3)) { DBG(("%s: flushing batch: reloc %d >= %d\n", __FUNCTION__, sna->kgem.nreloc + 3, @@ -533,7 +533,7 @@ gen2_get_batch(struct sna *sna) _kgem_set_mode(&sna->kgem, KGEM_RENDER); } - if (sna->kgem.nexec + 3 > KGEM_EXEC_SIZE(&sna->kgem)) { + if (!kgem_check_exec(&sna->kgem, 3)) { DBG(("%s: flushing batch: exec %d >= %d\n", __FUNCTION__, sna->kgem.nexec + 1, diff --git a/src/sna/gen3_render.c b/src/sna/gen3_render.c index 39601d91..a0de1ee8 100644 --- a/src/sna/gen3_render.c +++ b/src/sna/gen3_render.c @@ -1314,7 +1314,7 @@ gen3_get_batch(struct sna *sna) _kgem_set_mode(&sna->kgem, KGEM_RENDER); } - if (sna->kgem.nreloc > KGEM_RELOC_SIZE(&sna->kgem) - MAX_OBJECTS) { + if (!kgem_check_reloc(&sna->kgem, MAX_OBJECTS)) { DBG(("%s: flushing batch: reloc %d >= %d\n", __FUNCTION__, sna->kgem.nreloc, @@ -1323,7 +1323,7 @@ gen3_get_batch(struct sna *sna) _kgem_set_mode(&sna->kgem, KGEM_RENDER); } - if (sna->kgem.nexec > KGEM_EXEC_SIZE(&sna->kgem) - MAX_OBJECTS - 1) { + if (!kgem_check_exec(&sna->kgem, MAX_OBJECTS)) { DBG(("%s: flushing batch: exec %d >= %d\n", __FUNCTION__, sna->kgem.nexec, @@ -1792,9 +1792,9 @@ static int gen3_get_rectangles__flush(struct sna *sna, { if (!kgem_check_batch(&sna->kgem, op->need_magic_ca_pass ? 105: 5)) return 0; - if (sna->kgem.nexec > KGEM_EXEC_SIZE(&sna->kgem) - 2) + if (!kgem_check_exec(&sna->kgem, 1)) return 0; - if (sna->kgem.nreloc > KGEM_RELOC_SIZE(&sna->kgem) - 1) + if (!kgem_check_reloc(&sna->kgem, 1)) return 0; if (op->need_magic_ca_pass && sna->render.vbo) diff --git a/src/sna/gen4_render.c b/src/sna/gen4_render.c index 86e9ff86..3372e7ed 100644 --- a/src/sna/gen4_render.c +++ b/src/sna/gen4_render.c @@ -1157,9 +1157,9 @@ static int gen4_get_rectangles__flush(struct sna *sna, { if (!kgem_check_batch(&sna->kgem, 25)) return 0; - if (sna->kgem.nexec > KGEM_EXEC_SIZE(&sna->kgem) - 1) + if (!kgem_check_exec(&sna->kgem, 1)) return 0; - if (sna->kgem.nreloc > KGEM_RELOC_SIZE(&sna->kgem) - 1) + if (!kgem_check_reloc(&sna->kgem, 1)) return 0; if (op->need_magic_ca_pass && sna->render.vbo) diff --git a/src/sna/gen5_render.c b/src/sna/gen5_render.c index 85343d80..b4d92030 100644 --- a/src/sna/gen5_render.c +++ b/src/sna/gen5_render.c @@ -1161,9 +1161,9 @@ static int gen5_get_rectangles__flush(struct sna *sna, { if (!kgem_check_batch(&sna->kgem, op->need_magic_ca_pass ? 20 : 6)) return 0; - if (sna->kgem.nexec > KGEM_EXEC_SIZE(&sna->kgem) - 1) + if (!kgem_check_exec(&sna->kgem, 1)) return 0; - if (sna->kgem.nreloc > KGEM_RELOC_SIZE(&sna->kgem) - 2) + if (!kgem_check_reloc(&sna->kgem, 2)) return 0; if (op->need_magic_ca_pass && sna->render.vbo) diff --git a/src/sna/gen6_render.c b/src/sna/gen6_render.c index 1613749f..f3b75370 100644 --- a/src/sna/gen6_render.c +++ b/src/sna/gen6_render.c @@ -1543,9 +1543,9 @@ static int gen6_get_rectangles__flush(struct sna *sna, { if (!kgem_check_batch(&sna->kgem, op->need_magic_ca_pass ? 65 : 5)) return 0; - if (sna->kgem.nexec > KGEM_EXEC_SIZE(&sna->kgem) - 1) + if (!kgem_check_exec(&sna->kgem, 1)) return 0; - if (sna->kgem.nreloc > KGEM_RELOC_SIZE(&sna->kgem) - 2) + if (!kgem_check_reloc(&sna->kgem, 2)) return 0; if (op->need_magic_ca_pass && sna->render.vbo) diff --git a/src/sna/gen7_render.c b/src/sna/gen7_render.c index 5492c23b..362ddff4 100644 --- a/src/sna/gen7_render.c +++ b/src/sna/gen7_render.c @@ -1647,9 +1647,9 @@ static int gen7_get_rectangles__flush(struct sna *sna, { if (!kgem_check_batch(&sna->kgem, op->need_magic_ca_pass ? 65 : 6)) return 0; - if (sna->kgem.nexec > KGEM_EXEC_SIZE(&sna->kgem) - 1) + if (!kgem_check_exec(&sna->kgem, 1)) return 0; - if (sna->kgem.nreloc > KGEM_RELOC_SIZE(&sna->kgem) - 2) + if (!kgem_check_reloc(&sna->kgem, 2)) return 0; if (op->need_magic_ca_pass && sna->render.vbo) diff --git a/src/sna/kgem.h b/src/sna/kgem.h index 11950e41..c1206811 100644 --- a/src/sna/kgem.h +++ b/src/sna/kgem.h @@ -330,7 +330,8 @@ static inline bool kgem_check_batch_with_surfaces(struct kgem *kgem, int num_surfaces) { return (int)(kgem->nbatch + num_dwords + KGEM_BATCH_RESERVED) <= (int)(kgem->surface - num_surfaces*8) && - kgem_check_reloc(kgem, num_surfaces); + kgem_check_reloc(kgem, num_surfaces) && + kgem_check_exec(kgem, num_surfaces); } static inline uint32_t *kgem_get_batch(struct kgem *kgem, int num_dwords)