Files
UnrealEngine/Engine/Source/ThirdParty/Intel/ISPC/ispc-1.24.0/ispcrt/detail/Device.h
2025-05-18 13:04:45 +08:00

52 lines
1.5 KiB
C++

// Copyright 2020-2023 Intel Corporation
// SPDX-License-Identifier: BSD-3-Clause
#pragma once
// public
#include "../ispcrt.h"
// internal
#include "CommandQueue.h"
#include "Kernel.h"
#include "Module.h"
#include "ModuleOptions.h"
#include "TaskQueue.h"
namespace ispcrt {
namespace base {
struct Device : public RefCounted {
Device() = default;
virtual ~Device() = default;
virtual MemoryView *newMemoryView(void *appMemory, size_t numBytes,
const ISPCRTNewMemoryViewFlags *flags) const = 0;
virtual CommandQueue *newCommandQueue(uint32_t ordinal) const = 0;
virtual TaskQueue *newTaskQueue() const = 0;
virtual ModuleOptions *newModuleOptions() const = 0;
virtual ModuleOptions *newModuleOptions(ISPCRTModuleType moduleType, bool libraryCompilation,
uint32_t stackSize) const = 0;
virtual Module *newModule(const char *moduleFile, const ModuleOptions &opts) const = 0;
virtual void dynamicLinkModules(Module **modules, uint32_t numModules) const = 0;
virtual Module *staticLinkModules(Module **modules, uint32_t numModules) const = 0;
virtual Kernel *newKernel(const Module &module, const char *name) const = 0;
virtual void *platformNativeHandle() const = 0;
virtual void *deviceNativeHandle() const = 0;
virtual void *contextNativeHandle() const = 0;
virtual ISPCRTDeviceType getType() const = 0;
virtual ISPCRTAllocationType getMemAllocType(void *appMemory) const = 0;
};
} // namespace base
} // namespace ispcrt