diff options
Diffstat (limited to 'src/gallium/auxiliary/gallivm')
-rw-r--r-- | src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c index f54e85649c6..93c926ade94 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c @@ -2367,9 +2367,11 @@ emit_fetch_texels( struct lp_build_tgsi_soa_context *bld, break; case TGSI_TEXTURE_2D: case TGSI_TEXTURE_RECT: + case TGSI_TEXTURE_2D_MSAA: dims = 2; break; case TGSI_TEXTURE_2D_ARRAY: + case TGSI_TEXTURE_2D_ARRAY_MSAA: layer_coord = 2; dims = 2; break; @@ -2381,11 +2383,14 @@ emit_fetch_texels( struct lp_build_tgsi_soa_context *bld, return; } - /* always have lod except for buffers ? */ - if (target != TGSI_TEXTURE_BUFFER) { + /* always have lod except for buffers and msaa targets ? */ + if (target != TGSI_TEXTURE_BUFFER && + target != TGSI_TEXTURE_2D_MSAA && + target != TGSI_TEXTURE_2D_ARRAY_MSAA) { explicit_lod = lp_build_emit_fetch(&bld->bld_base, inst, 0, 3); lod_property = lp_build_lod_property(&bld->bld_base, inst, 0); } + /* XXX: for real msaa support, the w component would be the sample index. */ for (i = 0; i < dims; i++) { coords[i] = lp_build_emit_fetch(&bld->bld_base, inst, 0, i); |