diff options
author | Ian Romanick <ian.d.romanick@intel.com> | 2015-09-14 11:56:20 -0700 |
---|---|---|
committer | Emil Velikov <emil.l.velikov@gmail.com> | 2015-09-23 21:10:11 +0100 |
commit | 2c65e64881045f99555c5fa7cc8284e2075d7383 (patch) | |
tree | 0632806202969966ce7db64a5431c1e8b1b340a4 | |
parent | 8be6b32d6558109fce4b63c90b434dd834819907 (diff) | |
download | mesa-2c65e64881045f99555c5fa7cc8284e2075d7383.tar.gz |
t_dd_dmatmp: Pull out common 'count -= count & 3' code
This was missing in the HAVE_TRIANGLES path, and that could cause
incorrect rendering.
No piglit regressions on i915 (G33) or radeon (Radeon 7500).
Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=38109
Reviewed-by: Brian Paul <brianp@vmware.com>
Cc: Marius Predut <marius.predut@intel.com>
Cc: "10.6 11.0" <mesa-stable@lists.freedesktop.org>
(cherry picked from commit c0b3b2f7603eab210acdb2e654e5411fe912ca34)
-rw-r--r-- | src/mesa/tnl_dd/t_dd_dmatmp.h | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/src/mesa/tnl_dd/t_dd_dmatmp.h b/src/mesa/tnl_dd/t_dd_dmatmp.h index a7cabc24977..6e60acd50c9 100644 --- a/src/mesa/tnl_dd/t_dd_dmatmp.h +++ b/src/mesa/tnl_dd/t_dd_dmatmp.h @@ -542,6 +542,9 @@ static void TAG(render_quads_verts)( struct gl_context *ctx, GLuint count, GLuint flags ) { + /* Emit whole number of quads in total. */ + count -= count & 3; + if (HAVE_QUADS) { LOCAL_VARS; int dmasz = (GET_SUBSEQUENT_VB_MAX_VERTS()/4) * 4; @@ -550,11 +553,6 @@ static void TAG(render_quads_verts)( struct gl_context *ctx, INIT(GL_QUADS); - /* Emit whole number of quads in total. dmasz is already a multiple - * of 4. - */ - count -= count & 3; - currentsz = (GET_CURRENT_VB_MAX_VERTS()/4) * 4; if (currentsz < 8) currentsz = dmasz; @@ -584,7 +582,6 @@ static void TAG(render_quads_verts)( struct gl_context *ctx, /* Emit whole number of quads in total, and in each buffer. */ dmasz -= dmasz & 3; - count -= count & 3; currentsz -= currentsz & 3; /* Adjust for rendering as triangles: @@ -1070,6 +1067,9 @@ static void TAG(render_quads_elts)( struct gl_context *ctx, GLuint count, GLuint flags ) { + /* Emit whole number of quads in total. */ + count -= count & 3; + if (HAVE_QUADS) { LOCAL_VARS; GLuint *elts = TNL_CONTEXT(ctx)->vb.Elts; @@ -1082,8 +1082,6 @@ static void TAG(render_quads_elts)( struct gl_context *ctx, currentsz = GET_CURRENT_VB_MAX_ELTS()/4*4; - count -= count & 3; - if (currentsz < 8) currentsz = dmasz; @@ -1106,7 +1104,6 @@ static void TAG(render_quads_elts)( struct gl_context *ctx, /* Emit whole number of quads in total, and in each buffer. */ dmasz -= dmasz & 3; - count -= count & 3; currentsz -= currentsz & 3; /* Adjust for rendering as triangles: |