Remove LatteShader_FinishCompilation

CleanupAfterCompile is already done in LatteShader_CreateRendererShader
WaitForCompiled is already done in PreponeCompilation
This commit is contained in:
goeiecool9999 2025-07-24 09:38:53 +02:00
parent 25c8f0a5ff
commit 55d2ac0e43
4 changed files with 9 additions and 18 deletions

View file

@ -357,19 +357,6 @@ void LatteShader_CreateRendererShader(LatteDecompilerShader* shader, bool compil
LatteShader_CleanupAfterCompile(shader); LatteShader_CleanupAfterCompile(shader);
} }
void LatteShader_FinishCompilation(LatteDecompilerShader* shader)
{
if (shader->hasError)
{
cemuLog_logDebug(LogType::Force, "LatteShader_finishCompilation(): Skipped because of error in shader {:x}", shader->baseHash);
return;
}
shader->shader->WaitForCompiled();
LatteShader_prepareSeparableUniforms(shader);
LatteShader_CleanupAfterCompile(shader);
}
void LatteSHRC_RegisterShader(LatteDecompilerShader* shader, uint64 baseHash, uint64 auxHash) void LatteSHRC_RegisterShader(LatteDecompilerShader* shader, uint64 baseHash, uint64 auxHash)
{ {
auto& cache = LatteSHRC_GetCacheByType(shader->shaderType); auto& cache = LatteSHRC_GetCacheByType(shader->shaderType);
@ -768,7 +755,7 @@ LatteDecompilerShader* LatteShader_CompileSeparableVertexShader(uint64 baseHash,
{ {
if (vertexShader->shader) if (vertexShader->shader)
vertexShader->shader->PreponeCompilation(); vertexShader->shader->PreponeCompilation();
LatteShader_FinishCompilation(vertexShader); LatteShader_prepareSeparableUniforms(vertexShader);
} }
LatteSHRC_RegisterShader(vertexShader, vertexShader->baseHash, vertexShader->auxHash); LatteSHRC_RegisterShader(vertexShader, vertexShader->baseHash, vertexShader->auxHash);
@ -797,7 +784,7 @@ LatteDecompilerShader* LatteShader_CompileSeparableGeometryShader(uint64 baseHas
{ {
if (geometryShader->shader) if (geometryShader->shader)
geometryShader->shader->PreponeCompilation(); geometryShader->shader->PreponeCompilation();
LatteShader_FinishCompilation(geometryShader); LatteShader_prepareSeparableUniforms(geometryShader);
} }
LatteSHRC_RegisterShader(geometryShader, geometryShader->baseHash, geometryShader->auxHash); LatteSHRC_RegisterShader(geometryShader, geometryShader->baseHash, geometryShader->auxHash);
@ -826,7 +813,7 @@ LatteDecompilerShader* LatteShader_CompileSeparablePixelShader(uint64 baseHash,
{ {
if (pixelShader->shader) if (pixelShader->shader)
pixelShader->shader->PreponeCompilation(); pixelShader->shader->PreponeCompilation();
LatteShader_FinishCompilation(pixelShader); LatteShader_prepareSeparableUniforms(pixelShader);
} }
LatteSHRC_RegisterShader(pixelShader, _shaderBaseHash_ps, psAuxHash); LatteSHRC_RegisterShader(pixelShader, _shaderBaseHash_ps, psAuxHash);

View file

@ -99,7 +99,6 @@ void LatteShader_GetDecompilerOptions(struct LatteDecompilerOptions& options, La
LatteDecompilerShader* LatteShader_CreateShaderFromDecompilerOutput(LatteDecompilerOutput_t& decompilerOutput, uint64 baseHash, bool calculateAuxHash, uint64 optionalAuxHash, uint32* contextRegister); LatteDecompilerShader* LatteShader_CreateShaderFromDecompilerOutput(LatteDecompilerOutput_t& decompilerOutput, uint64 baseHash, bool calculateAuxHash, uint64 optionalAuxHash, uint32* contextRegister);
void LatteShader_CreateRendererShader(LatteDecompilerShader* shader, bool compileAsync); void LatteShader_CreateRendererShader(LatteDecompilerShader* shader, bool compileAsync);
void LatteShader_FinishCompilation(LatteDecompilerShader* shader);
void LatteShader_prepareSeparableUniforms(LatteDecompilerShader* shader); void LatteShader_prepareSeparableUniforms(LatteDecompilerShader* shader);

View file

@ -108,7 +108,10 @@ void LatteShaderCache_updateCompileQueue(sint32 maxRemainingEntries)
break; break;
auto shader = shaderCompileQueue.entry[0].shader; auto shader = shaderCompileQueue.entry[0].shader;
if (shader) if (shader)
LatteShader_FinishCompilation(shader); {
shader->shader->PreponeCompilation();
LatteShader_prepareSeparableUniforms(shader);
}
LatteShaderCache_removeFromCompileQueue(0); LatteShaderCache_removeFromCompileQueue(0);
} }
} }

View file

@ -28,6 +28,8 @@ void LatteShader_prepareSeparableUniforms(LatteDecompilerShader* shader)
{ {
if (g_renderer->GetType() == RendererAPI::Vulkan) if (g_renderer->GetType() == RendererAPI::Vulkan)
return; return;
if(shader->hasError)
return;
auto shaderGL = (RendererShaderGL*)shader->shader; auto shaderGL = (RendererShaderGL*)shader->shader;
// setup uniform info // setup uniform info