mirror of https://github.com/xemu-project/xemu.git
nv2a/vk: Fix shader cache node init flag
This commit is contained in:
parent
fadaf19cdd
commit
6403c69326
|
@ -156,6 +156,8 @@ typedef struct ShaderModuleInfo {
|
|||
|
||||
typedef struct ShaderBinding {
|
||||
LruNode node;
|
||||
bool initialized;
|
||||
|
||||
ShaderState state;
|
||||
ShaderModuleInfo *geometry;
|
||||
ShaderModuleInfo *vertex;
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue