drm/etnaviv: fix TS cache flushing on GPUs with BLT engine
authorLucas Stach <l.stach@pengutronix.de>
Wed, 26 Feb 2020 15:27:08 +0000 (16:27 +0100)
committerLucas Stach <l.stach@pengutronix.de>
Fri, 20 Mar 2020 17:40:44 +0000 (18:40 +0100)
commitf232d9ec029ce3e2543b05213e2979e01e503408
tree3a73919e1e4e8f6cf038f59a0bf4971614127410
parentb72af445cd38a44553a5bcfcce5676155dcffcbb
drm/etnaviv: fix TS cache flushing on GPUs with BLT engine

As seen in the Vivante kernel driver, most GPUs with the BLT engine have
a broken TS cache flush. The workaround is to temporarily set the BLT
command to CLEAR_IMAGE, without actually executing the clear. Apparently
this state change is enough to trigger the required TS cache flush. As
the BLT engine is completely asychronous, we also need a few more stall
states to synchronize the flush with the frontend.

Root-caused-by: Jonathan Marek <jonathan@marek.ca>
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
drivers/gpu/drm/etnaviv/etnaviv_buffer.c
drivers/gpu/drm/etnaviv/state_blt.xml.h