From: Alyssa Rosenzweig Date: Fri, 21 Aug 2020 13:12:54 +0000 (-0400) Subject: panfrost: Identify additional SFBD flags X-Git-Url: https://git.libre-soc.org/?p=mesa.git;a=commitdiff_plain;h=c9858fb941ce7e903f608e537b3657c946f86980 panfrost: Identify additional SFBD flags These are analogues to the flags we have in the blend structure on T760+, which enables us to fix shaderless and sRGB operation on T720. Closes #2771 Signed-off-by: Alyssa Rosenzweig Fixes: a64599a303e ("panfrost: Pass the sampler view format when creating a tex descriptor") Reviewed-by: Tomeu Vizoso Part-of: --- diff --git a/src/gallium/drivers/panfrost/pan_cmdstream.c b/src/gallium/drivers/panfrost/pan_cmdstream.c index 620425196ba..1a170f6ee3b 100644 --- a/src/gallium/drivers/panfrost/pan_cmdstream.c +++ b/src/gallium/drivers/panfrost/pan_cmdstream.c @@ -723,6 +723,14 @@ panfrost_emit_frag_shader(struct panfrost_context *ctx, * need to signal CAN_DISCARD for nontrivial blend modes (so * we're able to read back the destination buffer) */ + if (blend[0].no_colour) + return; + + fragmeta->unknown2_4 |= MALI_SFBD_ENABLE; + + SET_BIT(fragmeta->unknown2_4, MALI_SFBD_SRGB, + util_format_is_srgb(ctx->pipe_framebuffer.cbufs[0]->format)); + SET_BIT(fragmeta->unknown2_3, MALI_HAS_BLEND_SHADER, blend[0].is_shader); @@ -737,7 +745,6 @@ panfrost_emit_frag_shader(struct panfrost_context *ctx, SET_BIT(fragmeta->unknown2_3, MALI_CAN_DISCARD, blend[0].load_dest); - fragmeta->unknown2_4 |= 0x10; SET_BIT(fragmeta->unknown2_4, MALI_NO_DITHER, !ctx->blend->base.dither); } else if (!(dev->quirks & IS_BIFROST)) { /* Bug where MRT-capable hw apparently reads the last blend diff --git a/src/panfrost/include/panfrost-job.h b/src/panfrost/include/panfrost-job.h index e2267069860..18dbb95ed96 100644 --- a/src/panfrost/include/panfrost-job.h +++ b/src/panfrost/include/panfrost-job.h @@ -80,6 +80,8 @@ typedef uint64_t mali_ptr; #define MALI_ALPHA_TO_COVERAGE (1 << 1) +#define MALI_SFBD_ENABLE (1 << 4) +#define MALI_SFBD_SRGB (1 << 8) #define MALI_NO_DITHER (1 << 9) #define MALI_DEPTH_RANGE_A (1 << 12) #define MALI_DEPTH_RANGE_B (1 << 13)