Both patches look good to me Reviewed-by: Jose Fonseca <jfons...@vmware.com>
----- Original Message ----- > From: Dave Airlie <airl...@redhat.com> > > Noticed would fail, we were doing two things wrong > > a) 1d arrays require the layers in height > b) minifying the layers field. > > Signed-off-by: Dave Airlie <airl...@redhat.com> > --- > src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c | 22 > +++++++++++++++++----- > src/gallium/drivers/llvmpipe/lp_setup.c | 6 +++++- > 2 files changed, 22 insertions(+), 6 deletions(-) > > diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c > b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c > index ba265b2..c0389a8 100644 > --- a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c > +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c > @@ -1680,23 +1680,30 @@ lp_build_size_query_soa(struct gallivm_state > *gallivm, > { > LLVMValueRef lod; > LLVMValueRef size; > - int dims, i; > + int dims, i, num_min; > struct lp_build_context bld_int_vec; > > switch (static_state->target) { > case PIPE_TEXTURE_1D: > case PIPE_BUFFER: > - dims = 1; > + num_min = dims = 1; > + break; > + case PIPE_TEXTURE_1D_ARRAY: > + num_min = 1; > + dims = 2; > break; > case PIPE_TEXTURE_2D: > case PIPE_TEXTURE_CUBE: > case PIPE_TEXTURE_RECT: > - dims = 2; > + num_min = dims = 2; > break; > case PIPE_TEXTURE_3D: > + num_min = dims = 3; > + break; > + case PIPE_TEXTURE_2D_ARRAY: > + num_min = 2; > dims = 3; > break; > - > default: > assert(0); > return; > @@ -1723,19 +1730,24 @@ lp_build_size_query_soa(struct gallivm_state > *gallivm, > dynamic_state->width(dynamic_state, > gallivm, unit), > lp_build_const_int32(gallivm, 0), > ""); > > + if (num_min == 1) > + size = lp_build_minify(&bld_int_vec, size, lod); > if (dims >= 2) { > size = LLVMBuildInsertElement(gallivm->builder, size, > dynamic_state->height(dynamic_state, > gallivm, unit), > lp_build_const_int32(gallivm, > 1), ""); > } > > + if (num_min == 2) > + size = lp_build_minify(&bld_int_vec, size, lod); > if (dims >= 3) { > size = LLVMBuildInsertElement(gallivm->builder, size, > dynamic_state->depth(dynamic_state, > gallivm, unit), > lp_build_const_int32(gallivm, > 2), ""); > } > > - size = lp_build_minify(&bld_int_vec, size, lod); > + if (num_min == 3) > + size = lp_build_minify(&bld_int_vec, size, lod); > > for (i=0; i < dims; i++) { > sizes_out[i] = lp_build_extract_broadcast(gallivm, > bld_int_vec.type, int_type, > diff --git a/src/gallium/drivers/llvmpipe/lp_setup.c > b/src/gallium/drivers/llvmpipe/lp_setup.c > index 7d40d8c..3dfe335 100644 > --- a/src/gallium/drivers/llvmpipe/lp_setup.c > +++ b/src/gallium/drivers/llvmpipe/lp_setup.c > @@ -678,7 +678,11 @@ lp_setup_set_fragment_sampler_views(struct > lp_setup_context *setup, > struct lp_jit_texture *jit_tex; > jit_tex = &setup->fs.current.jit_context.textures[i]; > jit_tex->width = tex->width0; > - jit_tex->height = tex->height0; > + if (tex->target == PIPE_TEXTURE_1D_ARRAY) { > + jit_tex->height = tex->array_size; > + } else { > + jit_tex->height = tex->height0; > + } > jit_tex->first_level = view->u.tex.first_level; > jit_tex->last_level = tex->last_level; > > -- > 1.7.11.7 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev