summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_opengl/gl_buffer_cache.cpp
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2019-02-24 06:15:35 +0100
committerbunnei <bunneidev@gmail.com>2019-03-16 05:38:48 +0100
commit574e89d924b484b846f4eb522c5a62af9d63e801 (patch)
tree24b2d6e21b9e3aff77f2242eb94ec49a2b8e67c9 /src/video_core/renderer_opengl/gl_buffer_cache.cpp
parentMerge pull request #2237 from bunnei/cache-host-addr (diff)
downloadyuzu-574e89d924b484b846f4eb522c5a62af9d63e801.tar
yuzu-574e89d924b484b846f4eb522c5a62af9d63e801.tar.gz
yuzu-574e89d924b484b846f4eb522c5a62af9d63e801.tar.bz2
yuzu-574e89d924b484b846f4eb522c5a62af9d63e801.tar.lz
yuzu-574e89d924b484b846f4eb522c5a62af9d63e801.tar.xz
yuzu-574e89d924b484b846f4eb522c5a62af9d63e801.tar.zst
yuzu-574e89d924b484b846f4eb522c5a62af9d63e801.zip
Diffstat (limited to '')
-rw-r--r--src/video_core/renderer_opengl/gl_buffer_cache.cpp8
1 files changed, 3 insertions, 5 deletions
diff --git a/src/video_core/renderer_opengl/gl_buffer_cache.cpp b/src/video_core/renderer_opengl/gl_buffer_cache.cpp
index a4eea61a6..5048ed6ce 100644
--- a/src/video_core/renderer_opengl/gl_buffer_cache.cpp
+++ b/src/video_core/renderer_opengl/gl_buffer_cache.cpp
@@ -24,14 +24,12 @@ OGLBufferCache::OGLBufferCache(RasterizerOpenGL& rasterizer, std::size_t size)
GLintptr OGLBufferCache::UploadMemory(Tegra::GPUVAddr gpu_addr, std::size_t size,
std::size_t alignment, bool cache) {
auto& memory_manager = Core::System::GetInstance().GPU().MemoryManager();
- const auto cpu_addr{memory_manager.GpuToCpuAddress(gpu_addr)};
- ASSERT_MSG(cpu_addr, "Invalid GPU address");
// Cache management is a big overhead, so only cache entries with a given size.
// TODO: Figure out which size is the best for given games.
cache &= size >= 2048;
- const auto& host_ptr{Memory::GetPointer(*cpu_addr)};
+ const auto& host_ptr{memory_manager.GetPointer(gpu_addr)};
if (cache) {
auto entry = TryGet(host_ptr);
if (entry) {
@@ -54,8 +52,8 @@ GLintptr OGLBufferCache::UploadMemory(Tegra::GPUVAddr gpu_addr, std::size_t size
buffer_offset += size;
if (cache) {
- auto entry = std::make_shared<CachedBufferEntry>(*cpu_addr, size, uploaded_offset,
- alignment, host_ptr);
+ auto entry = std::make_shared<CachedBufferEntry>(
+ *memory_manager.GpuToCpuAddress(gpu_addr), size, uploaded_offset, alignment, host_ptr);
Register(entry);
}