st/mesa: fix changing internal format via RenderbufferStorage
authorMarek Olšák <maraeo@gmail.com>
Sat, 28 May 2011 12:28:19 +0000 (14:28 +0200)
committerMarek Olšák <maraeo@gmail.com>
Mon, 30 May 2011 08:49:21 +0000 (10:49 +0200)
The problem is: The second time the function is called with a new
internal format, strb->format is usually not PIPE_FORMAT_NONE.

RenderbufferStorage(... GL_RGBA8 ...);
RenderbufferStorage(... GL_RGBA16 ...); // had no effect on the format

Broken with: fd6f2d6e5783d8810d0ab88e1c470958fd5eb2eb
Test: piglit/fbo-storage-completeness

NOTE: This is a candidate for the 7.10 branch.
(if fd6f2d6e5783d8810d0ab88e1c470958fd5eb2eb is cherry-picked as well)

Reviewed-by: Brian Paul <brianp@vmware.com>
src/mesa/state_tracker/st_cb_fbo.c

index 755b6bcf967122a85f36b4a670f53d35b9400d4e..64424f77634747fa720a95c30a69ba234a133745 100644 (file)
@@ -74,11 +74,8 @@ st_renderbuffer_alloc_storage(struct gl_context * ctx,
    enum pipe_format format;
    struct pipe_surface surf_tmpl;
 
-   if (strb->format != PIPE_FORMAT_NONE)
-      format = strb->format;
-   else
-      format = st_choose_renderbuffer_format(screen, internalFormat,
-                                             rb->NumSamples);
+   format = st_choose_renderbuffer_format(screen, internalFormat,
+                                          rb->NumSamples);
 
    if (format == PIPE_FORMAT_NONE) {
       return FALSE;