From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: "Kalamarz, Lukasz" <lukasz.kalamarz@intel.com>
Cc: "igt-dev@lists.freedesktop.org" <igt-dev@lists.freedesktop.org>
Subject: Re: [igt-dev] [PATCH i-g-t] lib/rendercopy: Add gen4/5 rendercopy
Date: Thu, 14 Jun 2018 16:23:03 +0300 [thread overview]
Message-ID: <20180614132303.GF20518@intel.com> (raw)
In-Reply-To: <1528886154.4203.75.camel@intel.com>
On Wed, Jun 13, 2018 at 10:35:56AM +0000, Kalamarz, Lukasz wrote:
> On Mon, 2018-06-11 at 19:14 +0300, Ville Syrjala wrote:
> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >
> > Add rendercopy implementation for gen4/5. Basic structure
> > copied from the gen6 implementation,
>
> After refactoring some part of rendercopy libs I don't like that
> sentence :(
>
> > and the gen4/5 specific
> > bits were mostly lifted from sna.
> >
> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > ---
> > lib/Makefile.sources | 2 +
> > lib/gen4_render.h | 628
> > ++++++++++++++++++++++++++++++++++++++++++
> > lib/intel_batchbuffer.c | 2 +
> > lib/meson.build | 1 +
> > lib/rendercopy.h | 5 +
> > lib/rendercopy_gen4.c | 704
> > ++++++++++++++++++++++++++++++++++++++++++++++++
> > 6 files changed, 1342 insertions(+)
> > create mode 100644 lib/gen4_render.h
> > create mode 100644 lib/rendercopy_gen4.c
> >
> > diff --git a/lib/Makefile.sources b/lib/Makefile.sources
> > index 042c1d3bb44a..e0ebd02c1661 100644
> > --- a/lib/Makefile.sources
> > +++ b/lib/Makefile.sources
> > @@ -71,10 +71,12 @@ lib_source_list = \
> > gen8_media.h \
> > rendercopy_i915.c \
> > rendercopy_i830.c \
> > + gen4_render.h \
> > gen6_render.h \
> > gen7_render.h \
> > gen8_render.h \
> > gen9_render.h \
> > + rendercopy_gen4.c \
> > rendercopy_gen6.c \
> > rendercopy_gen7.c \
> > rendercopy_gen8.c \
> > diff --git a/lib/gen4_render.h b/lib/gen4_render.h
> > new file mode 100644
> > index 000000000000..ab1158e3c6d2
> > --- /dev/null
> > +++ b/lib/gen4_render.h
>
> With having in mind refactoring of genX_render libs introduced in patch
> series: https://patchwork.freedesktop.org/series/44624/ Could You check
> if registers defined here with GEN4/5 prefix are reimplmented in
> gen6_render? If so, then maybe it will be good idea to modify those
> definitions and not add more duplicated definitions?
There are many things that didn't change from gen4 onwards. I think the
correct option would be to remove the duplicate definitions from gen6+
and inherit the gen4 stuff.
>
> > @@ -0,0 +1,628 @@
> > +#ifndef GEN4_RENDER_H
> > +#define GEN4_RENDER_H
>
> <snip>
>
> > diff --git a/lib/rendercopy_gen4.c b/lib/rendercopy_gen4.c
> > new file mode 100644
> > index 000000000000..acd4be8de9da
> > --- /dev/null
> > +++ b/lib/rendercopy_gen4.c
> > @@ -0,0 +1,704 @@
> > +#include "rendercopy.h"
> > +#include "intel_chipset.h"
> > +#include "gen4_render.h"
> > +#include "surfaceformat.h"
> > +
> > +#include <assert.h>
> > +
> > +#define VERTEX_SIZE (3*4)
> > +
> > +#define URB_VS_ENTRY_SIZE 1
> > +#define URB_GS_ENTRY_SIZE 0
> > +#define URB_CL_ENTRY_SIZE 0
> > +#define URB_SF_ENTRY_SIZE 2
> > +#define URB_CS_ENTRY_SIZE 1
> > +
> > +#define GEN4_GRF_BLOCKS(nreg) (((nreg) + 15) / 16 - 1)
> > +#define SF_KERNEL_NUM_GRF 16
> > +#define PS_KERNEL_NUM_GRF 32
> > +
> > +static const uint32_t gen4_sf_kernel_nomask[][4] = {
> > + { 0x00400031, 0x20c01fbd, 0x0069002c, 0x01110001 },
> > + { 0x00600001, 0x206003be, 0x00690060, 0x00000000 },
> > + { 0x00600040, 0x20e077bd, 0x00690080, 0x006940a0 },
> > + { 0x00600041, 0x202077be, 0x008d00e0, 0x000000c0 },
> > + { 0x00600040, 0x20e077bd, 0x006900a0, 0x00694060 },
> > + { 0x00600041, 0x204077be, 0x008d00e0, 0x000000c8 },
> > + { 0x00600031, 0x20001fbc, 0x008d0000, 0x8640c800 },
> > +};
> > +
> > +static const uint32_t gen5_sf_kernel_nomask[][4] = {
> > + { 0x00400031, 0x20c01fbd, 0x1069002c, 0x02100001 },
> > + { 0x00600001, 0x206003be, 0x00690060, 0x00000000 },
> > + { 0x00600040, 0x20e077bd, 0x00690080, 0x006940a0 },
> > + { 0x00600041, 0x202077be, 0x008d00e0, 0x000000c0 },
> > + { 0x00600040, 0x20e077bd, 0x006900a0, 0x00694060 },
> > + { 0x00600041, 0x204077be, 0x008d00e0, 0x000000c8 },
> > + { 0x00600031, 0x20001fbc, 0x648d0000, 0x8808c800 },
> > +};
> > +
> > +static const uint32_t gen4_ps_kernel_nomask_affine[][4] = {
> > + { 0x00800040, 0x23c06d29, 0x00480028, 0x10101010 },
> > + { 0x00800040, 0x23806d29, 0x0048002a, 0x11001100 },
> > + { 0x00802040, 0x2100753d, 0x008d03c0, 0x00004020 },
> > + { 0x00802040, 0x2140753d, 0x008d0380, 0x00004024 },
> > + { 0x00802059, 0x200077bc, 0x00000060, 0x008d0100 },
> > + { 0x00802048, 0x204077be, 0x00000064, 0x008d0140 },
> > + { 0x00802059, 0x200077bc, 0x00000070, 0x008d0100 },
> > + { 0x00802048, 0x208077be, 0x00000074, 0x008d0140 },
> > + { 0x00600201, 0x20200022, 0x008d0000, 0x00000000 },
> > + { 0x00000201, 0x20280062, 0x00000000, 0x00000000 },
> > + { 0x01800031, 0x21801d09, 0x008d0000, 0x02580001 },
> > + { 0x00600001, 0x204003be, 0x008d0180, 0x00000000 },
> > + { 0x00601001, 0x20c003be, 0x008d01a0, 0x00000000 },
> > + { 0x00600001, 0x206003be, 0x008d01c0, 0x00000000 },
> > + { 0x00601001, 0x20e003be, 0x008d01e0, 0x00000000 },
> > + { 0x00600001, 0x208003be, 0x008d0200, 0x00000000 },
> > + { 0x00601001, 0x210003be, 0x008d0220, 0x00000000 },
> > + { 0x00600001, 0x20a003be, 0x008d0240, 0x00000000 },
> > + { 0x00601001, 0x212003be, 0x008d0260, 0x00000000 },
> > + { 0x00600201, 0x202003be, 0x008d0020, 0x00000000 },
> > + { 0x00800031, 0x20001d28, 0x008d0000, 0x85a04800 },
> > +};
> > +
> > +static const uint32_t gen5_ps_kernel_nomask_affine[][4] = {
> > + { 0x00800040, 0x23c06d29, 0x00480028, 0x10101010 },
> > + { 0x00800040, 0x23806d29, 0x0048002a, 0x11001100 },
> > + { 0x00802040, 0x2100753d, 0x008d03c0, 0x00004020 },
> > + { 0x00802040, 0x2140753d, 0x008d0380, 0x00004024 },
> > + { 0x00802059, 0x200077bc, 0x00000060, 0x008d0100 },
> > + { 0x00802048, 0x204077be, 0x00000064, 0x008d0140 },
> > + { 0x00802059, 0x200077bc, 0x00000070, 0x008d0100 },
> > + { 0x00802048, 0x208077be, 0x00000074, 0x008d0140 },
> > + { 0x01800031, 0x21801fa9, 0x208d0000, 0x0a8a0001 },
> > + { 0x00802001, 0x304003be, 0x008d0180, 0x00000000 },
> > + { 0x00802001, 0x306003be, 0x008d01c0, 0x00000000 },
> > + { 0x00802001, 0x308003be, 0x008d0200, 0x00000000 },
> > + { 0x00802001, 0x30a003be, 0x008d0240, 0x00000000 },
> > + { 0x00600201, 0x202003be, 0x008d0020, 0x00000000 },
> > + { 0x00800031, 0x20001d28, 0x548d0000, 0x94084800 },
> > +};
> > +
> > +static uint32_t
> > +batch_used(struct intel_batchbuffer *batch)
> > +{
> > + return batch->ptr - batch->buffer;
> > +}
> > +
> > +static uint32_t
> > +batch_round_upto(struct intel_batchbuffer *batch, uint32_t divisor)
> > +{
> > + uint32_t offset = batch_used(batch);
> > + offset = (offset + divisor - 1) / divisor * divisor;
> > + batch->ptr = batch->buffer + offset;
> > + return offset;
> > +}
>
> With the usage of the same methods in two libs (gen4 and gen6), maybe
> it will be worth to move those functions to intel_batchbuffer (like it
> was done with previous copy/pasted functions)?
Probably a better approach is to change gen4/6 to create the
vertex buffer the same way as gen7+.
--
Ville Syrjälä
Intel
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
next prev parent reply other threads:[~2018-06-14 13:23 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-06-11 16:14 [igt-dev] [PATCH i-g-t] lib/rendercopy: Add gen4/5 rendercopy Ville Syrjala
2018-06-11 18:01 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
2018-06-12 0:14 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
2018-06-13 10:35 ` [igt-dev] [PATCH i-g-t] " Kalamarz, Lukasz
2018-06-14 13:23 ` Ville Syrjälä [this message]
2018-06-14 13:13 ` Katarzyna Dec
2018-06-14 13:24 ` Ville Syrjälä
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=20180614132303.GF20518@intel.com \
--to=ville.syrjala@linux.intel.com \
--cc=igt-dev@lists.freedesktop.org \
--cc=lukasz.kalamarz@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.