[Mesa-dev] [PATCH 4/4] i965/copy_image: Divide the x offsets by block width when using the blitter
Matt Turner
mattst88 at gmail.com
Wed Sep 3 11:58:29 PDT 2014
On Tue, Sep 2, 2014 at 3:49 PM, Jason Ekstrand <jason at jlekstrand.net> wrote:
> Signed-off-by: Jason Ekstrand <jason.ekstrand at intel.com>
> ---
> src/mesa/drivers/dri/i965/intel_copy_image.c | 31 +++++++++++++++++++---------
> 1 file changed, 21 insertions(+), 10 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/i965/intel_copy_image.c b/src/mesa/drivers/dri/i965/intel_copy_image.c
> index 8bda2dd..f7db56d 100644
> --- a/src/mesa/drivers/dri/i965/intel_copy_image.c
> +++ b/src/mesa/drivers/dri/i965/intel_copy_image.c
> @@ -40,6 +40,7 @@ copy_image_with_blitter(struct brw_context *brw,
> int src_width, int src_height)
> {
> GLuint bw, bh;
> + uint32_t src_image_x, src_image_y, dst_image_x, dst_image_y;
> int cpp;
>
> /* The blitter doesn't understand multisampling at all. */
> @@ -70,6 +71,9 @@ copy_image_with_blitter(struct brw_context *brw,
> return false;
> }
>
> + intel_miptree_get_image_offset(src_mt, src_level, src_z,
> + &src_image_x, &src_image_y);
> +
> if (_mesa_is_format_compressed(src_mt->format)) {
> _mesa_get_format_block_size(src_mt->format, &bw, &bh);
>
> @@ -83,10 +87,21 @@ copy_image_with_blitter(struct brw_context *brw,
> src_width /= (int)bw;
> src_height /= (int)bh;
>
> + /* Inside of the miptree, the x offsets are storred in pixels while
"stored" (the line above and below)
> + * the y offsets are storred in blocks. We need to scale just the x
> + * offset.
> + */
> + src_image_x /= bw;
> +
> cpp = _mesa_get_format_bytes(src_mt->format);
> } else {
> cpp = src_mt->cpp;
> }
> + src_x += src_image_x;
> + src_y += src_image_y;
> +
> + intel_miptree_get_image_offset(dst_mt, dst_level, dst_z,
> + &dst_image_x, &dst_image_y);
>
> if (_mesa_is_format_compressed(dst_mt->format)) {
> _mesa_get_format_block_size(dst_mt->format, &bw, &bh);
> @@ -96,17 +111,13 @@ copy_image_with_blitter(struct brw_context *brw,
>
> dst_x /= (int)bw;
> dst_y /= (int)bh;
> - }
>
> - uint32_t src_image_x, src_image_y;
> - intel_miptree_get_image_offset(src_mt, src_level, src_z,
> - &src_image_x, &src_image_y);
> - src_x += src_image_x;
> - src_y += src_image_y;
> -
> - uint32_t dst_image_x, dst_image_y;
> - intel_miptree_get_image_offset(dst_mt, dst_level, dst_z,
> - &dst_image_x, &dst_image_y);
> + /* Inside of the miptree, the x offsets are storred in pixels while
> + * the y offsets are storred in blocks. We need to scale just the x
"stored" (the line above and below)
All of these patches look like legitimate bug fixes. There needs to be
a Bugzilla: ... tag for bug 82804 (and presumably 83036 as well?) and
some Cc: mesa-stable tags.
With those typos fixed and the appropriate tags added, the series is
Reviewed-by: Matt Turner <mattst88 at gmail.com>
More information about the mesa-dev
mailing list