mesa/dlist: don't cache state which may not be replayed on CallList
Statechanges which occur before the first End in a display list may not be replayed when the list is called, in particular if it is called from within a begin/end pair. Recognize vulnerable statechanges and do not use them to fill in the state cache.
This commit is contained in:
@@ -3203,7 +3203,11 @@ save_ShadeModel(GLenum mode)
|
||||
return;
|
||||
|
||||
SAVE_FLUSH_VERTICES(ctx);
|
||||
ctx->ListState.Current.ShadeModel = mode;
|
||||
|
||||
/* Only save the value if we know the statechange will take effect:
|
||||
*/
|
||||
if (ctx->Driver.CurrentSavePrimitive == PRIM_OUTSIDE_BEGIN_END)
|
||||
ctx->ListState.Current.ShadeModel = mode;
|
||||
|
||||
n = ALLOC_INSTRUCTION(ctx, OPCODE_SHADE_MODEL, 1);
|
||||
if (n) {
|
||||
|
||||
Reference in New Issue
Block a user