DRI/swrast: Remove color-index support from DRI swrast driver
[mesa.git] / src / mesa / drivers / dri / swrast / swrast.c
index df5221b135eda4202ea2b2d679db51062c734e52..03c672ecf1b6cb4d61d4553bfddfddbec5191025 100644 (file)
@@ -33,6 +33,7 @@
 
 #include "main/context.h"
 #include "main/extensions.h"
+#include "main/formats.h"
 #include "main/framebuffer.h"
 #include "main/imports.h"
 #include "main/renderbuffer.h"
@@ -131,7 +132,8 @@ swrastFillInModes(__DRIscreen *psp,
     configs = driCreateConfigs(fb_format, fb_type,
                               depth_bits_array, stencil_bits_array,
                               depth_buffer_factor, back_buffer_modes,
-                              back_buffer_factor, msaa_samples_array, 1);
+                              back_buffer_factor, msaa_samples_array, 1,
+                              GL_TRUE);
     if (configs == NULL) {
        fprintf(stderr, "[%s:%u] Error creating FBConfig!\n", __func__,
                __LINE__);
@@ -153,7 +155,7 @@ driCreateNewScreen(int scrn, const __DRIextension **extensions,
 
     TRACE;
 
-    psp = _mesa_calloc(sizeof(*psp));
+    psp = calloc(1, sizeof(*psp));
     if (!psp)
        return NULL;
 
@@ -182,7 +184,7 @@ static void driDestroyScreen(__DRIscreen *psp)
     TRACE;
 
     if (psp) {
-       _mesa_free(psp);
+       free(psp);
     }
 }
 
@@ -201,34 +203,28 @@ static const __DRIextension **driGetExtensions(__DRIscreen *psp)
 static GLuint
 choose_pixel_format(const GLvisual *v)
 {
-    if (v->rgbMode) {
-       int depth = v->rgbBits;
-
-       if (depth == 32
-           && v->redMask   == 0xff0000
-           && v->greenMask == 0x00ff00
-           && v->blueMask  == 0x0000ff)
-           return PF_A8R8G8B8;
-       else if (depth == 24
-           && v->redMask   == 0xff0000
-           && v->greenMask == 0x00ff00
-           && v->blueMask  == 0x0000ff)
-           return PF_X8R8G8B8;
-       else if (depth == 16
-           && v->redMask   == 0xf800
-           && v->greenMask == 0x07e0
-           && v->blueMask  == 0x001f)
-           return PF_R5G6B5;
-       else if (depth == 8
-           && v->redMask   == 0x07
-           && v->greenMask == 0x38
-           && v->blueMask  == 0xc0)
-           return PF_R3G3B2;
-    }
-    else {
-       if (v->indexBits == 8)
-           return PF_CI8;
-    }
+    int depth = v->rgbBits;
+
+    if (depth == 32
+       && v->redMask   == 0xff0000
+       && v->greenMask == 0x00ff00
+       && v->blueMask  == 0x0000ff)
+       return PF_A8R8G8B8;
+    else if (depth == 24
+            && v->redMask   == 0xff0000
+            && v->greenMask == 0x00ff00
+            && v->blueMask  == 0x0000ff)
+       return PF_X8R8G8B8;
+    else if (depth == 16
+            && v->redMask   == 0xf800
+            && v->greenMask == 0x07e0
+            && v->blueMask  == 0x001f)
+       return PF_R5G6B5;
+    else if (depth == 8
+            && v->redMask   == 0x07
+            && v->greenMask == 0x38
+            && v->blueMask  == 0xc0)
+       return PF_R3G3B2;
 
     _mesa_problem( NULL, "unexpected format in %s", __FUNCTION__ );
     return 0;
@@ -239,8 +235,8 @@ swrast_delete_renderbuffer(struct gl_renderbuffer *rb)
 {
     TRACE;
 
-    _mesa_free(rb->Data);
-    _mesa_free(rb);
+    free(rb->Data);
+    free(rb);
 }
 
 static GLboolean
@@ -270,11 +266,11 @@ swrast_alloc_back_storage(GLcontext *ctx, struct gl_renderbuffer *rb,
 
     TRACE;
 
-    _mesa_free(rb->Data);
+    free(rb->Data);
 
     swrast_alloc_front_storage(ctx, rb, internalFormat, width, height);
 
-    rb->Data = _mesa_malloc(height * xrb->pitch);
+    rb->Data = malloc(height * xrb->pitch);
 
     return GL_TRUE;
 }
@@ -282,7 +278,7 @@ swrast_alloc_back_storage(GLcontext *ctx, struct gl_renderbuffer *rb,
 static struct swrast_renderbuffer *
 swrast_new_renderbuffer(const GLvisual *visual, GLboolean front)
 {
-    struct swrast_renderbuffer *xrb = _mesa_calloc(sizeof *xrb);
+    struct swrast_renderbuffer *xrb = calloc(1, sizeof *xrb);
     GLuint pixel_format;
 
     TRACE;
@@ -306,50 +302,31 @@ swrast_new_renderbuffer(const GLvisual *visual, GLboolean front)
 
     switch (pixel_format) {
     case PF_A8R8G8B8:
+       xrb->Base.Format = MESA_FORMAT_ARGB8888;
        xrb->Base.InternalFormat = GL_RGBA;
        xrb->Base._BaseFormat = GL_RGBA;
        xrb->Base.DataType = GL_UNSIGNED_BYTE;
-       xrb->Base.RedBits   = 8 * sizeof(GLubyte);
-       xrb->Base.GreenBits = 8 * sizeof(GLubyte);
-       xrb->Base.BlueBits  = 8 * sizeof(GLubyte);
-       xrb->Base.AlphaBits = 8 * sizeof(GLubyte);
        xrb->bpp = 32;
        break;
     case PF_X8R8G8B8:
+       xrb->Base.Format = MESA_FORMAT_ARGB8888; /* XXX */
        xrb->Base.InternalFormat = GL_RGB;
        xrb->Base._BaseFormat = GL_RGB;
        xrb->Base.DataType = GL_UNSIGNED_BYTE;
-       xrb->Base.RedBits   = 8 * sizeof(GLubyte);
-       xrb->Base.GreenBits = 8 * sizeof(GLubyte);
-       xrb->Base.BlueBits  = 8 * sizeof(GLubyte);
-       xrb->Base.AlphaBits = 0;
        xrb->bpp = 32;
        break;
     case PF_R5G6B5:
+       xrb->Base.Format = MESA_FORMAT_RGB565;
        xrb->Base.InternalFormat = GL_RGB;
        xrb->Base._BaseFormat = GL_RGB;
        xrb->Base.DataType = GL_UNSIGNED_BYTE;
-       xrb->Base.RedBits   = 5 * sizeof(GLubyte);
-       xrb->Base.GreenBits = 6 * sizeof(GLubyte);
-       xrb->Base.BlueBits  = 5 * sizeof(GLubyte);
-       xrb->Base.AlphaBits = 0;
        xrb->bpp = 16;
        break;
     case PF_R3G3B2:
+       xrb->Base.Format = MESA_FORMAT_RGB332;
        xrb->Base.InternalFormat = GL_RGB;
        xrb->Base._BaseFormat = GL_RGB;
        xrb->Base.DataType = GL_UNSIGNED_BYTE;
-       xrb->Base.RedBits   = 3 * sizeof(GLubyte);
-       xrb->Base.GreenBits = 3 * sizeof(GLubyte);
-       xrb->Base.BlueBits  = 2 * sizeof(GLubyte);
-       xrb->Base.AlphaBits = 0;
-       xrb->bpp = 8;
-       break;
-    case PF_CI8:
-       xrb->Base.InternalFormat = GL_COLOR_INDEX8_EXT;
-       xrb->Base._BaseFormat = GL_COLOR_INDEX;
-       xrb->Base.DataType = GL_UNSIGNED_BYTE;
-       xrb->Base.IndexBits = 8 * sizeof(GLubyte);
        xrb->bpp = 8;
        break;
     default:
@@ -368,7 +345,7 @@ driCreateNewDrawable(__DRIscreen *screen,
 
     TRACE;
 
-    buf = _mesa_calloc(sizeof *buf);
+    buf = calloc(1, sizeof *buf);
     if (!buf)
        return NULL;
 
@@ -376,10 +353,10 @@ driCreateNewDrawable(__DRIscreen *screen,
 
     buf->driScreenPriv = screen;
 
-    buf->row = _mesa_malloc(MAX_WIDTH * 4);
+    buf->row = malloc(MAX_WIDTH * 4);
 
     /* basic framebuffer setup */
-    _mesa_initialize_framebuffer(&buf->Base, &config->modes);
+    _mesa_initialize_window_framebuffer(&buf->Base, &config->modes);
 
     /* add front renderbuffer */
     frontrb = swrast_new_renderbuffer(&config->modes, GL_TRUE);
@@ -411,7 +388,7 @@ driDestroyDrawable(__DRIdrawable *buf)
     if (buf) {
        struct gl_framebuffer *fb = &buf->Base;
 
-       _mesa_free(buf->row);
+       free(buf->row);
 
        fb->DeletePending = GL_TRUE;
        _mesa_reference_framebuffer(&fb, NULL);
@@ -535,7 +512,7 @@ driCreateNewContext(__DRIscreen *screen, const __DRIconfig *config,
 
     TRACE;
 
-    ctx = _mesa_calloc(sizeof *ctx);
+    ctx = calloc(1, sizeof *ctx);
     if (!ctx)
        return NULL;
 
@@ -550,7 +527,7 @@ driCreateNewContext(__DRIscreen *screen, const __DRIconfig *config,
     if (!_mesa_initialize_context(&ctx->Base, &config->modes,
                                  shared ? &shared->Base : NULL,
                                  &functions, (void *) ctx)) {
-      _mesa_free(ctx);
+      free(ctx);
       return NULL;
     }