Problems:
- GPU hang when run Google Earth apk on 8MM EVK board
- Android DEQP/SKQP CTS have random failures
- Khronos ES20 CTS have random failures
Analysis:
GPU got stuck in shader module when process specific data format,
this is caused by VSI GCNanoUltra Errata(HBN1286), which does not set
the specific intermediate register to 0 in hardware reset sequence after power up,
this wrong register will cause the unexpected result when process specific data type,
wrong behavior will happen and may cause out of bound access in shader programming.
Fix:
GPU driver will submit the predefined command(dummy draw) with fake stream and shader,
also set scissor with (0,0,0,0) to avoid draw out, no pixel output on hardware pipeline,
this workaround can set the specific register to 0 as the effective SW remedy.
Impact:
No obvious functionality and performance impact with dummy draw workaround,
it only takes several cycles in command fetch --> vertex shader --> primitive,
and then cull out of reset of GPU pipelines.
This patch can fix the same GPU problem for 7ULP.
Signed-off-by: Xianzhong <xianzhong.li@nxp.com>
(cherry picked from commit
b14813c419b1f733c0945e99fc403b7a25774d24)