summaryrefslogtreecommitdiff
path: root/src/video_core/renderer_opengl
diff options
context:
space:
mode:
authorGravatar Ameer J2023-08-13 23:17:28 -0400
committerGravatar Ameer J2023-08-13 23:17:59 -0500
commitd1c878fb41324614b4f09026ebb3336432fbb559 (patch)
tree42345e00adfddf6b42810ced27a32dec89e9ac20 /src/video_core/renderer_opengl
parentgl_buffer_cache: Enable async downloads (diff)
downloadyuzu-d1c878fb41324614b4f09026ebb3336432fbb559.tar.gz
yuzu-d1c878fb41324614b4f09026ebb3336432fbb559.tar.xz
yuzu-d1c878fb41324614b4f09026ebb3336432fbb559.zip
gl_texture_cache: Enable async downloads
Diffstat (limited to 'src/video_core/renderer_opengl')
-rw-r--r--src/video_core/renderer_opengl/gl_buffer_cache.cpp2
-rw-r--r--src/video_core/renderer_opengl/gl_staging_buffer_pool.cpp5
-rw-r--r--src/video_core/renderer_opengl/gl_staging_buffer_pool.h2
-rw-r--r--src/video_core/renderer_opengl/gl_texture_cache.cpp8
-rw-r--r--src/video_core/renderer_opengl/gl_texture_cache.h8
5 files changed, 16 insertions, 9 deletions
diff --git a/src/video_core/renderer_opengl/gl_buffer_cache.cpp b/src/video_core/renderer_opengl/gl_buffer_cache.cpp
index 9d9c6b9da..d1284e62f 100644
--- a/src/video_core/renderer_opengl/gl_buffer_cache.cpp
+++ b/src/video_core/renderer_opengl/gl_buffer_cache.cpp
@@ -151,7 +151,7 @@ StagingBufferMap BufferCacheRuntime::DownloadStagingBuffer(size_t size, bool def
151} 151}
152 152
153void BufferCacheRuntime::FreeDeferredStagingBuffer(StagingBufferMap& buffer) { 153void BufferCacheRuntime::FreeDeferredStagingBuffer(StagingBufferMap& buffer) {
154 staging_buffer_pool.FreeDeferredStagingBuffer(buffer.index); 154 staging_buffer_pool.FreeDeferredStagingBuffer(buffer);
155} 155}
156 156
157u64 BufferCacheRuntime::GetDeviceMemoryUsage() const { 157u64 BufferCacheRuntime::GetDeviceMemoryUsage() const {
diff --git a/src/video_core/renderer_opengl/gl_staging_buffer_pool.cpp b/src/video_core/renderer_opengl/gl_staging_buffer_pool.cpp
index edd0746dc..cadad6507 100644
--- a/src/video_core/renderer_opengl/gl_staging_buffer_pool.cpp
+++ b/src/video_core/renderer_opengl/gl_staging_buffer_pool.cpp
@@ -45,6 +45,7 @@ StagingBufferMap StagingBuffers::RequestMap(size_t requested_size, bool insert_f
45} 45}
46 46
47void StagingBuffers::FreeDeferredStagingBuffer(size_t index) { 47void StagingBuffers::FreeDeferredStagingBuffer(size_t index) {
48 ASSERT(allocs[index].deferred);
48 allocs[index].deferred = false; 49 allocs[index].deferred = false;
49} 50}
50 51
@@ -152,8 +153,8 @@ StagingBufferMap StagingBufferPool::RequestDownloadBuffer(size_t size, bool defe
152 return download_buffers.RequestMap(size, false, deferred); 153 return download_buffers.RequestMap(size, false, deferred);
153} 154}
154 155
155void StagingBufferPool::FreeDeferredStagingBuffer(size_t index) { 156void StagingBufferPool::FreeDeferredStagingBuffer(StagingBufferMap& buffer) {
156 download_buffers.FreeDeferredStagingBuffer(index); 157 download_buffers.FreeDeferredStagingBuffer(buffer.index);
157} 158}
158 159
159} // namespace OpenGL 160} // namespace OpenGL
diff --git a/src/video_core/renderer_opengl/gl_staging_buffer_pool.h b/src/video_core/renderer_opengl/gl_staging_buffer_pool.h
index 598ddc172..07a56b4d2 100644
--- a/src/video_core/renderer_opengl/gl_staging_buffer_pool.h
+++ b/src/video_core/renderer_opengl/gl_staging_buffer_pool.h
@@ -93,7 +93,7 @@ public:
93 93
94 StagingBufferMap RequestUploadBuffer(size_t size); 94 StagingBufferMap RequestUploadBuffer(size_t size);
95 StagingBufferMap RequestDownloadBuffer(size_t size, bool deferred = false); 95 StagingBufferMap RequestDownloadBuffer(size_t size, bool deferred = false);
96 void FreeDeferredStagingBuffer(size_t index); 96 void FreeDeferredStagingBuffer(StagingBufferMap& buffer);
97 97
98private: 98private:
99 StagingBuffers upload_buffers{GL_MAP_WRITE_BIT, GL_MAP_WRITE_BIT | GL_MAP_FLUSH_EXPLICIT_BIT}; 99 StagingBuffers upload_buffers{GL_MAP_WRITE_BIT, GL_MAP_WRITE_BIT | GL_MAP_FLUSH_EXPLICIT_BIT};
diff --git a/src/video_core/renderer_opengl/gl_texture_cache.cpp b/src/video_core/renderer_opengl/gl_texture_cache.cpp
index 512eef575..66a5ca03e 100644
--- a/src/video_core/renderer_opengl/gl_texture_cache.cpp
+++ b/src/video_core/renderer_opengl/gl_texture_cache.cpp
@@ -557,8 +557,12 @@ StagingBufferMap TextureCacheRuntime::UploadStagingBuffer(size_t size) {
557 return staging_buffer_pool.RequestUploadBuffer(size); 557 return staging_buffer_pool.RequestUploadBuffer(size);
558} 558}
559 559
560StagingBufferMap TextureCacheRuntime::DownloadStagingBuffer(size_t size) { 560StagingBufferMap TextureCacheRuntime::DownloadStagingBuffer(size_t size, bool deferred) {
561 return staging_buffer_pool.RequestDownloadBuffer(size); 561 return staging_buffer_pool.RequestDownloadBuffer(size, deferred);
562}
563
564void TextureCacheRuntime::FreeDeferredStagingBuffer(StagingBufferMap& buffer) {
565 staging_buffer_pool.FreeDeferredStagingBuffer(buffer);
562} 566}
563 567
564u64 TextureCacheRuntime::GetDeviceMemoryUsage() const { 568u64 TextureCacheRuntime::GetDeviceMemoryUsage() const {
diff --git a/src/video_core/renderer_opengl/gl_texture_cache.h b/src/video_core/renderer_opengl/gl_texture_cache.h
index e71b87e99..34870c81f 100644
--- a/src/video_core/renderer_opengl/gl_texture_cache.h
+++ b/src/video_core/renderer_opengl/gl_texture_cache.h
@@ -74,7 +74,9 @@ public:
74 74
75 StagingBufferMap UploadStagingBuffer(size_t size); 75 StagingBufferMap UploadStagingBuffer(size_t size);
76 76
77 StagingBufferMap DownloadStagingBuffer(size_t size); 77 StagingBufferMap DownloadStagingBuffer(size_t size, bool deferred = false);
78
79 void FreeDeferredStagingBuffer(StagingBufferMap& buffer);
78 80
79 u64 GetDeviceLocalMemory() const { 81 u64 GetDeviceLocalMemory() const {
80 return device_access_memory; 82 return device_access_memory;
@@ -359,7 +361,7 @@ struct TextureCacheParams {
359 static constexpr bool FRAMEBUFFER_BLITS = true; 361 static constexpr bool FRAMEBUFFER_BLITS = true;
360 static constexpr bool HAS_EMULATED_COPIES = true; 362 static constexpr bool HAS_EMULATED_COPIES = true;
361 static constexpr bool HAS_DEVICE_MEMORY_INFO = true; 363 static constexpr bool HAS_DEVICE_MEMORY_INFO = true;
362 static constexpr bool IMPLEMENTS_ASYNC_DOWNLOADS = false; 364 static constexpr bool IMPLEMENTS_ASYNC_DOWNLOADS = true;
363 365
364 using Runtime = OpenGL::TextureCacheRuntime; 366 using Runtime = OpenGL::TextureCacheRuntime;
365 using Image = OpenGL::Image; 367 using Image = OpenGL::Image;
@@ -367,7 +369,7 @@ struct TextureCacheParams {
367 using ImageView = OpenGL::ImageView; 369 using ImageView = OpenGL::ImageView;
368 using Sampler = OpenGL::Sampler; 370 using Sampler = OpenGL::Sampler;
369 using Framebuffer = OpenGL::Framebuffer; 371 using Framebuffer = OpenGL::Framebuffer;
370 using AsyncBuffer = u32; 372 using AsyncBuffer = OpenGL::StagingBufferMap;
371 using BufferType = GLuint; 373 using BufferType = GLuint;
372}; 374};
373 375