blob: 6942c53acd085f7597eeb4cf99e2e599b0b4ce1d [file] [log] [blame]
// 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);
}