[Mesa-dev] [PATCH] radeonsi: correct si_vgt_param_key on big endian machines
Bas Vermeulen
bas at daedalean.ai
Tue Mar 20 14:21:27 UTC 2018
Using mesa OpenCL failed on a big endian PowerPC machine because
si_vgt_param_key is using bitfields and a 32 bit int for an
index into an array.
Fix si_vgt_param_key to work correctly on both little endian
and big endian machines.
Signed-off-by: Bas Vermeulen <bas at daedalean.ai>
---
src/gallium/drivers/radeonsi/si_pipe.h | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/src/gallium/drivers/radeonsi/si_pipe.h b/src/gallium/drivers/radeonsi/si_pipe.h
index 2053dcb9fc..32dbdf6e2c 100644
--- a/src/gallium/drivers/radeonsi/si_pipe.h
+++ b/src/gallium/drivers/radeonsi/si_pipe.h
@@ -385,6 +385,7 @@ struct si_shader_ctx_state {
*/
union si_vgt_param_key {
struct {
+#if (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
unsigned prim:4;
unsigned uses_instancing:1;
unsigned multi_instances_smaller_than_primgroup:1;
@@ -395,6 +396,18 @@ union si_vgt_param_key {
unsigned tess_uses_prim_id:1;
unsigned uses_gs:1;
unsigned _pad:32 - SI_NUM_VGT_PARAM_KEY_BITS;
+#else /* __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ */
+ unsigned _pad:32 - SI_NUM_VGT_PARAM_KEY_BITS;
+ unsigned uses_gs:1;
+ unsigned tess_uses_prim_id:1;
+ unsigned uses_tess:1;
+ unsigned line_stipple_enabled:1;
+ unsigned count_from_stream_output:1;
+ unsigned primitive_restart:1;
+ unsigned multi_instances_smaller_than_primgroup:1;
+ unsigned uses_instancing:1;
+ unsigned prim:4;
+#endif
} u;
uint32_t index;
};
--
2.14.1
--
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
More information about the mesa-dev
mailing list