aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamuel Pitoiset <[email protected]>2017-06-02 14:31:49 +0200
committerSamuel Pitoiset <[email protected]>2017-06-06 11:47:31 +0200
commitb9f9bad4ebbf534a839ef539d75bfaabee6e0c42 (patch)
tree757d35e29d6c55c5b2b3081e83bc70bdafe1f9cf
parent035b0176e2c38ce4c35415de8f5cac7a4017d324 (diff)
mesa: make use of NewWindowRectangles driver flags
Now, st_update_window_rectangles() won't be called when the scissor is going to be updated. Signed-off-by: Samuel Pitoiset <[email protected]> Reviewed-by: Marek Olšák <[email protected]>
-rw-r--r--src/mesa/main/scissor.c4
-rw-r--r--src/mesa/state_tracker/st_context.c4
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,