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

Imre Deak imre.deak at intel.com
Mon Dec 30 12:58:49 UTC 2019


On Mon, Dec 30, 2019 at 02:06:51PM +0200, Kahola, Mika wrote:
> 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

Yes, that's due to patch applied recently, this change needs a rebase on that
one. I'll resend this with the following change:

+@@ tests/kms_cursor_crc.c: static void cleanup_crtc(data_t *data)
+ static void scratch_buf_init(data_t *data, int buffer)
+ {
+   data->igtbo[buffer].bo = data->drmibo[buffer];
+-  data->igtbo[buffer].stride = data->primary_fb[buffer].strides[0];
++  data->igtbo[buffer].surface[0].stride = data->primary_fb[buffer].strides[0];
+   data->igtbo[buffer].tiling = data->primary_fb[buffer].modifier;
+-  data->igtbo[buffer].size = data->primary_fb[buffer].size;
++  data->igtbo[buffer].surface[0].size = data->primary_fb[buffer].size;
+   data->igtbo[buffer].bpp = data->primary_fb[buffer].plane_bpp[0];

> 
> [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