mirror of
https://github.com/libretro/ppsspp.git
synced 2025-02-02 14:52:20 +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;
|
||||
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_HAS_COLOR, hasColor);
|
||||
|
||||
|
@ -764,10 +764,9 @@ Shader *ShaderManagerGLES::ApplyVertexShader(int prim, u32 vertType, ShaderID *V
|
||||
gstate_c.CleanUniforms();
|
||||
}
|
||||
|
||||
bool useHWTransform = CanUseHardwareTransform(prim);
|
||||
|
||||
if (gstate_c.IsDirty(DIRTY_VERTEXSHADER_STATE)) {
|
||||
gstate_c.Clean(DIRTY_VERTEXSHADER_STATE);
|
||||
bool useHWTransform = CanUseHardwareTransform(prim);
|
||||
ComputeVertexShaderID(VSID, vertType, useHWTransform);
|
||||
} else {
|
||||
*VSID = lastVSID_;
|
||||
@ -978,6 +977,12 @@ void ShaderManagerGLES::LoadAndPrecompile(const std::string &filename) {
|
||||
return;
|
||||
}
|
||||
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);
|
||||
if (vs->Failed()) {
|
||||
// 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