[igt-dev] [PATCH i-g-t 03/10] lib/igt_buf: Extend igt_buf to include two color surfaces

Kahola, Mika mika.kahola at intel.com
Mon Dec 30 12:06:51 UTC 2019


On Mon, 2019-12-30 at 05:40 +0200, Imre Deak wrote:
> UV FBs have two color surfaces so extend the igt_buf struct
> accordingly
> to support blitting such FBs.
> 
> The patch is produced with the coccinelle patch below.
> 
> No functional changes.

When applying this patch, the compiler started to nag about

[75/672] Compiling C object 'tests/59830eb@@kms_cursor_crc at exe/kms_curs
or_crc.c.o'.
FAILED: tests/59830eb@@kms_cursor_crc at exe/kms_cursor_crc.c.o
ccache cc -Itests/59830eb@@kms_cursor_crc at exe -Itests -I../tests
-I../include/drm-uapi -Ilib -I../lib -I../lib/stubs/syscalls -I. -I../
-I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-
gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2
-I/usr/include/libpng16 -I/usr/include/libdrm -I/usr/include/x86_64-
linux-gnu -I/usr/include/alsa -I/usr/include/libdrm/nouveau
-fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall
-Winvalid-pch -Wextra -std=gnu11 -O2 -g -D_GNU_SOURCE -include config.h
-D_FORTIFY_SOURCE=2 -Wbad-function-cast -Wdeclaration-after-statement
-Wformat=2 -Wimplicit-fallthrough=0 -Wlogical-op -Wmissing-declarations 
-Wmissing-format-attribute -Wmissing-noreturn -Wmissing-prototypes
-Wnested-externs -Wold-style-definition -Wpointer-arith -Wredundant-
decls -Wshadow -Wstrict-prototypes -Wuninitialized -Wunused -Wno-
clobbered -Wno-maybe-uninitialized -Wno-missing-field-initializers
-Wno-pointer-arith -Wno-sign-compare -Wno-type-limits -Wno-unused-
parameter -Wno-unused-result -Werror=address -Werror=array-bounds
-Werror=implicit -Werror=init-self -Werror=int-to-pointer-cast
-Werror=main -Werror=missing-braces -Werror=nonnull -Werror=pointer-to-
int-cast -Werror=return-type -Werror=sequence-point -Werror=trigraphs
-Werror=write-strings -fno-builtin-malloc -fno-builtin-calloc
-pthread  -MD -MQ 'tests/59830eb@@kms_cursor_crc at exe/kms_cursor_crc.c.o
' -MF 'tests/59830eb@@kms_cursor_crc at exe/kms_cursor_crc.c.o.d' -o
'tests/59830eb@@kms_cursor_crc at exe/kms_cursor_crc.c.o' -c
../tests/kms_cursor_crc.c
../tests/kms_cursor_crc.c: In function ‘scratch_buf_init’:
../tests/kms_cursor_crc.c:388:21: error: ‘struct igt_buf’ has no member
named ‘stride’
  data->igtbo[buffer].stride = data->primary_fb[buffer].strides[0];
                     ^
../tests/kms_cursor_crc.c:390:21: error: ‘struct igt_buf’ has no member
named ‘size’
  data->igtbo[buffer].size = data->primary_fb[buffer].size;
                     ^
[84/672] Compiling C object 'tests/59830eb@@kms_cursor_legacy at exe/kms_c
ursor_legacy.c.o'.
ninja: build stopped: subcommand failed.

