From 2ac3652f3064564a8792efc46c10a6efe8b229b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pavel=20Ondra=C4=8Dka?= Date: Mon, 16 Mar 2026 17:40:31 +0100 Subject: [PATCH] r300: keep all vertex atributes 32bit on big endian The VAP has only a global swap mode, not per-attribute endian control. Keep all TCL vertex attributes at 32-bit. Part-of: --- src/gallium/drivers/r300/r300_state_inlines.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/gallium/drivers/r300/r300_state_inlines.h b/src/gallium/drivers/r300/r300_state_inlines.h index 3aa6b97016c..c26d2fc7de0 100644 --- a/src/gallium/drivers/r300/r300_state_inlines.h +++ b/src/gallium/drivers/r300/r300_state_inlines.h @@ -334,6 +334,14 @@ r300_translate_vertex_data_type(enum pipe_format format) { return R300_INVALID_FORMAT; } +#if UTIL_ARCH_BIG_ENDIAN + /* On big-endian, the VAP has only a global swap mode, not per-attribute + * endian control. Keep TCL vertex attributes at 32-bit. + */ + if (desc->channel[i].size < 32) + return R300_INVALID_FORMAT; +#endif + switch (desc->channel[i].type) { /* Half-floats, floats, doubles */ case UTIL_FORMAT_TYPE_FLOAT: