diff options
-rw-r--r-- | src/mesa/main/dlist.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/mesa/main/dlist.c b/src/mesa/main/dlist.c index bc0c92a278a..3071a37e14b 100644 --- a/src/mesa/main/dlist.c +++ b/src/mesa/main/dlist.c @@ -3771,15 +3771,16 @@ save_ShadeModel(GLenum mode) CALL_ShadeModel(ctx->Exec, (mode)); } + /* Don't compile this call if it's a no-op. + * By avoiding this state change we have a better chance of + * coalescing subsequent drawing commands into one batch. + */ if (ctx->ListState.Current.ShadeModel == mode) return; SAVE_FLUSH_VERTICES(ctx); - /* Only save the value if we know the statechange will take effect: - */ - if (!_mesa_inside_dlist_begin_end(ctx)) - ctx->ListState.Current.ShadeModel = mode; + ctx->ListState.Current.ShadeModel = mode; n = alloc_instruction(ctx, OPCODE_SHADE_MODEL, 1); if (n) { |