radeonsi: don't overwrite the scratch offset in shader prologs
authorMarek Olšák <marek.olsak@amd.com>
Wed, 13 Apr 2016 15:46:23 +0000 (17:46 +0200)
committerMarek Olšák <marek.olsak@amd.com>
Thu, 14 Apr 2016 15:00:14 +0000 (17:00 +0200)
Prologs only look at num_input_sgprs.

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
src/gallium/drivers/radeonsi/si_shader.c

index e180fc89d515ee7b11be6f71c05162eec801eb44..c26960b1ca3d508fee59fb23bc0abb09b31d53a6 100644 (file)
@@ -5839,6 +5839,10 @@ int si_compile_tgsi_shader(struct si_screen *sscreen,
 
        radeon_llvm_dispose(&ctx.radeon_bld);
 
+       /* Add the scratch offset to input SGPRs. */
+       if (shader->config.scratch_bytes_per_wave)
+               shader->info.num_input_sgprs += 1; /* scratch byte offset */
+
        /* Calculate the number of fragment input VGPRs. */
        if (ctx.type == TGSI_PROCESSOR_FRAGMENT) {
                shader->info.num_input_vgprs = 0;
@@ -6765,9 +6769,6 @@ static void si_fix_num_sgprs(struct si_shader *shader)
 {
        unsigned min_sgprs = shader->info.num_input_sgprs + 2; /* VCC */
 
-       if (shader->config.scratch_bytes_per_wave)
-               min_sgprs += 1; /* scratch wave offset */
-
        shader->config.num_sgprs = MAX2(shader->config.num_sgprs, min_sgprs);
 }