Sfoglia il codice sorgente

panfrost: Add routines to calculate stack size/shift

These implement the aforementioned formulas.

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
master
Alyssa Rosenzweig 6 anni fa
parent
commit
eac9247b2d
2 ha cambiato i file con 31 aggiunte e 0 eliminazioni
  1. 11
    0
      src/panfrost/encoder/pan_encoder.h
  2. 20
    0
      src/panfrost/encoder/pan_scratch.c

+ 11
- 0
src/panfrost/encoder/pan_encoder.h Vedi File

@@ -66,4 +66,15 @@ panfrost_choose_hierarchy_mask(
unsigned width, unsigned height,
unsigned vertex_count, bool hierarchy);

/* Stack sizes */

unsigned
panfrost_get_stack_shift(unsigned stack_size);

unsigned
panfrost_get_total_stack_size(
unsigned stack_shift,
unsigned threads_per_core,
unsigned core_count);

#endif

+ 20
- 0
src/panfrost/encoder/pan_scratch.c Vedi File

@@ -77,3 +77,23 @@
* There are other valid characterisations of this formula, of course, but this
* is computationally simple, so good enough for our purposes.
*/

/* Computes log_stack_size = ceil(log2(max(s, 256))) - 4 */

unsigned
panfrost_get_stack_shift(unsigned stack_size)
{
return util_logbase2_ceil(MAX2(stack_size, 256)) - 4;
}

/* Computes the aligned stack size given the shift and thread count */

unsigned
panfrost_get_total_stack_size(
unsigned stack_shift,
unsigned threads_per_core,
unsigned core_count)
{
unsigned stack_size = 1 << (stack_shift + 4);
return stack_size * threads_per_core * core_count;
}

Loading…
Annulla
Salva