uint32_t fd4_tex_swiz(enum pipe_format format, unsigned swizzle_r, unsigned swizzle_g, unsigned swizzle_b, unsigned swizzle_a) { const struct util_format_description *desc = util_format_description(format); unsigned char swiz[4] = { swizzle_r, swizzle_g, swizzle_b, swizzle_a, }, rswiz[4]; util_format_compose_swizzles(desc->swizzle, swiz, rswiz); return A4XX_TEX_CONST_0_SWIZ_X(tex_swiz(rswiz[0])) | A4XX_TEX_CONST_0_SWIZ_Y(tex_swiz(rswiz[1])) | A4XX_TEX_CONST_0_SWIZ_Z(tex_swiz(rswiz[2])) | A4XX_TEX_CONST_0_SWIZ_W(tex_swiz(rswiz[3])); }
uint32_t fd_tex_swiz(enum pipe_format format, unsigned swizzle_r, unsigned swizzle_g, unsigned swizzle_b, unsigned swizzle_a) { const struct util_format_description *desc = util_format_description(format); uint8_t swiz[] = { swizzle_r, swizzle_g, swizzle_b, swizzle_a, PIPE_SWIZZLE_ZERO, PIPE_SWIZZLE_ONE, PIPE_SWIZZLE_ONE, PIPE_SWIZZLE_ONE, }; return SQ_TEX3_SWIZ_X(tex_swiz(swiz[desc->swizzle[0]])) | SQ_TEX3_SWIZ_Y(tex_swiz(swiz[desc->swizzle[1]])) | SQ_TEX3_SWIZ_Z(tex_swiz(swiz[desc->swizzle[2]])) | SQ_TEX3_SWIZ_W(tex_swiz(swiz[desc->swizzle[3]])); }