Reviewed-by: Marek Olšák <mar...@gmail.com>

Marek

On Sat, Feb 23, 2013 at 2:50 PM,  <jfons...@vmware.com> wrote:
> From: José Fonseca <jfons...@vmware.com>
>
> We might want to revisit the normalized_coords semantics, but this is
> the current expected behavior.
>
> Fixes fdo bug 61091.
> ---
>  src/gallium/auxiliary/util/u_blitter.c |   26 ++++++++++++++++++++++----
>  1 file changed, 22 insertions(+), 4 deletions(-)
>
> diff --git a/src/gallium/auxiliary/util/u_blitter.c 
> b/src/gallium/auxiliary/util/u_blitter.c
> index 9522402..e37be4e 100644
> --- a/src/gallium/auxiliary/util/u_blitter.c
> +++ b/src/gallium/auxiliary/util/u_blitter.c
> @@ -103,7 +103,10 @@ struct blitter_context_priv
>     void *velem_state_readbuf;
>
>     /* Sampler state. */
> -   void *sampler_state, *sampler_state_linear;
> +   void *sampler_state;
> +   void *sampler_state_linear;
> +   void *sampler_state_rect;
> +   void *sampler_state_rect_linear;
>
>     /* Rasterizer state. */
>     void *rs_state, *rs_state_scissor, *rs_discard_state;
> @@ -223,10 +226,15 @@ struct blitter_context *util_blitter_create(struct 
> pipe_context *pipe)
>     sampler_state.wrap_r = PIPE_TEX_WRAP_CLAMP_TO_EDGE;
>     sampler_state.normalized_coords = 1;
>     ctx->sampler_state = pipe->create_sampler_state(pipe, &sampler_state);
> +   sampler_state.normalized_coords = 0;
> +   ctx->sampler_state_rect = pipe->create_sampler_state(pipe, 
> &sampler_state);
>
>     sampler_state.min_img_filter = PIPE_TEX_FILTER_LINEAR;
>     sampler_state.mag_img_filter = PIPE_TEX_FILTER_LINEAR;
> +   sampler_state.normalized_coords = 1;
>     ctx->sampler_state_linear = pipe->create_sampler_state(pipe, 
> &sampler_state);
> +   sampler_state.normalized_coords = 0;
> +   ctx->sampler_state_rect_linear = pipe->create_sampler_state(pipe, 
> &sampler_state);
>
>     /* rasterizer state */
>     memset(&rs_state, 0, sizeof(rs_state));
> @@ -365,8 +373,10 @@ void util_blitter_destroy(struct blitter_context 
> *blitter)
>           ctx->delete_fs_state(pipe, ctx->fs_col_int[i]);
>     }
>
> -   pipe->delete_sampler_state(pipe, ctx->sampler_state);
> +   pipe->delete_sampler_state(pipe, ctx->sampler_state_rect_linear);
> +   pipe->delete_sampler_state(pipe, ctx->sampler_state_rect);
>     pipe->delete_sampler_state(pipe, ctx->sampler_state_linear);
> +   pipe->delete_sampler_state(pipe, ctx->sampler_state);
>     u_upload_destroy(ctx->upload);
>     FREE(ctx);
>  }
> @@ -1317,9 +1327,17 @@ void util_blitter_blit_generic(struct blitter_context 
> *blitter,
>         src_samples <= 1 &&
>         (dstbox->width != abs(srcbox->width) ||
>          dstbox->height != abs(srcbox->height))) {
> -      sampler_state = ctx->sampler_state_linear;
> +      if (src_target == PIPE_TEXTURE_RECT) {
> +         sampler_state = ctx->sampler_state_rect_linear;
> +      } else {
> +         sampler_state = ctx->sampler_state_linear;
> +      }
>     } else {
> -      sampler_state = ctx->sampler_state;
> +      if (src_target == PIPE_TEXTURE_RECT) {
> +         sampler_state = ctx->sampler_state_rect;
> +      } else {
> +         sampler_state = ctx->sampler_state;
> +      }
>     }
>
>     /* Set samplers. */
> --
> 1.7.10.4
>
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to