freedreno: Fix graphic glitches on a4xx and a5xx

Like on adreno 3xx, hw binning and scissor optimizations don't work correctly
together on a4xx and a5xx GPUs.

Disable binning as a workaround if scissor optimizations are being used.

Fixes: f68c6951b8 8efaae3e19

Signed-off-by: Alejandro Tafalla <atafalla@dnyon.com>
Reviewed-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18925>
This commit is contained in:
Alejandro Tafalla
2022-09-27 10:33:56 +02:00
committed by Marge Bot
parent 1d32bcdcb2
commit afe4b534b5
2 changed files with 16 additions and 0 deletions

View File

@@ -146,6 +146,14 @@ use_hw_binning(struct fd_batch *batch)
{
const struct fd_gmem_stateobj *gmem = batch->gmem_state;
/* workaround: Like on a3xx, hw binning and scissor optimization
* don't play nice together.
*
* Disable binning if scissor optimization is used.
*/
if (gmem->minx || gmem->miny)
return false;
if ((gmem->maxpw * gmem->maxph) > 32)
return false;

View File

@@ -263,6 +263,14 @@ use_hw_binning(struct fd_batch *batch)
{
const struct fd_gmem_stateobj *gmem = batch->gmem_state;
/* workaround: Like on a3xx, hw binning and scissor optimization
* don't play nice together.
*
* Disable binning if scissor optimization is used.
*/
if (gmem->minx || gmem->miny)
return false;
if ((gmem->maxpw * gmem->maxph) > 32)
return false;