summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_opengl/gl_staging_buffer_pool.h
diff options
context:
space:
mode:
authorAmeer J <52414509+ameerj@users.noreply.github.com>2023-08-14 03:39:50 +0200
committerAmeer J <52414509+ameerj@users.noreply.github.com>2023-08-14 06:17:54 +0200
commit9b112107e25ad9c348b1759283774299b97b464a (patch)
treeab39950d3e27202f62810000b5e7b6a3a2f26896 /src/video_core/renderer_opengl/gl_staging_buffer_pool.h
parentgl_staging_buffer_pool: Refactor allocation variables into a struct (diff)
downloadyuzu-9b112107e25ad9c348b1759283774299b97b464a.tar
yuzu-9b112107e25ad9c348b1759283774299b97b464a.tar.gz
yuzu-9b112107e25ad9c348b1759283774299b97b464a.tar.bz2
yuzu-9b112107e25ad9c348b1759283774299b97b464a.tar.lz
yuzu-9b112107e25ad9c348b1759283774299b97b464a.tar.xz
yuzu-9b112107e25ad9c348b1759283774299b97b464a.tar.zst
yuzu-9b112107e25ad9c348b1759283774299b97b464a.zip
Diffstat (limited to 'src/video_core/renderer_opengl/gl_staging_buffer_pool.h')
-rw-r--r--src/video_core/renderer_opengl/gl_staging_buffer_pool.h9
1 files changed, 7 insertions, 2 deletions
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 5b229d0b6..598ddc172 100644
--- a/src/video_core/renderer_opengl/gl_staging_buffer_pool.h
+++ b/src/video_core/renderer_opengl/gl_staging_buffer_pool.h
@@ -26,13 +26,16 @@ struct StagingBufferMap {
size_t offset = 0;
OGLSync* sync;
GLuint buffer;
+ size_t index;
};
struct StagingBuffers {
explicit StagingBuffers(GLenum storage_flags_, GLenum map_flags_);
~StagingBuffers();
- StagingBufferMap RequestMap(size_t requested_size, bool insert_fence);
+ StagingBufferMap RequestMap(size_t requested_size, bool insert_fence, bool deferred = false);
+
+ void FreeDeferredStagingBuffer(size_t index);
size_t RequestBuffer(size_t requested_size);
@@ -44,6 +47,7 @@ struct StagingBuffers {
u8* map;
size_t size;
size_t sync_index;
+ bool deferred;
};
std::vector<StagingBufferAlloc> allocs;
GLenum storage_flags;
@@ -88,7 +92,8 @@ public:
~StagingBufferPool() = default;
StagingBufferMap RequestUploadBuffer(size_t size);
- StagingBufferMap RequestDownloadBuffer(size_t size);
+ StagingBufferMap RequestDownloadBuffer(size_t size, bool deferred = false);
+ void FreeDeferredStagingBuffer(size_t index);
private:
StagingBuffers upload_buffers{GL_MAP_WRITE_BIT, GL_MAP_WRITE_BIT | GL_MAP_FLUSH_EXPLICIT_BIT};