summaryrefslogtreecommitdiffstats
path: root/src/mesa/swrast
diff options
context:
space:
mode:
Diffstat (limited to 'src/mesa/swrast')
-rw-r--r--src/mesa/swrast/s_renderbuffer.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/mesa/swrast/s_renderbuffer.c b/src/mesa/swrast/s_renderbuffer.c
index f0dbb012bdf..378e3a7e39a 100644
--- a/src/mesa/swrast/s_renderbuffer.c
+++ b/src/mesa/swrast/s_renderbuffer.c
@@ -58,6 +58,7 @@ soft_renderbuffer_storage(struct gl_context *ctx, struct gl_renderbuffer *rb,
GLuint width, GLuint height)
{
struct swrast_renderbuffer *srb = swrast_renderbuffer(rb);
+ GLuint bpp;
switch (internalFormat) {
case GL_RGB:
@@ -115,25 +116,26 @@ soft_renderbuffer_storage(struct gl_context *ctx, struct gl_renderbuffer *rb,
return GL_FALSE;
}
+ bpp = _mesa_get_format_bytes(rb->Format);
+
/* free old buffer storage */
if (srb->Buffer) {
free(srb->Buffer);
srb->Buffer = NULL;
}
- srb->RowStride = width * _mesa_get_format_bytes(rb->Format);
+ srb->RowStride = width * bpp;
if (width > 0 && height > 0) {
/* allocate new buffer storage */
- srb->Buffer = malloc(width * height
- * _mesa_get_format_bytes(rb->Format));
+ srb->Buffer = malloc(srb->RowStride * height);
if (srb->Buffer == NULL) {
rb->Width = 0;
rb->Height = 0;
_mesa_error(ctx, GL_OUT_OF_MEMORY,
"software renderbuffer allocation (%d x %d x %d)",
- width, height, _mesa_get_format_bytes(rb->Format));
+ width, height, bpp);
return GL_FALSE;
}
}