Fix some cases of GPU freezing when changing programs
This commit is contained in:
parent
141afdb18a
commit
46117ec90a
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user