summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_opengl/gl_shader_cache.h
diff options
context:
space:
mode:
authorReinUsesLisp <reinuseslisp@airmail.cc>2020-05-18 03:32:49 +0200
committerReinUsesLisp <reinuseslisp@airmail.cc>2020-05-19 23:00:04 +0200
commit420cc13248350ef5c2d19e0b961cb4185cd16a8a (patch)
tree7c20805090bbdfd42de380644bb719122fbc85a8 /src/video_core/renderer_opengl/gl_shader_cache.h
parentyuzu: Add frontend settings for assembly shaders (diff)
downloadyuzu-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.h15
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);