diff options
Diffstat (limited to 'src/gallium/auxiliary/gallivm/lp_bld_tgsi.c')
-rw-r--r-- | src/gallium/auxiliary/gallivm/lp_bld_tgsi.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi.c b/src/gallium/auxiliary/gallivm/lp_bld_tgsi.c index 64d2cd703be..2c3be8fb127 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi.c @@ -353,6 +353,15 @@ lp_build_emit_fetch_src( assert(0 && "invalid swizzle in emit_fetch()"); return bld_base->base.undef; } + if (tgsi_type_is_64bit(stype)) { + unsigned swizzle2; + swizzle2 = tgsi_util_get_full_src_register_swizzle(reg, chan_index + 1); + if (swizzle2 > 3) { + assert(0 && "invalid swizzle in emit_fetch()"); + return bld_base->base.undef; + } + swizzle |= (swizzle2 << 16); + } } assert(reg->Register.Index <= bld_base->info->file_max[reg->Register.File]); |