[Mesa-dev] [PATCH 1/4] llvmpipe: fix using non-zero layer in non-array view from array resource

Dave Airlie airlied at gmail.com
Thu Oct 22 16:02:10 PDT 2015


For all 4:

Reviewed-by: Dave Airlie <airlied at redhat.com>

On 23 October 2015 at 08:42,  <sroland at vmware.com> wrote:
> From: Roland Scheidegger <sroland at vmware.com>
>
> Just need to use resource target not view target when calculating
> first-layer based mip offsets. (This is a gl specific problem since
> d3d10 does not distinguish between non-array and array resources neither
> at the resource nor view level, only at the shader level.)
> Fixes new piglit arb_texture_view sampling-2d-array-as-2d-layer test.
> ---
>  src/gallium/drivers/llvmpipe/lp_setup.c         | 8 ++++----
>  src/gallium/drivers/llvmpipe/lp_state_sampler.c | 8 ++++----
>  2 files changed, 8 insertions(+), 8 deletions(-)
>
> diff --git a/src/gallium/drivers/llvmpipe/lp_setup.c b/src/gallium/drivers/llvmpipe/lp_setup.c
> index 4c8167a..1778b13 100644
> --- a/src/gallium/drivers/llvmpipe/lp_setup.c
> +++ b/src/gallium/drivers/llvmpipe/lp_setup.c
> @@ -854,10 +854,10 @@ lp_setup_set_fragment_sampler_views(struct lp_setup_context *setup,
>                       jit_tex->img_stride[j] = lp_tex->img_stride[j];
>                    }
>
> -                  if (view->target == PIPE_TEXTURE_1D_ARRAY ||
> -                      view->target == PIPE_TEXTURE_2D_ARRAY ||
> -                      view->target == PIPE_TEXTURE_CUBE ||
> -                      view->target == PIPE_TEXTURE_CUBE_ARRAY) {
> +                  if (res->target == PIPE_TEXTURE_1D_ARRAY ||
> +                      res->target == PIPE_TEXTURE_2D_ARRAY ||
> +                      res->target == PIPE_TEXTURE_CUBE ||
> +                      res->target == PIPE_TEXTURE_CUBE_ARRAY) {
>                       /*
>                        * For array textures, we don't have first_layer, instead
>                        * adjust last_layer (stored as depth) plus the mip level offsets
> diff --git a/src/gallium/drivers/llvmpipe/lp_state_sampler.c b/src/gallium/drivers/llvmpipe/lp_state_sampler.c
> index b205f02..1e05587 100644
> --- a/src/gallium/drivers/llvmpipe/lp_state_sampler.c
> +++ b/src/gallium/drivers/llvmpipe/lp_state_sampler.c
> @@ -275,10 +275,10 @@ prepare_shader_sampling(
>                    row_stride[j] = lp_tex->row_stride[j];
>                    img_stride[j] = lp_tex->img_stride[j];
>                 }
> -               if (view->target == PIPE_TEXTURE_1D_ARRAY ||
> -                   view->target == PIPE_TEXTURE_2D_ARRAY ||
> -                   view->target == PIPE_TEXTURE_CUBE ||
> -                   view->target == PIPE_TEXTURE_CUBE_ARRAY) {
> +               if (tex->target == PIPE_TEXTURE_1D_ARRAY ||
> +                   tex->target == PIPE_TEXTURE_2D_ARRAY ||
> +                   tex->target == PIPE_TEXTURE_CUBE ||
> +                   tex->target == PIPE_TEXTURE_CUBE_ARRAY) {
>                    num_layers = view->u.tex.last_layer - view->u.tex.first_layer + 1;
>                    for (j = first_level; j <= last_level; j++) {
>                       mip_offsets[j] += view->u.tex.first_layer *
> --
> 2.1.4
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list