diff options
Diffstat (limited to 'src/mesa/main/renderbuffer.c')
| -rw-r--r-- | src/mesa/main/renderbuffer.c | 255 | 
1 files changed, 81 insertions, 174 deletions
| diff --git a/src/mesa/main/renderbuffer.c b/src/mesa/main/renderbuffer.c index 5bef7c84fb..3bb062bae2 100644 --- a/src/mesa/main/renderbuffer.c +++ b/src/mesa/main/renderbuffer.c @@ -43,6 +43,8 @@  #include "glheader.h"  #include "imports.h"  #include "context.h" +#include "fbobject.h" +#include "formats.h"  #include "mtypes.h"  #include "fbobject.h"  #include "renderbuffer.h" @@ -72,7 +74,7 @@ get_pointer_ubyte(GLcontext *ctx, struct gl_renderbuffer *rb,     if (!rb->Data)        return NULL;     ASSERT(rb->DataType == GL_UNSIGNED_BYTE); -   /* Can't assert _ActualFormat since these funcs may be used for serveral +   /* Can't assert rb->Format since these funcs may be used for serveral      * different formats (GL_ALPHA8, GL_STENCIL_INDEX8, etc).      */     return (GLubyte *) rb->Data + y * rb->Width + x; @@ -448,7 +450,7 @@ static void *  get_pointer_ubyte3(GLcontext *ctx, struct gl_renderbuffer *rb,                     GLint x, GLint y)  { -   ASSERT(rb->_ActualFormat == GL_RGB8); +   ASSERT(rb->Format == MESA_FORMAT_RGB888);     /* No direct access since this buffer is RGB but caller will be      * treating it as if it were RGBA.      */ @@ -463,7 +465,7 @@ get_row_ubyte3(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count,     const GLubyte *src = (const GLubyte *) rb->Data + 3 * (y * rb->Width + x);     GLubyte *dst = (GLubyte *) values;     GLuint i; -   ASSERT(rb->_ActualFormat == GL_RGB8); +   ASSERT(rb->Format == MESA_FORMAT_RGB888);     ASSERT(rb->DataType == GL_UNSIGNED_BYTE);     for (i = 0; i < count; i++) {        dst[i * 4 + 0] = src[i * 3 + 0]; @@ -480,7 +482,7 @@ get_values_ubyte3(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count,  {     GLubyte *dst = (GLubyte *) values;     GLuint i; -   ASSERT(rb->_ActualFormat == GL_RGB8); +   ASSERT(rb->Format == MESA_FORMAT_RGB888);     ASSERT(rb->DataType == GL_UNSIGNED_BYTE);     for (i = 0; i < count; i++) {        const GLubyte *src @@ -501,7 +503,7 @@ put_row_ubyte3(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count,     const GLubyte *src = (const GLubyte *) values;     GLubyte *dst = (GLubyte *) rb->Data + 3 * (y * rb->Width + x);     GLuint i; -   ASSERT(rb->_ActualFormat == GL_RGB8); +   ASSERT(rb->Format == MESA_FORMAT_RGB888);     ASSERT(rb->DataType == GL_UNSIGNED_BYTE);     for (i = 0; i < count; i++) {        if (!mask || mask[i]) { @@ -521,7 +523,7 @@ put_row_rgb_ubyte3(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count,     const GLubyte *src = (const GLubyte *) values;     GLubyte *dst = (GLubyte *) rb->Data + 3 * (y * rb->Width + x);     GLuint i; -   ASSERT(rb->_ActualFormat == GL_RGB8); +   ASSERT(rb->Format == MESA_FORMAT_RGB888);     ASSERT(rb->DataType == GL_UNSIGNED_BYTE);     for (i = 0; i < count; i++) {        if (!mask || mask[i]) { @@ -542,7 +544,7 @@ put_mono_row_ubyte3(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count,     const GLubyte val1 = ((const GLubyte *) value)[1];     const GLubyte val2 = ((const GLubyte *) value)[2];     GLubyte *dst = (GLubyte *) rb->Data + 3 * (y * rb->Width + x); -   ASSERT(rb->_ActualFormat == GL_RGB8); +   ASSERT(rb->Format == MESA_FORMAT_RGB888);     ASSERT(rb->DataType == GL_UNSIGNED_BYTE);     if (!mask && val0 == val1 && val1 == val2) {        /* optimized case */ @@ -569,7 +571,7 @@ put_values_ubyte3(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count,     /* note: incoming values are RGB+A! */     const GLubyte *src = (const GLubyte *) values;     GLuint i; -   ASSERT(rb->_ActualFormat == GL_RGB8); +   ASSERT(rb->Format == MESA_FORMAT_RGB888);     ASSERT(rb->DataType == GL_UNSIGNED_BYTE);     for (i = 0; i < count; i++) {        if (!mask || mask[i]) { @@ -592,7 +594,7 @@ put_mono_values_ubyte3(GLcontext *ctx, struct gl_renderbuffer *rb,     const GLubyte val1 = ((const GLubyte *) value)[1];     const GLubyte val2 = ((const GLubyte *) value)[2];     GLuint i; -   ASSERT(rb->_ActualFormat == GL_RGB8); +   ASSERT(rb->Format == MESA_FORMAT_RGB888);     ASSERT(rb->DataType == GL_UNSIGNED_BYTE);     for (i = 0; i < count; i++) {        if (!mask || mask[i]) { @@ -617,7 +619,7 @@ get_pointer_ubyte4(GLcontext *ctx, struct gl_renderbuffer *rb,     if (!rb->Data)        return NULL;     ASSERT(rb->DataType == GL_UNSIGNED_BYTE); -   ASSERT(rb->_ActualFormat == GL_RGBA8); +   ASSERT(rb->Format == MESA_FORMAT_RGBA8888);     return (GLubyte *) rb->Data + 4 * (y * rb->Width + x);  } @@ -628,7 +630,7 @@ get_row_ubyte4(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count,  {     const GLubyte *src = (const GLubyte *) rb->Data + 4 * (y * rb->Width + x);     ASSERT(rb->DataType == GL_UNSIGNED_BYTE); -   ASSERT(rb->_ActualFormat == GL_RGBA8); +   ASSERT(rb->Format == MESA_FORMAT_RGBA8888);     _mesa_memcpy(values, src, 4 * count * sizeof(GLubyte));  } @@ -641,7 +643,7 @@ get_values_ubyte4(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count,     GLuint *dst = (GLuint *) values;     GLuint i;     ASSERT(rb->DataType == GL_UNSIGNED_BYTE); -   ASSERT(rb->_ActualFormat == GL_RGBA8); +   ASSERT(rb->Format == MESA_FORMAT_RGBA8888);     for (i = 0; i < count; i++) {        const GLuint *src = (GLuint *) rb->Data + (y[i] * rb->Width + x[i]);        dst[i] = *src; @@ -657,7 +659,7 @@ put_row_ubyte4(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count,     const GLuint *src = (const GLuint *) values;     GLuint *dst = (GLuint *) rb->Data + (y * rb->Width + x);     ASSERT(rb->DataType == GL_UNSIGNED_BYTE); -   ASSERT(rb->_ActualFormat == GL_RGBA8); +   ASSERT(rb->Format == MESA_FORMAT_RGBA8888);     if (mask) {        GLuint i;        for (i = 0; i < count; i++) { @@ -681,7 +683,7 @@ put_row_rgb_ubyte4(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count,     GLubyte *dst = (GLubyte *) rb->Data + 4 * (y * rb->Width + x);     GLuint i;     ASSERT(rb->DataType == GL_UNSIGNED_BYTE); -   ASSERT(rb->_ActualFormat == GL_RGBA8); +   ASSERT(rb->Format == MESA_FORMAT_RGBA8888);     for (i = 0; i < count; i++) {        if (!mask || mask[i]) {           dst[i * 4 + 0] = src[i * 3 + 0]; @@ -701,7 +703,7 @@ put_mono_row_ubyte4(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count,     const GLuint val = *((const GLuint *) value);     GLuint *dst = (GLuint *) rb->Data + (y * rb->Width + x);     ASSERT(rb->DataType == GL_UNSIGNED_BYTE); -   ASSERT(rb->_ActualFormat == GL_RGBA8); +   ASSERT(rb->Format == MESA_FORMAT_RGBA8888);     if (!mask && val == 0) {        /* common case */        _mesa_bzero(dst, count * 4 * sizeof(GLubyte)); @@ -735,7 +737,7 @@ put_values_ubyte4(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count,     const GLuint *src = (const GLuint *) values;     GLuint i;     ASSERT(rb->DataType == GL_UNSIGNED_BYTE); -   ASSERT(rb->_ActualFormat == GL_RGBA8); +   ASSERT(rb->Format == MESA_FORMAT_RGBA8888);     for (i = 0; i < count; i++) {        if (!mask || mask[i]) {           GLuint *dst = (GLuint *) rb->Data + (y[i] * rb->Width + x[i]); @@ -754,7 +756,7 @@ put_mono_values_ubyte4(GLcontext *ctx, struct gl_renderbuffer *rb,     const GLuint val = *((const GLuint *) value);     GLuint i;     ASSERT(rb->DataType == GL_UNSIGNED_BYTE); -   ASSERT(rb->_ActualFormat == GL_RGBA8); +   ASSERT(rb->Format == MESA_FORMAT_RGBA8888);     for (i = 0; i < count; i++) {        if (!mask || mask[i]) {           GLuint *dst = (GLuint *) rb->Data + (y[i] * rb->Width + x[i]); @@ -947,15 +949,6 @@ _mesa_soft_renderbuffer_storage(GLcontext *ctx, struct gl_renderbuffer *rb,  {     GLuint pixelSize; -   /* first clear these fields */ -   rb->RedBits = -   rb->GreenBits = -   rb->BlueBits = -   rb->AlphaBits = -   rb->IndexBits = -   rb->DepthBits = -   rb->StencilBits = 0; -     switch (internalFormat) {     case GL_RGB:     case GL_R3_G3_B2: @@ -965,8 +958,7 @@ _mesa_soft_renderbuffer_storage(GLcontext *ctx, struct gl_renderbuffer *rb,     case GL_RGB10:     case GL_RGB12:     case GL_RGB16: -      rb->_ActualFormat = GL_RGB8; -      rb->_BaseFormat = GL_RGB; +      rb->Format = MESA_FORMAT_RGB888;        rb->DataType = GL_UNSIGNED_BYTE;        rb->GetPointer = get_pointer_ubyte3;        rb->GetRow = get_row_ubyte3; @@ -976,10 +968,6 @@ _mesa_soft_renderbuffer_storage(GLcontext *ctx, struct gl_renderbuffer *rb,        rb->PutMonoRow = put_mono_row_ubyte3;        rb->PutValues = put_values_ubyte3;        rb->PutMonoValues = put_mono_values_ubyte3; -      rb->RedBits   = 8 * sizeof(GLubyte); -      rb->GreenBits = 8 * sizeof(GLubyte); -      rb->BlueBits  = 8 * sizeof(GLubyte); -      rb->AlphaBits = 0;        pixelSize = 3 * sizeof(GLubyte);        break;     case GL_RGBA: @@ -987,8 +975,11 @@ _mesa_soft_renderbuffer_storage(GLcontext *ctx, struct gl_renderbuffer *rb,     case GL_RGBA4:     case GL_RGB5_A1:     case GL_RGBA8: -      rb->_ActualFormat = GL_RGBA8; -      rb->_BaseFormat = GL_RGBA; +#if 1 +   case GL_RGB10_A2: +   case GL_RGBA12: +#endif +      rb->Format = MESA_FORMAT_RGBA8888;        rb->DataType = GL_UNSIGNED_BYTE;        rb->GetPointer = get_pointer_ubyte4;        rb->GetRow = get_row_ubyte4; @@ -998,18 +989,12 @@ _mesa_soft_renderbuffer_storage(GLcontext *ctx, struct gl_renderbuffer *rb,        rb->PutMonoRow = put_mono_row_ubyte4;        rb->PutValues = put_values_ubyte4;        rb->PutMonoValues = put_mono_values_ubyte4; -      rb->RedBits   = 8 * sizeof(GLubyte); -      rb->GreenBits = 8 * sizeof(GLubyte); -      rb->BlueBits  = 8 * sizeof(GLubyte); -      rb->AlphaBits = 8 * sizeof(GLubyte);        pixelSize = 4 * sizeof(GLubyte);        break; -   case GL_RGB10_A2: -   case GL_RGBA12:     case GL_RGBA16: -      rb->_ActualFormat = GL_RGBA16; -      rb->_BaseFormat = GL_RGBA; -      rb->DataType = GL_UNSIGNED_SHORT; +      /* for accum buffer */ +      rb->Format = MESA_FORMAT_SIGNED_RGBA_16; +      rb->DataType = GL_SHORT;        rb->GetPointer = get_pointer_ushort4;        rb->GetRow = get_row_ushort4;        rb->GetValues = get_values_ushort4; @@ -1018,16 +1003,11 @@ _mesa_soft_renderbuffer_storage(GLcontext *ctx, struct gl_renderbuffer *rb,        rb->PutMonoRow = put_mono_row_ushort4;        rb->PutValues = put_values_ushort4;        rb->PutMonoValues = put_mono_values_ushort4; -      rb->RedBits   = 8 * sizeof(GLushort); -      rb->GreenBits = 8 * sizeof(GLushort); -      rb->BlueBits  = 8 * sizeof(GLushort); -      rb->AlphaBits = 8 * sizeof(GLushort);        pixelSize = 4 * sizeof(GLushort);        break; -#if 00 +#if 0     case GL_ALPHA8: -      rb->_ActualFormat = GL_ALPHA8; -      rb->_BaseFormat = GL_RGBA; /* Yes, not GL_ALPHA! */ +      rb->Format = MESA_FORMAT_A8;        rb->DataType = GL_UNSIGNED_BYTE;        rb->GetPointer = get_pointer_alpha8;        rb->GetRow = get_row_alpha8; @@ -1037,10 +1017,6 @@ _mesa_soft_renderbuffer_storage(GLcontext *ctx, struct gl_renderbuffer *rb,        rb->PutMonoRow = put_mono_row_alpha8;        rb->PutValues = put_values_alpha8;        rb->PutMonoValues = put_mono_values_alpha8; -      rb->RedBits   = 0; /*red*/ -      rb->GreenBits = 0; /*green*/ -      rb->BlueBits  = 0; /*blue*/ -      rb->AlphaBits = 8 * sizeof(GLubyte);        pixelSize = sizeof(GLubyte);        break;  #endif @@ -1048,8 +1024,8 @@ _mesa_soft_renderbuffer_storage(GLcontext *ctx, struct gl_renderbuffer *rb,     case GL_STENCIL_INDEX1_EXT:     case GL_STENCIL_INDEX4_EXT:     case GL_STENCIL_INDEX8_EXT: -      rb->_ActualFormat = GL_STENCIL_INDEX8_EXT; -      rb->_BaseFormat = GL_STENCIL_INDEX; +   case GL_STENCIL_INDEX16_EXT: +      rb->Format = MESA_FORMAT_S8;        rb->DataType = GL_UNSIGNED_BYTE;        rb->GetPointer = get_pointer_ubyte;        rb->GetRow = get_row_ubyte; @@ -1059,28 +1035,11 @@ _mesa_soft_renderbuffer_storage(GLcontext *ctx, struct gl_renderbuffer *rb,        rb->PutMonoRow = put_mono_row_ubyte;        rb->PutValues = put_values_ubyte;        rb->PutMonoValues = put_mono_values_ubyte; -      rb->StencilBits = 8 * sizeof(GLubyte);        pixelSize = sizeof(GLubyte);        break; -   case GL_STENCIL_INDEX16_EXT: -      rb->_ActualFormat = GL_STENCIL_INDEX16_EXT; -      rb->_BaseFormat = GL_STENCIL_INDEX; -      rb->DataType = GL_UNSIGNED_SHORT; -      rb->GetPointer = get_pointer_ushort; -      rb->GetRow = get_row_ushort; -      rb->GetValues = get_values_ushort; -      rb->PutRow = put_row_ushort; -      rb->PutRowRGB = NULL; -      rb->PutMonoRow = put_mono_row_ushort; -      rb->PutValues = put_values_ushort; -      rb->PutMonoValues = put_mono_values_ushort; -      rb->StencilBits = 8 * sizeof(GLushort); -      pixelSize = sizeof(GLushort); -      break;     case GL_DEPTH_COMPONENT:     case GL_DEPTH_COMPONENT16: -      rb->_ActualFormat = GL_DEPTH_COMPONENT16; -      rb->_BaseFormat = GL_DEPTH_COMPONENT; +      rb->Format = MESA_FORMAT_Z16;        rb->DataType = GL_UNSIGNED_SHORT;        rb->GetPointer = get_pointer_ushort;        rb->GetRow = get_row_ushort; @@ -1090,12 +1049,22 @@ _mesa_soft_renderbuffer_storage(GLcontext *ctx, struct gl_renderbuffer *rb,        rb->PutMonoRow = put_mono_row_ushort;        rb->PutValues = put_values_ushort;        rb->PutMonoValues = put_mono_values_ushort; -      rb->DepthBits = 8 * sizeof(GLushort);        pixelSize = sizeof(GLushort);        break;     case GL_DEPTH_COMPONENT24: +      rb->DataType = GL_UNSIGNED_INT; +      rb->GetPointer = get_pointer_uint; +      rb->GetRow = get_row_uint; +      rb->GetValues = get_values_uint; +      rb->PutRow = put_row_uint; +      rb->PutRowRGB = NULL; +      rb->PutMonoRow = put_mono_row_uint; +      rb->PutValues = put_values_uint; +      rb->PutMonoValues = put_mono_values_uint; +      rb->Format = MESA_FORMAT_X8_Z24; +      pixelSize = sizeof(GLuint); +      break;     case GL_DEPTH_COMPONENT32: -      rb->_BaseFormat = GL_DEPTH_COMPONENT;        rb->DataType = GL_UNSIGNED_INT;        rb->GetPointer = get_pointer_uint;        rb->GetRow = get_row_uint; @@ -1105,20 +1074,12 @@ _mesa_soft_renderbuffer_storage(GLcontext *ctx, struct gl_renderbuffer *rb,        rb->PutMonoRow = put_mono_row_uint;        rb->PutValues = put_values_uint;        rb->PutMonoValues = put_mono_values_uint; -      if (internalFormat == GL_DEPTH_COMPONENT24) { -         rb->_ActualFormat = GL_DEPTH_COMPONENT24; -         rb->DepthBits = 24; -      } -      else { -         rb->_ActualFormat = GL_DEPTH_COMPONENT32; -         rb->DepthBits = 32; -      } +      rb->Format = MESA_FORMAT_Z32;        pixelSize = sizeof(GLuint);        break;     case GL_DEPTH_STENCIL_EXT:     case GL_DEPTH24_STENCIL8_EXT: -      rb->_ActualFormat = GL_DEPTH24_STENCIL8_EXT; -      rb->_BaseFormat = GL_DEPTH_STENCIL_EXT; +      rb->Format = MESA_FORMAT_Z24_S8;        rb->DataType = GL_UNSIGNED_INT_24_8_EXT;        rb->GetPointer = get_pointer_uint;        rb->GetRow = get_row_uint; @@ -1128,13 +1089,12 @@ _mesa_soft_renderbuffer_storage(GLcontext *ctx, struct gl_renderbuffer *rb,        rb->PutMonoRow = put_mono_row_uint;        rb->PutValues = put_values_uint;        rb->PutMonoValues = put_mono_values_uint; -      rb->DepthBits = 24; -      rb->StencilBits = 8;        pixelSize = sizeof(GLuint);        break;     case GL_COLOR_INDEX8_EXT: -      rb->_ActualFormat = GL_COLOR_INDEX8_EXT; -      rb->_BaseFormat = GL_COLOR_INDEX; +   case GL_COLOR_INDEX16_EXT: +   case COLOR_INDEX32: +      rb->Format = MESA_FORMAT_CI8;        rb->DataType = GL_UNSIGNED_BYTE;        rb->GetPointer = get_pointer_ubyte;        rb->GetRow = get_row_ubyte; @@ -1144,39 +1104,8 @@ _mesa_soft_renderbuffer_storage(GLcontext *ctx, struct gl_renderbuffer *rb,        rb->PutMonoRow = put_mono_row_ubyte;        rb->PutValues = put_values_ubyte;        rb->PutMonoValues = put_mono_values_ubyte; -      rb->IndexBits = 8 * sizeof(GLubyte);        pixelSize = sizeof(GLubyte);        break; -   case GL_COLOR_INDEX16_EXT: -      rb->_ActualFormat = GL_COLOR_INDEX16_EXT; -      rb->_BaseFormat = GL_COLOR_INDEX; -      rb->DataType = GL_UNSIGNED_SHORT; -      rb->GetPointer = get_pointer_ushort; -      rb->GetRow = get_row_ushort; -      rb->GetValues = get_values_ushort; -      rb->PutRow = put_row_ushort; -      rb->PutRowRGB = NULL; -      rb->PutMonoRow = put_mono_row_ushort; -      rb->PutValues = put_values_ushort; -      rb->PutMonoValues = put_mono_values_ushort; -      rb->IndexBits = 8 * sizeof(GLushort); -      pixelSize = sizeof(GLushort); -      break; -   case COLOR_INDEX32: -      rb->_ActualFormat = COLOR_INDEX32; -      rb->_BaseFormat = GL_COLOR_INDEX; -      rb->DataType = GL_UNSIGNED_INT; -      rb->GetPointer = get_pointer_uint; -      rb->GetRow = get_row_uint; -      rb->GetValues = get_values_uint; -      rb->PutRow = put_row_uint; -      rb->PutRowRGB = NULL; -      rb->PutMonoRow = put_mono_row_uint; -      rb->PutValues = put_values_uint; -      rb->PutMonoValues = put_mono_values_uint; -      rb->IndexBits = 8 * sizeof(GLuint); -      pixelSize = sizeof(GLuint); -      break;     default:        _mesa_problem(ctx, "Bad internalFormat in _mesa_soft_renderbuffer_storage");        return GL_FALSE; @@ -1213,6 +1142,7 @@ _mesa_soft_renderbuffer_storage(GLcontext *ctx, struct gl_renderbuffer *rb,     rb->Width = width;     rb->Height = height; +   rb->_BaseFormat = _mesa_base_fbo_format(ctx, rb->InternalFormat);     return GL_TRUE;  } @@ -1239,7 +1169,7 @@ alloc_storage_alpha8(GLcontext *ctx, struct gl_renderbuffer *arb,                       GLenum internalFormat, GLuint width, GLuint height)  {     ASSERT(arb != arb->Wrapped); -   ASSERT(arb->_ActualFormat == GL_ALPHA8); +   ASSERT(arb->Format == MESA_FORMAT_A8);     /* first, pass the call to the wrapped RGB buffer */     if (!arb->Wrapped->AllocStorage(ctx, arb->Wrapped, internalFormat, @@ -1439,8 +1369,8 @@ put_mono_values_alpha8(GLcontext *ctx, struct gl_renderbuffer *arb,  static void  copy_buffer_alpha8(struct gl_renderbuffer* dst, struct gl_renderbuffer* src)  { -   ASSERT(dst->_ActualFormat == GL_ALPHA8); -   ASSERT(src->_ActualFormat == GL_ALPHA8); +   ASSERT(dst->Format == MESA_FORMAT_A8); +   ASSERT(src->Format == MESA_FORMAT_A8);     ASSERT(dst->Width == src->Width);     ASSERT(dst->Height == src->Height); @@ -1486,16 +1416,7 @@ _mesa_init_renderbuffer(struct gl_renderbuffer *rb, GLuint name)     rb->Width = 0;     rb->Height = 0;     rb->InternalFormat = GL_NONE; -   rb->_ActualFormat = GL_NONE; -   rb->_BaseFormat = GL_NONE; - -   rb->ComponentType = GL_UNSIGNED_NORMALIZED; /* ARB_fbo */ -   rb->ColorEncoding = GL_LINEAR; /* ARB_fbo */ - -   rb->RedBits = rb->GreenBits = rb->BlueBits = rb->AlphaBits = 0; -   rb->IndexBits = 0; -   rb->DepthBits = 0; -   rb->StencilBits = 0; +   rb->Format = MESA_FORMAT_NONE;     rb->DataType = GL_NONE;     rb->Data = NULL; @@ -1612,18 +1533,15 @@ _mesa_add_color_renderbuffers(GLcontext *ctx, struct gl_framebuffer *fb,        if (rgbBits <= 8) {           if (alphaBits) -            rb->_ActualFormat = GL_RGBA8; +            rb->Format = MESA_FORMAT_RGBA8888;           else -            rb->_ActualFormat = GL_RGB8; +            rb->Format = MESA_FORMAT_RGB888;        }        else {           assert(rgbBits <= 16); -         if (alphaBits) -            rb->_ActualFormat = GL_RGBA16; -         else -            rb->_ActualFormat = GL_RGBA16; /* don't really have RGB16 yet */ +         rb->Format = MESA_FORMAT_NONE; /*XXX RGBA16;*/        } -      rb->InternalFormat = rb->_ActualFormat; +      rb->InternalFormat = GL_RGBA;        rb->AllocStorage = _mesa_soft_renderbuffer_storage;        _mesa_add_renderbuffer(fb, b, rb); @@ -1677,15 +1595,9 @@ _mesa_add_color_index_renderbuffers(GLcontext *ctx, struct gl_framebuffer *fb,           return GL_FALSE;        } -      if (indexBits <= 8) { -         /* only support GLuint for now */ -         /*rb->InternalFormat = GL_COLOR_INDEX8_EXT;*/ -         rb->_ActualFormat = COLOR_INDEX32; -      } -      else { -         rb->_ActualFormat = COLOR_INDEX32; -      } -      rb->InternalFormat = rb->_ActualFormat; +      assert(indexBits <= 8); +      rb->Format = MESA_FORMAT_CI8; +      rb->InternalFormat = GL_COLOR_INDEX;        rb->AllocStorage = _mesa_soft_renderbuffer_storage;        _mesa_add_renderbuffer(fb, b, rb); @@ -1758,8 +1670,7 @@ _mesa_add_alpha_renderbuffers(GLcontext *ctx, struct gl_framebuffer *fb,         * values.         */        arb->InternalFormat = arb->Wrapped->InternalFormat; -      arb->_ActualFormat  = GL_ALPHA8; -      arb->_BaseFormat    = arb->Wrapped->_BaseFormat; +      arb->Format         = MESA_FORMAT_A8;        arb->DataType       = arb->Wrapped->DataType;        arb->AllocStorage   = alloc_storage_alpha8;        arb->Delete         = delete_renderbuffer_alpha8; @@ -1833,15 +1744,17 @@ _mesa_add_depth_renderbuffer(GLcontext *ctx, struct gl_framebuffer *fb,     }     if (depthBits <= 16) { -      rb->_ActualFormat = GL_DEPTH_COMPONENT16; +      rb->Format = MESA_FORMAT_Z16; +      rb->InternalFormat = GL_DEPTH_COMPONENT16;     }     else if (depthBits <= 24) { -      rb->_ActualFormat = GL_DEPTH_COMPONENT24; +      rb->Format = MESA_FORMAT_X8_Z24; +      rb->InternalFormat = GL_DEPTH_COMPONENT24;     }     else { -      rb->_ActualFormat = GL_DEPTH_COMPONENT32; +      rb->Format = MESA_FORMAT_Z32; +      rb->InternalFormat = GL_DEPTH_COMPONENT32;     } -   rb->InternalFormat = rb->_ActualFormat;     rb->AllocStorage = _mesa_soft_renderbuffer_storage;     _mesa_add_renderbuffer(fb, BUFFER_DEPTH, rb); @@ -1878,14 +1791,9 @@ _mesa_add_stencil_renderbuffer(GLcontext *ctx, struct gl_framebuffer *fb,        return GL_FALSE;     } -   if (stencilBits <= 8) { -      rb->_ActualFormat = GL_STENCIL_INDEX8_EXT; -   } -   else { -      /* not really supported (see s_stencil.c code) */ -      rb->_ActualFormat = GL_STENCIL_INDEX16_EXT; -   } -   rb->InternalFormat = rb->_ActualFormat; +   assert(stencilBits <= 8); +   rb->Format = MESA_FORMAT_S8; +   rb->InternalFormat = GL_STENCIL_INDEX8;     rb->AllocStorage = _mesa_soft_renderbuffer_storage;     _mesa_add_renderbuffer(fb, BUFFER_STENCIL, rb); @@ -1923,7 +1831,7 @@ _mesa_add_accum_renderbuffer(GLcontext *ctx, struct gl_framebuffer *fb,        return GL_FALSE;     } -   rb->_ActualFormat = GL_RGBA16; +   rb->Format = MESA_FORMAT_SIGNED_RGBA_16;     rb->InternalFormat = GL_RGBA16;     rb->AllocStorage = _mesa_soft_renderbuffer_storage;     _mesa_add_renderbuffer(fb, BUFFER_ACCUM, rb); @@ -1967,13 +1875,9 @@ _mesa_add_aux_renderbuffers(GLcontext *ctx, struct gl_framebuffer *fb,           return GL_FALSE;        } -      if (colorBits <= 8) { -         rb->_ActualFormat = GL_RGBA8; -      } -      else { -         rb->_ActualFormat = GL_RGBA16; -      } -      rb->InternalFormat = rb->_ActualFormat; +      assert (colorBits <= 8); +      rb->Format = MESA_FORMAT_RGBA8888; +      rb->InternalFormat = GL_RGBA;        rb->AllocStorage = _mesa_soft_renderbuffer_storage;        _mesa_add_renderbuffer(fb, BUFFER_AUX0 + i, rb); @@ -2071,6 +1975,8 @@ void  _mesa_add_renderbuffer(struct gl_framebuffer *fb,                         GLuint bufferName, struct gl_renderbuffer *rb)  { +   GLenum baseFormat; +     assert(fb);     assert(rb);     assert(bufferName < BUFFER_COUNT); @@ -2095,7 +2001,8 @@ _mesa_add_renderbuffer(struct gl_framebuffer *fb,      * and the device driver is expecting 8-bit values (GLubyte), we can      * use a "renderbuffer adaptor/wrapper" to do the necessary conversions.      */ -   if (rb->_BaseFormat == GL_RGBA) { +   baseFormat = _mesa_get_format_base_format(rb->Format); +   if (baseFormat == GL_RGBA) {        if (CHAN_BITS == 16 && rb->DataType == GL_UNSIGNED_BYTE) {           GET_CURRENT_CONTEXT(ctx);           rb = _mesa_new_renderbuffer_16wrap8(ctx, rb); @@ -2202,7 +2109,7 @@ _mesa_new_depthstencil_renderbuffer(GLcontext *ctx, GLuint name)     /* init fields not covered by _mesa_new_renderbuffer() */     dsrb->InternalFormat = GL_DEPTH24_STENCIL8_EXT; -   dsrb->_ActualFormat = GL_DEPTH24_STENCIL8_EXT; +   dsrb->Format = MESA_FORMAT_Z24_S8;     dsrb->AllocStorage = _mesa_soft_renderbuffer_storage;     return dsrb; | 
