I'm able to call clinfo without things crashing. Without this fix, clinfo results in a signal 11 because key.index is byte swapped. With it, I get the information I would expect. I'm working to test the OpenCL currently.
I'll update the patch to use PIPE_ARCH_LITTLE_ENDIAN instead of my own #if. Bas Vermeulen On Tue, Mar 20, 2018 at 3:33 PM, Nicolai Hähnle <[email protected]> wrote: > Nice, did you actually get it to work entirely on a big endian machine? > > Bit fields aren't super portable, but this looks good enough. However, I > think we should use the PIPE_ARCH_LITTLE_ENDIAN define from u_endian.h > > Cheers, > Nicolai > > > On 20.03.2018 15:21, Bas Vermeulen wrote: > >> 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 <[email protected]> >> --- >> 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; >> }; >> >> >
_______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
