diff options
author | ReinUsesLisp <reinuseslisp@airmail.cc> | 2020-05-18 03:32:49 +0200 |
---|---|---|
committer | ReinUsesLisp <reinuseslisp@airmail.cc> | 2020-05-19 23:00:04 +0200 |
commit | 420cc13248350ef5c2d19e0b961cb4185cd16a8a (patch) | |
tree | 7c20805090bbdfd42de380644bb719122fbc85a8 /src/video_core/renderer_opengl/gl_shader_cache.h | |
parent | yuzu: Add frontend settings for assembly shaders (diff) | |
download | yuzu-420cc13248350ef5c2d19e0b961cb4185cd16a8a.tar yuzu-420cc13248350ef5c2d19e0b961cb4185cd16a8a.tar.gz yuzu-420cc13248350ef5c2d19e0b961cb4185cd16a8a.tar.bz2 yuzu-420cc13248350ef5c2d19e0b961cb4185cd16a8a.tar.lz yuzu-420cc13248350ef5c2d19e0b961cb4185cd16a8a.tar.xz yuzu-420cc13248350ef5c2d19e0b961cb4185cd16a8a.tar.zst yuzu-420cc13248350ef5c2d19e0b961cb4185cd16a8a.zip |
Diffstat (limited to '')
-rw-r--r-- | src/video_core/renderer_opengl/gl_shader_cache.h | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/video_core/renderer_opengl/gl_shader_cache.h b/src/video_core/renderer_opengl/gl_shader_cache.h index 91690b470..b2ae8d7f9 100644 --- a/src/video_core/renderer_opengl/gl_shader_cache.h +++ b/src/video_core/renderer_opengl/gl_shader_cache.h @@ -43,8 +43,14 @@ struct UnspecializedShader; using Shader = std::shared_ptr<CachedShader>; using Maxwell = Tegra::Engines::Maxwell3D::Regs; +struct ProgramHandle { + OGLProgram source_program; + OGLAssemblyProgram assembly_program; +}; +using ProgramSharedPtr = std::shared_ptr<ProgramHandle>; + struct PrecompiledShader { - std::shared_ptr<OGLProgram> program; + ProgramSharedPtr program; std::shared_ptr<VideoCommon::Shader::Registry> registry; ShaderEntries entries; }; @@ -87,12 +93,13 @@ public: private: explicit CachedShader(VAddr cpu_addr, std::size_t size_in_bytes, std::shared_ptr<VideoCommon::Shader::Registry> registry, - ShaderEntries entries, std::shared_ptr<OGLProgram> program); + ShaderEntries entries, ProgramSharedPtr program); std::shared_ptr<VideoCommon::Shader::Registry> registry; ShaderEntries entries; std::size_t size_in_bytes = 0; - std::shared_ptr<OGLProgram> program; + ProgramSharedPtr program; + GLuint handle = 0; }; class ShaderCacheOpenGL final : public RasterizerCache<Shader> { @@ -115,7 +122,7 @@ protected: void FlushObjectInner(const Shader& object) override {} private: - std::shared_ptr<OGLProgram> GeneratePrecompiledProgram( + ProgramSharedPtr GeneratePrecompiledProgram( const ShaderDiskCacheEntry& entry, const ShaderDiskCachePrecompiled& precompiled_entry, const std::unordered_set<GLenum>& supported_formats); |