From: Bas Nieuwenhuizen Date: Thu, 5 May 2016 20:25:01 +0000 (+0200) Subject: radeonsi: Compute correct LDS size for fragment shaders. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=6291f19f71d660b82cc16ca6af9da66f8fa33956;p=mesa.git radeonsi: Compute correct LDS size for fragment shaders. No sure where the 36 came from, but we clearly need at least 48 bytes per attribute per primitive. Signed-off-by: Bas Nieuwenhuizen Reviewed-by: Marek Olšák --- diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c index 49c498da61e..211db9f6f2f 100644 --- a/src/gallium/drivers/radeonsi/si_shader.c +++ b/src/gallium/drivers/radeonsi/si_shader.c @@ -5640,15 +5640,18 @@ static void si_shader_dump_stats(struct si_screen *sscreen, /* Compute LDS usage for PS. */ if (processor == PIPE_SHADER_FRAGMENT) { - /* The minimum usage per wave is (num_inputs * 36). The maximum - * usage is (num_inputs * 36 * 16). + /* The minimum usage per wave is (num_inputs * 48). The maximum + * usage is (num_inputs * 48 * 16). * We can get anything in between and it varies between waves. * + * The 48 bytes per input for a single primitive is equal to + * 4 bytes/component * 4 components/input * 3 points. + * * Other stages don't know the size at compile time or don't * allocate LDS per wave, but instead they do it per thread group. */ lds_per_wave = conf->lds_size * lds_increment + - align(num_inputs * 36, lds_increment); + align(num_inputs * 48, lds_increment); } /* Compute the per-SIMD wave counts. */