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>
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;