diff options
author | ReinUsesLisp <reinuseslisp@airmail.cc> | 2019-06-20 08:22:25 +0200 |
---|---|---|
committer | ReinUsesLisp <reinuseslisp@airmail.cc> | 2019-07-06 05:37:55 +0200 |
commit | 1fa21fa1927feecc63f0d81824ce4ea203f79fcc (patch) | |
tree | bff3e1dceea5a44d1698d7c88d6c61e3c9e06fee /src/video_core/renderer_opengl/utils.cpp | |
parent | buffer_cache: Implement a generic buffer cache (diff) | |
download | yuzu-1fa21fa1927feecc63f0d81824ce4ea203f79fcc.tar yuzu-1fa21fa1927feecc63f0d81824ce4ea203f79fcc.tar.gz yuzu-1fa21fa1927feecc63f0d81824ce4ea203f79fcc.tar.bz2 yuzu-1fa21fa1927feecc63f0d81824ce4ea203f79fcc.tar.lz yuzu-1fa21fa1927feecc63f0d81824ce4ea203f79fcc.tar.xz yuzu-1fa21fa1927feecc63f0d81824ce4ea203f79fcc.tar.zst yuzu-1fa21fa1927feecc63f0d81824ce4ea203f79fcc.zip |
Diffstat (limited to 'src/video_core/renderer_opengl/utils.cpp')
-rw-r--r-- | src/video_core/renderer_opengl/utils.cpp | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/video_core/renderer_opengl/utils.cpp b/src/video_core/renderer_opengl/utils.cpp index 68c36988d..22eefa1d7 100644 --- a/src/video_core/renderer_opengl/utils.cpp +++ b/src/video_core/renderer_opengl/utils.cpp @@ -19,23 +19,30 @@ BindBuffersRangePushBuffer::~BindBuffersRangePushBuffer() = default; void BindBuffersRangePushBuffer::Setup(GLuint first_) { first = first_; - buffers.clear(); + buffer_pointers.clear(); offsets.clear(); sizes.clear(); } -void BindBuffersRangePushBuffer::Push(GLuint buffer, GLintptr offset, GLsizeiptr size) { - buffers.push_back(buffer); +void BindBuffersRangePushBuffer::Push(const GLuint* buffer, GLintptr offset, GLsizeiptr size) { + buffer_pointers.push_back(buffer); offsets.push_back(offset); sizes.push_back(size); } -void BindBuffersRangePushBuffer::Bind() const { - const std::size_t count{buffers.size()}; +void BindBuffersRangePushBuffer::Bind() { + // Ensure sizes are valid. + const std::size_t count{buffer_pointers.size()}; DEBUG_ASSERT(count == offsets.size() && count == sizes.size()); if (count == 0) { return; } + + // Dereference buffers. + buffers.resize(count); + std::transform(buffer_pointers.begin(), buffer_pointers.end(), buffers.begin(), + [](const GLuint* pointer) { return *pointer; }); + glBindBuffersRange(target, first, static_cast<GLsizei>(count), buffers.data(), offsets.data(), sizes.data()); } |