mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 23:50:11 +01:00
st/mesa: only enable MSAA coverage options when we have a MSAA buffer
Regardless of whether GL_MULTISAMPLE is enabled (it's enabled by default) we should not set the alpha_to_coverage or alpha_to_one flags if the current drawing buffer does not do MSAA. This fixes the new piglit gl-1.3-alpha_to_coverage_nop test. ETQW is a game that enables GL_SAMPLE_ALPHA_TO_COVERAGE without MSAA. Shrubs along the side of roads were invisible because fragments with alpha < 0.5 were being discarded (zero coverage). v2: remove ctx->DrawBuffer != NULL check. Reviewed-by: Roland Scheidegger <sroland@vmware.com> Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
parent
e1ea36ae71
commit
a01872f808
2 changed files with 7 additions and 4 deletions
|
|
@ -265,9 +265,11 @@ update_blend( struct st_context *st )
|
|||
|
||||
blend->dither = ctx->Color.DitherFlag;
|
||||
|
||||
if (ctx->Multisample.Enabled) {
|
||||
/* unlike in gallium/d3d10 these operations are only performed
|
||||
if msaa is enabled */
|
||||
if (ctx->Multisample.Enabled &&
|
||||
ctx->DrawBuffer->Visual.sampleBuffers > 0) {
|
||||
/* Unlike in gallium/d3d10 these operations are only performed
|
||||
* if both msaa is enabled and we have a multisample buffer.
|
||||
*/
|
||||
blend->alpha_to_coverage = ctx->Multisample.SampleAlphaToCoverage;
|
||||
blend->alpha_to_one = ctx->Multisample.SampleAlphaToOne;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -166,7 +166,8 @@ void st_invalidate_state(struct gl_context * ctx, GLbitfield new_state)
|
|||
struct st_context *st = st_context(ctx);
|
||||
|
||||
if (new_state & _NEW_BUFFERS) {
|
||||
st->dirty |= ST_NEW_DSA |
|
||||
st->dirty |= ST_NEW_BLEND |
|
||||
ST_NEW_DSA |
|
||||
ST_NEW_FB_STATE |
|
||||
ST_NEW_SAMPLE_MASK |
|
||||
ST_NEW_SAMPLE_SHADING |
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue