[Mesa-dev] [PATCH 09/15] i915: Move the texture format setup for this driver out of shared code.
Eric Anholt
eric at anholt.net
Tue Nov 15 17:55:56 PST 2011
The i965 driver is now enabling all of these formats on its own from
the surface format table.
---
NOTE: I need to test this series on i915.
src/mesa/drivers/dri/i915/i830_context.c | 2 +
src/mesa/drivers/dri/i915/i915_context.c | 49 ++++++++++++++++++++++++++++
src/mesa/drivers/dri/intel/intel_context.c | 44 +------------------------
src/mesa/drivers/dri/intel/intel_context.h | 1 +
4 files changed, 54 insertions(+), 42 deletions(-)
diff --git a/src/mesa/drivers/dri/i915/i830_context.c b/src/mesa/drivers/dri/i915/i830_context.c
index f801abc..663909e 100644
--- a/src/mesa/drivers/dri/i915/i830_context.c
+++ b/src/mesa/drivers/dri/i915/i830_context.c
@@ -69,6 +69,8 @@ i830CreateContext(const struct gl_config * mesaVis,
return false;
}
+ intel_init_texture_formats(ctx);
+
_math_matrix_ctr(&intel->ViewportMatrix);
/* Initialize swrast, tnl driver tables: */
diff --git a/src/mesa/drivers/dri/i915/i915_context.c b/src/mesa/drivers/dri/i915/i915_context.c
index ca03ad0..c5e589d 100644
--- a/src/mesa/drivers/dri/i915/i915_context.c
+++ b/src/mesa/drivers/dri/i915/i915_context.c
@@ -88,6 +88,55 @@ i915InitDriverFunctions(struct dd_function_table *functions)
functions->UpdateState = i915InvalidateState;
}
+/* Note: this is shared with i830. */
+void
+intel_init_texture_formats(struct gl_context *ctx)
+{
+ struct intel_context *intel = intel_context(ctx);
+ struct intel_screen *intel_screen = intel->intelScreen;
+
+ ctx->TextureFormatSupported[MESA_FORMAT_ARGB8888] = true;
+ if (intel_screen->deviceID != PCI_CHIP_I830_M &&
+ intel_screen->deviceID != PCI_CHIP_845_G)
+ ctx->TextureFormatSupported[MESA_FORMAT_XRGB8888] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_ARGB4444] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_ARGB1555] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_RGB565] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_L8] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_A8] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_I8] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_AL88] = true;
+
+ /* Depth and stencil */
+ ctx->TextureFormatSupported[MESA_FORMAT_S8_Z24] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_X8_Z24] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_S8] = intel->has_separate_stencil;
+
+ /*
+ * This was disabled in initial FBO enabling to avoid combinations
+ * of depth+stencil that wouldn't work together. We since decided
+ * that it was OK, since it's up to the app to come up with the
+ * combo that actually works, so this can probably be re-enabled.
+ */
+ /*
+ ctx->TextureFormatSupported[MESA_FORMAT_Z16] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_Z24] = true;
+ */
+
+ /* ctx->Extensions.MESA_ycbcr_texture */
+ ctx->TextureFormatSupported[MESA_FORMAT_YCBCR] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_YCBCR_REV] = true;
+
+ /* GL_3DFX_texture_compression_FXT1 */
+ ctx->TextureFormatSupported[MESA_FORMAT_RGB_FXT1] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_RGBA_FXT1] = true;
+
+ /* GL_EXT_texture_compression_s3tc */
+ ctx->TextureFormatSupported[MESA_FORMAT_RGB_DXT1] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_RGBA_DXT1] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_RGBA_DXT3] = true;
+ ctx->TextureFormatSupported[MESA_FORMAT_RGBA_DXT5] = true;
+}
extern const struct tnl_pipeline_stage *intel_pipeline[];
diff --git a/src/mesa/drivers/dri/intel/intel_context.c b/src/mesa/drivers/dri/intel/intel_context.c
index de73010..3a71179 100644
--- a/src/mesa/drivers/dri/intel/intel_context.c
+++ b/src/mesa/drivers/dri/intel/intel_context.c
@@ -628,48 +628,8 @@ intelInitContext(struct intel_context *intel,
intel->must_use_separate_stencil = intel->intelScreen->hw_must_use_separate_stencil;
intel->has_hiz = intel->intelScreen->hw_has_hiz;
- memset(&ctx->TextureFormatSupported, 0,
- sizeof(ctx->TextureFormatSupported));
- ctx->TextureFormatSupported[MESA_FORMAT_ARGB8888] = true;
- if (devID != PCI_CHIP_I830_M && devID != PCI_CHIP_845_G)
- ctx->TextureFormatSupported[MESA_FORMAT_XRGB8888] = true;
- ctx->TextureFormatSupported[MESA_FORMAT_ARGB4444] = true;
- ctx->TextureFormatSupported[MESA_FORMAT_ARGB1555] = true;
- ctx->TextureFormatSupported[MESA_FORMAT_RGB565] = true;
- ctx->TextureFormatSupported[MESA_FORMAT_L8] = true;
- ctx->TextureFormatSupported[MESA_FORMAT_A8] = true;
- ctx->TextureFormatSupported[MESA_FORMAT_I8] = true;
- ctx->TextureFormatSupported[MESA_FORMAT_AL88] = true;
-
- /* Depth and stencil */
- ctx->TextureFormatSupported[MESA_FORMAT_S8_Z24] = true;
- ctx->TextureFormatSupported[MESA_FORMAT_X8_Z24] = true;
- ctx->TextureFormatSupported[MESA_FORMAT_S8] = intel->has_separate_stencil;
-
- /*
- * This was disabled in initial FBO enabling to avoid combinations
- * of depth+stencil that wouldn't work together. We since decided
- * that it was OK, since it's up to the app to come up with the
- * combo that actually works, so this can probably be re-enabled.
- */
- /*
- ctx->TextureFormatSupported[MESA_FORMAT_Z16] = true;
- ctx->TextureFormatSupported[MESA_FORMAT_Z24] = true;
- */
-
- /* ctx->Extensions.MESA_ycbcr_texture */
- ctx->TextureFormatSupported[MESA_FORMAT_YCBCR] = true;
- ctx->TextureFormatSupported[MESA_FORMAT_YCBCR_REV] = true;
-
- /* GL_3DFX_texture_compression_FXT1 */
- ctx->TextureFormatSupported[MESA_FORMAT_RGB_FXT1] = true;
- ctx->TextureFormatSupported[MESA_FORMAT_RGBA_FXT1] = true;
-
- /* GL_EXT_texture_compression_s3tc */
- ctx->TextureFormatSupported[MESA_FORMAT_RGB_DXT1] = true;
- ctx->TextureFormatSupported[MESA_FORMAT_RGBA_DXT1] = true;
- ctx->TextureFormatSupported[MESA_FORMAT_RGBA_DXT3] = true;
- ctx->TextureFormatSupported[MESA_FORMAT_RGBA_DXT5] = true;
+ memset(&ctx->TextureFormatSupported,
+ 0, sizeof(ctx->TextureFormatSupported));
driParseConfigFiles(&intel->optionCache, &intelScreen->optionCache,
sPriv->myNum, (intel->gen >= 4) ? "i965" : "i915");
diff --git a/src/mesa/drivers/dri/intel/intel_context.h b/src/mesa/drivers/dri/intel/intel_context.h
index ebf0ce9..8c8114d 100644
--- a/src/mesa/drivers/dri/intel/intel_context.h
+++ b/src/mesa/drivers/dri/intel/intel_context.h
@@ -583,6 +583,7 @@ void intel_prepare_render(struct intel_context *intel);
void i915_set_buf_info_for_region(uint32_t *state, struct intel_region *region,
uint32_t buffer_id);
+void intel_init_texture_formats(struct gl_context *ctx);
/*======================================================================
* Inline conversion functions.
--
1.7.7
More information about the mesa-dev
mailing list