[Mesa-dev] [Mesa-stable] [PATCH 2/2] radeonsi/compute: Use the compiler's COMPUTE_PGM_RSRC* register values

Tom Stellard tom at stellard.net
Thu Nov 19 12:37:20 PST 2015


On Wed, Nov 18, 2015 at 05:43:31PM +0000, Emil Velikov wrote:
> Hi Tom,
> 
> Please flip the order of the patches and drop the now patch 1/2 from
> the stable queue.
> 

I'm confused about why I need to flip the order of the patches.

-Tom

> On 16 November 2015 at 20:03, Tom Stellard <thomas.stellard at amd.com> wrote:
> > The compiler has more information and is able to optimize the bits
> > it sets in these registers.
> >
> > CC: <mesa-stable at lists.freedesktop.org>
> > ---
> >  src/gallium/drivers/radeonsi/si_compute.c | 37 ++++++-------------------------
> >  src/gallium/drivers/radeonsi/si_shader.c  |  2 ++
> >  2 files changed, 9 insertions(+), 30 deletions(-)
> >
> > diff --git a/src/gallium/drivers/radeonsi/si_compute.c b/src/gallium/drivers/radeonsi/si_compute.c
> > index 2d551dd..a461b2c 100644
> > --- a/src/gallium/drivers/radeonsi/si_compute.c
> > +++ b/src/gallium/drivers/radeonsi/si_compute.c
> > @@ -34,11 +34,6 @@
> >
> >  #define MAX_GLOBAL_BUFFERS 20
> >
> > -/* XXX: Even though we don't pass the scratch buffer via user sgprs any more
> > - * LLVM still expects that we specify 4 USER_SGPRS so it can remain compatible
> > - * with older mesa. */
> > -#define NUM_USER_SGPRS 4
> > -
> >  struct si_compute {
> >         struct si_context *ctx;
> >
> > @@ -238,7 +233,6 @@ static void si_launch_grid(
> >         uint64_t kernel_args_va;
> >         uint64_t scratch_buffer_va = 0;
> >         uint64_t shader_va;
> > -       unsigned arg_user_sgpr_count = NUM_USER_SGPRS;
> >         unsigned i;
> >         struct si_shader *shader = &program->shader;
> >         unsigned lds_blocks;
> > @@ -366,19 +360,7 @@ static void si_launch_grid(
> >         si_pm4_set_reg(pm4, R_00B830_COMPUTE_PGM_LO, shader_va >> 8);
> >         si_pm4_set_reg(pm4, R_00B834_COMPUTE_PGM_HI, shader_va >> 40);
> >
> > -       si_pm4_set_reg(pm4, R_00B848_COMPUTE_PGM_RSRC1,
> > -               /* We always use at least 3 VGPRS, these come from
> > -                * TIDIG_COMP_CNT.
> > -                * XXX: The compiler should account for this.
> > -                */
> > -               S_00B848_VGPRS((MAX2(3, shader->num_vgprs) - 1) / 4)
> > -               /* We always use at least 4 + arg_user_sgpr_count.  The 4 extra
> > -                * sgprs are from TGID_X_EN, TGID_Y_EN, TGID_Z_EN, TG_SIZE_EN
> > -                * XXX: The compiler should account for this.
> > -                */
> > -               |  S_00B848_SGPRS(((MAX2(4 + arg_user_sgpr_count,
> > -                                       shader->num_sgprs)) - 1) / 8)
> > -               |  S_00B028_FLOAT_MODE(shader->float_mode))
> > +       si_pm4_set_reg(pm4, R_00B848_COMPUTE_PGM_RSRC1, shader->rsrc1);
> >                 ;
> The above semicolon should be nuked as well, shouldn't it ?
> 
> Thanks
> Emil
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list