Fix some cases of GPU freezing when changing programs

This commit is contained in:
fincs 2017-02-15 00:31:27 +01:00
parent 141afdb18a
commit 46117ec90a
2 changed files with 4 additions and 2 deletions

View File

@ -316,9 +316,9 @@ void C3D_BindProgram(shaderProgram_s* program)
if (oldProg)
{
if (oldProg->vertexShader->dvle->dvlp != program->vertexShader->dvle->dvlp)
ctx->flags |= C3DiF_VshCode;
shaderInstance_s* oldGsh = oldProg->geometryShader;
if (oldProg->vertexShader->dvle->dvlp != program->vertexShader->dvle->dvlp || (!newGsh && oldGsh))
ctx->flags |= C3DiF_VshCode;
if (newGsh && (!oldGsh || oldGsh->dvle->dvlp != newGsh->dvle->dvlp))
ctx->flags |= C3DiF_GshCode;
} else

View File

@ -39,6 +39,8 @@ void C3D_DrawElements(GPU_Primitive_t primitive, int count, int type, const void
}
// Clear the post-vertex cache
GPUCMD_AddWrite(GPUREG_VTX_FUNC, 1);
GPUCMD_AddMaskedWrite(GPUREG_PRIMITIVE_CONFIG, 0x8, 0);
GPUCMD_AddMaskedWrite(GPUREG_PRIMITIVE_CONFIG, 0x8, 0);
C3Di_GetContext()->flags |= C3DiF_DrawUsed;
}