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