1 // Copyright (C) 2018 Intel Corporation
3 // SPDX-License-Identifier: Apache-2.0
6 #include "memory/memory_descriptor.hpp"
10 #include <util/zip_range.hpp>
15 MemoryDescriptor::MemoryDescriptor(size_t element_size,
16 const memory::DynMdSize& dims):
17 m_elementSize(element_size),
20 ASSERT(dims.dims_count() > 0);
21 ASSERT(element_size > 0);
24 MemoryDescriptor::~MemoryDescriptor()
28 void MemoryDescriptor::addListener(IMemoryAccessListener* listener)
30 m_accessor.addListener(listener);
33 void MemoryDescriptor::removeListener(IMemoryAccessListener* listener)
35 m_accessor.removeListener(listener);
38 MemoryDescriptor::AccessHandle MemoryDescriptor::access(const memory::DynMdSpan& span,
39 MemoryAccessType accessType)
41 return m_accessor.access(*this, span, accessType);
44 void MemoryDescriptor::commit(MemoryDescriptor::AccessHandle handle)
46 m_accessor.commit(handle);
49 const memory::DynMdSize& MemoryDescriptor::dimensions() const
54 std::size_t MemoryDescriptor::elementSize() const
59 void MemoryDescriptor::setExternalView(const memory::DynMdView<void>& view)
61 ASSERT(view.elementSize() == m_elementSize);
62 ASSERT(view.count() == m_dims.dims_count());
63 m_externalView = view;
64 m_accessor.setNewView(view);
67 memory::DynMdView<void> MemoryDescriptor::getExternalView() const
69 return m_externalView;