[igt-dev] [PATCH i-g-t 1/3] lib/i915/i915_blt: Add offset to block and fast copy

Zbigniew Kempczyński zbigniew.kempczynski at intel.com
Mon Apr 3 06:03:41 UTC 2023


On Tue, Mar 28, 2023 at 09:30:41PM +0300, Juha-Pekka Heikkila wrote:
> Add offset to src and dst blits, this allow to use i915_blt with multiplane
> framebuffers.
> 
> Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila at gmail.com>
> ---
>  lib/i915/i915_blt.c | 12 ++++++++----
>  lib/i915/i915_blt.h |  1 +
>  2 files changed, 9 insertions(+), 4 deletions(-)
> 
> diff --git a/lib/i915/i915_blt.c b/lib/i915/i915_blt.c
> index ef67fe26f..ffaa97b42 100644
> --- a/lib/i915/i915_blt.c
> +++ b/lib/i915/i915_blt.c
> @@ -708,8 +708,10 @@ uint64_t emit_blt_block_copy(int i915,
>  	igt_assert_f(blt, "block-copy requires data to do blit\n");
>  
>  	alignment = gem_detect_safe_alignment(i915);
> -	src_offset = get_offset(ahnd, blt->src.handle, blt->src.size, alignment);
> -	dst_offset = get_offset(ahnd, blt->dst.handle, blt->dst.size, alignment);
> +	src_offset = get_offset(ahnd, blt->src.handle, blt->src.size, alignment)
> +		     + blt->src.offset;
> +	dst_offset = get_offset(ahnd, blt->dst.handle, blt->dst.size, alignment)
> +		     + blt->dst.offset;
>  	bb_offset = get_offset(ahnd, blt->bb.handle, blt->bb.size, alignment);
>  
>  	fill_data(&data, blt, src_offset, dst_offset, ext);
> @@ -1179,8 +1181,10 @@ uint64_t emit_blt_fast_copy(int i915,
>  	data.dw03.dst_x2 = blt->dst.x2;
>  	data.dw03.dst_y2 = blt->dst.y2;
>  
> -	src_offset = get_offset(ahnd, blt->src.handle, blt->src.size, alignment);
> -	dst_offset = get_offset(ahnd, blt->dst.handle, blt->dst.size, alignment);
> +	src_offset = get_offset(ahnd, blt->src.handle, blt->src.size, alignment)
> +		     + blt->src.offset;
> +	dst_offset = get_offset(ahnd, blt->dst.handle, blt->dst.size, alignment)
> +		     + blt->dst.offset;
>  	bb_offset = get_offset(ahnd, blt->bb.handle, blt->bb.size, alignment);
>  
>  	data.dw04.dst_address_lo = dst_offset;
> diff --git a/lib/i915/i915_blt.h b/lib/i915/i915_blt.h
> index a5f0edd15..3e5bec496 100644
> --- a/lib/i915/i915_blt.h
> +++ b/lib/i915/i915_blt.h
> @@ -80,6 +80,7 @@ struct blt_copy_object {
>  	enum blt_compression compression;  /* BC only */
>  	enum blt_compression_type compression_type; /* BC only */
>  	uint32_t pitch;
> +	uint32_t offset;

I think renaming to plane_offset and adding to the end of
the structure would be better. Offset is ambiguous (may be
offset on gpu, etc). And add some comment what's for.

With this:

Reviewed-by: Zbigniew Kempczyński <zbigniew.kempczynski at intel.com>

--
Zbigniew

>  	uint16_t x_offset, y_offset;
>  	int16_t x1, y1, x2, y2;
>  
> -- 
> 2.39.0
> 


More information about the igt-dev mailing list