From b9f9bad4ebbf534a839ef539d75bfaabee6e0c42 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Fri, 2 Jun 2017 14:31:49 +0200 Subject: [PATCH] mesa: make use of NewWindowRectangles driver flags MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Now, st_update_window_rectangles() won't be called when the scissor is going to be updated. Signed-off-by: Samuel Pitoiset Reviewed-by: Marek Olšák --- src/mesa/main/scissor.c | 4 +++- src/mesa/state_tracker/st_context.c | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/mesa/main/scissor.c b/src/mesa/main/scissor.c index fe2e4dbff65..13934f9ca20 100644 --- a/src/mesa/main/scissor.c +++ b/src/mesa/main/scissor.c @@ -253,7 +253,9 @@ _mesa_WindowRectanglesEXT(GLenum mode, GLsizei count, const GLint *box) box += 4; } - FLUSH_VERTICES(ctx, _NEW_SCISSOR); + FLUSH_VERTICES(ctx, 0); + ctx->NewDriverState |= ctx->DriverFlags.NewWindowRectangles; + memcpy(ctx->Scissor.WindowRects, newval, sizeof(struct gl_scissor_rect) * count); ctx->Scissor.NumWindowRects = count; diff --git a/src/mesa/state_tracker/st_context.c b/src/mesa/state_tracker/st_context.c index c9017646687..8a5dd2f7254 100644 --- a/src/mesa/state_tracker/st_context.c +++ b/src/mesa/state_tracker/st_context.c @@ -193,8 +193,7 @@ void st_invalidate_state(struct gl_context * ctx, GLbitfield new_state) if (new_state & _NEW_SCISSOR) st->dirty |= ST_NEW_RASTERIZER | - ST_NEW_SCISSOR | - ST_NEW_WINDOW_RECTANGLES; + ST_NEW_SCISSOR; if (new_state & _NEW_FOG) st->dirty |= ST_NEW_FS_STATE; @@ -514,6 +513,7 @@ static void st_init_driver_flags(struct gl_driver_flags *f) f->NewAtomicBuffer = ST_NEW_ATOMIC_BUFFER; f->NewShaderStorageBuffer = ST_NEW_STORAGE_BUFFER; f->NewImageUnits = ST_NEW_IMAGE_UNITS; + f->NewWindowRectangles = ST_NEW_WINDOW_RECTANGLES; } struct st_context *st_create_context(gl_api api, struct pipe_context *pipe, -- 2.30.2