Mesa (9.1): llvmpipe: add some scene limit sanity check assertions

Ian Romanick idr at kemper.freedesktop.org
Mon Mar 25 21:23:58 UTC 2013


Module: Mesa
Branch: 9.1
Commit: 68e25de7d4d6d09fc639d91993842e8805d9e419
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=68e25de7d4d6d09fc639d91993842e8805d9e419

Author: Brian Paul <brianp at vmware.com>
Date:   Mon Mar  4 14:38:20 2013 -0700

llvmpipe: add some scene limit sanity check assertions

Note: This is a candidate for the stable branches.

Reviewed-by: José Fonseca <jfonseca at vmware.com>
(cherry picked from commit a51b81558f5cbe477ceb93d687a356f945f220af)

---

 src/gallium/drivers/llvmpipe/lp_scene.c |   22 ++++++++++++++++++++++
 1 files changed, 22 insertions(+), 0 deletions(-)

diff --git a/src/gallium/drivers/llvmpipe/lp_scene.c b/src/gallium/drivers/llvmpipe/lp_scene.c
index 328c0f7..e145391 100644
--- a/src/gallium/drivers/llvmpipe/lp_scene.c
+++ b/src/gallium/drivers/llvmpipe/lp_scene.c
@@ -64,6 +64,28 @@ lp_scene_create( struct pipe_context *pipe )
 
    pipe_mutex_init(scene->mutex);
 
+#ifdef DEBUG
+   /* Do some scene limit sanity checks here */
+   {
+      size_t maxBins = TILES_X * TILES_Y;
+      size_t maxCommandBytes = sizeof(struct cmd_block) * maxBins;
+      size_t maxCommandPlusData = maxCommandBytes + DATA_BLOCK_SIZE;
+      /* We'll need at least one command block per bin.  Make sure that's
+       * less than the max allowed scene size.
+       */
+      assert(maxCommandBytes < LP_SCENE_MAX_SIZE);
+      /* We'll also need space for at least one other data block */
+      assert(maxCommandPlusData <= LP_SCENE_MAX_SIZE);
+
+      /* Ideally, the size of a cmd_block object will be a power of two
+       * in order to avoid wasting space when we allocation them from
+       * data blocks (which are power of two also).
+       */
+      assert(sizeof(struct cmd_block) ==
+             util_next_power_of_two(sizeof(struct cmd_block)));
+   }
+#endif
+
    return scene;
 }
 




More information about the mesa-commit mailing list