Files
compute-runtime/runtime/memory_manager/svm_memory_manager.h
Filip Hazubski 8b57d28116 clang-format: enable sorting includes
Include files are now grouped and sorted in following order:
1. Header file of the class the current file implements
2. Project files
3. Third party files
4. Standard library

Change-Id: If31af05652184169f7fee1d7ad08f1b2ed602cf0
Signed-off-by: Filip Hazubski <filip.hazubski@intel.com>
2019-02-27 11:50:07 +01:00

47 lines
1.1 KiB
C++

/*
* Copyright (C) 2017-2019 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#pragma once
#include "CL/cl.h"
#include <cstdint>
#include <map>
#include <mutex>
namespace OCLRT {
class Device;
class GraphicsAllocation;
class CommandStreamReceiver;
class MemoryManager;
class SVMAllocsManager {
public:
class MapBasedAllocationTracker {
public:
void insert(GraphicsAllocation &);
void remove(GraphicsAllocation &);
GraphicsAllocation *get(const void *);
size_t getNumAllocs() const { return allocs.size(); };
protected:
std::map<const void *, GraphicsAllocation *> allocs;
};
SVMAllocsManager(MemoryManager *memoryManager);
void *createSVMAlloc(size_t size, bool coherent, bool readOnly);
GraphicsAllocation *getSVMAlloc(const void *ptr);
void freeSVMAlloc(void *ptr);
size_t getNumAllocs() const { return SVMAllocs.getNumAllocs(); }
static bool memFlagIsReadOnly(cl_svm_mem_flags flags);
protected:
MapBasedAllocationTracker SVMAllocs;
MemoryManager *memoryManager;
std::mutex mtx;
};
} // namespace OCLRT