Mesa (master): i965: Mark texture formats as supported using the surface formats table.

Eric Anholt anholt at kemper.freedesktop.org
Tue Nov 22 22:09:47 UTC 2011


Module: Mesa
Branch: master
Commit: 1b4910b3050729eabac15936ef701ef3acd4e70f
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=1b4910b3050729eabac15936ef701ef3acd4e70f

Author: Eric Anholt <eric at anholt.net>
Date:   Tue Nov 15 13:15:09 2011 -0800

i965: Mark texture formats as supported using the surface formats table.

This is currently duplicated with intel_context.c's setup of the
formats table, and sets true for exactly the same set of formats on
gen6.

Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

---

 src/mesa/drivers/dri/i965/brw_wm_surface_state.c |   13 ++++++++++++-
 1 files changed, 12 insertions(+), 1 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
index 04c619c..4308432 100644
--- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
+++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
@@ -364,6 +364,7 @@ void
 brw_init_surface_formats(struct brw_context *brw)
 {
    struct intel_context *intel = &brw->intel;
+   struct gl_context *ctx = &intel->ctx;
    int gen;
    gl_format format;
 
@@ -373,10 +374,11 @@ brw_init_surface_formats(struct brw_context *brw)
 
    for (format = MESA_FORMAT_NONE + 1; format < MESA_FORMAT_COUNT; format++) {
       uint32_t texture, render;
-      const struct surface_format_info *rinfo;
+      const struct surface_format_info *rinfo, *tinfo;
       bool is_integer = _mesa_is_format_integer_color(format);
 
       render = texture = brw_format_for_mesa_format(format);
+      tinfo = &surface_formats[texture];
 
       /* The value of BRW_SURFACEFORMAT_R32G32B32A32_FLOAT is 0, so don't skip
        * it.
@@ -384,6 +386,9 @@ brw_init_surface_formats(struct brw_context *brw)
       if (texture == 0 && format != MESA_FORMAT_RGBA_FLOAT32)
 	 continue;
 
+      if (gen >= tinfo->sampling && (gen >= tinfo->filtering || is_integer))
+	 ctx->TextureFormatSupported[format] = true;
+
       /* Re-map some render target formats to make them supported when they
        * wouldn't be using their format for texturing.
        */
@@ -434,6 +439,12 @@ brw_init_surface_formats(struct brw_context *brw)
    brw->format_supported_as_render_target[MESA_FORMAT_X8_Z24] = true;
    brw->format_supported_as_render_target[MESA_FORMAT_S8] = true;
    brw->format_supported_as_render_target[MESA_FORMAT_Z16] = true;
+
+   /* We remap depth formats to a supported texturing format in
+    * translate_tex_format().
+    */
+   ctx->TextureFormatSupported[MESA_FORMAT_S8_Z24] = true;
+   ctx->TextureFormatSupported[MESA_FORMAT_X8_Z24] = true;
 }
 
 bool




More information about the mesa-commit mailing list