1 // Copyright 2020-2021 Intel Corporation
2 // SPDX-License-Identifier: BSD-3-Clause
3 
4 #pragma once
5 
6 // public
7 #include "../ispcrt.h"
8 // internal
9 #include "Kernel.h"
10 #include "Module.h"
11 #include "TaskQueue.h"
12 
13 namespace ispcrt {
14 namespace base {
15 
16 struct Device : public RefCounted {
17     Device() = default;
18 
19     virtual ~Device() = default;
20 
21     virtual MemoryView *newMemoryView(void *appMemory, size_t numBytes, bool shared) const = 0;
22 
23     virtual TaskQueue *newTaskQueue() const = 0;
24 
25     virtual Module *newModule(const char *moduleFile) const = 0;
26 
27     virtual Kernel *newKernel(const Module &module, const char *name) const = 0;
28 
29     virtual void *platformNativeHandle() const = 0;
30     virtual void *deviceNativeHandle() const = 0;
31     virtual void *contextNativeHandle() const = 0;
32 };
33 
34 } // namespace base
35 } // namespace ispcrt
36