From 87fca4f51ed3239ed0108ecd7b00722e3b23c8c9 Mon Sep 17 00:00:00 2001 From: Christian Gmeiner Date: Fri, 20 Feb 2026 11:02:00 +0100 Subject: [PATCH] etnaviv: Limit max line width to 1.0 on GPUs needing wide line emulation The HW line rasterizer on some Vivante GPUs doesn't produce spec-conformant results for wide lines. Correct emulation via triangle expansion is complex and interacts poorly with features like primitive IDs, shader side effects (SSBOs, atomics), and varying interpolation. Rather than carrying fragile emulation, limit the advertised max line width to 1.0 on affected GPUs. The GLES3 spec only requires support for width 1.0, so this doesn't affect conformance. Signed-off-by: Christian Gmeiner Reviewed-by: Daniel Lang Part-of: --- src/etnaviv/ci/etnaviv-gc7000-r6214-fails.txt | 1 - src/gallium/drivers/etnaviv/etnaviv_screen.c | 2 ++ 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/etnaviv/ci/etnaviv-gc7000-r6214-fails.txt b/src/etnaviv/ci/etnaviv-gc7000-r6214-fails.txt index eb195f2e5ae..18669ccd96f 100644 --- a/src/etnaviv/ci/etnaviv-gc7000-r6214-fails.txt +++ b/src/etnaviv/ci/etnaviv-gc7000-r6214-fails.txt @@ -1,5 +1,4 @@ dEQP-GLES2.functional.fbo.completeness.renderable.texture.color0.rgb_half_float_oes,Fail -dEQP-GLES2.functional.rasterization.primitives.lines_wide,Fail dEQP-GLES2.functional.shaders.operator.selection.highp_float_fragment,Fail dEQP-GLES2.functional.shaders.operator.selection.highp_int_fragment,Fail dEQP-GLES2.functional.shaders.operator.selection.highp_ivec2_fragment,Fail diff --git a/src/gallium/drivers/etnaviv/etnaviv_screen.c b/src/gallium/drivers/etnaviv/etnaviv_screen.c index 38784b6d43b..2885ab2cd80 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_screen.c +++ b/src/gallium/drivers/etnaviv/etnaviv_screen.c @@ -359,6 +359,8 @@ etna_init_screen_caps(struct etna_screen *screen) caps->max_line_width = caps->max_line_width_aa = + VIV_FEATURE(screen, ETNA_FEATURE_WIDELINE_TRIANGLE_EMU) ? 1.0f : 8192.0f; + caps->max_point_size = caps->max_point_size_aa = 8192.0f;