Mesa (7.10): st/mesa: fix software accum buffer format bug

Brian Paul brianp at kemper.freedesktop.org
Fri Jun 10 21:26:27 UTC 2011


Module: Mesa
Branch: 7.10
Commit: 3b89e1c0e608417146c50d301c2755fd434a8f78
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=3b89e1c0e608417146c50d301c2755fd434a8f78

Author: Brian Paul <brianp at vmware.com>
Date:   Fri Jun 10 14:08:28 2011 -0600

st/mesa: fix software accum buffer format bug

---

 src/mesa/state_tracker/st_cb_fbo.c |   12 +++++++++---
 1 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/mesa/state_tracker/st_cb_fbo.c b/src/mesa/state_tracker/st_cb_fbo.c
index 4f43411..3d0886b 100644
--- a/src/mesa/state_tracker/st_cb_fbo.c
+++ b/src/mesa/state_tracker/st_cb_fbo.c
@@ -72,8 +72,14 @@ st_renderbuffer_alloc_storage(struct gl_context * ctx, struct gl_renderbuffer *r
    enum pipe_format format;
    struct pipe_surface surf_tmpl;
 
-   format = st_choose_renderbuffer_format(screen, internalFormat,
-                                          rb->NumSamples);
+   if (strb->software && internalFormat == GL_RGBA16_SNORM) {
+      /* special case for software accum buffer */
+      format = PIPE_FORMAT_R16G16B16A16_SNORM;
+   }
+   else {
+      format = st_choose_renderbuffer_format(screen, internalFormat,
+                                             rb->NumSamples);
+   }
 
    if (format == PIPE_FORMAT_NONE) {
       return FALSE;
@@ -268,7 +274,7 @@ st_new_renderbuffer_fb(enum pipe_format format, int samples, boolean sw)
       strb->Base.InternalFormat = GL_STENCIL_INDEX8_EXT;
       break;
    case PIPE_FORMAT_R16G16B16A16_SNORM:
-      strb->Base.InternalFormat = GL_RGBA16;
+      strb->Base.InternalFormat = GL_RGBA16_SNORM;
       break;
    case PIPE_FORMAT_R8_UNORM:
       strb->Base.InternalFormat = GL_R8;




More information about the mesa-commit mailing list