From a0cc6f88174e6424b9ba7c12bda99b4a98898054 Mon Sep 17 00:00:00 2001 From: Bradley Austin Davis Date: Fri, 29 Jul 2016 14:29:41 -0700 Subject: [PATCH] Better buffer updating --- libraries/gpu/src/gpu/Resource.cpp | 7 +++---- libraries/gpu/src/gpu/Resource.h | 1 - 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/libraries/gpu/src/gpu/Resource.cpp b/libraries/gpu/src/gpu/Resource.cpp index 4b33badeb8..b4e989ff12 100644 --- a/libraries/gpu/src/gpu/Resource.cpp +++ b/libraries/gpu/src/gpu/Resource.cpp @@ -283,7 +283,6 @@ void Buffer::markDirty(Size offset, Size bytes) { } void Buffer::applyUpdate(const Update& update) { - _renderSysmem.resize(update.size); _renderPages = update.pages; update.updateOperator(_renderSysmem); } @@ -296,7 +295,7 @@ Buffer::Update Buffer::getUpdate() const { Update result; result.pages = _pages; - result.size = _sysmem.getSize(); + Size bufferSize = _sysmem.getSize(); Size pageSize = _pages._pageSize; PageManager::Pages dirtyPages = _pages.getMarkedPages(); std::vector dirtyPageData; @@ -308,7 +307,8 @@ Buffer::Update Buffer::getUpdate() const { memcpy(dirtyPageData.data() + destOffset, _sysmem.readData() + sourceOffset, pageSize); } - result.updateOperator = [pageSize, dirtyPages, dirtyPageData](Sysmem& dest){ + result.updateOperator = [bufferSize, pageSize, dirtyPages, dirtyPageData](Sysmem& dest){ + dest.resize(bufferSize); for (Size i = 0; i < dirtyPages.size(); ++i) { Size page = dirtyPages[i]; Size sourceOffset = i * pageSize; @@ -319,7 +319,6 @@ Buffer::Update Buffer::getUpdate() const { return result; } - Buffer::Size Buffer::setData(Size size, const Byte* data) { resize(size); setSubData(0, size, data); diff --git a/libraries/gpu/src/gpu/Resource.h b/libraries/gpu/src/gpu/Resource.h index e02ff04d05..428a977113 100644 --- a/libraries/gpu/src/gpu/Resource.h +++ b/libraries/gpu/src/gpu/Resource.h @@ -264,7 +264,6 @@ class Buffer : public Resource { public: using Flag = PageManager::Flag; struct Update { - Size size; PageManager pages; Sysmem::Operator updateOperator; };