Better buffer updating

This commit is contained in:
Bradley Austin Davis 2016-07-29 14:29:41 -07:00 committed by Brad Davis
parent 274321de8a
commit a0cc6f8817
2 changed files with 3 additions and 5 deletions

View file

@ -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<uint8> 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);

View file

@ -264,7 +264,6 @@ class Buffer : public Resource {
public:
using Flag = PageManager::Flag;
struct Update {
Size size;
PageManager pages;
Sysmem::Operator updateOperator;
};