Add a helper function which receives pipe_format value and returns a matching pipe_endian value. It is needed because almost every call to st_create_texture will use this function to send the pipe_endian value
Signed-off-by: Oded Gabbay <oded.gab...@gmail.com> --- src/mesa/state_tracker/st_format.c | 51 ++++++++++++++++++++++++++++++++++++++ src/mesa/state_tracker/st_format.h | 3 +++ 2 files changed, 54 insertions(+) diff --git a/src/mesa/state_tracker/st_format.c b/src/mesa/state_tracker/st_format.c index 9a280fc..cc44c9a 100644 --- a/src/mesa/state_tracker/st_format.c +++ b/src/mesa/state_tracker/st_format.c @@ -2501,3 +2501,54 @@ st_translate_color(const union gl_color_union *colorIn, } } } + +enum pipe_endian +st_get_endian_by_format(enum pipe_format format) +{ + /* return native endianess by default, except for a couple of gallium + * formats, where gallium provides different formats based on endianess */ + switch (format) + { + case PIPE_FORMAT_R8G8B8A8_UNORM: + case PIPE_FORMAT_R8G8B8X8_UNORM: + case PIPE_FORMAT_B8G8R8A8_UNORM: + case PIPE_FORMAT_B8G8R8X8_UNORM: + case PIPE_FORMAT_A8R8G8B8_UNORM: + case PIPE_FORMAT_X8R8G8B8_UNORM: + case PIPE_FORMAT_A8B8G8R8_UNORM: + case PIPE_FORMAT_X8B8G8R8_UNORM: + case PIPE_FORMAT_R8G8B8A8_SNORM: + case PIPE_FORMAT_R8G8B8X8_SNORM: + case PIPE_FORMAT_A8B8G8R8_SNORM: + case PIPE_FORMAT_X8B8G8R8_SNORM: + case PIPE_FORMAT_R8G8B8A8_SRGB: + case PIPE_FORMAT_R8G8B8X8_SRGB: + case PIPE_FORMAT_B8G8R8A8_SRGB: + case PIPE_FORMAT_B8G8R8X8_SRGB: + case PIPE_FORMAT_A8R8G8B8_SRGB: + case PIPE_FORMAT_X8R8G8B8_SRGB: + case PIPE_FORMAT_A8B8G8R8_SRGB: + case PIPE_FORMAT_X8B8G8R8_SRGB: + case PIPE_FORMAT_A8L8_UNORM: + case PIPE_FORMAT_L8A8_UNORM: + case PIPE_FORMAT_A8L8_SNORM: + case PIPE_FORMAT_L8A8_SNORM: + case PIPE_FORMAT_A8L8_SRGB: + case PIPE_FORMAT_L8A8_SRGB: + case PIPE_FORMAT_A16L16_UNORM: + case PIPE_FORMAT_L16A16_UNORM: + case PIPE_FORMAT_G8R8_UNORM: + case PIPE_FORMAT_R8G8_UNORM: + case PIPE_FORMAT_G8R8_SNORM: + case PIPE_FORMAT_R8G8_SNORM: + case PIPE_FORMAT_G16R16_UNORM: + case PIPE_FORMAT_R16G16_UNORM: + case PIPE_FORMAT_G16R16_SNORM: + case PIPE_FORMAT_R16G16_SNORM: + return PIPE_ENDIAN_LITTLE; + + default: + return PIPE_ENDIAN_NATIVE; + } +} + diff --git a/src/mesa/state_tracker/st_format.h b/src/mesa/state_tracker/st_format.h index 6ba61df..fbc8dfa 100644 --- a/src/mesa/state_tracker/st_format.h +++ b/src/mesa/state_tracker/st_format.h @@ -79,6 +79,9 @@ st_translate_color(const union gl_color_union *colorIn, union pipe_color_union *colorOut, GLenum baseFormat, GLboolean is_integer); +extern enum pipe_endian +st_get_endian_by_format(enum pipe_format format); + #ifdef __cplusplus } #endif -- 2.5.5 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev