diff options
Diffstat (limited to 'intern/cycles/hydra/render_buffer.cpp')
-rw-r--r-- | intern/cycles/hydra/render_buffer.cpp | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/intern/cycles/hydra/render_buffer.cpp b/intern/cycles/hydra/render_buffer.cpp index 4867def0624..4d8b21d1e61 100644 --- a/intern/cycles/hydra/render_buffer.cpp +++ b/intern/cycles/hydra/render_buffer.cpp @@ -35,7 +35,7 @@ bool HdCyclesRenderBuffer::Allocate(const GfVec3i &dimensions, HdFormat format, return false; } - const size_t oldSize = _data.size(); + const size_t oldSize = _dataSize; const size_t newSize = dimensions[0] * dimensions[1] * HdDataSizeOfFormat(format); if (oldSize == newSize) { return true; @@ -49,8 +49,8 @@ bool HdCyclesRenderBuffer::Allocate(const GfVec3i &dimensions, HdFormat format, _width = dimensions[0]; _height = dimensions[1]; _format = format; - - _data.resize(newSize); + _dataSize = newSize; + _resourceUsed = false; return true; } @@ -63,6 +63,7 @@ void HdCyclesRenderBuffer::_Deallocate() _data.clear(); _data.shrink_to_fit(); + _dataSize = 0; _resource = VtValue(); } @@ -74,6 +75,10 @@ void *HdCyclesRenderBuffer::Map() return nullptr; } + if (_data.size() != _dataSize) { + _data.resize(_dataSize); + } + ++_mapped; return _data.data(); @@ -103,10 +108,17 @@ void HdCyclesRenderBuffer::SetConverged(bool converged) _converged = converged; } +bool HdCyclesRenderBuffer::IsResourceUsed() const +{ + return _resourceUsed; +} + VtValue HdCyclesRenderBuffer::GetResource(bool multiSampled) const { TF_UNUSED(multiSampled); + _resourceUsed = true; + return _resource; } |