mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 17:48:10 +02:00
mesa: Add new ctx->Stencil._WriteEnabled derived state flag.
i965 needs to know whether stencil writes are enabled in several places,
and gets the test wrong sometimes. While we could create a function to
compute this, it seems generally useful enough to warrant a new piece of
derived state. Also, all the plumbing is already in place.
NOTE: This is a candidate for stable branches.
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Paul Berry <stereotype441@gmail.com>
(cherry picked from commit 1e3235d36e)
This commit is contained in:
parent
2708dc5e88
commit
ae79402dba
2 changed files with 6 additions and 0 deletions
|
|
@ -1128,6 +1128,7 @@ struct gl_stencil_attrib
|
|||
GLboolean TestTwoSide; /**< GL_EXT_stencil_two_side */
|
||||
GLubyte ActiveFace; /**< GL_EXT_stencil_two_side (0 or 2) */
|
||||
GLboolean _Enabled; /**< Enabled and stencil buffer present */
|
||||
GLboolean _WriteEnabled; /**< _Enabled and non-zero writemasks */
|
||||
GLboolean _TestTwoSide;
|
||||
GLubyte _BackFace; /**< Current back stencil state (1 or 2) */
|
||||
GLenum Function[3]; /**< Stencil function */
|
||||
|
|
|
|||
|
|
@ -551,6 +551,11 @@ _mesa_update_stencil(struct gl_context *ctx)
|
|||
ctx->Stencil.Ref[0] != ctx->Stencil.Ref[face] ||
|
||||
ctx->Stencil.ValueMask[0] != ctx->Stencil.ValueMask[face] ||
|
||||
ctx->Stencil.WriteMask[0] != ctx->Stencil.WriteMask[face]);
|
||||
|
||||
ctx->Stencil._WriteEnabled =
|
||||
ctx->Stencil._Enabled &&
|
||||
(ctx->Stencil.WriteMask[0] != 0 ||
|
||||
(ctx->Stencil._TestTwoSide && ctx->Stencil.WriteMask[face] != 0));
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue