Mesa (master): mesa: only flush vertices when the viewport is different

Samuel Pitoiset hakzsam at kemper.freedesktop.org
Sat Jun 24 15:02:18 UTC 2017


Module: Mesa
Branch: master
Commit: cb577e379e20d70d62821c0ca2f1cb77c7b6790e
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=cb577e379e20d70d62821c0ca2f1cb77c7b6790e

Author: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Date:   Thu Jun 22 15:03:20 2017 +0200

mesa: only flush vertices when the viewport is different

This prevents glViewport() and friends to always flush and
trigger _NEW_VIEWPORT.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com>

---

 src/mesa/main/viewport.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/mesa/main/viewport.c b/src/mesa/main/viewport.c
index d37c2f3f10..8055ba55e5 100644
--- a/src/mesa/main/viewport.c
+++ b/src/mesa/main/viewport.c
@@ -40,9 +40,6 @@ set_viewport_no_notify(struct gl_context *ctx, unsigned idx,
                        GLfloat x, GLfloat y,
                        GLfloat width, GLfloat height)
 {
-   FLUSH_VERTICES(ctx, ctx->DriverFlags.NewViewport ? 0 : _NEW_VIEWPORT);
-   ctx->NewDriverState |= ctx->DriverFlags.NewViewport;
-
    /* clamp width and height to the implementation dependent range */
    width  = MIN2(width, (GLfloat) ctx->Const.MaxViewportWidth);
    height = MIN2(height, (GLfloat) ctx->Const.MaxViewportHeight);
@@ -70,6 +67,9 @@ set_viewport_no_notify(struct gl_context *ctx, unsigned idx,
        ctx->ViewportArray[idx].Height == height)
       return;
 
+   FLUSH_VERTICES(ctx, ctx->DriverFlags.NewViewport ? 0 : _NEW_VIEWPORT);
+   ctx->NewDriverState |= ctx->DriverFlags.NewViewport;
+
    ctx->ViewportArray[idx].X = x;
    ctx->ViewportArray[idx].Width = width;
    ctx->ViewportArray[idx].Y = y;




More information about the mesa-commit mailing list