Browse Source

mesa: use new _mesa_inside_dlist_begin_end() function

Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
tags/mesa-9.2-rc1
Brian Paul 12 years ago
parent
commit
f74da3e988
3 changed files with 14 additions and 4 deletions
  1. 11
    0
      src/mesa/main/context.h
  2. 2
    2
      src/mesa/main/dlist.c
  3. 1
    2
      src/mesa/vbo/vbo_save_api.c

+ 11
- 0
src/mesa/main/context.h View File

@@ -200,6 +200,17 @@ _mesa_inside_begin_end(const struct gl_context *ctx)
}


/**
* Are we currently between glBegin and glEnd in a display list?
*/
static inline GLboolean
_mesa_inside_dlist_begin_end(const struct gl_context *ctx)
{
return ctx->Driver.CurrentSavePrimitive != PRIM_OUTSIDE_BEGIN_END;
}



/**
* \name Macros for flushing buffered rendering commands before state changes,
* checking if inside glBegin/glEnd, etc.

+ 2
- 2
src/mesa/main/dlist.c View File

@@ -3777,7 +3777,7 @@ save_ShadeModel(GLenum mode)

/* Only save the value if we know the statechange will take effect:
*/
if (ctx->Driver.CurrentSavePrimitive == PRIM_OUTSIDE_BEGIN_END)
if (!_mesa_inside_dlist_begin_end(ctx))
ctx->ListState.Current.ShadeModel = mode;

n = alloc_instruction(ctx, OPCODE_SHADE_MODEL, 1);
@@ -5657,7 +5657,7 @@ save_Begin(GLenum mode)
*/
ctx->Driver.CurrentSavePrimitive = PRIM_INSIDE_UNKNOWN_PRIM;
}
else if (ctx->Driver.CurrentSavePrimitive == PRIM_OUTSIDE_BEGIN_END) {
else if (!_mesa_inside_dlist_begin_end(ctx)) {
ctx->Driver.CurrentSavePrimitive = mode;
}
else {

+ 1
- 2
src/mesa/vbo/vbo_save_api.c View File

@@ -1558,8 +1558,7 @@ vbo_save_EndList(struct gl_context *ctx)

/* EndList called inside a (saved) Begin/End pair?
*/
if (ctx->Driver.CurrentSavePrimitive != PRIM_OUTSIDE_BEGIN_END) {

if (_mesa_inside_dlist_begin_end(ctx)) {
if (save->prim_count > 0) {
GLint i = save->prim_count - 1;
ctx->Driver.CurrentSavePrimitive = PRIM_OUTSIDE_BEGIN_END;

Loading…
Cancel
Save