From: Michel Dänzer <daen...@vmware.com>

---
 src/mesa/drivers/dri/r300/r300_cmdbuf.c     |   15 ++++++++++++
 src/mesa/drivers/dri/radeon/radeon_fbo.c    |   34 ++++++++++++++++++++------
 src/mesa/drivers/dri/radeon/radeon_screen.c |    6 ++--
 3 files changed, 44 insertions(+), 11 deletions(-)

diff --git a/src/mesa/drivers/dri/r300/r300_cmdbuf.c 
b/src/mesa/drivers/dri/r300/r300_cmdbuf.c
index 1e2a54f..c7996eb 100644
--- a/src/mesa/drivers/dri/r300/r300_cmdbuf.c
+++ b/src/mesa/drivers/dri/r300/r300_cmdbuf.c
@@ -281,12 +281,27 @@ static void emit_cb_offset(GLcontext *ctx, struct 
radeon_state_atom * atom)
                cbpitch |= R300_COLOR_FORMAT_ARGB8888;
        else switch (rrb->base.Format) {
         case MESA_FORMAT_RGB565:
+               assert(_mesa_little_endian());
+               cbpitch |= R300_COLOR_FORMAT_RGB565;
+               break;
+        case MESA_FORMAT_RGB565_REV:
+               assert(!_mesa_little_endian());
                cbpitch |= R300_COLOR_FORMAT_RGB565;
                break;
         case MESA_FORMAT_ARGB4444:
+               assert(_mesa_little_endian());
+               cbpitch |= R300_COLOR_FORMAT_ARGB4444;
+               break;
+        case MESA_FORMAT_ARGB4444_REV:
+               assert(!_mesa_little_endian());
                cbpitch |= R300_COLOR_FORMAT_ARGB4444;
                break;
        case MESA_FORMAT_ARGB1555:
+               assert(_mesa_little_endian());
+               cbpitch |= R300_COLOR_FORMAT_ARGB1555;
+               break;
+       case MESA_FORMAT_ARGB1555_REV:
+               assert(!_mesa_little_endian());
                cbpitch |= R300_COLOR_FORMAT_ARGB1555;
                break;
        default:
diff --git a/src/mesa/drivers/dri/radeon/radeon_fbo.c 
b/src/mesa/drivers/dri/radeon/radeon_fbo.c
index bf69cd9..7ec641f 100644
--- a/src/mesa/drivers/dri/radeon/radeon_fbo.c
+++ b/src/mesa/drivers/dri/radeon/radeon_fbo.c
@@ -90,7 +90,7 @@ radeon_alloc_renderbuffer_storage(GLcontext * ctx, struct 
gl_renderbuffer *rb,
    case GL_R3_G3_B2:
    case GL_RGB4:
    case GL_RGB5:
-      rb->Format = MESA_FORMAT_RGB565;
+      rb->Format = _dri_texformat_rgb565;
       rb->DataType = GL_UNSIGNED_BYTE;
       cpp = 2;
       break;
@@ -99,7 +99,7 @@ radeon_alloc_renderbuffer_storage(GLcontext * ctx, struct 
gl_renderbuffer *rb,
    case GL_RGB10:
    case GL_RGB12:
    case GL_RGB16:
-      rb->Format = MESA_FORMAT_ARGB8888;
+      rb->Format = _dri_texformat_argb8888;
       rb->DataType = GL_UNSIGNED_BYTE;
       cpp = 4;
       break;
@@ -111,7 +111,7 @@ radeon_alloc_renderbuffer_storage(GLcontext * ctx, struct 
gl_renderbuffer *rb,
    case GL_RGB10_A2:
    case GL_RGBA12:
    case GL_RGBA16:
-      rb->Format = MESA_FORMAT_ARGB8888;
+      rb->Format = _dri_texformat_argb8888;
       rb->DataType = GL_UNSIGNED_BYTE;
       cpp = 4;
       break;
@@ -261,14 +261,32 @@ radeon_create_renderbuffer(gl_format format, 
__DRIdrawablePrivate *driDrawPriv)
 
     switch (format) {
         case MESA_FORMAT_RGB565:
+           assert(_mesa_little_endian());
+           rrb->base.DataType = GL_UNSIGNED_BYTE;
+            rrb->base._BaseFormat = GL_RGB;
+           break;
+        case MESA_FORMAT_RGB565_REV:
+           assert(!_mesa_little_endian());
            rrb->base.DataType = GL_UNSIGNED_BYTE;
             rrb->base._BaseFormat = GL_RGB;
            break;
         case MESA_FORMAT_XRGB8888:
+           assert(_mesa_little_endian());
+           rrb->base.DataType = GL_UNSIGNED_BYTE;
+            rrb->base._BaseFormat = GL_RGB;
+           break;
+        case MESA_FORMAT_XRGB8888_REV:
+           assert(!_mesa_little_endian());
            rrb->base.DataType = GL_UNSIGNED_BYTE;
             rrb->base._BaseFormat = GL_RGB;
            break;
        case MESA_FORMAT_ARGB8888:
+           assert(_mesa_little_endian());
+           rrb->base.DataType = GL_UNSIGNED_BYTE;
+            rrb->base._BaseFormat = GL_RGBA;
+           break;
+       case MESA_FORMAT_ARGB8888_REV:
+           assert(!_mesa_little_endian());
            rrb->base.DataType = GL_UNSIGNED_BYTE;
             rrb->base._BaseFormat = GL_RGBA;
            break;
@@ -359,21 +377,21 @@ radeon_update_wrapper(GLcontext *ctx, struct 
radeon_renderbuffer *rrb,
        gl_format texFormat;
 
 restart:
-       if (texImage->TexFormat == MESA_FORMAT_ARGB8888) {
+       if (texImage->TexFormat == _dri_texformat_argb8888) {
                rrb->base.DataType = GL_UNSIGNED_BYTE;
                DBG("Render to RGBA8 texture OK\n");
        }
-       else if (texImage->TexFormat == MESA_FORMAT_RGB565) {
+       else if (texImage->TexFormat == _dri_texformat_rgb565) {
                rrb->base.DataType = GL_UNSIGNED_BYTE;
                DBG("Render to RGB5 texture OK\n");
        }
-       else if (texImage->TexFormat == MESA_FORMAT_ARGB1555) {
+       else if (texImage->TexFormat == _dri_texformat_argb1555) {
                rrb->base.DataType = GL_UNSIGNED_BYTE;
                DBG("Render to ARGB1555 texture OK\n");
        }
-       else if (texImage->TexFormat == MESA_FORMAT_ARGB4444) {
+       else if (texImage->TexFormat == _dri_texformat_argb4444) {
                rrb->base.DataType = GL_UNSIGNED_BYTE;
-               DBG("Render to ARGB1555 texture OK\n");
+               DBG("Render to ARGB4444 texture OK\n");
        }
        else if (texImage->TexFormat == MESA_FORMAT_Z16) {
                rrb->base.DataType = GL_UNSIGNED_SHORT;
diff --git a/src/mesa/drivers/dri/radeon/radeon_screen.c 
b/src/mesa/drivers/dri/radeon/radeon_screen.c
index 2bcceb1..be2d836 100644
--- a/src/mesa/drivers/dri/radeon/radeon_screen.c
+++ b/src/mesa/drivers/dri/radeon/radeon_screen.c
@@ -1484,11 +1484,11 @@ radeonCreateBuffer( __DRIscreenPrivate *driScrnPriv,
     _mesa_initialize_framebuffer(&rfb->base, mesaVis);
 
     if (mesaVis->redBits == 5)
-        rgbFormat = MESA_FORMAT_RGB565;
+        rgbFormat = _mesa_little_endian() ? MESA_FORMAT_RGB565 : 
MESA_FORMAT_RGB565_REV;
     else if (mesaVis->alphaBits == 0)
-        rgbFormat = MESA_FORMAT_XRGB8888;
+        rgbFormat = _mesa_little_endian() ? MESA_FORMAT_XRGB8888 : 
MESA_FORMAT_XRGB8888_REV;
     else
-        rgbFormat = MESA_FORMAT_ARGB8888;
+        rgbFormat = _mesa_little_endian() ? MESA_FORMAT_ARGB8888 : 
MESA_FORMAT_ARGB8888_REV;
 
     /* front color renderbuffer */
     rfb->color_rb[0] = radeon_create_renderbuffer(rgbFormat, driDrawPriv);
-- 
1.6.5.2


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev

Reply via email to