etnaviv: enable triangle strips only when the hardware supports it

Some hardware has a bug with triangle strips and it is signalled by the
flag BUG_FIXED8 whether this bug has been fixed. So only enable triangle
strips when this flag is set.

Thanks: Jonathan Marek and Christian Gmeiner for the pointers

v2: Add TODO to indicate that the handling should be refined
    (Jonathan & Christian)

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
This commit is contained in:
Gert Wollny 2019-10-02 09:28:55 +02:00 committed by Gert Wollny
parent d855e19b87
commit c5da8230de
1 changed files with 7 additions and 1 deletions

View File

@ -479,9 +479,15 @@ etna_context_create(struct pipe_screen *pscreen, void *priv, unsigned flags)
1 << PIPE_PRIM_LINES |
1 << PIPE_PRIM_LINE_STRIP |
1 << PIPE_PRIM_TRIANGLES |
1 << PIPE_PRIM_TRIANGLE_STRIP |
1 << PIPE_PRIM_TRIANGLE_FAN;
/* TODO: The bug relates only to indexed draws, but here we signal
* that there is no support for triangle strips at all. This should
* be refined.
*/
if (VIV_FEATURE(ctx->screen, chipMinorFeatures2, BUG_FIXES8))
ctx->prim_hwsupport |= 1 << PIPE_PRIM_TRIANGLE_STRIP;
if (VIV_FEATURE(ctx->screen, chipMinorFeatures2, LINE_LOOP))
ctx->prim_hwsupport |= 1 << PIPE_PRIM_LINE_LOOP;