nv2a/vk: Fix shader cache node init flag

This commit is contained in:
Matt Borgerson 2024-07-26 17:21:01 -07:00 committed by mborgerson
parent fadaf19cdd
commit 6403c69326
2 changed files with 7 additions and 2 deletions

View File

@ -156,6 +156,8 @@ typedef struct ShaderModuleInfo {
typedef struct ShaderBinding {
LruNode node;
bool initialized;
ShaderState state;
ShaderModuleInfo *geometry;
ShaderModuleInfo *vertex;

View File

@ -311,6 +311,7 @@ static void shader_cache_entry_init(Lru *lru, LruNode *node, void *state)
{
ShaderBinding *snode = container_of(node, ShaderBinding, node);
memcpy(&snode->state, state, sizeof(ShaderState));
snode->initialized = false;
}
static void shader_cache_entry_post_evict(Lru *lru, LruNode *node)
@ -329,7 +330,7 @@ static void shader_cache_entry_post_evict(Lru *lru, LruNode *node)
}
}
memset(&snode->state, 0, sizeof(ShaderState));
snode->initialized = false;
}
static bool shader_cache_entry_compare(Lru *lru, LruNode *node, void *key)
@ -373,7 +374,7 @@ static ShaderBinding *gen_shaders(PGRAPHState *pg, ShaderState *state)
NV2A_VK_DPRINTF("shader state hash: %016lx, %p", hash, snode);
if (!snode->fragment) {
if (!snode->initialized) {
NV2A_VK_DPRINTF("cache miss");
nv2a_profile_inc_counter(NV2A_PROF_SHADER_GEN);
@ -422,6 +423,8 @@ static ShaderBinding *gen_shaders(PGRAPHState *pg, ShaderState *state)
}
update_shader_constant_locations(snode);
snode->initialized = true;
}
return snode;