> 
> @@
> @@
> 
> struct igt_buf {
> 	...
> -	uint32_t stride;
> 	...
> -	uint32_t size;
> +	struct {
> +		uint32_t stride;
> +		uint32_t size;
> +	} surface[2];
> 	...
> };
> 
> @@
> struct igt_buf b;
> @@
> 
> <...
> (
> - b.stride
> + b.surface[0].stride
> > 
> 
> - b.size
> + b.surface[0].size
> )
> ...>
> 
> @@
> struct igt_buf *b;
> @@
> 
> <...
> (
> - b->size
> + b->surface[0].size
> > 
> 
> - b->stride
> + b->surface[0].stride
> )
> ...>
> 
> @@
> identifier I;
> expression E1;
> expression E2;
> @@
> 
> (
> struct igt_buf I = {
> -	.size = E1,
> -	.stride = E2,
> +	.surface[0] = {
> +		.size = E1,
> +		.stride = E2,
> +	},
> };
> > 
> 
> struct igt_buf I = {
> -	.size = E1,
> +	.surface[0] = {
> +		.size = E1,
> +	},
> };
> > 
> 
> struct igt_buf I = {
> -	.stride = E1,
> +	.surface[0] = {
> +		.stride = E1,
> +	},
> };
> )
> 
> Cc: Mika Kahola <mika.kahola at intel.com>
> Signed-off-by: Imre Deak <imre.deak at intel.com>
> ---
>  lib/gpu_cmds.c                       |  4 +-
>  lib/igt_draw.c                       |  8 ++--
>  lib/igt_fb.c                         |  4 +-
>  lib/intel_aux_pgtable.c              |  5 ++-
>  lib/intel_batchbuffer.c              |  8 ++--
>  lib/intel_batchbuffer.h              |  6 ++-
>  lib/rendercopy_gen4.c                |  4 +-
>  lib/rendercopy_gen6.c                |  4 +-
>  lib/rendercopy_gen7.c                |  4 +-
>  lib/rendercopy_gen8.c                |  4 +-
>  lib/rendercopy_gen9.c                |  4 +-
>  lib/rendercopy_i830.c                |  8 ++--
>  lib/rendercopy_i915.c                |  8 ++--
>  lib/veboxcopy_gen12.c                |  6 ++-
>  tests/i915/gem_concurrent_all.c      | 10 +++--
>  tests/i915/gem_gpgpu_fill.c          |  4 +-
>  tests/i915/gem_media_fill.c          |  4 +-
>  tests/i915/gem_media_vme.c           |  6 +--
>  tests/i915/gem_ppgtt.c               |  8 ++--
>  tests/i915/gem_read_read_speed.c     | 10 +++--
>  tests/i915/gem_render_copy.c         | 35 +++++++++--------
>  tests/i915/gem_render_copy_redux.c   |  4 +-
>  tests/i915/gem_render_linear_blits.c | 24 +++++------
>  tests/i915/gem_render_tiled_blits.c  |  8 ++--
>  tests/i915/gem_ring_sync_copy.c      |  4 +-
>  tests/i915/gem_stress.c              | 59 +++++++++++++++-----------
> --
>  tests/i915/i915_pm_sseu.c            |  7 ++--
>  tests/kms_big_fb.c                   | 10 +++--
>  tests/kms_psr.c                      |  4 +-
>  tests/perf.c                         |  4 +-
>  30 files changed, 149 insertions(+), 129 deletions(-)
> 
> diff --git a/lib/gpu_cmds.c b/lib/gpu_cmds.c
> index 8d270ee8..79412725 100644
> --- a/lib/gpu_cmds.c
> +++ b/lib/gpu_cmds.c
> @@ -119,7 +119,7 @@ gen7_fill_surface_state(struct intel_batchbuffer
> *batch,
>  	ss->ss2.height = igt_buf_height(buf) - 1;
>  	ss->ss2.width  = igt_buf_width(buf) - 1;
>  
> -	ss->ss3.pitch  = buf->stride - 1;
> +	ss->ss3.pitch  = buf->surface[0].stride - 1;
>  
>  	ss->ss7.shader_chanel_select_r = 4;
>  	ss->ss7.shader_chanel_select_g = 5;
> @@ -422,7 +422,7 @@ gen8_fill_surface_state(struct intel_batchbuffer
> *batch,
>  
>  	ss->ss2.height = igt_buf_height(buf) - 1;
>  	ss->ss2.width  = igt_buf_width(buf) - 1;
> -	ss->ss3.pitch  = buf->stride - 1;
> +	ss->ss3.pitch  = buf->surface[0].stride - 1;
>  
>  	ss->ss7.shader_chanel_select_r = 4;
>  	ss->ss7.shader_chanel_select_g = 5;
> diff --git a/lib/igt_draw.c b/lib/igt_draw.c
> index 7e0edec1..6950bc49 100644
> --- a/lib/igt_draw.c
> +++ b/lib/igt_draw.c
> @@ -603,14 +603,14 @@ static void draw_rect_render(int fd, struct
> cmd_data *cmd_data,
>  	igt_assert(dst);
>  
>  	src_buf.bo = src;
> -	src_buf.stride = tmp.stride;
> +	src_buf.surface[0].stride = tmp.stride;
>  	src_buf.tiling = I915_TILING_NONE;
> -	src_buf.size = tmp.size;
> +	src_buf.surface[0].size = tmp.size;
>  	src_buf.bpp = tmp.bpp;
>  	dst_buf.bo = dst;
> -	dst_buf.stride = buf->stride;
> +	dst_buf.surface[0].stride = buf->stride;
>  	dst_buf.tiling = tiling;
> -	dst_buf.size = buf->size;
> +	dst_buf.surface[0].size = buf->size;
>  	dst_buf.bpp = buf->bpp;
>  
>  	batch = intel_batchbuffer_alloc(cmd_data->bufmgr, devid);
> diff --git a/lib/igt_fb.c b/lib/igt_fb.c
> index 0e1b8493..cc0fb373 100644
> --- a/lib/igt_fb.c
> +++ b/lib/igt_fb.c
> @@ -1977,9 +1977,9 @@ static void init_buf(struct fb_blit_upload
> *blit,
>  	buf->bo = gem_handle_to_libdrm_bo(blit->bufmgr, blit->fd,
>  					  name, fb->gem_handle);
>  	buf->tiling = igt_fb_mod_to_tiling(fb->modifier);
> -	buf->stride = fb->strides[0];
> +	buf->surface[0].stride = fb->strides[0];
>  	buf->bpp = fb->plane_bpp[0];
> -	buf->size = fb->size;
> +	buf->surface[0].size = fb->size;
>  
>  	if (is_ccs_modifier(fb->modifier)) {
>  		igt_assert_eq(fb->strides[0] & 127, 0);
> diff --git a/lib/intel_aux_pgtable.c b/lib/intel_aux_pgtable.c
> index dab83a9a..5addb2e2 100644
> --- a/lib/intel_aux_pgtable.c
> +++ b/lib/intel_aux_pgtable.c
> @@ -77,7 +77,8 @@ pgt_table_count(int address_bits, const struct
> igt_buf **bufs, int buf_count)
>  		/* Avoid double counting for overlapping aligned bufs.
> */
>  		start = max(start, end);
>  
> -		end = ALIGN(buf->bo->offset64 + buf->size, 1UL <<
> address_bits);
> +		end = ALIGN(buf->bo->offset64 + buf->surface[0].size,
> +			    1UL << address_bits);
>  		igt_assert(end >= start);
>  
>  		count += (end - start) >> address_bits;
> @@ -255,7 +256,7 @@ pgt_populate_entries_for_buf(struct pgtable *pgt,
>  			       uint64_t top_table)
>  {
>  	uint64_t surface_addr = buf->bo->offset64;
> -	uint64_t surface_end = surface_addr + buf->size;
> +	uint64_t surface_end = surface_addr + buf->surface[0].size;
>  	uint64_t aux_addr = buf->bo->offset64 + buf->ccs[0].offset;
>  	uint64_t l1_flags = pgt_get_l1_flags(buf);
>  	uint64_t lx_flags = pgt_get_lx_flags();
> diff --git a/lib/intel_batchbuffer.c b/lib/intel_batchbuffer.c
> index 51aae4dc..3dc89024 100644
> --- a/lib/intel_batchbuffer.c
> +++ b/lib/intel_batchbuffer.c
> @@ -512,7 +512,7 @@ intel_copy_bo(struct intel_batchbuffer *batch,
>   */
>  unsigned igt_buf_width(const struct igt_buf *buf)
>  {
> -	return buf->stride/(buf->bpp / 8);
> +	return buf->surface[0].stride/(buf->bpp / 8);
>  }
>  
>  /**
> @@ -526,7 +526,7 @@ unsigned igt_buf_width(const struct igt_buf *buf)
>   */
>  unsigned igt_buf_height(const struct igt_buf *buf)
>  {
> -	return buf->size/buf->stride;
> +	return buf->surface[0].size/buf->surface[0].stride;
>  }
>  
>  /*
> @@ -785,8 +785,8 @@ void igt_blitter_fast_copy(struct
> intel_batchbuffer *batch,
>  
>  	igt_assert(src->bpp == dst->bpp);
>  
> -	src_pitch = fast_copy_pitch(src->stride, src->tiling);
> -	dst_pitch = fast_copy_pitch(dst->stride, src->tiling);
> +	src_pitch = fast_copy_pitch(src->surface[0].stride, src-
> >tiling);
> +	dst_pitch = fast_copy_pitch(dst->surface[0].stride, src-
> >tiling);
>  	dword0 = fast_copy_dword0(src->tiling, dst->tiling);
>  	dword1 = fast_copy_dword1(src->tiling, dst->tiling, dst->bpp);
>  
> diff --git a/lib/intel_batchbuffer.h b/lib/intel_batchbuffer.h
> index 63d32188..69580839 100644
> --- a/lib/intel_batchbuffer.h
> +++ b/lib/intel_batchbuffer.h
> @@ -232,12 +232,14 @@ enum i915_compression {
>   */
>  struct igt_buf {
>  	drm_intel_bo *bo;
> -	uint32_t stride;
>  	uint32_t tiling;
>  	enum i915_compression compression;
>  	uint32_t bpp;
>  	uint32_t *data;
> -	uint32_t size;
> +	struct {
> +		uint32_t stride;
> +		uint32_t size;
> +	} surface[2];
>  	struct {
>  		uint32_t offset;
>  		uint32_t stride;
> diff --git a/lib/rendercopy_gen4.c b/lib/rendercopy_gen4.c
> index 42de77f9..d07b8e48 100644
> --- a/lib/rendercopy_gen4.c
> +++ b/lib/rendercopy_gen4.c
> @@ -142,7 +142,7 @@ gen4_bind_buf(struct intel_batchbuffer *batch,
>  	uint32_t write_domain, read_domain;
>  	int ret;
>  
> -	igt_assert_lte(buf->stride, 128*1024);
> +	igt_assert_lte(buf->surface[0].stride, 128*1024);
>  	igt_assert_lte(igt_buf_width(buf), 8192);
>  	igt_assert_lte(igt_buf_height(buf), 8192);
>  
> @@ -176,7 +176,7 @@ gen4_bind_buf(struct intel_batchbuffer *batch,
>  
>  	ss->ss2.height = igt_buf_height(buf) - 1;
>  	ss->ss2.width  = igt_buf_width(buf) - 1;
> -	ss->ss3.pitch  = buf->stride - 1;
> +	ss->ss3.pitch  = buf->surface[0].stride - 1;
>  	ss->ss3.tiled_surface = buf->tiling != I915_TILING_NONE;
>  	ss->ss3.tile_walk     = buf->tiling == I915_TILING_Y;
>  
> diff --git a/lib/rendercopy_gen6.c b/lib/rendercopy_gen6.c
> index 83c7d694..87034774 100644
> --- a/lib/rendercopy_gen6.c
> +++ b/lib/rendercopy_gen6.c
> @@ -79,7 +79,7 @@ gen6_bind_buf(struct intel_batchbuffer *batch,
> const struct igt_buf *buf,
>  	uint32_t write_domain, read_domain;
>  	int ret;
>  
> -	igt_assert_lte(buf->stride, 128*1024);
> +	igt_assert_lte(buf->surface[0].stride, 128*1024);
>  	igt_assert_lte(igt_buf_width(buf), 8192);
>  	igt_assert_lte(igt_buf_height(buf), 8192);
>  
> @@ -113,7 +113,7 @@ gen6_bind_buf(struct intel_batchbuffer *batch,
> const struct igt_buf *buf,
>  
>  	ss->ss2.height = igt_buf_height(buf) - 1;
>  	ss->ss2.width  = igt_buf_width(buf) - 1;
> -	ss->ss3.pitch  = buf->stride - 1;
> +	ss->ss3.pitch  = buf->surface[0].stride - 1;
>  	ss->ss3.tiled_surface = buf->tiling != I915_TILING_NONE;
>  	ss->ss3.tile_walk     = buf->tiling == I915_TILING_Y;
>  
> diff --git a/lib/rendercopy_gen7.c b/lib/rendercopy_gen7.c
> index a3c8b7f3..b88b75e9 100644
> --- a/lib/rendercopy_gen7.c
> +++ b/lib/rendercopy_gen7.c
> @@ -65,7 +65,7 @@ gen7_bind_buf(struct intel_batchbuffer *batch,
>  	uint32_t write_domain, read_domain;
>  	int ret;
>  
> -	igt_assert_lte(buf->stride, 256*1024);
> +	igt_assert_lte(buf->surface[0].stride, 256*1024);
>  	igt_assert_lte(igt_buf_width(buf), 16384);
>  	igt_assert_lte(igt_buf_height(buf), 16384);
>  
> @@ -92,7 +92,7 @@ gen7_bind_buf(struct intel_batchbuffer *batch,
>  	ss[1] = buf->bo->offset;
>  	ss[2] = ((igt_buf_width(buf) - 1)  << GEN7_SURFACE_WIDTH_SHIFT
> |
>  		 (igt_buf_height(buf) - 1) <<
> GEN7_SURFACE_HEIGHT_SHIFT);
> -	ss[3] = (buf->stride - 1) << GEN7_SURFACE_PITCH_SHIFT;
> +	ss[3] = (buf->surface[0].stride - 1) <<
> GEN7_SURFACE_PITCH_SHIFT;
>  	ss[4] = 0;
>  	if (IS_VALLEYVIEW(batch->devid))
>  		ss[5] = VLV_MOCS_L3 << 16;
> diff --git a/lib/rendercopy_gen8.c b/lib/rendercopy_gen8.c
> index e22d8501..8e02d846 100644
> --- a/lib/rendercopy_gen8.c
> +++ b/lib/rendercopy_gen8.c
> @@ -151,7 +151,7 @@ gen8_bind_buf(struct intel_batchbuffer *batch,
>  	uint32_t write_domain, read_domain, offset;
>  	int ret;
>  
> -	igt_assert_lte(buf->stride, 256*1024);
> +	igt_assert_lte(buf->surface[0].stride, 256*1024);
>  	igt_assert_lte(igt_buf_width(buf), 16384);
>  	igt_assert_lte(igt_buf_height(buf), 16384);
>  
> @@ -199,7 +199,7 @@ gen8_bind_buf(struct intel_batchbuffer *batch,
>  
>  	ss->ss2.height = igt_buf_height(buf) - 1;
>  	ss->ss2.width  = igt_buf_width(buf) - 1;
> -	ss->ss3.pitch  = buf->stride - 1;
> +	ss->ss3.pitch  = buf->surface[0].stride - 1;
>  
>  	ss->ss7.shader_chanel_select_r = 4;
>  	ss->ss7.shader_chanel_select_g = 5;
> diff --git a/lib/rendercopy_gen9.c b/lib/rendercopy_gen9.c
> index 4d4541e3..835c8d80 100644
> --- a/lib/rendercopy_gen9.c
> +++ b/lib/rendercopy_gen9.c
> @@ -199,7 +199,7 @@ gen8_bind_buf(struct intel_batchbuffer *batch,
> const struct igt_buf *buf,
>  	uint32_t write_domain, read_domain, offset;
>  	int ret;
>  
> -	igt_assert_lte(buf->stride, 256*1024);
> +	igt_assert_lte(buf->surface[0].stride, 256*1024);
>  	igt_assert_lte(igt_buf_width(buf), 16384);
>  	igt_assert_lte(igt_buf_height(buf), 16384);
>  
> @@ -250,7 +250,7 @@ gen8_bind_buf(struct intel_batchbuffer *batch,
> const struct igt_buf *buf,
>  
>  	ss->ss2.height = igt_buf_height(buf) - 1;
>  	ss->ss2.width  = igt_buf_width(buf) - 1;
> -	ss->ss3.pitch  = buf->stride - 1;
> +	ss->ss3.pitch  = buf->surface[0].stride - 1;
>  
>  	ss->ss7.skl.shader_chanel_select_r = 4;
>  	ss->ss7.skl.shader_chanel_select_g = 5;
> diff --git a/lib/rendercopy_i830.c b/lib/rendercopy_i830.c
> index e8c04718..ca815122 100644
> --- a/lib/rendercopy_i830.c
> +++ b/lib/rendercopy_i830.c
> @@ -138,7 +138,7 @@ static void gen2_emit_target(struct
> intel_batchbuffer *batch,
>  	uint32_t tiling;
>  	uint32_t format;
>  
> -	igt_assert_lte(dst->stride, 8192);
> +	igt_assert_lte(dst->surface[0].stride, 8192);
>  	igt_assert_lte(igt_buf_width(dst), 2048);
>  	igt_assert_lte(igt_buf_height(dst), 2048);
>  
> @@ -156,7 +156,7 @@ static void gen2_emit_target(struct
> intel_batchbuffer *batch,
>  		tiling |= BUF_3D_TILE_WALK_Y;
>  
>  	OUT_BATCH(_3DSTATE_BUF_INFO_CMD);
> -	OUT_BATCH(BUF_3D_ID_COLOR_BACK | tiling | BUF_3D_PITCH(dst-
> >stride));
> +	OUT_BATCH(BUF_3D_ID_COLOR_BACK | tiling | BUF_3D_PITCH(dst-
> >surface[0].stride));
>  	OUT_RELOC(dst->bo, I915_GEM_DOMAIN_RENDER,
> I915_GEM_DOMAIN_RENDER, 0);
>  
>  	OUT_BATCH(_3DSTATE_DST_BUF_VARS_CMD);
> @@ -179,7 +179,7 @@ static void gen2_emit_texture(struct
> intel_batchbuffer *batch,
>  	uint32_t tiling;
>  	uint32_t format;
>  
> -	igt_assert_lte(src->stride, 8192);
> +	igt_assert_lte(src->surface[0].stride, 8192);
>  	igt_assert_lte(igt_buf_width(src), 2048);
>  	igt_assert_lte(igt_buf_height(src), 2048);
>  
> @@ -201,7 +201,7 @@ static void gen2_emit_texture(struct
> intel_batchbuffer *batch,
>  	OUT_BATCH((igt_buf_height(src) - 1) << TM0S1_HEIGHT_SHIFT |
>  		  (igt_buf_width(src) - 1) << TM0S1_WIDTH_SHIFT |
>  		  format | tiling);
> -	OUT_BATCH((src->stride / 4 - 1) << TM0S2_PITCH_SHIFT |
> TM0S2_MAP_2D);
> +	OUT_BATCH((src->surface[0].stride / 4 - 1) << TM0S2_PITCH_SHIFT
> | TM0S2_MAP_2D);
>  	OUT_BATCH(FILTER_NEAREST << TM0S3_MAG_FILTER_SHIFT |
>  		  FILTER_NEAREST << TM0S3_MIN_FILTER_SHIFT |
>  		  MIPFILTER_NONE << TM0S3_MIP_FILTER_SHIFT);
> diff --git a/lib/rendercopy_i915.c b/lib/rendercopy_i915.c
> index 1baa7a1b..56e1863e 100644
> --- a/lib/rendercopy_i915.c
> +++ b/lib/rendercopy_i915.c
> @@ -88,7 +88,7 @@ void gen3_render_copyfunc(struct intel_batchbuffer
> *batch,
>  #define TEX_COUNT 1
>  		uint32_t format_bits, tiling_bits = 0;
>  
> -		igt_assert_lte(src->stride, 8192);
> +		igt_assert_lte(src->surface[0].stride, 8192);
>  		igt_assert_lte(igt_buf_width(src), 2048);
>  		igt_assert_lte(igt_buf_height(src), 2048);
>  
> @@ -110,7 +110,7 @@ void gen3_render_copyfunc(struct
> intel_batchbuffer *batch,
>  		OUT_BATCH(format_bits | tiling_bits |
>  			  (igt_buf_height(src) - 1) << MS3_HEIGHT_SHIFT
> |
>  			  (igt_buf_width(src) - 1) << MS3_WIDTH_SHIFT);
> -		OUT_BATCH((src->stride/4-1) << MS4_PITCH_SHIFT);
> +		OUT_BATCH((src->surface[0].stride/4-1) <<
> MS4_PITCH_SHIFT);
>  
>  		OUT_BATCH(_3DSTATE_SAMPLER_STATE | (3 * TEX_COUNT));
>  		OUT_BATCH((1 << TEX_COUNT) - 1);
> @@ -128,7 +128,7 @@ void gen3_render_copyfunc(struct
> intel_batchbuffer *batch,
>  		uint32_t tiling_bits = 0;
>  		uint32_t format_bits;
>  
> -		igt_assert_lte(dst->stride, 8192);
> +		igt_assert_lte(dst->surface[0].stride, 8192);
>  		igt_assert_lte(igt_buf_width(dst), 2048);
>  		igt_assert_lte(igt_buf_height(dst), 2048);
>  
> @@ -146,7 +146,7 @@ void gen3_render_copyfunc(struct
> intel_batchbuffer *batch,
>  
>  		OUT_BATCH(_3DSTATE_BUF_INFO_CMD);
>  		OUT_BATCH(BUF_3D_ID_COLOR_BACK | tiling_bits |
> -			  BUF_3D_PITCH(dst->stride));
> +			  BUF_3D_PITCH(dst->surface[0].stride));
>  		OUT_RELOC(dst->bo, I915_GEM_DOMAIN_RENDER,
> I915_GEM_DOMAIN_RENDER, 0);
>  
>  		OUT_BATCH(_3DSTATE_DST_BUF_VARS_CMD);
> diff --git a/lib/veboxcopy_gen12.c b/lib/veboxcopy_gen12.c
> index 87800941..2f017514 100644
> --- a/lib/veboxcopy_gen12.c
> +++ b/lib/veboxcopy_gen12.c
> @@ -248,12 +248,14 @@ void gen12_vebox_copyfunc(struct
> intel_batchbuffer *batch,
>  	/* TODO: add support for more formats */
>  	igt_assert(src->bpp == 32);
>  	emit_surface_state_cmd(batch, VEBOX_SURFACE_INPUT,
> -			       width, height, src->bpp, src->stride,
> +			       width, height, src->bpp,
> +			       src->surface[0].stride,
>  			       src->tiling, R8G8B8A8_UNORM);
>  
>  	igt_assert(dst->bpp == 32);
>  	emit_surface_state_cmd(batch, VEBOX_SURFACE_OUTPUT,
> -			       width, height, dst->bpp, dst->stride,
> +			       width, height, dst->bpp,
> +			       dst->surface[0].stride,
>  			       dst->tiling, R8G8B8A8_UNORM);
>  
>  	emit_tiling_convert_cmd(batch,
> diff --git a/tests/i915/gem_concurrent_all.c
> b/tests/i915/gem_concurrent_all.c
> index 6486bebf..f1be4a85 100644
> --- a/tests/i915/gem_concurrent_all.c
> +++ b/tests/i915/gem_concurrent_all.c
> @@ -851,15 +851,17 @@ static void render_copy_bo(struct buffers *b,
> drm_intel_bo *dst, drm_intel_bo *s
>  {
>  	struct igt_buf d = {
>  		.bo = dst,
> -		.size = b->npixels * 4,
>  		.num_tiles = b->npixels * 4,
> -		.stride = b->width * 4,
> +		.surface[0] = {
> +			.size = b->npixels * 4, .stride = b->width * 4,
> +		},
>  		.bpp = 32,
>  	}, s = {
>  		.bo = src,
> -		.size = b->npixels * 4,
>  		.num_tiles = b->npixels * 4,
> -		.stride = b->width * 4,
> +		.surface[0] = {
> +			.size = b->npixels * 4, .stride = b->width * 4,
> +		},
>  		.bpp = 32,
>  	};
>  	uint32_t swizzle;
> diff --git a/tests/i915/gem_gpgpu_fill.c
> b/tests/i915/gem_gpgpu_fill.c
> index 68918c3e..b2d401d6 100644
> --- a/tests/i915/gem_gpgpu_fill.c
> +++ b/tests/i915/gem_gpgpu_fill.c
> @@ -75,9 +75,9 @@ static void scratch_buf_init(data_t *data, struct
> igt_buf *buf,
>  	memset(buf, 0, sizeof(*buf));
>  
>  	buf->bo = bo;
> -	buf->stride = stride;
> +	buf->surface[0].stride = stride;
>  	buf->tiling = I915_TILING_NONE;
> -	buf->size = SIZE;
> +	buf->surface[0].size = SIZE;
>  	buf->bpp = 32;
>  }
>  
> diff --git a/tests/i915/gem_media_fill.c
> b/tests/i915/gem_media_fill.c
> index a7d7708c..c880bae9 100644
> --- a/tests/i915/gem_media_fill.c
> +++ b/tests/i915/gem_media_fill.c
> @@ -78,9 +78,9 @@ static void scratch_buf_init(data_t *data, struct
> igt_buf *buf,
>  	memset(buf, 0, sizeof(*buf));
>  
>  	buf->bo = bo;
> -	buf->stride = stride;
> +	buf->surface[0].stride = stride;
>  	buf->tiling = I915_TILING_NONE;
> -	buf->size = SIZE;
> +	buf->surface[0].size = SIZE;
>  	buf->bpp = 32;
>  }
>  
> diff --git a/tests/i915/gem_media_vme.c b/tests/i915/gem_media_vme.c
> index d5045ad1..20f5ca35 100644
> --- a/tests/i915/gem_media_vme.c
> +++ b/tests/i915/gem_media_vme.c
> @@ -58,7 +58,7 @@ scratch_buf_init(drm_intel_bufmgr *bufmgr,
>  
>  	buf->bo = bo;
>  	buf->tiling = I915_TILING_NONE;
> -	buf->size = size;
> +	buf->surface[0].size = size;
>  }
>  
>  static void scratch_buf_init_src(drm_intel_bufmgr *bufmgr, struct
> igt_buf *buf)
> @@ -71,14 +71,14 @@ static void scratch_buf_init_src(drm_intel_bufmgr
> *bufmgr, struct igt_buf *buf)
>  	 * with this vme kernel.
>  	 */
>  
> -	buf->stride = STRIDE;
> +	buf->surface[0].stride = STRIDE;
>  }
>  
>  static void scratch_buf_init_dst(drm_intel_bufmgr *bufmgr, struct
> igt_buf *buf)
>  {
>  	scratch_buf_init(bufmgr, buf, OUTPUT_SIZE);
>  
> -	buf->stride = 1;
> +	buf->surface[0].stride = 1;
>  }
>  
>  static uint64_t switch_off_n_bits(uint64_t mask, unsigned int n)
> diff --git a/tests/i915/gem_ppgtt.c b/tests/i915/gem_ppgtt.c
> index 89cdc4db..4c7d3ba2 100644
> --- a/tests/i915/gem_ppgtt.c
> +++ b/tests/i915/gem_ppgtt.c
> @@ -73,9 +73,9 @@ static void scratch_buf_init(struct igt_buf *buf,
>  	memset(buf, 0, sizeof(*buf));
>  
>  	buf->bo = create_bo(bufmgr, pixel);
> -	buf->stride = STRIDE;
> +	buf->surface[0].stride = STRIDE;
>  	buf->tiling = I915_TILING_NONE;
> -	buf->size = SIZE;
> +	buf->surface[0].size = SIZE;
>  	buf->bpp = 32;
>  }
>  
> @@ -140,9 +140,9 @@ static void fork_rcs_copy(int timeout, uint32_t
> final,
>  		}
>  
>  		buf.bo = dst[child];
> -		buf.stride = STRIDE;
> +		buf.surface[0].stride = STRIDE;
>  		buf.tiling = I915_TILING_NONE;
> -		buf.size = SIZE;
> +		buf.surface[0].size = SIZE;
>  		buf.bpp = 32;
>  
>  		i = 0;
> diff --git a/tests/i915/gem_read_read_speed.c
> b/tests/i915/gem_read_read_speed.c
> index 8b5ba8f7..2aab2204 100644
> --- a/tests/i915/gem_read_read_speed.c
> +++ b/tests/i915/gem_read_read_speed.c
> @@ -53,15 +53,17 @@ static drm_intel_bo *rcs_copy_bo(drm_intel_bo
> *dst, drm_intel_bo *src)
>  {
>  	struct igt_buf d = {
>  		.bo = dst,
> -		.size = width * height * 4,
>  		.num_tiles = width * height * 4,
> -		.stride = width * 4,
> +		.surface[0] = {
> +			.size = width * height * 4, .stride = width *
> 4,
> +		},
>  		.bpp = 32,
>  	}, s = {
>  		.bo = src,
> -		.size = width * height * 4,
>  		.num_tiles = width * height * 4,
> -		.stride = width * 4,
> +		.surface[0] = {
> +			.size = width * height * 4, .stride = width *
> 4,
> +		},
>  		.bpp = 32,
>  	};
>  	uint32_t swizzle;
> diff --git a/tests/i915/gem_render_copy.c
> b/tests/i915/gem_render_copy.c
> index df0d045e..5abb2036 100644
> --- a/tests/i915/gem_render_copy.c
> +++ b/tests/i915/gem_render_copy.c
> @@ -118,7 +118,8 @@ static void copy_linear_to_yf(data_t *data,
> struct igt_buf *buf,
>  	for (int y = 0; y < height; y++) {
>  		for (int x = 0; x < width; x++) {
>  			uint32_t *ptr = yf_ptr(map, x, y,
> -					       buf->stride, buf->bpp /
> 8);
> +					       buf->surface[0].stride,
> +					       buf->bpp / 8);
>  
>  			*ptr = linear[y * width + x];
>  		}
> @@ -142,7 +143,8 @@ static void copy_yf_to_linear(data_t *data,
> struct igt_buf *buf,
>  	for (int y = 0; y < height; y++) {
>  		for (int x = 0; x < width; x++) {
>  			uint32_t *ptr = yf_ptr(map, x, y,
> -					       buf->stride, buf->bpp /
> 8);
> +					       buf->surface[0].stride,
> +					       buf->bpp / 8);
>  
>  			linear[y * width + x] = *ptr;
>  		}
> @@ -231,7 +233,7 @@ static void scratch_buf_write_to_png(data_t
> *data, struct igt_buf *buf,
>  						      CAIRO_FORMAT_RGB2
> 4,
>  						      igt_buf_width(buf
> ),
>  						      igt_buf_height(bu
> f),
> -						      buf->stride);
> +						      buf-
> >surface[0].stride);
>  	ret = cairo_surface_write_to_png(surface,
> make_filename(filename));
>  	igt_assert(ret == CAIRO_STATUS_SUCCESS);
>  	cairo_surface_destroy(surface);
> @@ -324,7 +326,7 @@ static void scratch_buf_draw_pattern(data_t
> *data, struct igt_buf *buf,
>  						      CAIRO_FORMAT_RGB2
> 4,
>  						      igt_buf_width(buf
> ),
>  						      igt_buf_height(bu
> f),
> -						      buf->stride);
> +						      buf-
> >surface[0].stride);
>  
>  	cr = cairo_create(surface);
>  
> @@ -403,7 +405,7 @@ scratch_buf_copy(data_t *data,
>  		for (int y = 0; y < h; y++) {
>  			for (int x = 0; x < w; x++) {
>  				const uint32_t *ptr = yf_ptr(map, sx+x,
> sy+y,
> -							     src-
> >stride,
> +							     src-
> >surface[0].stride,
>  							     src->bpp /
> 8);
>  
>  				linear_dst[(dy+y) * width + dx+x] =
> *ptr;
> @@ -458,14 +460,14 @@ static void scratch_buf_init(data_t *data,
> struct igt_buf *buf,
>  		 * turn mapped by one L1 AUX page table entry.
>  		 */
>  		if (intel_gen(data->devid) >= 12)
> -			buf->stride = ALIGN(width * (bpp / 8), 128 *
> 4);
> +			buf->surface[0].stride = ALIGN(width * (bpp /
> 8), 128 * 4);
>  		else
> -			buf->stride = ALIGN(width * (bpp / 8), 128);
> +			buf->surface[0].stride = ALIGN(width * (bpp /
> 8), 128);
>  
>  		if (intel_gen(data->devid) >= 12)
>  			height = ALIGN(height, 4 * 32);
>  
> -		buf->size = buf->stride * height;
> +		buf->surface[0].size = buf->surface[0].stride * height;
>  		buf->tiling = tiling;
>  		buf->bpp = bpp;
>  
> @@ -473,7 +475,7 @@ static void scratch_buf_init(data_t *data, struct
> igt_buf *buf,
>  		aux_height = scratch_buf_aux_height(data->devid, buf);
>  
>  		buf->compression = compression;
> -		buf->ccs[0].offset = buf->stride * ALIGN(height, 32);
> +		buf->ccs[0].offset = buf->surface[0].stride *
> ALIGN(height, 32);
>  		buf->ccs[0].stride = aux_width;
>  
>  		size = buf->ccs[0].offset + aux_width * aux_height;
> @@ -481,18 +483,19 @@ static void scratch_buf_init(data_t *data,
> struct igt_buf *buf,
>  		buf->bo = drm_intel_bo_alloc(data->bufmgr, "", size,
> 4096);
>  
>  		if (tiling == I915_TILING_Y) {
> -			drm_intel_bo_set_tiling(buf->bo, &tiling, buf-
> >stride);
> +			drm_intel_bo_set_tiling(buf->bo, &tiling,
> +						buf-
> >surface[0].stride);
>  			igt_assert_eq(tiling, req_tiling);
>  		}
>  	} else if (req_tiling == I915_TILING_Yf) {
>  		int size;
>  
> -		buf->stride = ALIGN(width * (bpp / 8), 128);
> -		buf->size = buf->stride * height;
> +		buf->surface[0].stride = ALIGN(width * (bpp / 8), 128);
> +		buf->surface[0].size = buf->surface[0].stride * height;
>  		buf->tiling = tiling;
>  		buf->bpp = bpp;
>  
> -		size = buf->stride * ALIGN(height, 32);
> +		size = buf->surface[0].stride * ALIGN(height, 32);
>  
>  		buf->bo = drm_intel_bo_alloc(data->bufmgr, "", size,
> 4096);
>  	} else {
> @@ -501,9 +504,9 @@ static void scratch_buf_init(data_t *data, struct
> igt_buf *buf,
>  						   &tiling, &pitch, 0);
>  		igt_assert_eq(tiling, req_tiling);
>  
> -		buf->stride = pitch;
> +		buf->surface[0].stride = pitch;
>  		buf->tiling = tiling;
> -		buf->size = pitch * height;
> +		buf->surface[0].size = pitch * height;
>  		buf->bpp = bpp;
>  	}
>  
> @@ -806,7 +809,7 @@ static void test(data_t *data, uint32_t
> src_tiling, uint32_t dst_tiling,
>  					      0, 0,
> igt_buf_width(&dst),
>  					      igt_buf_height(&dst),
>  					      AUB_DUMP_BMP_FORMAT_ARGB_
> 8888,
> -					      dst.stride, 0);
> +					      dst.surface[0].stride,
> 0);
>  		drm_intel_bufmgr_gem_set_aub_dump(data->bufmgr, false);
>  	} else if (check_all_pixels) {
>  		scratch_buf_check_all(data, &dst, &ref);
> diff --git a/tests/i915/gem_render_copy_redux.c
> b/tests/i915/gem_render_copy_redux.c
> index ef601c22..2388fc24 100644
> --- a/tests/i915/gem_render_copy_redux.c
> +++ b/tests/i915/gem_render_copy_redux.c
> @@ -106,9 +106,9 @@ static void scratch_buf_init(data_t *data, struct
> igt_buf *buf,
>  	memset(buf, 0, sizeof(*buf));
>  
>  	buf->bo = bo;
> -	buf->stride = stride;
> +	buf->surface[0].stride = stride;
>  	buf->tiling = I915_TILING_NONE;
> -	buf->size = SIZE;
> +	buf->surface[0].size = SIZE;
>  	buf->bpp = 32;
>  }
>  
> diff --git a/tests/i915/gem_render_linear_blits.c
> b/tests/i915/gem_render_linear_blits.c
> index a726652b..666a43cd 100644
> --- a/tests/i915/gem_render_linear_blits.c
> +++ b/tests/i915/gem_render_linear_blits.c
> @@ -108,15 +108,15 @@ static void run_test (int fd, int count)
>  		struct igt_buf src = {}, dst = {};
>  
>  		src.bo = bo[i % count];
> -		src.stride = STRIDE;
> +		src.surface[0].stride = STRIDE;
>  		src.tiling = I915_TILING_NONE;
> -		src.size = SIZE;
> +		src.surface[0].size = SIZE;
>  		src.bpp = 32;
>  
>  		dst.bo = bo[(i + 1) % count];
> -		dst.stride = STRIDE;
> +		dst.surface[0].stride = STRIDE;
>  		dst.tiling = I915_TILING_NONE;
> -		dst.size = SIZE;
> +		dst.surface[0].size = SIZE;
>  		dst.bpp = 32;
>  
>  		render_copy(batch, NULL, &src, 0, 0, WIDTH, HEIGHT,
> &dst, 0, 0);
> @@ -133,15 +133,15 @@ static void run_test (int fd, int count)
>  		struct igt_buf src = {}, dst = {};
>  
>  		src.bo = bo[(i + 1) % count];
> -		src.stride = STRIDE;
> +		src.surface[0].stride = STRIDE;
>  		src.tiling = I915_TILING_NONE;
> -		src.size = SIZE;
> +		src.surface[0].size = SIZE;
>  		src.bpp = 32;
>  
>  		dst.bo = bo[i % count];
> -		dst.stride = STRIDE;
> +		dst.surface[0].stride = STRIDE;
>  		dst.tiling = I915_TILING_NONE;
> -		dst.size = SIZE;
> +		dst.surface[0].size = SIZE;
>  		dst.bpp = 32;
>  
>  		render_copy(batch, NULL, &src, 0, 0, WIDTH, HEIGHT,
> &dst, 0, 0);
> @@ -160,15 +160,15 @@ static void run_test (int fd, int count)
>  			continue;
>  
>  		src.bo = bo[s];
> -		src.stride = STRIDE;
> +		src.surface[0].stride = STRIDE;
>  		src.tiling = I915_TILING_NONE;
> -		src.size = SIZE;
> +		src.surface[0].size = SIZE;
>  		src.bpp = 32;
>  
>  		dst.bo = bo[d];
> -		dst.stride = STRIDE;
> +		dst.surface[0].stride = STRIDE;
>  		dst.tiling = I915_TILING_NONE;
> -		dst.size = SIZE;
> +		dst.surface[0].size = SIZE;
>  		dst.bpp = 32;
>  
>  		render_copy(batch, NULL, &src, 0, 0, WIDTH, HEIGHT,
> &dst, 0, 0);
> diff --git a/tests/i915/gem_render_tiled_blits.c
> b/tests/i915/gem_render_tiled_blits.c
> index 14018329..1de1b72c 100644
> --- a/tests/i915/gem_render_tiled_blits.c
> +++ b/tests/i915/gem_render_tiled_blits.c
> @@ -66,9 +66,9 @@ check_bo(struct intel_batchbuffer *batch, struct
> igt_buf *buf, uint32_t val)
>  	int i;
>  
>  	tmp.bo = linear;
> -	tmp.stride = STRIDE;
> +	tmp.surface[0].stride = STRIDE;
>  	tmp.tiling = I915_TILING_NONE;
> -	tmp.size = SIZE;
> +	tmp.surface[0].size = SIZE;
>  	tmp.bpp = 32;
>  
>  	render_copy(batch, NULL, buf, 0, 0, WIDTH, HEIGHT, &tmp, 0, 0);
> @@ -132,9 +132,9 @@ static void run_test (int fd, int count)
>  		buf[i].bo = drm_intel_bo_alloc_tiled(bufmgr, "",
>  						     WIDTH, HEIGHT, 4,
>  						     &tiling, &pitch,
> 0);
> -		buf[i].stride = pitch;
> +		buf[i].surface[0].stride = pitch;
>  		buf[i].tiling = tiling;
> -		buf[i].size = SIZE;
> +		buf[i].surface[0].size = SIZE;
>  		buf[i].bpp = 32;
>  
>  		start_val[i] = start;
> diff --git a/tests/i915/gem_ring_sync_copy.c
> b/tests/i915/gem_ring_sync_copy.c
> index 1e5728bc..ddf5f750 100644
> --- a/tests/i915/gem_ring_sync_copy.c
> +++ b/tests/i915/gem_ring_sync_copy.c
> @@ -134,9 +134,9 @@ static void scratch_buf_init_from_bo(struct
> igt_buf *buf, drm_intel_bo *bo)
>  	memset(buf, 0, sizeof(*buf));
>  
>  	buf->bo = bo;
> -	buf->stride = 4 * WIDTH;
> +	buf->surface[0].stride = 4 * WIDTH;
>  	buf->tiling = I915_TILING_NONE;
> -	buf->size = 4 * WIDTH * HEIGHT;
> +	buf->surface[0].size = 4 * WIDTH * HEIGHT;
>  	buf->bpp = 32;
>  }
>  
> diff --git a/tests/i915/gem_stress.c b/tests/i915/gem_stress.c
> index 57e2909c..50245b93 100644
> --- a/tests/i915/gem_stress.c
> +++ b/tests/i915/gem_stress.c
> @@ -155,8 +155,8 @@ struct {
>  static void tile2xy(struct igt_buf *buf, unsigned tile, unsigned *x,
> unsigned *y)
>  {
>  	igt_assert(tile < buf->num_tiles);
> -	*x = (tile*options.tile_size) % (buf->stride/sizeof(uint32_t));
> -	*y = ((tile*options.tile_size) / (buf-
> >stride/sizeof(uint32_t))) * options.tile_size;
> +	*x = (tile*options.tile_size) % (buf-
> >surface[0].stride/sizeof(uint32_t));
> +	*y = ((tile*options.tile_size) / (buf-
> >surface[0].stride/sizeof(uint32_t))) * options.tile_size;
>  }
>  
>  static void emit_blt(drm_intel_bo *src_bo, uint32_t src_tiling,
> unsigned src_pitch,
> @@ -268,8 +268,10 @@ static void cpu_copyfunc(struct igt_buf *src,
> unsigned src_x, unsigned src_y,
>  		set_to_cpu_domain(dst, 1);
>  	}
>  
> -	cpucpy2d(src->data, src->stride/sizeof(uint32_t), src_x, src_y,
> -		 dst->data, dst->stride/sizeof(uint32_t), dst_x, dst_y,
> +	cpucpy2d(src->data, src->surface[0].stride/sizeof(uint32_t),
> src_x,
> +		 src_y,
> +		 dst->data, dst->surface[0].stride/sizeof(uint32_t),
> dst_x,
> +		 dst_y,
>  		 logical_tile_no);
>  }
>  
> @@ -287,7 +289,7 @@ static void prw_copyfunc(struct igt_buf *src,
> unsigned src_x, unsigned src_y,
>  
>  	if (src->tiling == I915_TILING_NONE) {
>  		for (i = 0; i < options.tile_size; i++) {
> -			unsigned ofs = src_x*sizeof(uint32_t) + src-
> >stride*(src_y + i);
> +			unsigned ofs = src_x*sizeof(uint32_t) + src-
> >surface[0].stride*(src_y + i);
>  			drm_intel_bo_get_subdata(src->bo, ofs,
>  						 options.tile_size*size
> of(uint32_t),
>  						 tmp_tile +
> options.tile_size*i);
> @@ -296,13 +298,14 @@ static void prw_copyfunc(struct igt_buf *src,
> unsigned src_x, unsigned src_y,
>  		if (options.use_cpu_maps)
>  			set_to_cpu_domain(src, 0);
>  
> -		cpucpy2d(src->data, src->stride/sizeof(uint32_t),
> src_x, src_y,
> +		cpucpy2d(src->data, src-
> >surface[0].stride/sizeof(uint32_t),
> +			 src_x, src_y,
>  			 tmp_tile, options.tile_size, 0, 0,
> logical_tile_no);
>  	}
>  
>  	if (dst->tiling == I915_TILING_NONE) {
>  		for (i = 0; i < options.tile_size; i++) {
> -			unsigned ofs = dst_x*sizeof(uint32_t) + dst-
> >stride*(dst_y + i);
> +			unsigned ofs = dst_x*sizeof(uint32_t) + dst-
> >surface[0].stride*(dst_y + i);
>  			drm_intel_bo_subdata(dst->bo, ofs,
>  					     options.tile_size*sizeof(u
> int32_t),
>  					     tmp_tile +
> options.tile_size*i);
> @@ -312,7 +315,8 @@ static void prw_copyfunc(struct igt_buf *src,
> unsigned src_x, unsigned src_y,
>  			set_to_cpu_domain(dst, 1);
>  
>  		cpucpy2d(tmp_tile, options.tile_size, 0, 0,
> -			 dst->data, dst->stride/sizeof(uint32_t),
> dst_x, dst_y,
> +			 dst->data, dst-
> >surface[0].stride/sizeof(uint32_t),
> +			 dst_x, dst_y,
>  			 logical_tile_no);
>  	}
>  }
> @@ -327,9 +331,9 @@ static void blitter_copyfunc(struct igt_buf *src,
> unsigned src_x, unsigned src_y
>  	if (keep_gpu_busy_counter & 1 && !fence_storm)
>  		keep_gpu_busy();
>  
> -	emit_blt(src->bo, src->tiling, src->stride, src_x, src_y,
> +	emit_blt(src->bo, src->tiling, src->surface[0].stride, src_x,
> src_y,
>  		 options.tile_size, options.tile_size,
> -		 dst->bo, dst->tiling, dst->stride, dst_x, dst_y);
> +		 dst->bo, dst->tiling, dst->surface[0].stride, dst_x,
> dst_y);
>  
>  	if (!(keep_gpu_busy_counter & 1) && !fence_storm)
>  		keep_gpu_busy();
> @@ -441,7 +445,7 @@ static void fan_out(void)
>  
>  		cpucpy2d(tmp_tile, options.tile_size, 0, 0,
>  			 buffers[current_set][buf_idx].data,
> -			 buffers[current_set][buf_idx].stride /
> sizeof(uint32_t),
> +			 buffers[current_set][buf_idx].surface[0].strid
> e / sizeof(uint32_t),
>  			 x, y, i);
>  	}
>  
> @@ -465,7 +469,7 @@ static void fan_in_and_check(void)
>  			set_to_cpu_domain(&buffers[current_set][buf_idx
> ], 0);
>  
>  		cpucpy2d(buffers[current_set][buf_idx].data,
> -			 buffers[current_set][buf_idx].stride /
> sizeof(uint32_t),
> +			 buffers[current_set][buf_idx].surface[0].strid
> e / sizeof(uint32_t),
>  			 x, y,
>  			 tmp_tile, options.tile_size, 0, 0,
>  			 i);
> @@ -476,15 +480,15 @@ static void sanitize_stride(struct igt_buf
> *buf)
>  {
>  
>  	if (igt_buf_height(buf) > options.max_dimension)
> -		buf->stride = buf->size / options.max_dimension;
> +		buf->surface[0].stride = buf->surface[0].size /
> options.max_dimension;
>  
>  	if (igt_buf_height(buf) < options.tile_size)
> -		buf->stride = buf->size / options.tile_size;
> +		buf->surface[0].stride = buf->surface[0].size /
> options.tile_size;
>  
>  	if (igt_buf_width(buf) < options.tile_size)
> -		buf->stride = options.tile_size * sizeof(uint32_t);
> +		buf->surface[0].stride = options.tile_size *
> sizeof(uint32_t);
>  
> -	igt_assert(buf->stride <= 8192);
> +	igt_assert(buf->surface[0].stride <= 8192);
>  	igt_assert(igt_buf_width(buf) <= options.max_dimension);
>  	igt_assert(igt_buf_height(buf) <= options.max_dimension);
>  
> @@ -498,10 +502,10 @@ static void init_buffer(struct igt_buf *buf,
> unsigned size)
>  	memset(buf, 0, sizeof(*buf));
>  
>  	buf->bo = drm_intel_bo_alloc(bufmgr, "tiled bo", size, 4096);
> -	buf->size = size;
> +	buf->surface[0].size = size;
>  	igt_assert(buf->bo);
>  	buf->tiling = I915_TILING_NONE;
> -	buf->stride = 4096;
> +	buf->surface[0].stride = 4096;
>  	buf->bpp = 32;
>  
>  	sanitize_stride(buf);
> @@ -560,25 +564,26 @@ static void init_set(unsigned set)
>  		if (buffers[set][i].tiling == I915_TILING_NONE) {
>  			/* min 64 byte stride */
>  			r %= 8;
> -			buffers[set][i].stride = 64 * (1 << r);
> +			buffers[set][i].surface[0].stride = 64 * (1 <<
> r);
>  		} else if (IS_GEN2(devid)) {
>  			/* min 128 byte stride */
>  			r %= 7;
> -			buffers[set][i].stride = 128 * (1 << r);
> +			buffers[set][i].surface[0].stride = 128 * (1 <<
> r);
>  		} else {
>  			/* min 512 byte stride */
>  			r %= 5;
> -			buffers[set][i].stride = 512 * (1 << r);
> +			buffers[set][i].surface[0].stride = 512 * (1 <<
> r);
>  		}
>  
>  		sanitize_stride(&buffers[set][i]);
>  
>  		gem_set_tiling(drm_fd, buffers[set][i].bo->handle,
>  			       buffers[set][i].tiling,
> -			       buffers[set][i].stride);
> +			       buffers[set][i].surface[0].stride);
>  
>  		if (options.trace_tile != -1 && i ==
> options.trace_tile/options.tiles_per_buf)
> -			igt_info("changing buffer %i containing tile
> %i: tiling %i, stride %i\n", i, options.trace_tile,
> buffers[set][i].tiling, buffers[set][i].stride);
> +			igt_info("changing buffer %i containing tile
> %i: tiling %i, stride %i\n", i, options.trace_tile,
> buffers[set][i].tiling,
> +				 buffers[set][i].surface[0].stride);
>  	}
>  }
>  
> @@ -616,10 +621,10 @@ static void copy_tiles(unsigned *permutation)
>  
>  		if (options.no_hw) {
>  			cpucpy2d(src_buf->data,
> -				 src_buf->stride / sizeof(uint32_t),
> +				 src_buf->surface[0].stride /
> sizeof(uint32_t),
>  				 src_x, src_y,
>  				 dst_buf->data,
> -				 dst_buf->stride / sizeof(uint32_t),
> +				 dst_buf->surface[0].stride /
> sizeof(uint32_t),
>  				 dst_x, dst_y,
>  				 i);
>  		} else {
> @@ -808,7 +813,7 @@ static void check_render_copyfunc(void)
>  
>  		memset(src.data, 0xff, options.scratch_buf_size);
>  		for (j = 0; j < options.tile_size; j++) {
> -			ptr = (uint32_t*)((char *)src.data + sx*4 +
> (sy+j) * src.stride);
> +			ptr = (uint32_t*)((char *)src.data + sx*4 +
> (sy+j) * src.surface[0].stride);
>  			for (i = 0; i < options.tile_size; i++)
>  				ptr[i] = j * options.tile_size + i;
>  		}
> @@ -819,7 +824,7 @@ static void check_render_copyfunc(void)
>  			set_to_cpu_domain(&dst, 0);
>  
>  		for (j = 0; j < options.tile_size; j++) {
> -			ptr = (uint32_t*)((char *)dst.data + dx*4 +
> (dy+j) * dst.stride);
> +			ptr = (uint32_t*)((char *)dst.data + dx*4 +
> (dy+j) * dst.surface[0].stride);
>  			for (i = 0; i < options.tile_size; i++)
>  				if (ptr[i] != j * options.tile_size +
> i) {
>  					igt_info("render copyfunc
> mismatch at (%d, %d): found %d, expected %d\n", i, j, ptr[i], j *
> options.tile_size + i);
> diff --git a/tests/i915/i915_pm_sseu.c b/tests/i915/i915_pm_sseu.c
> index e671e190..c2dee118 100644
> --- a/tests/i915/i915_pm_sseu.c
> +++ b/tests/i915/i915_pm_sseu.c
> @@ -299,10 +299,11 @@ gem_init(void)
>  	igt_assert(gem.batch);
>  	gem.init = 3;
>  
> -	gem.buf.stride = sizeof(uint32_t);
> +	gem.buf.surface[0].stride = sizeof(uint32_t);
>  	gem.buf.tiling = I915_TILING_NONE;
> -	gem.buf.size = gem.buf.stride;
> -	gem.buf.bo = drm_intel_bo_alloc(gem.bufmgr, "", gem.buf.size,
> 4096);
> +	gem.buf.surface[0].size = gem.buf.surface[0].stride;
> +	gem.buf.bo = drm_intel_bo_alloc(gem.bufmgr, "",
> +					gem.buf.surface[0].size, 4096);
>  	gem.buf.bpp = 32;
>  	igt_assert(gem.buf.bo);
>  	gem.init = 4;
> diff --git a/tests/kms_big_fb.c b/tests/kms_big_fb.c
> index c5d002ca..eb144da9 100644
> --- a/tests/kms_big_fb.c
> +++ b/tests/kms_big_fb.c
> @@ -60,9 +60,9 @@ static void init_buf(data_t *data,
>  	buf->bo = gem_handle_to_libdrm_bo(data->bufmgr, data->drm_fd,
>  					  name, fb->gem_handle);
>  	buf->tiling = igt_fb_mod_to_tiling(fb->modifier);
> -	buf->stride = fb->strides[0];
> +	buf->surface[0].stride = fb->strides[0];
>  	buf->bpp = fb->plane_bpp[0];
> -	buf->size = fb->size;
> +	buf->surface[0].size = fb->size;
>  }
>  
>  static void fini_buf(struct igt_buf *buf)
> @@ -99,8 +99,10 @@ static void copy_pattern(data_t *data,
>  		h = min(h, src_fb->height - sy);
>  		h = min(h, dst_fb->height - dy);
>  
> -		intel_blt_copy(data->batch, src.bo, sx, sy, src.stride,
> -			       dst.bo, dx, dy, dst.stride, w, h,
> dst.bpp);
> +		intel_blt_copy(data->batch, src.bo, sx, sy,
> +			       src.surface[0].stride,
> +			       dst.bo, dx, dy, dst.surface[0].stride,
> w, h,
> +			       dst.bpp);
>  	}
>  
>  	fini_buf(&dst);
> diff --git a/tests/kms_psr.c b/tests/kms_psr.c
> index 232c80aa..d9be87d9 100644
> --- a/tests/kms_psr.c
> +++ b/tests/kms_psr.c
> @@ -153,9 +153,9 @@ static void scratch_buf_init(struct igt_buf *buf,
> drm_intel_bo *bo,
>  	memset(buf, 0, sizeof(*buf));
>  
>  	buf->bo = bo;
> -	buf->stride = stride;
> +	buf->surface[0].stride = stride;
>  	buf->tiling = I915_TILING_X;
> -	buf->size = size;
> +	buf->surface[0].size = size;
>  	buf->bpp = 32;
>  }
>  
> diff --git a/tests/perf.c b/tests/perf.c
> index f5dd6051..982277df 100644
> --- a/tests/perf.c
> +++ b/tests/perf.c
> @@ -506,9 +506,9 @@ scratch_buf_init(drm_intel_bufmgr *bufmgr,
>  	memset(buf, 0, sizeof(*buf));
>  
>  	buf->bo = bo;
> -	buf->stride = stride;
> +	buf->surface[0].stride = stride;
>  	buf->tiling = I915_TILING_NONE;
> -	buf->size = size;
> +	buf->surface[0].size = size;
>  	buf->bpp = 32;
>  }
>  


More information about the igt-dev mailing list