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:

committed by
Marge Bot

parent
f1ffbd4f51
commit
e0af347791
@@ -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;
|
||||
}
|
||||
|
@@ -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);
|
||||
|
Reference in New Issue
Block a user