mirror of
https://github.com/cemu-project/Cemu.git
synced 2025-07-08 07:51:19 +12:00
Initial support for title switching + better Wii U menu compatibility (#907)
This commit is contained in:
parent
bfbeeae6f6
commit
2200cc0ddf
95 changed files with 2549 additions and 746 deletions
|
@ -144,7 +144,7 @@ LatteShaderPSInputTable* LatteSHRC_GetPSInputTable()
|
|||
return &_activePSImportTable;
|
||||
}
|
||||
|
||||
bool LatteSHRC_RemoveFromCache(LatteDecompilerShader* shader)
|
||||
void LatteSHRC_RemoveFromCache(LatteDecompilerShader* shader)
|
||||
{
|
||||
bool removed = false;
|
||||
auto& cache = LatteSHRC_GetCacheByType(shader->shaderType);
|
||||
|
@ -156,10 +156,14 @@ bool LatteSHRC_RemoveFromCache(LatteDecompilerShader* shader)
|
|||
}
|
||||
else if (baseIt->second == shader)
|
||||
{
|
||||
if (baseIt->second->next)
|
||||
cache.emplace(shader->baseHash, baseIt->second->next);
|
||||
else
|
||||
cache.erase(baseIt);
|
||||
cemu_assert_debug(baseIt->second == shader);
|
||||
cache.erase(baseIt);
|
||||
if (shader->next)
|
||||
{
|
||||
cemu_assert_debug(shader->baseHash == shader->next->baseHash);
|
||||
cache.emplace(shader->baseHash, shader->next);
|
||||
}
|
||||
shader->next = 0;
|
||||
removed = true;
|
||||
}
|
||||
else
|
||||
|
@ -176,7 +180,7 @@ bool LatteSHRC_RemoveFromCache(LatteDecompilerShader* shader)
|
|||
}
|
||||
}
|
||||
}
|
||||
return removed;
|
||||
cemu_assert(removed);
|
||||
}
|
||||
|
||||
void LatteSHRC_RemoveFromCacheByHash(uint64 shader_base_hash, uint64 shader_aux_hash, LatteConst::ShaderType type)
|
||||
|
@ -1009,3 +1013,16 @@ void LatteSHRC_Init()
|
|||
cemu_assert_debug(sGeometryShaders.empty());
|
||||
cemu_assert_debug(sPixelShaders.empty());
|
||||
}
|
||||
|
||||
void LatteSHRC_UnloadAll()
|
||||
{
|
||||
while(!sVertexShaders.empty())
|
||||
LatteShader_free(sVertexShaders.begin()->second);
|
||||
cemu_assert_debug(sVertexShaders.empty());
|
||||
while(!sGeometryShaders.empty())
|
||||
LatteShader_free(sGeometryShaders.begin()->second);
|
||||
cemu_assert_debug(sGeometryShaders.empty());
|
||||
while(!sPixelShaders.empty())
|
||||
LatteShader_free(sPixelShaders.begin()->second);
|
||||
cemu_assert_debug(sPixelShaders.empty());
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue