i965/msaa: Set KILL_ENABLE when GL_ALPHA_TO_COVERAGE enabled.
i965 hardware needs to be informed of situations in which it's possible for pixels (or samples) to be discarded for reasons other than depth/stencil testing (e.g. due to an explicit "discard" in the fragment shader). One of these situations is when GL_ALPHA_TO_COVERAGE is enabled, since that can cause samples to be discarded by the color calculator when the pixel's alpha value is less than 1.0. Without this patch, GL_ALPHA_TO_COVERAGE does not take effect on depth buffers. Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
This commit is contained in:
@@ -186,8 +186,9 @@ upload_wm_state(struct brw_context *brw)
|
||||
dw6 |= brw->wm.prog_data->barycentric_interp_modes <<
|
||||
GEN6_WM_BARYCENTRIC_INTERPOLATION_MODE_SHIFT;
|
||||
|
||||
/* _NEW_COLOR */
|
||||
if (fp->program.UsesKill || ctx->Color.AlphaEnabled)
|
||||
/* _NEW_COLOR, _NEW_MULTISAMPLE */
|
||||
if (fp->program.UsesKill || ctx->Color.AlphaEnabled ||
|
||||
ctx->Multisample.SampleAlphaToCoverage)
|
||||
dw5 |= GEN6_WM_KILL_ENABLE;
|
||||
|
||||
if (brw_color_buffer_write_enabled(brw) ||
|
||||
|
||||
@@ -70,8 +70,9 @@ upload_wm_state(struct brw_context *brw)
|
||||
dw1 |= brw->wm.prog_data->barycentric_interp_modes <<
|
||||
GEN7_WM_BARYCENTRIC_INTERPOLATION_MODE_SHIFT;
|
||||
|
||||
/* _NEW_COLOR */
|
||||
if (fp->program.UsesKill || ctx->Color.AlphaEnabled)
|
||||
/* _NEW_COLOR, _NEW_MULTISAMPLE */
|
||||
if (fp->program.UsesKill || ctx->Color.AlphaEnabled ||
|
||||
ctx->Multisample.SampleAlphaToCoverage)
|
||||
dw1 |= GEN7_WM_KILL_ENABLE;
|
||||
|
||||
/* _NEW_BUFFERS */
|
||||
|
||||
Reference in New Issue
Block a user