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:
parent
09a3a28fc8
commit
d6c2347d79
|
@ -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) {
|
||||
|
|
Loading…
Reference in New Issue