diff options
author | Ameer J <52414509+ameerj@users.noreply.github.com> | 2023-08-14 03:39:50 +0200 |
---|---|---|
committer | Ameer J <52414509+ameerj@users.noreply.github.com> | 2023-08-14 06:17:54 +0200 |
commit | 9b112107e25ad9c348b1759283774299b97b464a (patch) | |
tree | ab39950d3e27202f62810000b5e7b6a3a2f26896 /src/video_core/renderer_opengl/gl_staging_buffer_pool.h | |
parent | gl_staging_buffer_pool: Refactor allocation variables into a struct (diff) | |
download | yuzu-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.h | 9 |
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}; |