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;
> > -       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;
> 
> I'll also accept a follow-up patch that does
> 
>     sed --in-place \
>         -e 's/GLboolean/bool/' \
>         -e 's/GL_FALSE/false/' \
>         -e 's/GL_TRUE/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();
> > -       }
> > -       else {
> > -          ok = GL_FALSE;
> > -       }
> > -    }
> > -    else 
> > +    } else {
> >         ok = HAVE_TRI_STRIPS;
> > +    }
> >      break;
> >        case GL_QUADS:
> >      if (HAVE_QUADS) {
> >         ok = GL_TRUE;
> > -    } else if (HAVE_ELTS) {
> > -       ok = (GLint) count < GET_SUBSEQUENT_VB_MAX_ELTS();
> > -    }
> > -    else {
> > +    } else {
> >         ok = HAVE_TRIANGLES; /* flatshading is ok. */
> >      }
> >      break;
> > 

-- 
Ville Syrjälä
Intel OTC
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to