[Mesa-dev] [PATCH] t_vertex: fix mipmap generation on rv100 swtcl.

Dave Airlie airlied at gmail.com
Fri Nov 4 10:49:43 PDT 2011


From: Dave Airlie <airlied at redhat.com>

the meta mipmap generator on rv100 is passing a s,t,r coordinate, but r100
is ancient so has no r handling in hw, so we have to pass a s,t,q with q
set to 1.

/me dares someone to review this :)

Signed-off-by: Dave Airlie <airlied at redhat.com>
---
 src/mesa/tnl/t_vertex_generic.c |   14 +++++++++++++-
 1 files changed, 13 insertions(+), 1 deletions(-)

diff --git a/src/mesa/tnl/t_vertex_generic.c b/src/mesa/tnl/t_vertex_generic.c
index 7b7f511..7150874 100644
--- a/src/mesa/tnl/t_vertex_generic.c
+++ b/src/mesa/tnl/t_vertex_generic.c
@@ -207,6 +207,18 @@ static inline void insert_3f_xyw_4( const struct tnl_clipspace_attr *a, GLubyte
    out[2] = in[3];
 }
 
+/* R100 has no R coordinate, but meta mipmap generate causes it to see one,
+   so just pack s and t and set q to 1 */
+static inline void insert_3f_xyw_3( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in )
+{
+   GLfloat *out = (GLfloat *)(v);
+   (void) a;
+   DEBUG_INSERT;
+   out[0] = in[0];
+   out[1] = in[1];
+   out[2] = 1;
+}
+
 static inline void insert_3f_xyw_err( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in )
 {
    (void) a; (void) v; (void) in;
@@ -801,7 +813,7 @@ const struct tnl_format_info _tnl_format_info[EMIT_MAX] =
 
    { "3f_xyw",
      extract_3f_xyw,
-     { insert_3f_xyw_err, insert_3f_xyw_err, insert_3f_xyw_err, 
+     { insert_3f_xyw_err, insert_3f_xyw_err, insert_3f_xyw_3,
        insert_3f_xyw_4 },
      3 * sizeof(GLfloat) },
 
-- 
1.7.6.4



More information about the mesa-dev mailing list