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)
|
||||||
{
|
{
|
||||||
if (oldProg->vertexShader->dvle->dvlp != program->vertexShader->dvle->dvlp)
|
|
||||||
ctx->flags |= C3DiF_VshCode;
|
|
||||||
shaderInstance_s* oldGsh = oldProg->geometryShader;
|
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))
|
if (newGsh && (!oldGsh || oldGsh->dvle->dvlp != newGsh->dvle->dvlp))
|
||||||
ctx->flags |= C3DiF_GshCode;
|
ctx->flags |= C3DiF_GshCode;
|
||||||
} else
|
} else
|
||||||
|
@ -39,6 +39,8 @@ void C3D_DrawElements(GPU_Primitive_t primitive, int count, int type, const void
|
|||||||
}
|
}
|
||||||
// Clear the post-vertex cache
|
// Clear the post-vertex cache
|
||||||
GPUCMD_AddWrite(GPUREG_VTX_FUNC, 1);
|
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;
|
C3Di_GetContext()->flags |= C3DiF_DrawUsed;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user