diff options
author | Michel Dänzer <[email protected]> | 2012-05-11 11:52:16 +0200 |
---|---|---|
committer | Michel Dänzer <[email protected]> | 2012-05-11 11:54:58 +0200 |
commit | c2f1fbf912c0b95e09cb64db10dfbe8abff9f5d6 (patch) | |
tree | 94647a21c1771f501a60f176244cd7f62529ac27 /src/gallium/drivers/radeonsi/radeonsi_pipe.h | |
parent | 03d9c24c0468ae992a704c6a2f72bc349557b671 (diff) |
radeonsi: Properly translate vertex format swizzle.
egltri_screen works correctly!
Diffstat (limited to 'src/gallium/drivers/radeonsi/radeonsi_pipe.h')
-rw-r--r-- | src/gallium/drivers/radeonsi/radeonsi_pipe.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/gallium/drivers/radeonsi/radeonsi_pipe.h b/src/gallium/drivers/radeonsi/radeonsi_pipe.h index 64ddd5de253..3077f068017 100644 --- a/src/gallium/drivers/radeonsi/radeonsi_pipe.h +++ b/src/gallium/drivers/radeonsi/radeonsi_pipe.h @@ -37,6 +37,7 @@ #include "r600.h" #include "radeonsi_public.h" #include "r600_resource.h" +#include "sid.h" #define R600_MAX_CONST_BUFFERS 1 #define R600_MAX_CONST_BUFFER_SIZE 4096 @@ -467,6 +468,24 @@ static INLINE uint32_t S_FIXED(float value, uint32_t frac_bits) } #define ALIGN_DIVUP(x, y) (((x) + (y) - 1) / (y)) +static INLINE unsigned si_map_swizzle(unsigned swizzle) +{ + switch (swizzle) { + case UTIL_FORMAT_SWIZZLE_Y: + return V_008F0C_SQ_SEL_Y; + case UTIL_FORMAT_SWIZZLE_Z: + return V_008F0C_SQ_SEL_Z; + case UTIL_FORMAT_SWIZZLE_W: + return V_008F0C_SQ_SEL_W; + case UTIL_FORMAT_SWIZZLE_0: + return V_008F0C_SQ_SEL_0; + case UTIL_FORMAT_SWIZZLE_1: + return V_008F0C_SQ_SEL_1; + default: /* UTIL_FORMAT_SWIZZLE_X */ + return V_008F0C_SQ_SEL_X; + } +} + static inline unsigned r600_tex_aniso_filter(unsigned filter) { if (filter <= 1) return 0; |