panfrost: Wire up gpu_variant to pan_compile_inputs

Reviewed-by: Eric R. Smith <eric.smith@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37231>
This commit is contained in:
Christoph Pillmayer 2025-08-29 10:45:47 +00:00 committed by Marge Bot
parent 7e914e7bff
commit 59ac9b4c9e
6 changed files with 16 additions and 5 deletions

View file

@ -18,9 +18,11 @@ DERIVE_HASH_TABLE(pan_blend_shader_key);
void
pan_blend_shader_cache_init(struct pan_blend_shader_cache *cache,
unsigned gpu_id, struct pan_pool *bin_pool)
unsigned gpu_id, uint32_t gpu_variant,
struct pan_pool *bin_pool)
{
cache->gpu_id = gpu_id;
cache->gpu_variant = gpu_variant;
cache->bin_pool = bin_pool;
cache->shaders = pan_blend_shader_key_table_create(NULL);
pthread_mutex_init(&cache->lock, NULL);
@ -95,6 +97,7 @@ GENX(pan_blend_get_shader_locked)(struct pan_blend_shader_cache *cache,
/* Compile the NIR shader */
struct pan_compile_inputs inputs = {
.gpu_id = cache->gpu_id,
.gpu_variant = cache->gpu_variant,
.is_blend = true,
.blend.nr_samples = key.nr_samples,
.pushable_ubos = BITFIELD_BIT(PAN_UBO_SYSVALS),

View file

@ -62,6 +62,7 @@ struct panfrost_blend_state {
struct pan_blend_shader_cache {
unsigned gpu_id;
uint32_t gpu_variant;
struct pan_pool *bin_pool;
struct hash_table *shaders;
pthread_mutex_t lock;
@ -77,7 +78,8 @@ struct pan_blend_shader {
uint64_t panfrost_get_blend(struct panfrost_batch *batch, unsigned rt);
void pan_blend_shader_cache_init(struct pan_blend_shader_cache *cache,
unsigned gpu_id, struct pan_pool *bin_pool);
unsigned gpu_id, uint32_t gpu_variant,
struct pan_pool *bin_pool);
void pan_blend_shader_cache_cleanup(struct pan_blend_shader_cache *cache);

View file

@ -4467,10 +4467,12 @@ GENX(panfrost_cmdstream_screen_init)(struct panfrost_screen *screen)
screen->vtbl.select_tile_size = GENX(pan_select_tile_size);
pan_blend_shader_cache_init(&dev->blend_shaders, panfrost_device_gpu_id(dev),
dev->kmod.props.gpu_variant,
&screen->mempools.bin.base);
GENX(pan_fb_preload_cache_init)
(&dev->fb_preload_cache, panfrost_device_gpu_id(dev), &dev->blend_shaders,
(&dev->fb_preload_cache, panfrost_device_gpu_id(dev),
dev->kmod.props.gpu_variant, &dev->blend_shaders,
&screen->mempools.bin.base, &screen->mempools.desc.base);
dev->precomp_cache = GENX(panfrost_precomp_cache_init)(screen);

View file

@ -547,6 +547,7 @@ pan_preload_get_shader(struct pan_fb_preload_cache *cache,
struct pan_compile_inputs inputs = {
.gpu_id = cache->gpu_id,
.gpu_variant = cache->gpu_variant,
.is_blit = true,
.no_idvs = true,
};
@ -1417,11 +1418,12 @@ pan_preload_prefill_preload_shader_cache(struct pan_fb_preload_cache *cache)
void
GENX(pan_fb_preload_cache_init)(
struct pan_fb_preload_cache *cache, unsigned gpu_id,
struct pan_fb_preload_cache *cache, unsigned gpu_id, uint32_t gpu_variant,
struct pan_blend_shader_cache *blend_shader_cache, struct pan_pool *bin_pool,
struct pan_pool *desc_pool)
{
cache->gpu_id = gpu_id;
cache->gpu_variant = gpu_variant;
cache->shaders.preload = pan_preload_shader_key_table_create(NULL);
cache->shaders.pool = bin_pool;
pthread_mutex_init(&cache->shaders.lock, NULL);

View file

@ -37,6 +37,7 @@ struct pan_pool;
struct pan_fb_preload_cache {
unsigned gpu_id;
uint32_t gpu_variant;
struct {
struct pan_pool *pool;
struct hash_table *preload;
@ -52,7 +53,7 @@ struct pan_fb_preload_cache {
#ifdef PAN_ARCH
void GENX(pan_fb_preload_cache_init)(
struct pan_fb_preload_cache *cache, unsigned gpu_id,
struct pan_fb_preload_cache *cache, unsigned gpu_id, uint32_t gpu_variant,
struct pan_blend_shader_cache *blend_shader_cache, struct pan_pool *bin_pool,
struct pan_pool *desc_pool);

View file

@ -145,6 +145,7 @@ panfrost_shader_compile(struct panfrost_screen *screen, const nir_shader *ir,
struct pan_compile_inputs inputs = {
.gpu_id = panfrost_device_gpu_id(dev),
.gpu_variant = dev->kmod.props.gpu_variant,
};
/* Lower this early so the backends don't have to worry about it */