intel/common: Implement preferred SLM encode

Preferred SLM has a different encode than SLM allocation size so
adding a function just to encode it, functions call to this new
function will be added in the next patches.

BSpec: 64042
BSpec: 68700
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28910>
This commit is contained in:
José Roberto de Souza
2024-04-08 10:39:25 -07:00
committed by Marge Bot
parent f1ffbd4f51
commit e0af347791
2 changed files with 42 additions and 0 deletions

View File

@@ -112,3 +112,44 @@ intel_compute_slm_encode_size(unsigned gen, uint32_t bytes)
return slm_size;
}
/* encode = 0 sets to largest SLM size supported in subslice */
static struct slm_encode preferred_slm_allocation_size_table[] = {
{ .encode = 0x8, .size_in_kb = 0, },
{ .encode = 0x9, .size_in_kb = 16, },
{ .encode = 0xa, .size_in_kb = 32, },
{ .encode = 0xb, .size_in_kb = 64, },
{ .encode = 0xc, .size_in_kb = 96, },
{ .encode = 0xd, .size_in_kb = 128, },
};
static struct slm_encode xe2_preferred_slm_allocation_size_table[] = {
{ .encode = 0x0, .size_in_kb = 0, },
{ .encode = 0x1, .size_in_kb = 16, },
{ .encode = 0x2, .size_in_kb = 32, },
{ .encode = 0x3, .size_in_kb = 64, },
{ .encode = 0x4, .size_in_kb = 96, },
{ .encode = 0x5, .size_in_kb = 128, },
{ .encode = 0x6, .size_in_kb = 160, },
{ .encode = 0x7, .size_in_kb = 192, },
{ .encode = 0x8, .size_in_kb = 224, },
{ .encode = 0x9, .size_in_kb = 256, },
{ .encode = 0xA, .size_in_kb = 384, },
};
uint32_t
intel_compute_preferred_slm_encode_size(unsigned gen, uint32_t bytes)
{
struct slm_encode *table;
unsigned int table_len;
if (gen >= 20) {
table = xe2_preferred_slm_allocation_size_table;
table_len = ARRAY_SIZE(xe2_preferred_slm_allocation_size_table);
} else {
table = preferred_slm_allocation_size_table;
table_len = ARRAY_SIZE(preferred_slm_allocation_size_table);
}
return slm_encode_lookup(table, table_len, bytes)->encode;
}

View File

@@ -9,3 +9,4 @@
uint32_t intel_compute_slm_calculate_size(unsigned gen, uint32_t bytes);
uint32_t intel_compute_slm_encode_size(unsigned gen, uint32_t bytes);
uint32_t intel_compute_preferred_slm_encode_size(unsigned gen, uint32_t bytes);