diff options
author | FernandoS27 <fsahmkow27@gmail.com> | 2021-11-17 01:40:49 +0100 |
---|---|---|
committer | Fernando Sahmkow <fsahmkow27@gmail.com> | 2021-11-17 01:45:50 +0100 |
commit | 1128cc35b97b70bd597e353a11ca3ec22784a58a (patch) | |
tree | c7e5f0099c7b3d6c49b934ee55e342680ae14561 | |
parent | TextureCache: Fix OGL cleaning (diff) | |
download | yuzu-1128cc35b97b70bd597e353a11ca3ec22784a58a.tar yuzu-1128cc35b97b70bd597e353a11ca3ec22784a58a.tar.gz yuzu-1128cc35b97b70bd597e353a11ca3ec22784a58a.tar.bz2 yuzu-1128cc35b97b70bd597e353a11ca3ec22784a58a.tar.lz yuzu-1128cc35b97b70bd597e353a11ca3ec22784a58a.tar.xz yuzu-1128cc35b97b70bd597e353a11ca3ec22784a58a.tar.zst yuzu-1128cc35b97b70bd597e353a11ca3ec22784a58a.zip |
-rw-r--r-- | src/video_core/renderer_opengl/gl_texture_cache.cpp | 12 | ||||
-rw-r--r-- | src/video_core/renderer_opengl/gl_texture_cache.h | 4 |
2 files changed, 14 insertions, 2 deletions
diff --git a/src/video_core/renderer_opengl/gl_texture_cache.cpp b/src/video_core/renderer_opengl/gl_texture_cache.cpp index 30dfcfa6a..2f7d98d8b 100644 --- a/src/video_core/renderer_opengl/gl_texture_cache.cpp +++ b/src/video_core/renderer_opengl/gl_texture_cache.cpp @@ -9,8 +9,8 @@ #include <glad/glad.h> +#include "common/literals.h" #include "common/settings.h" - #include "video_core/renderer_opengl/gl_device.h" #include "video_core/renderer_opengl/gl_shader_manager.h" #include "video_core/renderer_opengl/gl_state_tracker.h" @@ -42,6 +42,7 @@ using VideoCore::Surface::IsPixelFormatSRGB; using VideoCore::Surface::MaxPixelFormat; using VideoCore::Surface::PixelFormat; using VideoCore::Surface::SurfaceType; +using namespace Common::Literals; struct CopyOrigin { GLint level; @@ -496,6 +497,15 @@ ImageBufferMap TextureCacheRuntime::DownloadStagingBuffer(size_t size) { return download_buffers.RequestMap(size, false); } +u64 TextureCacheRuntime::GetDeviceLocalMemory() const { + if (GLAD_GL_NVX_gpu_memory_info) { + GLint cur_avail_mem_kb = 0; + glGetIntegerv(GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX, &cur_avail_mem_kb); + return static_cast<u64>(cur_avail_mem_kb) * 1_KiB; + } + return 2_GiB; // Return minimum requirements +} + void TextureCacheRuntime::CopyImage(Image& dst_image, Image& src_image, std::span<const ImageCopy> copies) { const GLuint dst_name = dst_image.Handle(); diff --git a/src/video_core/renderer_opengl/gl_texture_cache.h b/src/video_core/renderer_opengl/gl_texture_cache.h index a717cf8c8..1bb762568 100644 --- a/src/video_core/renderer_opengl/gl_texture_cache.h +++ b/src/video_core/renderer_opengl/gl_texture_cache.h @@ -82,6 +82,8 @@ public: ImageBufferMap DownloadStagingBuffer(size_t size); + u64 GetDeviceLocalMemory() const; + void CopyImage(Image& dst, Image& src, std::span<const VideoCommon::ImageCopy> copies); void ConvertImage(Framebuffer* dst, ImageView& dst_view, ImageView& src_view, bool rescaled) { @@ -333,7 +335,7 @@ struct TextureCacheParams { static constexpr bool ENABLE_VALIDATION = true; static constexpr bool FRAMEBUFFER_BLITS = true; static constexpr bool HAS_EMULATED_COPIES = true; - static constexpr bool HAS_DEVICE_MEMORY_INFO = false; + static constexpr bool HAS_DEVICE_MEMORY_INFO = true; using Runtime = OpenGL::TextureCacheRuntime; using Image = OpenGL::Image; |