vc4: Disable MSAA rasterization when the job binning is single-sampled.

Gallium core just changed to start setting MSAA enabled in the rasterizer
state even with samples==1 buffers.  This caused disagreements in our
driver between binning and rasterization state, which the simulator threw
assertion failures about.  Keep the single-sampled samples==1 behavior for
now.
This commit is contained in:
Eric Anholt 2016-11-22 13:51:03 -08:00
parent ff018e0979
commit 9728887e7f

View file

@ -76,6 +76,7 @@ vc4_emit_state(struct pipe_context *pctx)
VC4_DIRTY_ZSA |
VC4_DIRTY_COMPILED_FS)) {
uint8_t ez_enable_mask_out = ~0;
uint8_t rasosm_mask_out = ~0;
/* HW-2905: If the RCL ends up doing a full-res load when
* multisampling, then early Z tracking may end up with values
@ -89,10 +90,20 @@ vc4_emit_state(struct pipe_context *pctx)
if (job->msaa || vc4->prog.fs->disable_early_z)
ez_enable_mask_out &= ~VC4_CONFIG_BITS_EARLY_Z;
/* Don't set the rasterizer to oversample if we're doing our
* binning and load/stores in single-sample mode. This is for
* the samples == 1 case, where vc4 doesn't do any
* multisampling behavior.
*/
if (!job->msaa) {
rasosm_mask_out &=
~VC4_CONFIG_BITS_RASTERIZER_OVERSAMPLE_4X;
}
cl_u8(&bcl, VC4_PACKET_CONFIGURATION_BITS);
cl_u8(&bcl,
vc4->rasterizer->config_bits[0] |
vc4->zsa->config_bits[0]);
(vc4->rasterizer->config_bits[0] |
vc4->zsa->config_bits[0]) & rasosm_mask_out);
cl_u8(&bcl,
vc4->rasterizer->config_bits[1] |
vc4->zsa->config_bits[1]);