gl_rasterizer: Use MMH3 hash for shader cache hey.

- Includes a check to confirm no hash collisions.
This commit is contained in:
bunnei
2015-10-09 22:46:47 -04:00
parent 71edb55114
commit 240a3b80d9
5 changed files with 64 additions and 102 deletions

View File

@@ -461,7 +461,8 @@ void RasterizerOpenGL::ReconfigureDepthTexture(DepthTextureInfo& texture, Pica::
}
void RasterizerOpenGL::SetShader() {
ShaderCacheKey config = ShaderCacheKey::CurrentConfig();
PicaShaderConfig config = PicaShaderConfig::CurrentConfig();
std::unique_ptr<PicaShader> shader = Common::make_unique<PicaShader>();
// Find (or generate) the GLSL shader for the current TEV state
auto cached_shader = shader_cache.find(config);
@@ -471,9 +472,7 @@ void RasterizerOpenGL::SetShader() {
state.draw.shader_program = current_shader->shader.handle;
state.Apply();
} else {
LOG_DEBUG(Render_OpenGL, "Creating new shader: %08X", hash(config));
std::unique_ptr<TEVShader> shader = Common::make_unique<TEVShader>();
LOG_DEBUG(Render_OpenGL, "Creating new shader");
shader->shader.Create(GLShader::GenerateVertexShader().c_str(), GLShader::GenerateFragmentShader(config).c_str());