diff options
author | ReinUsesLisp <reinuseslisp@airmail.cc> | 2019-01-08 21:30:10 +0100 |
---|---|---|
committer | ReinUsesLisp <reinuseslisp@airmail.cc> | 2019-01-08 21:47:45 +0100 |
commit | 3121408a905024372cf65b964c0178d447770905 (patch) | |
tree | 502fdead6b453ad85c816b14c38b34ce8c8b83a8 /src/video_core/renderer_opengl/gl_global_cache.h | |
parent | Merge pull request #1999 from ReinUsesLisp/dirty-shader (diff) | |
download | yuzu-3121408a905024372cf65b964c0178d447770905.tar yuzu-3121408a905024372cf65b964c0178d447770905.tar.gz yuzu-3121408a905024372cf65b964c0178d447770905.tar.bz2 yuzu-3121408a905024372cf65b964c0178d447770905.tar.lz yuzu-3121408a905024372cf65b964c0178d447770905.tar.xz yuzu-3121408a905024372cf65b964c0178d447770905.tar.zst yuzu-3121408a905024372cf65b964c0178d447770905.zip |
Diffstat (limited to 'src/video_core/renderer_opengl/gl_global_cache.h')
-rw-r--r-- | src/video_core/renderer_opengl/gl_global_cache.h | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/src/video_core/renderer_opengl/gl_global_cache.h b/src/video_core/renderer_opengl/gl_global_cache.h new file mode 100644 index 000000000..406a735bc --- /dev/null +++ b/src/video_core/renderer_opengl/gl_global_cache.h @@ -0,0 +1,60 @@ +// Copyright 2018 yuzu Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include <memory> +#include <glad/glad.h> + +#include "common/common_types.h" +#include "video_core/rasterizer_cache.h" +#include "video_core/renderer_opengl/gl_resource_manager.h" + +namespace OpenGL { + +namespace GLShader { +class GlobalMemoryEntry; +} // namespace GLShader + +class RasterizerOpenGL; +class CachedGlobalRegion; +using GlobalRegion = std::shared_ptr<CachedGlobalRegion>; + +class CachedGlobalRegion final : public RasterizerCacheObject { +public: + explicit CachedGlobalRegion(VAddr addr, u32 size); + + /// Gets the address of the shader in guest memory, required for cache management + VAddr GetAddr() const { + return addr; + } + + /// Gets the size of the shader in guest memory, required for cache management + std::size_t GetSizeInBytes() const { + return size; + } + + /// Gets the GL program handle for the buffer + GLuint GetBufferHandle() const { + return buffer.handle; + } + + // TODO(Rodrigo): When global memory is written (STG), implement flushing + void Flush() override { + UNIMPLEMENTED(); + } + +private: + VAddr addr{}; + u32 size{}; + + OGLBuffer buffer; +}; + +class GlobalRegionCacheOpenGL final : public RasterizerCache<GlobalRegion> { +public: + explicit GlobalRegionCacheOpenGL(RasterizerOpenGL& rasterizer); +}; + +} // namespace OpenGL |