Mesa (master): i965: Claim to support rendering to integer FBOs.

Eric Anholt anholt at kemper.freedesktop.org
Thu Nov 10 00:11:58 UTC 2011


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

Author: Eric Anholt <eric at anholt.net>
Date:   Wed Nov  2 13:51:38 2011 -0700

i965: Claim to support rendering to integer FBOs.

We're missing support for the software paths still, but basic
rendering is working.

v2: Override RGB_INT32/UINT32 to not be renderable, since the hardware
    can't do it but we do allow texturing from it now.  Drop the
    DataType override, since the _mesa_problem() isn't in that path
    any more.

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

---

 src/mesa/drivers/dri/i965/brw_wm_surface_state.c |    7 +++++++
 src/mesa/drivers/dri/intel/intel_span.c          |    7 ++++++-
 2 files changed, 13 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 3359622..0a00ab9 100644
--- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
+++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
@@ -174,6 +174,13 @@ brw_render_target_supported(gl_format format)
    if (format == MESA_FORMAT_RGBA_FLOAT32)
       return true;
 
+   /* While we can texture from these formats, they're not actually supported
+    * for rendering.
+    */
+   if (format == MESA_FORMAT_RGB_UINT32 ||
+       format == MESA_FORMAT_RGB_INT32)
+      return false;
+
    /* Not exactly true, as some of those formats are not renderable.
     * But at least we know how to translate them.
     */
diff --git a/src/mesa/drivers/dri/intel/intel_span.c b/src/mesa/drivers/dri/intel/intel_span.c
index 191f776..478aec8 100644
--- a/src/mesa/drivers/dri/intel/intel_span.c
+++ b/src/mesa/drivers/dri/intel/intel_span.c
@@ -421,7 +421,12 @@ static span_init_func intel_span_init_funcs[MESA_FORMAT_COUNT] =
 bool
 intel_span_supports_format(gl_format format)
 {
-   return intel_span_init_funcs[format] != NULL;
+   /* Rendering to/from integer textures will be done using MapRenderbuffer,
+    * rather than coding up new paths through GetRow/PutRow(), so claim support
+    * for those formats in here for now.
+    */
+   return (intel_span_init_funcs[format] != NULL ||
+	   _mesa_is_format_integer_color(format));
 }
 
 /**




More information about the mesa-commit mailing list