[igt-dev] [PATCH i-g-t 2/3] lib/media_fill/tgl: Implement media_fillfunc for TGL

Katarzyna Dec katarzyna.dec at intel.com
Wed Sep 18 08:24:12 UTC 2019


On Tue, Sep 17, 2019 at 09:55:06PM -0700, Ashutosh Dixit wrote:
> Once again, please fix up one checkpatch CHECK below.
> 
> On Tue, 17 Sep 2019 02:13:52 -0700, Katarzyna Dec wrote:
> >
> > Adding gen12_media_fillfunc to have media_fill running on TGL.
> > Media shader was generated using IGA (Intel Graphics Assembler)
> > based on binary found in lib/media_fill_gen9.c to match the
> > changes in TGL HW. Main change was made in SEND instructions
> > and adding SWSB dependencies.
> >
> > v2: Switched to GEN_12.
> >
> > Cc: Antonio Argenziano <antonio.argenziano at intel.com>
> > Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio at intel.com>
> > Signed-off-by: Katarzyna Dec <katarzyna.dec at intel.com>
> > Signed-off-by: Lukasz Kalamarz <lukasz.kalamarz at intel.com>
> > Signed-off-by: Zbigniew KempczyƄski <zbigniew.kempczynski at intel.com>
> > Signed-off-by: Lucas De Marchi <lucas.demarchi at intel.com>
> > ---
> >  lib/i915/shaders/media/gen12_media_kernel.asm | 13 ++++++++++
> >  lib/intel_batchbuffer.c                       |  4 ++-
> >  lib/media_fill.c                              | 25 +++++++++++++++++++
> >  lib/media_fill.h                              |  7 ++++++
> >  4 files changed, 48 insertions(+), 1 deletion(-)
> >  create mode 100644 lib/i915/shaders/media/gen12_media_kernel.asm
> >
> > diff --git a/lib/i915/shaders/media/gen12_media_kernel.asm b/lib/i915/shaders/media/gen12_media_kernel.asm
> > new file mode 100644
> > index 00000000..5be229b2
> > --- /dev/null
> > +++ b/lib/i915/shaders/media/gen12_media_kernel.asm
> > @@ -0,0 +1,13 @@
> > +L0:
> > +         mov (4|M0)               r1.0<1>:ub    r1.0<0;1,0>:ub
> > +         mov (8|M0)               r4.0<1>:ud    r0.0<8;8,1>:ud
> > +         mov (8|M0)               r4.0<1>:ud    r2.0<2;2,1>:ud
> > +         mov (1|M0)               r4.2<1>:ud    0xF000F:ud
> > +         mov (16|M0)              r5.0<1>:ud    r1.0<0;1,0>:ud                   {@4}
> > +         mov (16|M0)              r7.0<1>:ud    r1.0<0;1,0>:ud                   {@5}
> > +         mov (16|M0)              r9.0<1>:ud    r1.0<0;1,0>:ud                   {@6}
> > +         mov (16|M0)              r11.0<1>:ud   r1.0<0;1,0>:ud                   {@7}
> > +         send.dc1 (16|M0)         null     r4      null    0x10000000  0x120A8000 {@1, $0} //    wr:9h+0, rd:0, Media Block Write msc:0, to #0
> > +         mov (8|M0)               r112.0<1>:ud  r0.0<8;8,1>:ud
> > +         send.ts (16|M0)          null     r112    null    0x10000000  0x2000010  {EOT, @1} //    wr:1+0, rd:0, fc: 0x10
> > +L176:
> > diff --git a/lib/intel_batchbuffer.c b/lib/intel_batchbuffer.c
> > index 269c8982..9292236b 100644
> > --- a/lib/intel_batchbuffer.c
> > +++ b/lib/intel_batchbuffer.c
> > @@ -861,7 +861,9 @@ igt_fillfunc_t igt_get_media_fillfunc(int devid)
> >  {
> >	igt_fillfunc_t fill = NULL;
> >
> > -	if (IS_GEN9(devid) || IS_GEN10(devid) || IS_GEN11(devid))
> > +	if (IS_GEN12(devid))
> > +		fill = gen12_media_fillfunc;
> > +	else if (IS_GEN9(devid) || IS_GEN10(devid) || IS_GEN11(devid))
> >		fill = gen9_media_fillfunc;
> >	else if (IS_GEN8(devid))
> >		fill = gen8_media_fillfunc;
> > diff --git a/lib/media_fill.c b/lib/media_fill.c
> > index 03b5e71e..b7d7f68c 100644
> > --- a/lib/media_fill.c
> > +++ b/lib/media_fill.c
> > @@ -101,6 +101,20 @@ static const uint32_t gen11_media_vme_kernel[][4] = {
> >	{ 0x00000000, 0x00000000,  0x00000000,  0x00000000 },
> >  };
> >
> > +static const uint32_t gen12_media_kernel[][4] = {
> > +	{ 0x00020061, 0x01050000, 0x00000104, 0x00000000 },
> > +	{ 0x00030061, 0x04050220, 0x00460005, 0x00000000 },
> > +	{ 0x00030061, 0x04050220, 0x00220205, 0x00000000 },
> > +	{ 0x00000061, 0x04454220, 0x00000000, 0x000f000f },
> > +	{ 0x00040461, 0x05050220, 0x00000104, 0x00000000 },
> > +	{ 0x00040561, 0x07050220, 0x00000104, 0x00000000 },
> > +	{ 0x00040661, 0x09050220, 0x00000104, 0x00000000 },
> > +	{ 0x00040761, 0x0b050220, 0x00000104, 0x00000000 },
> > +	{ 0x00049031, 0x00000000, 0xc000044c, 0x12a00000 },
> > +	{ 0x00030061, 0x70050220, 0x00460005, 0x00000000 },
> > +	{ 0x00040131, 0x00000004, 0x7020700c, 0x10000000 },
> > +};
> > +
> >  /*
> >   * This sets up the media pipeline,
> >   *
> > @@ -355,3 +369,14 @@ gen11_media_vme_func(struct intel_batchbuffer *batch,
> >			       gen11_media_vme_kernel,
> >			       sizeof(gen11_media_vme_kernel));
> >  }
> > +
> > +void
> > +gen12_media_fillfunc(struct intel_batchbuffer *batch,
> > +		     const struct igt_buf *dst,
> > +		     unsigned int x, unsigned int y,
> > +		     unsigned int width, unsigned int height,
> > +		     uint8_t color)
> > +{
> > +	__gen9_media_fillfunc(batch, dst, x, y, width, height, color,
> > +			      gen12_media_kernel, sizeof(gen12_media_kernel));
> > +}
> > diff --git a/lib/media_fill.h b/lib/media_fill.h
> > index 1d5c5fa8..a65ae9e8 100644
> > --- a/lib/media_fill.h
> > +++ b/lib/media_fill.h
> > @@ -55,4 +55,11 @@ gen11_media_vme_func(struct intel_batchbuffer *batch,
> >		     unsigned int width, unsigned int height,
> >		     const struct igt_buf *dst);
> >
> > +void
> > +gen12_media_fillfunc(struct intel_batchbuffer *batch,
> > +		       const struct igt_buf *dst,
> > +		       unsigned int x, unsigned int y,
> > +		       unsigned int width, unsigned int height,
> > +		       uint8_t color);
> > +
> 
> CHECK: Alignment should match open parenthesis
Ok, I will fix that.
Kasia
> 
> >  #endif /* RENDE_MEDIA_FILL_H */
> > --
> > 2.20.1
> >
> > _______________________________________________
> > igt-dev mailing list
> > igt-dev at lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/igt-dev


More information about the igt-dev mailing list