Commit b677e960 authored by Marek Olšák's avatar Marek Olšák

mesa: use DriverFlags.NewAlphaTest to communicate alphatest changes to st/mesa

Now AlphaFunc avoids the blend state update in st/mesa and avoids
_mesa_update_state_locked.

The GL_ALPHA_TEST enable won't trigger blend state updates in st/mesa
after st/mesa stops relying on _NEW_COLOR.
Reviewed-by: default avatarNicolai Hähnle <nicolai.haehnle@amd.com>
Reviewed-by: Brian Paul's avatarBrian Paul <brianp@vmware.com>
Reviewed-by: Timothy Arceri's avatarTimothy Arceri <tarceri@itsqueeze.com>
parent 37b83492
......@@ -735,7 +735,8 @@ _mesa_AlphaFunc( GLenum func, GLclampf ref )
case GL_NOTEQUAL:
case GL_GEQUAL:
case GL_ALWAYS:
FLUSH_VERTICES(ctx, _NEW_COLOR);
FLUSH_VERTICES(ctx, ctx->DriverFlags.NewAlphaTest ? 0 : _NEW_COLOR);
ctx->NewDriverState |= ctx->DriverFlags.NewAlphaTest;
ctx->Color.AlphaFunc = func;
ctx->Color.AlphaRefUnclamped = ref;
ctx->Color.AlphaRef = CLAMP(ref, 0.0F, 1.0F);
......
......@@ -293,7 +293,9 @@ _mesa_set_enable(struct gl_context *ctx, GLenum cap, GLboolean state)
goto invalid_enum_error;
if (ctx->Color.AlphaEnabled == state)
return;
/* AlphaEnabled is used by the fixed-func fragment program */
FLUSH_VERTICES(ctx, _NEW_COLOR);
ctx->NewDriverState |= ctx->DriverFlags.NewAlphaTest;
ctx->Color.AlphaEnabled = state;
break;
case GL_AUTO_NORMAL:
......
......@@ -4475,6 +4475,9 @@ struct gl_driver_flags
/** gl_context::Scissor::ScissorArray */
uint64_t NewScissorRect;
/** gl_context::Color::Alpha* */
uint64_t NewAlphaTest;
/** gl_context::Depth */
uint64_t NewDepth;
......
......@@ -237,8 +237,7 @@ st_invalidate_state(struct gl_context * ctx)
st->dirty |= ST_NEW_CLIP_STATE;
if (new_state & _NEW_COLOR)
st->dirty |= ST_NEW_BLEND |
ST_NEW_DSA;
st->dirty |= ST_NEW_BLEND;
if (new_state & _NEW_PIXEL)
st->dirty |= ST_NEW_PIXEL_TRANSFER;
......@@ -519,6 +518,7 @@ static void st_init_driver_flags(struct st_context *st)
f->NewFramebufferSRGB = ST_NEW_FB_STATE;
f->NewScissorRect = ST_NEW_SCISSOR;
f->NewScissorTest = ST_NEW_SCISSOR | ST_NEW_RASTERIZER;
f->NewAlphaTest = ST_NEW_DSA;
f->NewDepth = ST_NEW_DSA;
f->NewStencil = ST_NEW_DSA;
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment