i965: Enable ChooseTexFormat for supported GL_EXT_texture_integer formats.
authorEric Anholt <eric@anholt.net>
Wed, 5 Oct 2011 20:42:19 +0000 (13:42 -0700)
committerEric Anholt <eric@anholt.net>
Wed, 9 Nov 2011 20:59:19 +0000 (12:59 -0800)
v2: s/GL_TRUE/true/, and re-enable RGB_INT32 based on discussion
    yesterday about required RB formats vs texture formats.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> (v1)
src/mesa/drivers/dri/intel/intel_context.c

index 3e10ce05fd42d6af9aeca5e4bf6f3f5b2dd03e45..d00d5d476a1ee98dedf162cee14200d920d86e48 100644 (file)
@@ -710,6 +710,36 @@ intelInitContext(struct intel_context *intel,
       ctx->TextureFormatSupported[MESA_FORMAT_SLA8] = true;
    }
 
+   if (intel->gen >= 4) {
+      /* Each combination of 32-bit ints are supported, but the RGB 32-bit ints
+       * don't support use as a render target (GPU hangs).
+       */
+      ctx->TextureFormatSupported[MESA_FORMAT_R_INT32] = true;
+      ctx->TextureFormatSupported[MESA_FORMAT_RG_INT32] = true;
+      ctx->TextureFormatSupported[MESA_FORMAT_RGB_INT32] = true;
+      ctx->TextureFormatSupported[MESA_FORMAT_RGBA_INT32] = true;
+
+      ctx->TextureFormatSupported[MESA_FORMAT_R_UINT32] = true;
+      ctx->TextureFormatSupported[MESA_FORMAT_RG_UINT32] = true;
+      ctx->TextureFormatSupported[MESA_FORMAT_RGB_UINT32] = true;
+      ctx->TextureFormatSupported[MESA_FORMAT_RGBA_UINT32] = true;
+
+      /* For 16 and 8 bits, RGB is unsupported entirely. */
+      ctx->TextureFormatSupported[MESA_FORMAT_R_UINT16] = true;
+      ctx->TextureFormatSupported[MESA_FORMAT_RG_UINT16] = true;
+      ctx->TextureFormatSupported[MESA_FORMAT_RGBA_UINT16] = true;
+      ctx->TextureFormatSupported[MESA_FORMAT_R_INT16] = true;
+      ctx->TextureFormatSupported[MESA_FORMAT_RG_INT16] = true;
+      ctx->TextureFormatSupported[MESA_FORMAT_RGBA_INT16] = true;
+
+      ctx->TextureFormatSupported[MESA_FORMAT_R_UINT8] = true;
+      ctx->TextureFormatSupported[MESA_FORMAT_RG_UINT8] = true;
+      ctx->TextureFormatSupported[MESA_FORMAT_RGBA_UINT8] = true;
+      ctx->TextureFormatSupported[MESA_FORMAT_R_INT8] = true;
+      ctx->TextureFormatSupported[MESA_FORMAT_RG_INT8] = true;
+      ctx->TextureFormatSupported[MESA_FORMAT_RGBA_INT8] = true;
+   }
+
 #ifdef TEXTURE_FLOAT_ENABLED
    ctx->TextureFormatSupported[MESA_FORMAT_RGBA_FLOAT32] = true;
    ctx->TextureFormatSupported[MESA_FORMAT_RG_FLOAT32] = true;