mesa/st: In the precense of integer buffers enable per buffer blending
authorGert Wollny <gert.wollny@collabora.com>
Thu, 13 Sep 2018 08:06:45 +0000 (10:06 +0200)
committerGert Wollny <gert.wollny@collabora.com>
Tue, 25 Sep 2018 13:54:38 +0000 (15:54 +0200)
Since blending will be disabled later for integer formats we have to
consider that in the case of a mixed set of integer/non-integer format
buffers blending must be handled on a per buffer basis.

Fixes on r600:
  dEQP-GLES31.functional.draw_buffers_indexed.random.
      max_required_draw_buffers.13

Fixes: 8fb966688bc1053a48e8ee7f7394ce030bcfd345
  st/mesa: Disable blending for integer formats.
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
src/mesa/state_tracker/st_atom_blend.c

index 804de2f154f74427ee27ac243bc9dd34924009d3..9f7f779289e90d7adbc58deacb98f3813d864dda 100644 (file)
@@ -139,6 +139,12 @@ blend_per_rt(const struct gl_context *ctx, unsigned num_cb)
       /* this can only happen if GL_ARB_draw_buffers_blend is enabled */
       return GL_TRUE;
    }
+   if (ctx->DrawBuffer->_IntegerBuffers &&
+       (ctx->DrawBuffer->_IntegerBuffers != cb_mask)) {
+      /* If there is a mix of integer/non-integer buffers then blending
+       * must be handled on a per buffer basis. */
+      return GL_TRUE;
+   }
    return GL_FALSE;
 }