etnaviv: Add static_assert(..) to catch memory corruption
authorChristian Gmeiner <cgmeiner@igalia.com>
Wed, 13 Dec 2023 09:19:29 +0000 (10:19 +0100)
committerEric Engestrom <eric@engestrom.ch>
Sun, 17 Dec 2023 23:48:00 +0000 (23:48 +0000)
When we start to support GPUs with more then 16 varyings the code base
tells us that there is some work to do.

Cc: mesa-stable
Signed-off-by: Christian Gmeiner <cgmeiner@igalia.com>
Reviewed-by: Lucas Stach <l.stach@pengutronix.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26662>
(cherry picked from commit 2f205caea484e3882a209d4262f2f1ce1e0734a8)

.pick_status.json
src/gallium/drivers/etnaviv/etnaviv_shader.c

index 5e97297..1f4a133 100644 (file)
         "description": "etnaviv: Add static_assert(..) to catch memory corruption",
         "nominated": true,
         "nomination_type": 0,
-        "resolution": 0,
+        "resolution": 1,
         "main_sha": null,
         "because_sha": null,
         "notes": null
index e0054f9..d0567d7 100644 (file)
@@ -147,6 +147,7 @@ etna_link_shaders(struct etna_context *ctx, struct compiled_shader_state *cs,
                     COND(last_varying_2x, VIVS_RA_CONTROL_LAST_VARYING_2X);
 
    cs->PA_ATTRIBUTE_ELEMENT_COUNT = VIVS_PA_ATTRIBUTE_ELEMENT_COUNT_COUNT(link.num_varyings);
+   STATIC_ASSERT(VIVS_PA_SHADER_ATTRIBUTES__LEN >= ETNA_NUM_VARYINGS);
    for (int idx = 0; idx < link.num_varyings; ++idx)
       cs->PA_SHADER_ATTRIBUTES[idx] = link.varyings[idx].pa_attributes;