diff options
author | ReinUsesLisp <reinuseslisp@airmail.cc> | 2019-04-29 02:08:31 +0200 |
---|---|---|
committer | ReinUsesLisp <reinuseslisp@airmail.cc> | 2019-06-21 02:38:33 +0200 |
commit | 007ffbef1c3bb6ae5fb85d24754a60d4eea87e45 (patch) | |
tree | 1e82380947cab3bb4dc6d952acd600682e6d173f /src/video_core/renderer_opengl/gl_shader_cache.h | |
parent | video_core: Make ARB_buffer_storage a required extension (diff) | |
download | yuzu-007ffbef1c3bb6ae5fb85d24754a60d4eea87e45.tar yuzu-007ffbef1c3bb6ae5fb85d24754a60d4eea87e45.tar.gz yuzu-007ffbef1c3bb6ae5fb85d24754a60d4eea87e45.tar.bz2 yuzu-007ffbef1c3bb6ae5fb85d24754a60d4eea87e45.tar.lz yuzu-007ffbef1c3bb6ae5fb85d24754a60d4eea87e45.tar.xz yuzu-007ffbef1c3bb6ae5fb85d24754a60d4eea87e45.tar.zst yuzu-007ffbef1c3bb6ae5fb85d24754a60d4eea87e45.zip |
Diffstat (limited to 'src/video_core/renderer_opengl/gl_shader_cache.h')
-rw-r--r-- | src/video_core/renderer_opengl/gl_shader_cache.h | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/src/video_core/renderer_opengl/gl_shader_cache.h b/src/video_core/renderer_opengl/gl_shader_cache.h index 09bd0761d..59bcb14e8 100644 --- a/src/video_core/renderer_opengl/gl_shader_cache.h +++ b/src/video_core/renderer_opengl/gl_shader_cache.h @@ -6,6 +6,7 @@ #include <array> #include <atomic> +#include <bitset> #include <memory> #include <set> #include <tuple> @@ -67,8 +68,7 @@ public: } /// Gets the GL program handle for the shader - std::tuple<GLuint, BaseBindings> GetProgramHandle(GLenum primitive_mode, - BaseBindings base_bindings); + std::tuple<GLuint, BaseBindings> GetProgramHandle(const ProgramVariant& variant); private: // Geometry programs. These are needed because GLSL needs an input topology but it's not @@ -82,15 +82,14 @@ private: CachedProgram triangles_adjacency; }; - GLuint GetGeometryShader(GLenum primitive_mode, BaseBindings base_bindings); + GLuint GetGeometryShader(const ProgramVariant& variant); /// Generates a geometry shader or returns one that already exists. - GLuint LazyGeometryProgram(CachedProgram& target_program, BaseBindings base_bindings, - GLenum primitive_mode); + GLuint LazyGeometryProgram(CachedProgram& target_program, const ProgramVariant& variant); - CachedProgram TryLoadProgram(GLenum primitive_mode, BaseBindings base_bindings) const; + CachedProgram TryLoadProgram(const ProgramVariant& variant) const; - ShaderDiskCacheUsage GetUsage(GLenum primitive_mode, BaseBindings base_bindings) const; + ShaderDiskCacheUsage GetUsage(const ProgramVariant& variant) const; u8* host_ptr{}; VAddr cpu_addr{}; @@ -104,8 +103,8 @@ private: std::string code; - std::unordered_map<BaseBindings, CachedProgram> programs; - std::unordered_map<BaseBindings, GeometryPrograms> geometry_programs; + std::unordered_map<ProgramVariant, CachedProgram> programs; + std::unordered_map<ProgramVariant, GeometryPrograms> geometry_programs; std::unordered_map<u32, GLuint> cbuf_resource_cache; std::unordered_map<u32, GLuint> gmem_resource_cache; |