From 37406c2038c418a1d6f26b5ac5691586c9f05631 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Tue, 11 Dec 2007 13:21:14 -0800 Subject: [PATCH] [intel] Assert against conflicting relocation emits in bufmgr_fake.c --- src/mesa/drivers/dri/common/dri_bufmgr_fake.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/mesa/drivers/dri/common/dri_bufmgr_fake.c b/src/mesa/drivers/dri/common/dri_bufmgr_fake.c index b9c6bba22aa..5cd96f0821d 100644 --- a/src/mesa/drivers/dri/common/dri_bufmgr_fake.c +++ b/src/mesa/drivers/dri/common/dri_bufmgr_fake.c @@ -962,6 +962,7 @@ dri_fake_emit_reloc(dri_bo *reloc_buf, uint64_t flags, GLuint delta, struct fake_buffer_reloc *r = &bufmgr_fake->reloc[bufmgr_fake->nr_relocs++]; dri_bo_fake *target_fake = (dri_bo_fake *)target_buf; dri_bo_fake *reloc_fake = (dri_bo_fake *)reloc_buf; + int i; assert(bufmgr_fake->nr_relocs <= MAX_RELOCS); @@ -987,6 +988,17 @@ dri_fake_emit_reloc(dri_bo *reloc_buf, uint64_t flags, GLuint delta, r->delta = delta; r->validate_flags = flags; + /* Check that a conflicting relocation hasn't already been emitted. */ + for (i = 0; i < bufmgr_fake->nr_relocs - 1; i++) { + struct fake_buffer_reloc *r2 = &bufmgr_fake->reloc[i]; + + assert(r->reloc_buf != r2->reloc_buf || + r->offset != r2->offset || + (r->target_buf == r2->target_buf && + r->delta == r2->delta && + r->validate_flags == r2->validate_flags)); + } + return; } -- 2.30.2