mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-04-27 06:40:38 +02:00
mesa: need to set all stencil bits to 0 before setting the 1 bits
Plus, check for pixel transfer stencil index/offset.
This commit is contained in:
parent
8398535331
commit
c5f8594aeb
1 changed files with 9 additions and 0 deletions
|
|
@ -1456,6 +1456,8 @@ _mesa_meta_draw_pixels(GLcontext *ctx,
|
|||
}
|
||||
else if (_mesa_is_stencil_format(format)) {
|
||||
if (ctx->Extensions.ARB_fragment_program &&
|
||||
ctx->Pixel.IndexShift == 0 &&
|
||||
ctx->Pixel.IndexOffset == 0 &&
|
||||
type == GL_UNSIGNED_BYTE) {
|
||||
/* We'll store stencil as alpha. This only works for GLubyte
|
||||
* image data because of how incoming values are mapped to alpha
|
||||
|
|
@ -1590,6 +1592,13 @@ _mesa_meta_draw_pixels(GLcontext *ctx,
|
|||
_mesa_ColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);
|
||||
|
||||
_mesa_set_enable(ctx, GL_STENCIL_TEST, GL_TRUE);
|
||||
|
||||
/* set all stencil bits to 0 */
|
||||
_mesa_StencilOp(GL_REPLACE, GL_REPLACE, GL_REPLACE);
|
||||
_mesa_StencilFunc(GL_ALWAYS, 0, 255);
|
||||
_mesa_DrawArrays(GL_TRIANGLE_FAN, 0, 4);
|
||||
|
||||
/* set stencil bits to 1 where needed */
|
||||
_mesa_StencilOp(GL_KEEP, GL_KEEP, GL_REPLACE);
|
||||
|
||||
_mesa_BindProgram(GL_FRAGMENT_PROGRAM_ARB, drawpix->StencilFP);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue