From a88c776da07629e39c545db14dfd148277aee28f Mon Sep 17 00:00:00 2001 From: "Eric R. Smith" Date: Wed, 3 Dec 2025 13:34:14 -0400 Subject: [PATCH] panfrost: do not allow skipping of fragment shader when alpha-to-coverage When alpha to coverage is enabled we cannot allow the fragment shader to be skipped, because the calculated alpha result is essentially a side effect (it can cause some samples to be discarded). This brings the OpenGL driver in line with panvk, which already has this check in its version of fs_required(). Signed-off-by: Eric R. Smith Reviewed-by: Iago Toral Quiroga Reviewed-by: Erik Faye-Lund Cc: mesa-stable (cherry picked from commit 3ce6bcb9e8ccde7c543816baeada2912f5a47bda) Part-of: --- .pick_status.json | 2 +- src/gallium/drivers/panfrost/pan_cmdstream.h | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index fe38c0a6ffb..86c903de031 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -14,7 +14,7 @@ "description": "panfrost: do not allow skipping of fragment shader when alpha-to-coverage", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/gallium/drivers/panfrost/pan_cmdstream.h b/src/gallium/drivers/panfrost/pan_cmdstream.h index 65be2b38212..5a900ec3b36 100644 --- a/src/gallium/drivers/panfrost/pan_cmdstream.h +++ b/src/gallium/drivers/panfrost/pan_cmdstream.h @@ -225,6 +225,11 @@ panfrost_fs_required(struct panfrost_compiled_shader *fs, if (fs->info.fs.sidefx) return true; + /* If alpha to coverage is enabled we need to execute, as + * writing the pixel can modify occlusion query results. */ + if (blend->base.alpha_to_coverage) + return true; + /* Using an empty FS requires early-z to be enabled, but alpha test * needs it disabled. Alpha test is only native on Midgard, so only * check there.