Mesa (master): st/osmesa: check buffer size when searching for buffers

Brian Paul brianp at kemper.freedesktop.org
Tue Mar 4 15:50:04 UTC 2014


Module: Mesa
Branch: master
Commit: cbacee207faf866b0444beb583d3d6f341a8ee78
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=cbacee207faf866b0444beb583d3d6f341a8ee78

Author: Brian Paul <brianp at vmware.com>
Date:   Sat Mar  1 11:16:27 2014 -0700

st/osmesa: check buffer size when searching for buffers

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=75543
Cc: "10.1" <mesa-stable at lists.freedesktop.org>

---

 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,




More information about the mesa-commit mailing list