diff options
Diffstat (limited to 'src/gallium/state_trackers/osmesa/osmesa.c')
-rw-r--r-- | src/gallium/state_trackers/osmesa/osmesa.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/gallium/state_trackers/osmesa/osmesa.c b/src/gallium/state_trackers/osmesa/osmesa.c index 8b30025b717..6b27c8af12c 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, |