summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/mesa/pipe/softpipe/sp_clear.c3
-rw-r--r--src/mesa/pipe/softpipe/sp_region.c8
2 files changed, 10 insertions, 1 deletions
diff --git a/src/mesa/pipe/softpipe/sp_clear.c b/src/mesa/pipe/softpipe/sp_clear.c
index 6e5e5106379..caa6ac1c84c 100644
--- a/src/mesa/pipe/softpipe/sp_clear.c
+++ b/src/mesa/pipe/softpipe/sp_clear.c
@@ -55,5 +55,8 @@ softpipe_clear(struct pipe_context *pipe, struct pipe_surface *ps,
w = softpipe->framebuffer.cbufs[0]->width;
h = softpipe->framebuffer.cbufs[0]->height;
+ assert(w <= ps->region->pitch);
+ assert(h <= ps->region->height);
+
pipe->region_fill(pipe, ps->region, 0, x, y, w, h, clearValue);
}
diff --git a/src/mesa/pipe/softpipe/sp_region.c b/src/mesa/pipe/softpipe/sp_region.c
index 231ea1ea223..25d0a419aa3 100644
--- a/src/mesa/pipe/softpipe/sp_region.c
+++ b/src/mesa/pipe/softpipe/sp_region.c
@@ -33,6 +33,7 @@
#include "sp_context.h"
#include "sp_region.h"
+#include "pipe/p_util.h"
#include "pipe/p_winsys.h"
#include "pipe/p_defines.h"
@@ -86,7 +87,7 @@ sp_region_alloc(struct pipe_context *pipe,
unsigned cpp, unsigned width, unsigned height, unsigned flags)
{
struct softpipe_context *sp = softpipe_context( pipe );
- struct pipe_region *region = calloc(sizeof(*region), 1);
+ struct pipe_region *region = CALLOC_STRUCT(pipe_region);
const unsigned alignment = 64;
region->cpp = cpp;
@@ -94,6 +95,8 @@ sp_region_alloc(struct pipe_context *pipe,
region->height = height;
region->refcount = 1;
+ assert(region->pitch > 0);
+
region->buffer = sp->pipe.winsys->buffer_create( sp->pipe.winsys, alignment );
/* NULL data --> just allocate the space */
@@ -233,6 +236,9 @@ sp_region_fill(struct pipe_context *pipe,
{
unsigned i, j;
+ assert(dst->pitch > 0);
+ assert(width <= dst->pitch);
+
(void)pipe->region_map(pipe, dst);
switch (dst->cpp) {