blob: 5ab3ee01fc8ff0b2f87596bd1cb3e251a9bfb043 [file] [log] [blame]
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "impeller/core/buffer_view.h"
namespace impeller {
BufferView::BufferView() : buffer_(nullptr), raw_buffer_(nullptr), range_({}) {}
BufferView::BufferView(DeviceBuffer* buffer, Range range)
: buffer_(), raw_buffer_(buffer), range_(range) {}
BufferView::BufferView(std::shared_ptr<const DeviceBuffer> buffer, Range range)
: buffer_(std::move(buffer)), raw_buffer_(nullptr), range_(range) {}
const DeviceBuffer* BufferView::GetBuffer() const {
return raw_buffer_ ? raw_buffer_ : buffer_.get();
}
std::shared_ptr<const DeviceBuffer> BufferView::TakeBuffer() {
if (buffer_) {
raw_buffer_ = buffer_.get();
return std::move(buffer_);
} else {
return nullptr;
}
}
BufferView::operator bool() const {
return buffer_ || raw_buffer_;
}
} // namespace impeller