summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/mesa/drivers/common/meta.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/mesa/drivers/common/meta.c b/src/mesa/drivers/common/meta.c
index cbc0512b580..cdb2500f7c2 100644
--- a/src/mesa/drivers/common/meta.c
+++ b/src/mesa/drivers/common/meta.c
@@ -272,8 +272,10 @@ struct gen_mipmap_state
*/
struct gl_meta_state
{
- struct save_state Save[MAX_META_OPS_DEPTH]; /**< state saved during meta-ops */
- int current_save_state;
+ /** Stack of state saved during meta-ops */
+ struct save_state Save[MAX_META_OPS_DEPTH];
+ /** Save stack depth */
+ GLuint SaveStackDepth;
struct temp_texture TempTex;
@@ -328,9 +330,9 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state)
struct save_state *save;
/* hope MAX_META_OPS_DEPTH is large enough */
- assert(current_save_state < MAX_META_OPS_DEPTH);
+ assert(ctx->Meta->SaveStackDepth < MAX_META_OPS_DEPTH);
- save = &ctx->Meta->Save[ctx->Meta->current_save_state++];
+ save = &ctx->Meta->Save[ctx->Meta->SaveStackDepth++];
memset(save, 0, sizeof(*save));
save->SavedState = state;
@@ -581,7 +583,7 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state)
static void
_mesa_meta_end(struct gl_context *ctx)
{
- struct save_state *save = &ctx->Meta->Save[--ctx->Meta->current_save_state];
+ struct save_state *save = &ctx->Meta->Save[--ctx->Meta->SaveStackDepth];
const GLbitfield state = save->SavedState;
if (state & META_ALPHA_TEST) {