blob: 90f49ec8df64d20f963b1917ba18127f7a99da40 [file] [log] [blame]
// Copyright 2016 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.
#ifndef GPU_MAPPING_H
#define GPU_MAPPING_H
#include "magma_util/macros.h"
#include "platform_bus_mapper.h"
#include "types.h"
#include <memory>
class AddressSpace;
class MsdIntelBuffer;
class GpuMapping {
public:
GpuMapping(std::shared_ptr<AddressSpace> address_space, std::shared_ptr<MsdIntelBuffer> buffer,
uint64_t offset, uint64_t length, gpu_addr_t gpu_addr,
std::unique_ptr<magma::PlatformBusMapper::BusMapping> bus_mapping);
~GpuMapping();
MsdIntelBuffer* buffer() { return buffer_.get(); }
gpu_addr_t gpu_addr()
{
DASSERT(!address_space_.expired());
return gpu_addr_;
}
std::weak_ptr<AddressSpace> address_space() { return address_space_; }
uint64_t offset() { return offset_; }
uint64_t length() { return length_; }
private:
std::weak_ptr<AddressSpace> address_space_;
std::shared_ptr<MsdIntelBuffer> buffer_;
uint64_t offset_;
uint64_t length_;
gpu_addr_t gpu_addr_;
std::unique_ptr<magma::PlatformBusMapper::BusMapping> bus_mapping_;
};
#endif // GPU_MAPPING_H