panfrost: Use correct NO_DITHER field on MFBD

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
This commit is contained in:
Alyssa Rosenzweig 2019-07-17 16:19:45 -07:00
parent 676b9339dd
commit 5c554e235d
3 changed files with 9 additions and 1 deletions

View file

@ -142,7 +142,9 @@ panfrost_bind_blend_state(struct pipe_context *pipe,
if (!blend)
return;
SET_BIT(ctx->fragment_shader_core.unknown2_4, MALI_NO_DITHER, !blend->dither);
if (ctx->require_sfbd) {
SET_BIT(ctx->fragment_shader_core.unknown2_4, MALI_NO_DITHER, !blend->dither);
}
/* Shader itself is not dirty, but the shader core is */
ctx->dirty |= PAN_DIRTY_FS;

View file

@ -1225,6 +1225,9 @@ panfrost_emit_for_draw(struct panfrost_context *ctx, bool with_vertex_data)
if (is_srgb)
rts[i].flags |= MALI_BLEND_SRGB;
if (!ctx->blend->base.dither)
rts[i].flags |= MALI_BLEND_NO_DITHER;
/* TODO: sRGB in blend shaders is currently
* unimplemented. Contact me (Alyssa) if you're
* interested in working on this. We have

View file

@ -439,6 +439,9 @@ union midgard_blend {
#define MALI_BLEND_SRGB (0x400)
/* Dithering is specified here for MFBD, otherwise NO_DITHER for SFBD */
#define MALI_BLEND_NO_DITHER (0x800)
struct midgard_blend_rt {
/* Flags base value of 0x200 to enable the render target.
* OR with 0x1 for blending (anything other than REPLACE).