From 3cafb2cda8e4ac56eba7716027c977725b7d8f85 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Sat, 1 Mar 2014 11:16:27 -0700 Subject: [PATCH] st/osmesa: check buffer size when searching for buffers Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=75543 Cc: "10.1" --- src/gallium/state_trackers/osmesa/osmesa.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/gallium/state_trackers/osmesa/osmesa.c b/src/gallium/state_trackers/osmesa/osmesa.c index 8b30025..6b27c8a 100644 --- a/src/gallium/state_trackers/osmesa/osmesa.c +++ b/src/gallium/state_trackers/osmesa/osmesa.c @@ -480,12 +480,13 @@ osmesa_create_buffer(enum pipe_format color_format, /** - * Search linked list for a buffer with matching pixel formats. + * Search linked list for a buffer with matching pixel formats and size. */ static struct osmesa_buffer * osmesa_find_buffer(enum pipe_format color_format, enum pipe_format ds_format, - enum pipe_format accum_format) + enum pipe_format accum_format, + GLsizei width, GLsizei height) { struct osmesa_buffer *b; @@ -493,7 +494,9 @@ osmesa_find_buffer(enum pipe_format color_format, for (b = BufferList; b; b = b->next) { if (b->visual.color_format == color_format && b->visual.depth_stencil_format == ds_format && - b->visual.accum_format == accum_format) { + b->visual.accum_format == accum_format && + b->width == width && + b->height == height) { return b; } } @@ -673,7 +676,7 @@ OSMesaMakeCurrent(OSMesaContext osmesa, void *buffer, GLenum type, /* See if we already have a buffer that uses these pixel formats */ osbuffer = osmesa_find_buffer(color_format, osmesa->depth_stencil_format, - osmesa->accum_format); + osmesa->accum_format, width, height); if (!osbuffer) { /* Existing buffer found, create new buffer */ osbuffer = osmesa_create_buffer(color_format, -- 1.7.10.4