mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-28 10:20:09 +01:00
freedreno: scissor vs disabled scissor micro-opt
We don't need to deref and check rast state every time scissor changes, only when rast state changes. Signed-off-by: Rob Clark <robdclark@chromium.org> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4813>
This commit is contained in:
parent
373e9ab27c
commit
f62cad6b7f
3 changed files with 12 additions and 3 deletions
|
|
@ -427,6 +427,8 @@ fd_context_init(struct fd_context *ctx, struct pipe_screen *pscreen,
|
|||
list_add(&ctx->node, &ctx->screen->context_list);
|
||||
fd_screen_unlock(ctx->screen);
|
||||
|
||||
ctx->current_scissor = &ctx->disabled_scissor;
|
||||
|
||||
ctx->log_out = stdout;
|
||||
|
||||
if ((fd_mesa_debug & FD_DBG_LOG) &&
|
||||
|
|
|
|||
|
|
@ -278,6 +278,9 @@ struct fd_context {
|
|||
*/
|
||||
bool in_discard_blit : 1;
|
||||
|
||||
/* points to either scissor or disabled_scissor depending on rast state: */
|
||||
struct pipe_scissor_state *current_scissor;
|
||||
|
||||
struct pipe_scissor_state scissor;
|
||||
|
||||
/* we don't have a disable/enable bit for scissor, so instead we keep
|
||||
|
|
@ -463,9 +466,7 @@ fd_context_all_clean(struct fd_context *ctx)
|
|||
static inline struct pipe_scissor_state *
|
||||
fd_context_get_scissor(struct fd_context *ctx)
|
||||
{
|
||||
if (ctx->rasterizer && ctx->rasterizer->scissor)
|
||||
return &ctx->scissor;
|
||||
return &ctx->disabled_scissor;
|
||||
return ctx->current_scissor;
|
||||
}
|
||||
|
||||
static inline bool
|
||||
|
|
|
|||
|
|
@ -400,6 +400,12 @@ fd_rasterizer_state_bind(struct pipe_context *pctx, void *hwcso)
|
|||
ctx->rasterizer = hwcso;
|
||||
ctx->dirty |= FD_DIRTY_RASTERIZER;
|
||||
|
||||
if (ctx->rasterizer && ctx->rasterizer->scissor) {
|
||||
ctx->current_scissor = &ctx->scissor;
|
||||
} else {
|
||||
ctx->current_scissor = &ctx->disabled_scissor;
|
||||
}
|
||||
|
||||
/* if scissor enable bit changed we need to mark scissor
|
||||
* state as dirty as well:
|
||||
* NOTE: we can do a shallow compare, since we only care
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue