diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs.c b/src/gallium/drivers/llvmpipe/lp_state_fs.c index d45d8e1aa45..87a41e9c16f 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_fs.c +++ b/src/gallium/drivers/llvmpipe/lp_state_fs.c @@ -1961,7 +1961,7 @@ convert_to_blend_type(struct gallivm_state *gallivm, #if UTIL_ARCH_LITTLE_ENDIAN unsigned from_lsb = j; #else - unsigned from_lsb = src_fmt->nr_channels - j - 1; + unsigned from_lsb = (blend_type.length / pixels) - j - 1; #endif mask = (1 << src_fmt->channel[j].size) - 1; @@ -2144,7 +2144,7 @@ convert_from_blend_type(struct gallivm_state *gallivm, #if UTIL_ARCH_LITTLE_ENDIAN unsigned from_lsb = j; #else - unsigned from_lsb = src_fmt->nr_channels - j - 1; + unsigned from_lsb = blend_type.length - j - 1; #endif assert(blend_type.width > src_fmt->channel[j].size);