From: Eric Anholt Date: Tue, 11 Dec 2007 21:21:14 +0000 (-0800) Subject: [intel] Assert against conflicting relocation emits in bufmgr_fake.c X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=37406c2038c418a1d6f26b5ac5691586c9f05631;p=mesa.git [intel] Assert against conflicting relocation emits in bufmgr_fake.c --- 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; }