[Intel-xe] [PATCH v2 3/4] drm/xe/xe2: Set tile y type in XY_FAST_COPY_BLT to Tile4

Matt Roper matthew.d.roper at intel.com
Fri Sep 29 21:40:49 UTC 2023


On Fri, Sep 29, 2023 at 02:36:39PM -0700, Lucas De Marchi wrote:
> From: Haridhar Kalvala <haridhar.kalvala at intel.com>
> 
> Set bits 30 and 31 of XY_FAST_COPY_BLT's dword1 for XeHP and above.
> 
> Destination or source being Y-Major is selected on dword0 and there's
> nothing to set on dword1. According to the bspec for Xe2,
> "Behavior is undefined when programmed the value 0". Also for XeHP,
> the only value allowed in those bits is 0b11, not being possible to
> select "Legacy Tile-Y" anymore, only the newer Tile4.
> 
> So, unconditionally set those bits for graphics IP 12.50 and above.
> 
> v2: Reword commit message and extend it to graphics version >= 12.50
>     (Matt Roper)
> 
> Bspec: 57567
> Cc: Matt Roper <matthew.d.roper at intel.com>
> Signed-off-by: Haridhar Kalvala <haridhar.kalvala at intel.com>
> Signed-off-by: Lucas De Marchi <lucas.demarchi at intel.com>

Reviewed-by: Matt Roper <matthew.d.roper at intel.com>

> ---
>  drivers/gpu/drm/xe/regs/xe_gpu_commands.h | 2 ++
>  drivers/gpu/drm/xe/xe_migrate.c           | 9 ++++++++-
>  2 files changed, 10 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/xe/regs/xe_gpu_commands.h b/drivers/gpu/drm/xe/regs/xe_gpu_commands.h
> index 1fdf2e4f1c9f..cc7b56763f10 100644
> --- a/drivers/gpu/drm/xe/regs/xe_gpu_commands.h
> +++ b/drivers/gpu/drm/xe/regs/xe_gpu_commands.h
> @@ -57,6 +57,8 @@
>  
>  #define XY_FAST_COPY_BLT_CMD		(2 << 29 | 0x42 << 22)
>  #define   XY_FAST_COPY_BLT_DEPTH_32	(3<<24)
> +#define   XY_FAST_COPY_BLT_D1_SRC_TILE4	REG_BIT(31)
> +#define   XY_FAST_COPY_BLT_D1_DST_TILE4	REG_BIT(30)
>  
>  #define	PVC_MEM_SET_CMD		(2 << 29 | 0x5b << 22)
>  #define   PVC_MEM_SET_CMD_LEN_DW	7
> diff --git a/drivers/gpu/drm/xe/xe_migrate.c b/drivers/gpu/drm/xe/xe_migrate.c
> index 2e6ce2daf414..316773e924e0 100644
> --- a/drivers/gpu/drm/xe/xe_migrate.c
> +++ b/drivers/gpu/drm/xe/xe_migrate.c
> @@ -543,12 +543,19 @@ static void emit_copy(struct xe_gt *gt, struct xe_bb *bb,
>  		      u64 src_ofs, u64 dst_ofs, unsigned int size,
>  		      unsigned int pitch)
>  {
> +	struct xe_device *xe = gt_to_xe(gt);
> +
>  	xe_gt_assert(gt, size / pitch <= S16_MAX);
>  	xe_gt_assert(gt, pitch / 4 <= S16_MAX);
>  	xe_gt_assert(gt, pitch <= U16_MAX);
>  
>  	bb->cs[bb->len++] = XY_FAST_COPY_BLT_CMD | (10 - 2);
> -	bb->cs[bb->len++] = XY_FAST_COPY_BLT_DEPTH_32 | pitch;
> +	if (GRAPHICS_VERx100(xe) >= 1250)
> +		bb->cs[bb->len++] = XY_FAST_COPY_BLT_DEPTH_32 | pitch |
> +				    XY_FAST_COPY_BLT_D1_SRC_TILE4 |
> +				    XY_FAST_COPY_BLT_D1_DST_TILE4;
> +	else
> +		bb->cs[bb->len++] = XY_FAST_COPY_BLT_DEPTH_32 | pitch;
>  	bb->cs[bb->len++] = 0;
>  	bb->cs[bb->len++] = (size / pitch) << 16 | pitch / 4;
>  	bb->cs[bb->len++] = lower_32_bits(dst_ofs);
> -- 
> 2.40.1
> 

-- 
Matt Roper
Graphics Software Engineer
Linux GPU Platform Enablement
Intel Corporation


More information about the Intel-xe mailing list