[Mesa-dev] [PATCH 01/20] t_dd_dmatmp: Kill the paths rendering quads/quad strips via indexed vertices
ville.syrjala at linux.intel.com
ville.syrjala at linux.intel.com
Mon Mar 23 05:47:17 PDT 2015
From: Ville Syrjälä <ville.syrjala at 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.syrjala at 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();
- }
- 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;
--
2.0.5
More information about the mesa-dev
mailing list