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

Author: Brian Paul <bri...@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;

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to