mirror of
https://github.com/hrydgard/ppsspp.git
synced 2025-02-22 07:03:38 +00:00
Check for HW-transform and through when loading GL shader cache.
This commit is contained in:
parent
be115822f7
commit
8a58b768f1
@ -77,7 +77,7 @@ void ComputeVertexShaderID(ShaderID *id_out, u32 vertType, bool useHWTransform)
|
|||||||
|
|
||||||
ShaderID id;
|
ShaderID id;
|
||||||
id.SetBit(VS_BIT_LMODE, lmode);
|
id.SetBit(VS_BIT_LMODE, lmode);
|
||||||
id.SetBit(VS_BIT_IS_THROUGH, gstate.isModeThrough());
|
id.SetBit(VS_BIT_IS_THROUGH, isModeThrough);
|
||||||
id.SetBit(VS_BIT_ENABLE_FOG, enableFog);
|
id.SetBit(VS_BIT_ENABLE_FOG, enableFog);
|
||||||
id.SetBit(VS_BIT_HAS_COLOR, hasColor);
|
id.SetBit(VS_BIT_HAS_COLOR, hasColor);
|
||||||
|
|
||||||
|
@ -764,10 +764,9 @@ Shader *ShaderManagerGLES::ApplyVertexShader(int prim, u32 vertType, ShaderID *V
|
|||||||
gstate_c.CleanUniforms();
|
gstate_c.CleanUniforms();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool useHWTransform = CanUseHardwareTransform(prim);
|
|
||||||
|
|
||||||
if (gstate_c.IsDirty(DIRTY_VERTEXSHADER_STATE)) {
|
if (gstate_c.IsDirty(DIRTY_VERTEXSHADER_STATE)) {
|
||||||
gstate_c.Clean(DIRTY_VERTEXSHADER_STATE);
|
gstate_c.Clean(DIRTY_VERTEXSHADER_STATE);
|
||||||
|
bool useHWTransform = CanUseHardwareTransform(prim);
|
||||||
ComputeVertexShaderID(VSID, vertType, useHWTransform);
|
ComputeVertexShaderID(VSID, vertType, useHWTransform);
|
||||||
} else {
|
} else {
|
||||||
*VSID = lastVSID_;
|
*VSID = lastVSID_;
|
||||||
@ -978,6 +977,12 @@ void ShaderManagerGLES::LoadAndPrecompile(const std::string &filename) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!vsCache_.Get(id)) {
|
if (!vsCache_.Get(id)) {
|
||||||
|
if (id.Bit(VS_BIT_IS_THROUGH) && id.Bit(VS_BIT_USE_HW_TRANSFORM)) {
|
||||||
|
// Clearly corrupt, bailing.
|
||||||
|
ERROR_LOG_REPORT(G3D, "Corrupt shader cache: Both IS_THROUGH and USE_HW_TRANSFORM set.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
Shader *vs = CompileVertexShader(id);
|
Shader *vs = CompileVertexShader(id);
|
||||||
if (vs->Failed()) {
|
if (vs->Failed()) {
|
||||||
// Give up on using the cache, just bail. We can't safely create the fallback shaders here
|
// Give up on using the cache, just bail. We can't safely create the fallback shaders here
|
||||||
|
Loading…
x
Reference in New Issue
Block a user