i965: Add support for rendering to SARGB8 FBOs.
authorEric Anholt <eric@anholt.net>
Fri, 24 Sep 2010 23:11:40 +0000 (16:11 -0700)
committerEric Anholt <eric@anholt.net>
Fri, 24 Sep 2010 23:12:50 +0000 (16:12 -0700)
Tested with fbo-generatemipmap-formats GL_EXT_texture_srgb.  The test
still fails on SLA8, though.

src/mesa/drivers/dri/i965/brw_wm_surface_state.c
src/mesa/drivers/dri/intel/intel_fbo.c
src/mesa/drivers/dri/intel/intel_span.c

index 17b016b569b9b266261fa08739d0a099f5c67f5a..05f1aa1813749c874d0d0ff75eec551985441876 100644 (file)
@@ -429,6 +429,9 @@ brw_update_renderbuffer_surface(struct brw_context *brw,
       case MESA_FORMAT_XRGB8888:
         key.surface_format = BRW_SURFACEFORMAT_B8G8R8A8_UNORM;
         break;
+      case MESA_FORMAT_SARGB8:
+        key.surface_format = BRW_SURFACEFORMAT_B8G8R8A8_UNORM_SRGB;
+        break;
       case MESA_FORMAT_RGB565:
         key.surface_format = BRW_SURFACEFORMAT_B5G6R5_UNORM;
         break;
index 4ad85eb7c1a1422c86458399ae4bd3ece0f09095..64c94b9b556c0d233f4c7e1ea03bfc24caae7628 100644 (file)
@@ -433,6 +433,10 @@ intel_update_wrapper(GLcontext *ctx, struct intel_renderbuffer *irb,
       irb->Base.DataType = GL_UNSIGNED_BYTE;
       DBG("Render to XGBA8 texture OK\n");
    }
+   else if (texImage->TexFormat == MESA_FORMAT_SARGB8) {
+      irb->Base.DataType = GL_UNSIGNED_BYTE;
+      DBG("Render to SARGB8 texture OK\n");
+   }
    else if (texImage->TexFormat == MESA_FORMAT_RGB565) {
       irb->Base.DataType = GL_UNSIGNED_BYTE;
       DBG("Render to RGB5 texture OK\n");
@@ -659,6 +663,7 @@ intel_validate_framebuffer(GLcontext *ctx, struct gl_framebuffer *fb)
       switch (irb->Base.Format) {
       case MESA_FORMAT_ARGB8888:
       case MESA_FORMAT_XRGB8888:
+      case MESA_FORMAT_SARGB8:
       case MESA_FORMAT_RGB565:
       case MESA_FORMAT_ARGB1555:
       case MESA_FORMAT_ARGB4444:
index fb840c1020d800c5bd8b5203e448f6db16d8b5a7..c8d55c92a0b7c79dcd3155e261e33bca9a5c3367 100644 (file)
@@ -366,6 +366,7 @@ intel_set_span_functions(struct intel_context *intel,
       intel_InitPointers_xRGB8888(rb);
       break;
    case MESA_FORMAT_ARGB8888:
+   case MESA_FORMAT_SARGB8:
       intel_InitPointers_ARGB8888(rb);
       break;
    case MESA_FORMAT_Z16: