Re: [Mesa-dev] [PATCH 01/20] t_dd_dmatmp: Kill the paths rendering quads/quad strips via indexed vertices

2015-05-22 Thread Ville Syrjälä
On Fri, May 15, 2015 at 12:06:54PM -0700, Ian Romanick wrote:
 On 03/23/2015 05:47 AM, ville.syrj...@linux.intel.com wrote:
  From: Ville Syrjälä ville.syrj...@linux.intel.com
  
  No driver supports elts currently, and these make the validate_render
  code a bit hard to follow. Just kill them.
 
 It looks like both r200_tcl.c and radeon_tcl.c define HAVE_TRI_STRIPS
 and HAVE_ELTS, but I guess they're using t_dd_dmatmp2.h.  If you add a
 
 #if defined HAVE_ELTS
 #error HAVE_ELTS support is removed
 #endif
 
 do radeon and r200 still build?

Yes, they only emit elts via t_dd_dmatmp2.h as you said.

And do note that I didn't remove elt support entirely, I just killed
off the more tricky code that emits elts from the vert paths. So the
code can still handle elts just fine if VB-Elts is present.

 
  Signed-off-by: Ville Syrjälä ville.syrj...@linux.intel.com
  ---
   src/mesa/tnl_dd/t_dd_dmatmp.h | 133 
  ++
   1 file changed, 5 insertions(+), 128 deletions(-)
  
  diff --git a/src/mesa/tnl_dd/t_dd_dmatmp.h b/src/mesa/tnl_dd/t_dd_dmatmp.h
  index 52ea2bf..5ea2d31 100644
  --- a/src/mesa/tnl_dd/t_dd_dmatmp.h
  +++ b/src/mesa/tnl_dd/t_dd_dmatmp.h
  @@ -36,7 +36,7 @@
* Produces code for both inline triangles and indexed triangles.
* Where various primitive types are unaccelerated by hardware, the
* code attempts to fallback to other primitive types (quadstrips to
  - * tristrips, lineloops to linestrips), or to indexed vertices.
  + * tristrips, lineloops to linestrips).
