On 07/20/2015 12:27 PM, Ian Romanick wrote:
Patches 1, 2, and 3 are

Reviewed-by: Ian Romanick <ian.d.roman...@intel.com>

The other patches look correct too, but the whole series is
optimizations, so do you have any before / after performance data?

No, I don't. I happened across these while looking at apitraces of Google Earth. It emits a surprising number of no-change/redundant GL commands. There are recurring sequences of drawing commands with needless glLoadIdentity() and glLoadMatrixf(identy) calls. Avoiding the state validation for that seems like a good thing.

I did some quick and dirty counting of the number of times matrix validation was done and this reduces it, but I don't have a good way to measure an overall performance change.

As for Eric's concern: "I'm pretty skeptical of adding the memcmp in 6/6, though." I don't think the memcmp() will be a big deal in practice. I think the only case where the whole 16-element comparison is needed is when the matrix is a pure translation (or identity). For other types of matrices, the m[0] element will usually not be 1.0 and the memcmp() would stop early. In any case, glLoadMatrix is not super common and I'd expect the 64-byte memcmp() to be cheaper than the matrix-analyze code in m_matrix.c

I'm not super attached to this change so if you're unconvinced I won't mind dropping it.

-Brian




On 07/17/2015 05:48 PM, Brian Paul wrote:
If the new mode matches the current mode, there can be no error.
---
  src/mesa/main/polygon.c | 6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/mesa/main/polygon.c b/src/mesa/main/polygon.c
index a1f0aa0..6be6f33 100644
--- a/src/mesa/main/polygon.c
+++ b/src/mesa/main/polygon.c
@@ -93,14 +93,14 @@ _mesa_FrontFace( GLenum mode )
     if (MESA_VERBOSE&VERBOSE_API)
        _mesa_debug(ctx, "glFrontFace %s\n", _mesa_lookup_enum_by_nr(mode));

+   if (ctx->Polygon.FrontFace == mode)
+      return;
+
     if (mode!=GL_CW && mode!=GL_CCW) {
        _mesa_error( ctx, GL_INVALID_ENUM, "glFrontFace" );
        return;
     }

-   if (ctx->Polygon.FrontFace == mode)
-      return;
-
     FLUSH_VERTICES(ctx, _NEW_POLYGON);
     ctx->Polygon.FrontFace = mode;




_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to