From: Roland Scheidegger <srol...@vmware.com> Instead of enhancing the AoS path so it can deal with it, just use SoA. Fixing AoS path wouldn't be all that difficult (use all the same logic as SoA) but considered not worth it for now. --- src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c index 5c5ab87..0a6f7a4 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c @@ -2296,6 +2296,10 @@ lp_build_sample_soa(struct gallivm_state *gallivm, /* not sure this is strictly needed or simply impossible */ static_sampler_state->compare_mode == PIPE_TEX_COMPARE_NONE && lp_is_simple_wrap_mode(static_sampler_state->wrap_s); + + use_aos &= bld.num_lods <= num_quads || + static_sampler_state->min_img_filter == + static_sampler_state->mag_img_filter; if (dims > 1) { use_aos &= lp_is_simple_wrap_mode(static_sampler_state->wrap_t); if (dims > 2) { @@ -2324,7 +2328,8 @@ lp_build_sample_soa(struct gallivm_state *gallivm, /* * we only try 8-wide sampling with soa as it appears to - * be a loss with aos with AVX (but it should work). + * be a loss with aos with AVX (but it should work, except + * for conformance if min_filter != mag_filter if num_lods > 1). * (It should be faster if we'd support avx2) */ if (num_quads == 1 || !use_aos) { -- 1.7.9.5 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev