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

Emil Velikov emil.l.velikov at gmail.com
Wed Nov 18 09:43:31 PST 2015


Hi Tom,

Please flip the order of the patches and drop the now patch 1/2 from
the stable queue.

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


More information about the mesa-dev mailing list