*/
   
   #if !defined(HAVE_TRIANGLES)
  @@ -444,65 +444,6 @@ static void TAG(render_quad_strip_verts)( struct 
  gl_context *ctx,
 }
   
 FLUSH();
  -
  -   } else if (HAVE_TRI_STRIPS  
  - ctx-Light.ShadeModel == GL_FLAT 
  - TNL_CONTEXT(ctx)-vb.AttribPtr[_TNL_ATTRIB_COLOR0]-stride) {
 
 I don't think removing this whole block is right because !HAVE_ELTS is
 an error case... but I guess we've never hit that error case since
 HAVE_ELTS is always zero.

There are no real error cases here, just dead code. validate_render() is
supposed to make sure we never call these functions if the code can't
actually render the primitives. The fprintf()+return branches should
really just contain assert(0) or equivalent.

 
  -  if (HAVE_ELTS) {
  -LOCAL_VARS;
  -int dmasz = GET_SUBSEQUENT_VB_MAX_ELTS();
  -int currentsz;
  -GLuint j, nr;
  -
  - EMIT_INDEXED_VERTS( ctx, start, count );
  -
  -/* Simulate flat-shaded quadstrips using indexed vertices:
  - */
  -ELT_INIT( GL_TRIANGLES );
  -
  -currentsz = GET_CURRENT_VB_MAX_ELTS();
  -
  -/* Emit whole number of quads in total, and in each buffer.
  - */
  -dmasz -= dmasz  1;
  -count -= (count-start)  1;
  -currentsz -= currentsz  1;
  -
  -if (currentsz  12)
  -   currentsz = dmasz;
  -
  -currentsz = currentsz/6*2;
  -dmasz = dmasz/6*2;
  -
  -for (j = start; j + 3  count; j += nr - 2 ) {
  -   nr = MIN2( currentsz, count - j );
  -   if (nr = 4) {
  -  GLint quads = (nr/2)-1;
  -  GLint i;
  -  ELTS_VARS( ALLOC_ELTS( quads*6 ) );
  -
  -  for ( i = j-start ; i  j-start+quads*2 ; i+=2 ) {
  - EMIT_TWO_ELTS( 0, (i+0), (i+1) );
  - EMIT_TWO_ELTS( 2, (i+2), (i+1) );
  - EMIT_TWO_ELTS( 4, (i+3), (i+2) );
  - INCR_ELTS( 6 );
  -  }
  -
  -  FLUSH();
  -   }
  -   currentsz = dmasz;
  -}
  -
  -RELEASE_ELT_VERTS();
  -FLUSH();
  -  }
  -  else {
  -/* Vertices won't fit in a single buffer or elts not
  - * available - should never happen.
  - */
  -fprintf(stderr, %s - cannot draw primitive\n, __FUNCTION__);
  -return;
  -  }
  }
  else if (HAVE_TRI_STRIPS) {
 LOCAL_VARS;
  @@ -568,57 +509,6 @@ static void TAG(render_quads_verts)( struct gl_context 
  *ctx,
currentsz = dmasz;
 }
  }
  -   else if (HAVE_ELTS) {
  -  /* Hardware doesn't have a quad primitive type -- try to
  -   * simulate it using indexed vertices and the triangle
  -   * primitive:
  -   */
  -  LOCAL_VARS;
  -  int dmasz = GET_SUBSEQUENT_VB_MAX_ELTS();
  -  int currentsz;
  -  GLuint j, nr;
  -
  -  EMIT_INDEXED_VERTS( ctx, start, count );
  -
  -  FLUSH();
  -  ELT_INIT( GL_TRIANGLES );
  -  currentsz = GET_CURRENT_VB_MAX_ELTS();
  -
  -  /* Emit whole number of quads in total, and in each buffer.
  -   */
  -  dmasz -= dmasz  3;
  -  count -= (count-start)  3;
  -  currentsz -= currentsz  3;
  -
  -  /* Adjust for rendering as triangles:
  -   */
  -  currentsz = currentsz/6*4;
  -  dmasz = dmasz/6*4;
  -
  -  if (currentsz  8)
  -currentsz = dmasz;
  -
  -  for (j = start; j  count; j += nr ) {
  -nr = MIN2( currentsz, count - j );
  -if (nr = 4) {
  -   GLint quads = nr/4;
  

Re: [Mesa-dev] [PATCH 01/20] t_dd_dmatmp: Kill the paths rendering quads/quad strips via indexed vertices

2015-05-15 Thread Ian Romanick
On 03/23/2015 05:47 AM, ville.syrj...@linux.intel.com wrote:
 From: Ville Syrjälä ville.syrj...@linux.intel.com
 
 No driver supports elts currently, and these make the validate_render
 code a bit hard to follow. Just kill them.

It looks like both r200_tcl.c and radeon_tcl.c define HAVE_TRI_STRIPS
and HAVE_ELTS, but I guess they're using t_dd_dmatmp2.h.  If you add a

#if defined HAVE_ELTS
#error HAVE_ELTS support is removed
#endif

do radeon and r200 still build?

 Signed-off-by: Ville Syrjälä ville.syrj...@linux.intel.com
 ---
  src/mesa/tnl_dd/t_dd_dmatmp.h | 133 
 ++
  1 file changed, 5 insertions(+), 128 deletions(-)
 
 diff --git a/src/mesa/tnl_dd/t_dd_dmatmp.h b/src/mesa/tnl_dd/t_dd_dmatmp.h
 index 52ea2bf..5ea2d31 100644
 --- a/src/mesa/tnl_dd/t_dd_dmatmp.h
 +++ b/src/mesa/tnl_dd/t_dd_dmatmp.h
 @@ -36,7 +36,7 @@
   * Produces code for both inline triangles and indexed triangles.
   * Where various primitive types are unaccelerated by hardware, the
   * code attempts to fallback to other primitive types (quadstrips to
 - * tristrips, lineloops to linestrips), or to indexed vertices.
 + * tristrips, lineloops to linestrips).
   */
  
  #if !defined(HAVE_TRIANGLES)
 @@ -444,65 +444,6 @@ static void TAG(render_quad_strip_verts)( struct 
 gl_context *ctx,
}
  
FLUSH();
 -
 -   } else if (HAVE_TRI_STRIPS  
 -   ctx-Light.ShadeModel == GL_FLAT 
 -   TNL_CONTEXT(ctx)-vb.AttribPtr[_TNL_ATTRIB_COLOR0]-stride) {

I don't think removing this whole block is right because !HAVE_ELTS is
an error case... but I guess we've never hit that error case since
HAVE_ELTS is always zero.

 -  if (HAVE_ELTS) {
 -  LOCAL_VARS;
 -  int dmasz = GET_SUBSEQUENT_VB_MAX_ELTS();
 -  int currentsz;
 -  GLuint j, nr;
 -
 - EMIT_INDEXED_VERTS( ctx, start, count );
 -
 -  /* Simulate flat-shaded quadstrips using indexed vertices:
 -   */
 -  ELT_INIT( GL_TRIANGLES );
 -
 -  currentsz = GET_CURRENT_VB_MAX_ELTS();
 -
 -  /* Emit whole number of quads in total, and in each buffer.
 -   */
 -  dmasz -= dmasz  1;
 -  count -= (count-start)  1;
 -  currentsz -= currentsz  1;
 -
 -  if (currentsz  12)
 - currentsz = dmasz;
 -
 -  currentsz = currentsz/6*2;
 -  dmasz = dmasz/6*2;
 -
 -  for (j = start; j + 3  count; j += nr - 2 ) {
 - nr = MIN2( currentsz, count - j );
 - if (nr = 4) {
 -GLint quads = (nr/2)-1;
 -GLint i;
 -ELTS_VARS( ALLOC_ELTS( quads*6 ) );
 -
 -for ( i = j-start ; i  j-start+quads*2 ; i+=2 ) {
 -   EMIT_TWO_ELTS( 0, (i+0), (i+1) );
 -   EMIT_TWO_ELTS( 2, (i+2), (i+1) );
 -   EMIT_TWO_ELTS( 4, (i+3), (i+2) );
 -   INCR_ELTS( 6 );
 -}
 -
 -FLUSH();
 - }
 - currentsz = dmasz;
 -  }
 -
 -  RELEASE_ELT_VERTS();
 -  FLUSH();
 -  }
 -  else {
 -  /* Vertices won't fit in a single buffer or elts not
 -   * available - should never happen.
 -   */
 -  fprintf(stderr, %s - cannot draw primitive\n, __FUNCTION__);
 -  return;
 -  }
 }
 else if (HAVE_TRI_STRIPS) {
LOCAL_VARS;
 @@ -568,57 +509,6 @@ static void TAG(render_quads_verts)( struct gl_context 
 *ctx,
   currentsz = dmasz;
}
 }
 -   else if (HAVE_ELTS) {
 -  /* Hardware doesn't have a quad primitive type -- try to
 -   * simulate it using indexed vertices and the triangle
 -   * primitive:
 -   */
 -  LOCAL_VARS;
 -  int dmasz = GET_SUBSEQUENT_VB_MAX_ELTS();
 -  int currentsz;
 -  GLuint j, nr;
 -
 -  EMIT_INDEXED_VERTS( ctx, start, count );
 -
 -  FLUSH();
 -  ELT_INIT( GL_TRIANGLES );
 -  currentsz = GET_CURRENT_VB_MAX_ELTS();
 -
 -  /* Emit whole number of quads in total, and in each buffer.
 -   */
 -  dmasz -= dmasz  3;
 -  count -= (count-start)  3;
 -  currentsz -= currentsz  3;
 -
 -  /* Adjust for rendering as triangles:
 -   */
 -  currentsz = currentsz/6*4;
 -  dmasz = dmasz/6*4;
 -
 -  if (currentsz  8)
 -  currentsz = dmasz;
 -
 -  for (j = start; j  count; j += nr ) {
 -  nr = MIN2( currentsz, count - j );
 -  if (nr = 4) {
 - GLint quads = nr/4;
 - GLint i;
 - ELTS_VARS( ALLOC_ELTS( quads*6 ) );
 -
 - for ( i = j-start ; i  j-start+quads*4 ; i+=4 ) {
 -EMIT_TWO_ELTS( 0, (i+0), (i+1) );
 -EMIT_TWO_ELTS( 2, (i+3), (i+1) );
 -EMIT_TWO_ELTS( 4, (i+2), (i+3) );
 -INCR_ELTS( 6 );
 - }
 -
 - FLUSH();
 -  }
 -  currentsz = dmasz;
 -  }
 -
 -  RELEASE_ELT_VERTS();
 -   }
 else if (HAVE_TRIANGLES) {
/* Hardware doesn't have a quad primitive type -- try to
 * simulate it using triangle primitive.  This is a win for
 @@ -1225,29 +1115,16 @@ static GLboolean 

[Mesa-dev] [PATCH 01/20] t_dd_dmatmp: Kill the paths rendering quads/quad strips via indexed vertices

2015-03-23 Thread ville . syrjala
From: Ville Syrjälä ville.syrj...@linux.intel.com

No driver supports elts currently, and these make the validate_render
code a bit hard to follow. Just kill them.

Signed-off-by: Ville Syrjälä ville.syrj...@linux.intel.com
---
 src/mesa/tnl_dd/t_dd_dmatmp.h | 133 ++
 1 file changed, 5 insertions(+), 128 deletions(-)

diff --git a/src/mesa/tnl_dd/t_dd_dmatmp.h b/src/mesa/tnl_dd/t_dd_dmatmp.h
index 52ea2bf..5ea2d31 100644
--- a/src/mesa/tnl_dd/t_dd_dmatmp.h
+++ b/src/mesa/tnl_dd/t_dd_dmatmp.h
@@ -36,7 +36,7 @@
  * Produces code for both inline triangles and indexed triangles.
  * Where various primitive types are unaccelerated by hardware, the
  * code attempts to fallback to other primitive types (quadstrips to
- * tristrips, lineloops to linestrips), or to indexed vertices.
+ * tristrips, lineloops to linestrips).
  */
 
 #if !defined(HAVE_TRIANGLES)
@@ -444,65 +444,6 @@ static void TAG(render_quad_strip_verts)( struct 
gl_context *ctx,
   }
 
   FLUSH();
-
-   } else if (HAVE_TRI_STRIPS  
- ctx-Light.ShadeModel == GL_FLAT 
- TNL_CONTEXT(ctx)-vb.AttribPtr[_TNL_ATTRIB_COLOR0]-stride) {
-  if (HAVE_ELTS) {
-LOCAL_VARS;
-int dmasz = GET_SUBSEQUENT_VB_MAX_ELTS();
-int currentsz;
-GLuint j, nr;
-
- EMIT_INDEXED_VERTS( ctx, start, count );
-
-/* Simulate flat-shaded quadstrips using indexed vertices:
- */
-ELT_INIT( GL_TRIANGLES );
-
-currentsz = GET_CURRENT_VB_MAX_ELTS();
-
-/* Emit whole number of quads in total, and in each buffer.
- */
-dmasz -= dmasz  1;
-count -= (count-start)  1;
-currentsz -= currentsz  1;
-
-if (currentsz  12)
-   currentsz = dmasz;
-
-currentsz = currentsz/6*2;
-dmasz = dmasz/6*2;
-
-for (j = start; j + 3  count; j += nr - 2 ) {
-   nr = MIN2( currentsz, count - j );
-   if (nr = 4) {
-  GLint quads = (nr/2)-1;
-  GLint i;
-  ELTS_VARS( ALLOC_ELTS( quads*6 ) );
-
-  for ( i = j-start ; i  j-start+quads*2 ; i+=2 ) {
- EMIT_TWO_ELTS( 0, (i+0), (i+1) );
- EMIT_TWO_ELTS( 2, (i+2), (i+1) );
- EMIT_TWO_ELTS( 4, (i+3), (i+2) );
- INCR_ELTS( 6 );
-  }
-
-  FLUSH();
-   }
-   currentsz = dmasz;
-}
-
-RELEASE_ELT_VERTS();
-FLUSH();
-  }
-  else {
-/* Vertices won't fit in a single buffer or elts not
- * available - should never happen.
- */
-fprintf(stderr, %s - cannot draw primitive\n, __FUNCTION__);
-return;
-  }
}
else if (HAVE_TRI_STRIPS) {
   LOCAL_VARS;
@@ -568,57 +509,6 @@ static void TAG(render_quads_verts)( struct gl_context 
*ctx,
  currentsz = dmasz;
   }
}
-   else if (HAVE_ELTS) {
-  /* Hardware doesn't have a quad primitive type -- try to
-   * simulate it using indexed vertices and the triangle
-   * primitive:
-   */
-  LOCAL_VARS;
-  int dmasz = GET_SUBSEQUENT_VB_MAX_ELTS();
-  int currentsz;
-  GLuint j, nr;
-
-  EMIT_INDEXED_VERTS( ctx, start, count );
-
-  FLUSH();
-  ELT_INIT( GL_TRIANGLES );
-  currentsz = GET_CURRENT_VB_MAX_ELTS();
-
-  /* Emit whole number of quads in total, and in each buffer.
-   */
-  dmasz -= dmasz  3;
-  count -= (count-start)  3;
-  currentsz -= currentsz  3;
-
-  /* Adjust for rendering as triangles:
-   */
-  currentsz = currentsz/6*4;
-  dmasz = dmasz/6*4;
-
-  if (currentsz  8)
-currentsz = dmasz;
-
-  for (j = start; j  count; j += nr ) {
-nr = MIN2( currentsz, count - j );
-if (nr = 4) {
-   GLint quads = nr/4;
-   GLint i;
-   ELTS_VARS( ALLOC_ELTS( quads*6 ) );
-
-   for ( i = j-start ; i  j-start+quads*4 ; i+=4 ) {
-  EMIT_TWO_ELTS( 0, (i+0), (i+1) );
-  EMIT_TWO_ELTS( 2, (i+3), (i+1) );
-  EMIT_TWO_ELTS( 4, (i+2), (i+3) );
-  INCR_ELTS( 6 );
-   }
-
-   FLUSH();
-}
-currentsz = dmasz;
-  }
-
-  RELEASE_ELT_VERTS();
-   }
else if (HAVE_TRIANGLES) {
   /* Hardware doesn't have a quad primitive type -- try to
* simulate it using triangle primitive.  This is a win for
@@ -1225,29 +1115,16 @@ static GLboolean TAG(validate_render)( struct 
gl_context *ctx,
   case GL_QUAD_STRIP:
 if (VB-Elts) {
ok = HAVE_TRI_STRIPS;
-}
-else if (HAVE_QUAD_STRIPS) {
+} else if (HAVE_QUAD_STRIPS) {
ok = GL_TRUE;
-} else if (HAVE_TRI_STRIPS  
-   ctx-Light.ShadeModel == GL_FLAT 
-   VB-AttribPtr[_TNL_ATTRIB_COLOR0]-stride != 0) {
-   if (HAVE_ELTS) {
-  ok = (GLint) count  GET_SUBSEQUENT_VB_MAX_ELTS();
-