| // Copyright 2019 The Fuchsia 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 "msd_img_buffer.h" |
| |
| std::unique_ptr<MsdImgBuffer> |
| MsdImgBuffer::Import(uint32_t handle) |
| { |
| auto platform_buf = magma::PlatformBuffer::Import(handle); |
| if (!platform_buf) |
| return DRETP(nullptr, "MsdImgBuffer::Create: Could not create platform buffer from token"); |
| |
| return std::unique_ptr<MsdImgBuffer>(new MsdImgBuffer(std::move(platform_buf))); |
| } |
| |
| std::unique_ptr<MsdImgBuffer> |
| MsdImgBuffer::Create(uint64_t size, const char* name) |
| { |
| auto platform_buf = magma::PlatformBuffer::Create(size, name); |
| if (!platform_buf) |
| return DRETP(nullptr, "MsdImgBuffer::Create: Could not create platform buffer from size"); |
| |
| return std::unique_ptr<MsdImgBuffer>(new MsdImgBuffer(std::move(platform_buf))); |
| } |
| |
| MsdImgBuffer::MsdImgBuffer(std::unique_ptr<magma::PlatformBuffer> platform_buf) : platform_buf_(std::move(platform_buf)) {} |
| |
| MsdImgBuffer::~MsdImgBuffer() {} |
| |
| |
| ////////////////////////////////////////////////////////////////////////////// |
| |
| msd_buffer_t* |
| msd_buffer_import(uint32_t handle) |
| { |
| auto buffer = MsdImgBuffer::Import(handle); |
| if (!buffer) |
| return DRETP(nullptr, "msd_buffer_import failed"); |
| return new MsdImgAbiBuffer(std::move(buffer)); |
| } |
| |
| void |
| msd_buffer_destroy(msd_buffer_t* buf) |
| { |
| delete MsdImgAbiBuffer::cast(buf); |
| } |