On Tue, Jun 7, 2016 at 7:05 PM, Marek Olšák <mar...@gmail.com> wrote: > From: Marek Olšák <marek.ol...@amd.com> > > Diff from shader-db: > Scratch: 3221504 -> 17408 (-99.46 %) bytes per wave > --- > src/gallium/drivers/radeonsi/si_shader.c | 17 +++++++++++++++-- > 1 file changed, 15 insertions(+), 2 deletions(-) > > diff --git a/src/gallium/drivers/radeonsi/si_shader.c > b/src/gallium/drivers/radeonsi/si_shader.c > index 6e8eefb..d392807 100644 > --- a/src/gallium/drivers/radeonsi/si_shader.c > +++ b/src/gallium/drivers/radeonsi/si_shader.c > @@ -5825,6 +5825,18 @@ void si_shader_binary_read_config(struct > radeon_shader_binary *binary, > unsigned i; > const unsigned char *config = > radeon_shader_binary_config_start(binary, symbol_offset); > + bool really_needs_scratch = false; > + > + /* LLVM adds SGPR spills to the scratch size. > + * Find out if we really need the scratch buffer. > + */ > + for (i = 0; i < binary->reloc_count; i++) { > + const struct radeon_shader_reloc *reloc = &binary->relocs[i]; > + > + if (!strcmp(scratch_rsrc_dword0_symbol, reloc->name) || > + !strcmp(scratch_rsrc_dword1_symbol, reloc->name)) > + really_needs_scratch = true;
Not sure how many of these there can be, but you might want to add a break here so you don't keep going after having found one. > + } > > /* XXX: We may be able to emit some of these values directly rather > than > * extracting fields to be emitted later. > @@ -5859,8 +5871,9 @@ void si_shader_binary_read_config(struct > radeon_shader_binary *binary, > case R_0286E8_SPI_TMPRING_SIZE: > case R_00B860_COMPUTE_TMPRING_SIZE: > /* WAVESIZE is in units of 256 dwords. */ > - conf->scratch_bytes_per_wave = > - G_00B860_WAVESIZE(value) * 256 * 4 * 1; > + if (really_needs_scratch) > + conf->scratch_bytes_per_wave = > + G_00B860_WAVESIZE(value) * 256 * 4; > break; > default: > { > -- > 2.7.4 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev