All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: "Zbigniew Kempczyński" <zbigniew.kempczynski@intel.com>
Cc: igt-dev@lists.freedesktop.org
Subject: Re: [PATCH i-g-t v2 1/6] lib/rendercopy: Add deltas to all surface relocs
Date: Wed, 3 Jul 2024 01:53:43 +0300	[thread overview]
Message-ID: <ZoSE95zvC2Skkp7W@intel.com> (raw)
In-Reply-To: <20240702054904.smncbrmvu2sw4o7y@zkempczy-mobl2>

On Tue, Jul 02, 2024 at 07:49:04AM +0200, Zbigniew Kempczyński wrote:
> On Thu, Jun 27, 2024 at 02:22:18PM +0300, Ville Syrjala wrote:
> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > 
> > In order to copy stuff not at offset 0 in the BO we need
> > to include the delta in the relocs/etc.
> > 
> > v2: fix the address in the command packets
> > v3: Fix intel_bb_offset_reloc_with_delta() argument order on gen7
> > 
> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > ---
> >  lib/rendercopy_gen4.c | 11 ++++++-----
> >  lib/rendercopy_gen6.c | 11 ++++++-----
> >  lib/rendercopy_gen7.c | 11 ++++++-----
> >  lib/rendercopy_gen8.c | 13 +++++++------
> >  lib/rendercopy_gen9.c | 13 +++++++------
> >  lib/rendercopy_i830.c | 10 +++++++---
> >  lib/rendercopy_i915.c |  6 ++++--
> >  7 files changed, 43 insertions(+), 32 deletions(-)
> > 
> > diff --git a/lib/rendercopy_gen4.c b/lib/rendercopy_gen4.c
> > index 8536d6b632c5..8582e0efb886 100644
> > --- a/lib/rendercopy_gen4.c
> > +++ b/lib/rendercopy_gen4.c
> > @@ -148,11 +148,12 @@ gen4_bind_buf(struct intel_bb *ibb, const struct intel_buf *buf, int is_dst)
> >  	ss->ss0.data_return_format = SURFACERETURNFORMAT_FLOAT32;
> >  	ss->ss0.color_blend = 1;
> >  
> > -	address = intel_bb_offset_reloc(ibb, buf->handle,
> > -					read_domain, write_domain,
> > -					intel_bb_offset(ibb) + 4,
> > -					buf->addr.offset);
> > -	ss->ss1.base_addr = (uint32_t) address;
> > +	address = intel_bb_offset_reloc_with_delta(ibb, buf->handle,
> > +						   read_domain, write_domain,
> > +						   buf->surface[0].offset,
> > +						   intel_bb_offset(ibb) + 4,
> > +						   buf->addr.offset);
> > +	ss->ss1.base_addr = address + buf->surface[0].offset;
> 
> LGTM. I haven't seen surface[0].offset differ than 0 in current IGTs
> so this won't break anything.

Yeah, I need it for rendercopy with planar formats. Though
thew way I'm doing it is by stuffing the luma and chroma into
surface[0] in turn. I'm not totally convinced we should even
have this surface[] array in intel_buf. Might be nicer if
intel_buf would represent just one color planea (+ its aux/cc
where appropriate). But that would require changes to the
vebox code at least since it handles planar formats in one
pass...

