1 /* 2 * Copyright (C) 2018-2021 Intel Corporation 3 * 4 * SPDX-License-Identifier: MIT 5 * 6 */ 7 8 #pragma once 9 10 #include "opencl/source/api/cl_types.h" 11 #include "opencl/source/helpers/base_object.h" 12 13 //------------------------------------------------------------------------------ 14 // cl_intel_accelerator Class Stuff 15 //------------------------------------------------------------------------------ 16 17 namespace NEO { 18 19 class Context; 20 21 typedef struct TagAcceleratorObjParams { 22 cl_uint AcceleratorType; 23 cl_uint AcceleratorFlags; 24 } OCLRT_ACCELERATOR_OBJECT_PARAMS, *POCLRT_ACCELERATOR_OBJECT_PARAMS; 25 26 template <> 27 struct OpenCLObjectMapper<_cl_accelerator_intel> { 28 typedef class IntelAccelerator DerivedType; 29 }; 30 31 class IntelAccelerator : public BaseObject<_cl_accelerator_intel> { 32 public: 33 IntelAccelerator(Context *context, 34 cl_accelerator_type_intel typeId, 35 size_t descriptorSize, 36 const void *descriptor) : pContext(context), 37 typeId(typeId), 38 descriptorSize(descriptorSize), 39 pDescriptor(descriptor) {} 40 41 IntelAccelerator() {} 42 43 static const cl_ulong objectMagic = 0xC6D72FA2E81EA569ULL; 44 45 cl_accelerator_type_intel getTypeId() const { return typeId; } 46 47 size_t getDescriptorSize() const { return descriptorSize; } 48 49 const void *getDescriptor() const { return pDescriptor; } 50 51 cl_int getInfo(cl_accelerator_info_intel paramName, 52 size_t paramValueSize, 53 void *paramValue, 54 size_t *paramValueSizeRet) const; 55 56 protected: 57 Context *pContext = nullptr; 58 const cl_accelerator_type_intel typeId = -1; 59 const size_t descriptorSize = 0; 60 const void *pDescriptor = nullptr; 61 62 private: 63 }; 64 } // namespace NEO 65