@@ -99,15 +99,16 @@ std::tuple<Range, std::shared_ptr<DeviceBuffer>> HostBuffer::EmplaceInternal(
9999 DeviceBufferDescriptor desc;
100100 desc.size = length;
101101 desc.storage_mode = StorageMode::kHostVisible ;
102- auto device_buffer = allocator_->CreateBuffer (desc);
102+ std::shared_ptr<DeviceBuffer> device_buffer =
103+ allocator_->CreateBuffer (desc);
103104 if (!device_buffer) {
104105 return {};
105106 }
106107 if (cb) {
107108 cb (device_buffer->OnGetContents ());
108109 device_buffer->Flush (Range{0 , length});
109110 }
110- return std::make_tuple (Range{0 , length}, device_buffer);
111+ return std::make_tuple (Range{0 , length}, std::move ( device_buffer) );
111112 }
112113
113114 size_t padding = 0 ;
@@ -120,14 +121,14 @@ std::tuple<Range, std::shared_ptr<DeviceBuffer>> HostBuffer::EmplaceInternal(
120121 offset_ += padding;
121122 }
122123
123- auto current_buffer = GetCurrentBuffer ();
124+ const std::shared_ptr<DeviceBuffer>& current_buffer = GetCurrentBuffer ();
124125 auto contents = current_buffer->OnGetContents ();
125126 cb (contents + offset_);
126127 Range output_range (offset_, length);
127128 current_buffer->Flush (output_range);
128129
129130 offset_ += length;
130- return std::make_tuple (output_range, std::move ( current_buffer) );
131+ return std::make_tuple (output_range, current_buffer);
131132}
132133
133134std::tuple<Range, std::shared_ptr<DeviceBuffer>> HostBuffer::EmplaceInternal (
@@ -139,7 +140,8 @@ std::tuple<Range, std::shared_ptr<DeviceBuffer>> HostBuffer::EmplaceInternal(
139140 DeviceBufferDescriptor desc;
140141 desc.size = length;
141142 desc.storage_mode = StorageMode::kHostVisible ;
142- auto device_buffer = allocator_->CreateBuffer (desc);
143+ std::shared_ptr<DeviceBuffer> device_buffer =
144+ allocator_->CreateBuffer (desc);
143145 if (!device_buffer) {
144146 return {};
145147 }
@@ -149,7 +151,7 @@ std::tuple<Range, std::shared_ptr<DeviceBuffer>> HostBuffer::EmplaceInternal(
149151 return {};
150152 }
151153 }
152- return std::make_tuple (Range{0 , length}, device_buffer);
154+ return std::make_tuple (Range{0 , length}, std::move ( device_buffer) );
153155 }
154156
155157 auto old_length = GetLength ();
@@ -158,14 +160,14 @@ std::tuple<Range, std::shared_ptr<DeviceBuffer>> HostBuffer::EmplaceInternal(
158160 }
159161 old_length = GetLength ();
160162
161- auto current_buffer = GetCurrentBuffer ();
163+ const std::shared_ptr<DeviceBuffer>& current_buffer = GetCurrentBuffer ();
162164 auto contents = current_buffer->OnGetContents ();
163165 if (buffer) {
164166 ::memmove (contents + old_length, buffer, length);
165167 current_buffer->Flush (Range{old_length, length});
166168 }
167169 offset_ += length;
168- return std::make_tuple (Range{old_length, length}, std::move ( current_buffer) );
170+ return std::make_tuple (Range{old_length, length}, current_buffer);
169171}
170172
171173std::tuple<Range, std::shared_ptr<DeviceBuffer>>
@@ -186,6 +188,10 @@ HostBuffer::EmplaceInternal(const void* buffer, size_t length, size_t align) {
186188 return EmplaceInternal (buffer, length);
187189}
188190
191+ const std::shared_ptr<DeviceBuffer>& HostBuffer::GetCurrentBuffer () const {
192+ return device_buffers_[frame_index_][current_buffer_];
193+ }
194+
189195void HostBuffer::Reset () {
190196 // When resetting the host buffer state at the end of the frame, check if
191197 // there are any unused buffers and remove them.
0 commit comments