> Reviewed-by: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>
> 
> --
> Zbigniew
> 
> >  
> >  	ss->ss2.height = intel_buf_height(buf) - 1;
> >  	ss->ss2.width  = intel_buf_width(buf) - 1;
> > diff --git a/lib/rendercopy_gen6.c b/lib/rendercopy_gen6.c
> > index e941257eb606..ec197661702f 100644
> > --- a/lib/rendercopy_gen6.c
> > +++ b/lib/rendercopy_gen6.c
> > @@ -91,11 +91,12 @@ gen6_bind_buf(struct intel_bb *ibb, const struct intel_buf *buf, int is_dst)
> >  	ss->ss0.data_return_format = SURFACERETURNFORMAT_FLOAT32;
> >  	ss->ss0.color_blend = 1;
> >  
> > -	address = intel_bb_offset_reloc(ibb, buf->handle,
> > -					read_domain, write_domain,
> > -					intel_bb_offset(ibb) + 4,
> > -					buf->addr.offset);
> > -	ss->ss1.base_addr = (uint32_t) address;
> > +	address = intel_bb_offset_reloc_with_delta(ibb, buf->handle,
> > +						   read_domain, write_domain,
> > +						   buf->surface[0].offset,
> > +						   intel_bb_offset(ibb) + 4,
> > +						   buf->addr.offset);
> > +	ss->ss1.base_addr = address + buf->surface[0].offset;
> >  
> >  	ss->ss2.height = intel_buf_height(buf) - 1;
> >  	ss->ss2.width  = intel_buf_width(buf) - 1;
> > diff --git a/lib/rendercopy_gen7.c b/lib/rendercopy_gen7.c
> > index 9fadb0772e9e..e3657b5d1035 100644
> > --- a/lib/rendercopy_gen7.c
> > +++ b/lib/rendercopy_gen7.c
> > @@ -86,11 +86,12 @@ gen7_bind_buf(struct intel_bb *ibb,
> >  		 gen7_tiling_bits(buf->tiling) |
> >  		format << GEN7_SURFACE_FORMAT_SHIFT);
> >  
> > -	address = intel_bb_offset_reloc(ibb, buf->handle,
> > -					read_domain, write_domain,
> > -					intel_bb_offset(ibb) + 4,
> > -					buf->addr.offset);
> > -	ss[1] = address;
> > +	address = intel_bb_offset_reloc_with_delta(ibb, buf->handle,
> > +						   read_domain, write_domain,
> > +						   buf->surface[0].offset,
> > +						   intel_bb_offset(ibb) + 4,
> > +						   buf->addr.offset);
> > +	ss[1] = address + buf->surface[0].offset;
> >  	ss[2] = ((intel_buf_width(buf) - 1)  << GEN7_SURFACE_WIDTH_SHIFT |
> >  		 (intel_buf_height(buf) - 1) << GEN7_SURFACE_HEIGHT_SHIFT);
> >  	ss[3] = (buf->surface[0].stride - 1) << GEN7_SURFACE_PITCH_SHIFT;
> > diff --git a/lib/rendercopy_gen8.c b/lib/rendercopy_gen8.c
> > index bbfa6d28f525..23bea56ad1ba 100644
> > --- a/lib/rendercopy_gen8.c
> > +++ b/lib/rendercopy_gen8.c
> > @@ -109,12 +109,13 @@ gen8_bind_buf(struct intel_bb *ibb,
> >  		ss->ss1.memory_object_control = BDW_MOCS_PTE |
> >  			BDW_MOCS_TC_L3_PTE | BDW_MOCS_AGE(0);
> >  
> > -	address = intel_bb_offset_reloc(ibb, buf->handle,
> > -					read_domain, write_domain,
> > -					intel_bb_offset(ibb) + 4 * 8,
> > -					buf->addr.offset);
> > -	ss->ss8.base_addr = address;
> > -	ss->ss9.base_addr_hi = address >> 32;
> > +	address = intel_bb_offset_reloc_with_delta(ibb, buf->handle,
> > +						   read_domain, write_domain,
> > +						   buf->surface[0].offset,
> > +						   intel_bb_offset(ibb) + 4 * 8,
> > +						   buf->addr.offset);
> > +	ss->ss8.base_addr = (address + buf->surface[0].offset);
> > +	ss->ss9.base_addr_hi = (address + buf->surface[0].offset) >> 32;
> >  
> >  	ss->ss2.height = intel_buf_height(buf) - 1;
> >  	ss->ss2.width  = intel_buf_width(buf) - 1;
> > diff --git a/lib/rendercopy_gen9.c b/lib/rendercopy_gen9.c
> > index 726f1a087bd2..9b2d1ff688de 100644
> > --- a/lib/rendercopy_gen9.c
> > +++ b/lib/rendercopy_gen9.c
> > @@ -210,12 +210,13 @@ gen9_bind_buf(struct intel_bb *ibb, const struct intel_buf *buf, int is_dst,
> >  	if (intel_buf_pxp(buf))
> >  		ss->ss1.pxp = 1;
> >  
> > -	address = intel_bb_offset_reloc(ibb, buf->handle,
> > -					read_domain, write_domain,
> > -					intel_bb_offset(ibb) + 4 * 8,
> > -					buf->addr.offset);
> > -	ss->ss8.base_addr = address;
> > -	ss->ss9.base_addr_hi = address >> 32;
> > +	address = intel_bb_offset_reloc_with_delta(ibb, buf->handle,
> > +						   read_domain, write_domain,
> > +						   buf->surface[0].offset,
> > +						   intel_bb_offset(ibb) + 4 * 8,
> > +						   buf->addr.offset);
> > +	ss->ss8.base_addr = (address + buf->surface[0].offset);
> > +	ss->ss9.base_addr_hi = (address + buf->surface[0].offset) >> 32;
> >  
> >  	ss->ss2.height = intel_buf_height(buf) - 1;
> >  	ss->ss2.width  = intel_buf_width(buf) - 1;
> > diff --git a/lib/rendercopy_i830.c b/lib/rendercopy_i830.c
> > index 4c4271493b4b..4b0ea3b859e2 100644
> > --- a/lib/rendercopy_i830.c
> > +++ b/lib/rendercopy_i830.c
> > @@ -158,8 +158,10 @@ static void gen2_emit_target(struct intel_bb *ibb,
> >  	intel_bb_out(ibb, _3DSTATE_BUF_INFO_CMD);
> >  	intel_bb_out(ibb, BUF_3D_ID_COLOR_BACK | tiling |
> >  		     BUF_3D_PITCH(dst->surface[0].stride));
> > -	intel_bb_emit_reloc(ibb, dst->handle, I915_GEM_DOMAIN_RENDER,
> > -			    I915_GEM_DOMAIN_RENDER, 0, dst->addr.offset);
> > +	intel_bb_emit_reloc(ibb, dst->handle,
> > +			    I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER,
> > +			    dst->surface[0].offset,
> > +			    dst->addr.offset);
> >  
> >  	intel_bb_out(ibb, _3DSTATE_DST_BUF_VARS_CMD);
> >  	intel_bb_out(ibb, format |
> > @@ -199,7 +201,9 @@ static void gen2_emit_texture(struct intel_bb *ibb,
> >  		tiling |= TM0S1_TILE_WALK;
> >  
> >  	intel_bb_out(ibb, _3DSTATE_LOAD_STATE_IMMEDIATE_2 | LOAD_TEXTURE_MAP(unit) | 4);
> > -	intel_bb_emit_reloc(ibb, src->handle, I915_GEM_DOMAIN_SAMPLER, 0, 0,
> > +	intel_bb_emit_reloc(ibb, src->handle,
> > +			    I915_GEM_DOMAIN_SAMPLER, 0,
> > +			    src->surface[0].offset,
> >  			    src->addr.offset);
> >  	intel_bb_out(ibb, (intel_buf_height(src) - 1) << TM0S1_HEIGHT_SHIFT |
> >  		     (intel_buf_width(src) - 1) << TM0S1_WIDTH_SHIFT |
> > diff --git a/lib/rendercopy_i915.c b/lib/rendercopy_i915.c
> > index 3e421301e6a6..94cdfb99af9a 100644
> > --- a/lib/rendercopy_i915.c
> > +++ b/lib/rendercopy_i915.c
> > @@ -112,7 +112,8 @@ void gen3_render_copyfunc(struct intel_bb *ibb,
> >  		intel_bb_out(ibb, (1 << TEX_COUNT) - 1);
> >  		intel_bb_emit_reloc(ibb, src->handle,
> >  				    I915_GEM_DOMAIN_SAMPLER, 0,
> > -				    0, src->addr.offset);
> > +				    src->surface[0].offset,
> > +				    src->addr.offset);
> >  		intel_bb_out(ibb, format_bits | tiling_bits |
> >  			     (intel_buf_height(src) - 1) << MS3_HEIGHT_SHIFT |
> >  			     (intel_buf_width(src) - 1) << MS3_WIDTH_SHIFT);
> > @@ -155,7 +156,8 @@ void gen3_render_copyfunc(struct intel_bb *ibb,
> >  			     BUF_3D_PITCH(dst->surface[0].stride));
> >  		intel_bb_emit_reloc(ibb, dst->handle,
> >  				    I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER,
> > -				    0, dst->addr.offset);
> > +				    dst->surface[0].offset,
> > +				    dst->addr.offset);
> >  
> >  		intel_bb_out(ibb, _3DSTATE_DST_BUF_VARS_CMD);
> >  		intel_bb_out(ibb, format_bits |
> > -- 
> > 2.44.2
> > 

-- 
Ville Syrjälä
Intel

  reply	other threads:[~2024-07-02 22:53 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-06-25 17:40 [PATCH i-g-t 0/6] lib: igt_fb/rendercopy fixes/cleanups Ville Syrjala
2024-06-25 17:40 ` [PATCH i-g-t 1/6] lib/rendercopy: Add deltas to all surface relocs Ville Syrjala
2024-06-27 11:22   ` [PATCH i-g-t v2 " Ville Syrjala
2024-07-02  5:49     ` Zbigniew Kempczyński
2024-07-02 22:53       ` Ville Syrjälä [this message]
2024-06-25 17:40 ` [PATCH i-g-t 2/6] tests/kms_big_fb: Use igt_fb_create_intel_buf() Ville Syrjala
2024-07-02  5:57   ` Zbigniew Kempczyński
2024-06-25 17:40 ` [PATCH i-g-t 3/6] tests/kms_frontbuffer_tracking: Use igt_create_fb() Ville Syrjala
2024-06-25 17:40 ` [PATCH i-g-t 4/6] lib/igt_fb: Make igt_calc_fb_size() somewhat usable Ville Syrjala
2024-06-25 17:40 ` [PATCH i-g-t 5/6] lib/rendercopy: Always setup clear color for TGL Ville Syrjala
2024-06-25 17:40 ` [PATCH i-g-t 6/6] lib/rendercopy: Enable clear color consistently Ville Syrjala
2024-07-02 17:20   ` Ville Syrjälä
2024-06-25 18:52 ` ✓ CI.xeBAT: success for lib: igt_fb/rendercopy fixes/cleanups Patchwork
2024-06-25 18:55 ` ✗ Fi.CI.BAT: failure " Patchwork
2024-06-25 22:35 ` ✗ CI.xeFULL: " Patchwork
2024-06-26 11:22 ` ✗ Fi.CI.BAT: failure for lib: igt_fb/rendercopy fixes/cleanups (rev2) Patchwork
2024-06-26 11:41 ` ✓ CI.xeBAT: success " Patchwork
2024-06-26 15:24 ` ✗ CI.xeFULL: failure " Patchwork
2024-06-28 12:03 ` ✓ CI.xeBAT: success for lib: igt_fb/rendercopy fixes/cleanups (rev3) Patchwork
2024-06-28 12:11 ` ✗ Fi.CI.BAT: failure " Patchwork
2024-06-28 13:33 ` ✓ CI.xeFULL: success " Patchwork
2024-06-29 13:53 ` ✓ CI.xeBAT: success for lib: igt_fb/rendercopy fixes/cleanups (rev4) Patchwork
2024-06-29 14:02 ` ✗ Fi.CI.BAT: failure " Patchwork
2024-06-29 14:54 ` ✓ CI.xeFULL: success " Patchwork
2024-07-02 19:37 ` ✓ CI.xeBAT: success for lib: igt_fb/rendercopy fixes/cleanups (rev5) Patchwork
2024-07-02 19:46 ` ✗ Fi.CI.BAT: failure " Patchwork
2024-07-02 20:36 ` ✓ CI.xeFULL: success " Patchwork
2024-07-03 12:30 ` ✓ Fi.CI.BAT: success for lib: igt_fb/rendercopy fixes/cleanups (rev6) Patchwork
2024-07-03 12:33 ` ✓ CI.xeBAT: " Patchwork
2024-07-03 14:40 ` ✓ CI.xeFULL: " Patchwork
2024-07-04  0:09 ` ✗ Fi.CI.IGT: failure " Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ZoSE95zvC2Skkp7W@intel.com \
    --to=ville.syrjala@linux.intel.com \
    --cc=igt-dev@lists.freedesktop.org \
    --cc=zbigniew.kempczynski@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.