1 /*
2 * Copyright (C) 2020-2021 Intel Corporation
3 *
4 * SPDX-License-Identifier: MIT
5 *
6 */
7
8 #include "level_zero/core/source/context/context.h"
9 #include "level_zero/core/source/driver/driver_handle.h"
10 #include <level_zero/ze_api.h>
11
12 ZE_APIEXPORT ze_result_t ZE_APICALL
zeContextCreate(ze_driver_handle_t hDriver,const ze_context_desc_t * desc,ze_context_handle_t * phContext)13 zeContextCreate(
14 ze_driver_handle_t hDriver,
15 const ze_context_desc_t *desc,
16 ze_context_handle_t *phContext) {
17 return L0::DriverHandle::fromHandle(hDriver)->createContext(desc, 0u, nullptr, phContext);
18 }
19
20 ZE_APIEXPORT ze_result_t ZE_APICALL
zeContextCreateEx(ze_driver_handle_t hDriver,const ze_context_desc_t * desc,uint32_t numDevices,ze_device_handle_t * phDevices,ze_context_handle_t * phContext)21 zeContextCreateEx(
22 ze_driver_handle_t hDriver,
23 const ze_context_desc_t *desc,
24 uint32_t numDevices,
25 ze_device_handle_t *phDevices,
26 ze_context_handle_t *phContext) {
27 return L0::DriverHandle::fromHandle(hDriver)->createContext(desc, numDevices, phDevices, phContext);
28 }
29
30 ZE_APIEXPORT ze_result_t ZE_APICALL
zeContextDestroy(ze_context_handle_t hContext)31 zeContextDestroy(ze_context_handle_t hContext) {
32 return L0::Context::fromHandle(hContext)->destroy();
33 }
34
35 ZE_APIEXPORT ze_result_t ZE_APICALL
zeContextGetStatus(ze_context_handle_t hContext)36 zeContextGetStatus(ze_context_handle_t hContext) {
37 return L0::Context::fromHandle(hContext)->getStatus();
38 }
39
40 ZE_APIEXPORT ze_result_t ZE_APICALL
zeVirtualMemReserve(ze_context_handle_t hContext,const void * pStart,size_t size,void ** pptr)41 zeVirtualMemReserve(
42 ze_context_handle_t hContext,
43 const void *pStart,
44 size_t size,
45 void **pptr) {
46 return L0::Context::fromHandle(hContext)->reserveVirtualMem(pStart, size, pptr);
47 }
48
49 ZE_APIEXPORT ze_result_t ZE_APICALL
zeVirtualMemFree(ze_context_handle_t hContext,const void * ptr,size_t size)50 zeVirtualMemFree(
51 ze_context_handle_t hContext,
52 const void *ptr,
53 size_t size) {
54 return L0::Context::fromHandle(hContext)->freeVirtualMem(ptr, size);
55 }
56
57 ZE_APIEXPORT ze_result_t ZE_APICALL
zeVirtualMemQueryPageSize(ze_context_handle_t hContext,ze_device_handle_t hDevice,size_t size,size_t * pagesize)58 zeVirtualMemQueryPageSize(
59 ze_context_handle_t hContext,
60 ze_device_handle_t hDevice,
61 size_t size,
62 size_t *pagesize) {
63 return L0::Context::fromHandle(hContext)->queryVirtualMemPageSize(hDevice, size, pagesize);
64 }
65
66 ZE_APIEXPORT ze_result_t ZE_APICALL
zePhysicalMemCreate(ze_context_handle_t hContext,ze_device_handle_t hDevice,ze_physical_mem_desc_t * desc,ze_physical_mem_handle_t * phPhysicalMemory)67 zePhysicalMemCreate(
68 ze_context_handle_t hContext,
69 ze_device_handle_t hDevice,
70 ze_physical_mem_desc_t *desc,
71 ze_physical_mem_handle_t *phPhysicalMemory) {
72 return L0::Context::fromHandle(hContext)->createPhysicalMem(hDevice, desc, phPhysicalMemory);
73 }
74
75 ZE_APIEXPORT ze_result_t ZE_APICALL
zePhysicalMemDestroy(ze_context_handle_t hContext,ze_physical_mem_handle_t hPhysicalMemory)76 zePhysicalMemDestroy(
77 ze_context_handle_t hContext,
78 ze_physical_mem_handle_t hPhysicalMemory) {
79 return L0::Context::fromHandle(hContext)->destroyPhysicalMem(hPhysicalMemory);
80 }
81
82 ZE_APIEXPORT ze_result_t ZE_APICALL
zeVirtualMemMap(ze_context_handle_t hContext,const void * ptr,size_t size,ze_physical_mem_handle_t hPhysicalMemory,size_t offset,ze_memory_access_attribute_t access)83 zeVirtualMemMap(
84 ze_context_handle_t hContext,
85 const void *ptr,
86 size_t size,
87 ze_physical_mem_handle_t hPhysicalMemory,
88 size_t offset,
89 ze_memory_access_attribute_t access) {
90 return L0::Context::fromHandle(hContext)->mapVirtualMem(ptr, size, hPhysicalMemory, offset, access);
91 }
92
93 ZE_APIEXPORT ze_result_t ZE_APICALL
zeVirtualMemUnmap(ze_context_handle_t hContext,const void * ptr,size_t size)94 zeVirtualMemUnmap(
95 ze_context_handle_t hContext,
96 const void *ptr,
97 size_t size) {
98 return L0::Context::fromHandle(hContext)->unMapVirtualMem(ptr, size);
99 }
100
101 ZE_APIEXPORT ze_result_t ZE_APICALL
zeVirtualMemSetAccessAttribute(ze_context_handle_t hContext,const void * ptr,size_t size,ze_memory_access_attribute_t access)102 zeVirtualMemSetAccessAttribute(
103 ze_context_handle_t hContext,
104 const void *ptr,
105 size_t size,
106 ze_memory_access_attribute_t access) {
107 return L0::Context::fromHandle(hContext)->setVirtualMemAccessAttribute(ptr, size, access);
108 }
109
110 ZE_APIEXPORT ze_result_t ZE_APICALL
zeVirtualMemGetAccessAttribute(ze_context_handle_t hContext,const void * ptr,size_t size,ze_memory_access_attribute_t * access,size_t * outSize)111 zeVirtualMemGetAccessAttribute(
112 ze_context_handle_t hContext,
113 const void *ptr,
114 size_t size,
115 ze_memory_access_attribute_t *access,
116 size_t *outSize) {
117 return L0::Context::fromHandle(hContext)->getVirtualMemAccessAttribute(ptr, size, access, outSize);
118 }
119
120 ZE_APIEXPORT ze_result_t ZE_APICALL
zeContextSystemBarrier(ze_context_handle_t hContext,ze_device_handle_t hDevice)121 zeContextSystemBarrier(
122 ze_context_handle_t hContext,
123 ze_device_handle_t hDevice) {
124 return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE;
125 }
126
127 ZE_APIEXPORT ze_result_t ZE_APICALL
zeContextMakeMemoryResident(ze_context_handle_t hContext,ze_device_handle_t hDevice,void * ptr,size_t size)128 zeContextMakeMemoryResident(
129 ze_context_handle_t hContext,
130 ze_device_handle_t hDevice,
131 void *ptr,
132 size_t size) {
133 return L0::Context::fromHandle(hContext)->makeMemoryResident(hDevice, ptr, size);
134 }
135
136 ZE_APIEXPORT ze_result_t ZE_APICALL
zeContextEvictMemory(ze_context_handle_t hContext,ze_device_handle_t hDevice,void * ptr,size_t size)137 zeContextEvictMemory(
138 ze_context_handle_t hContext,
139 ze_device_handle_t hDevice,
140 void *ptr,
141 size_t size) {
142 return L0::Context::fromHandle(hContext)->evictMemory(hDevice, ptr, size);
143 }
144
145 ZE_APIEXPORT ze_result_t ZE_APICALL
zeContextMakeImageResident(ze_context_handle_t hContext,ze_device_handle_t hDevice,ze_image_handle_t hImage)146 zeContextMakeImageResident(
147 ze_context_handle_t hContext,
148 ze_device_handle_t hDevice,
149 ze_image_handle_t hImage) {
150 return L0::Context::fromHandle(hContext)->makeImageResident(hDevice, hImage);
151 }
152
153 ZE_APIEXPORT ze_result_t ZE_APICALL
zeContextEvictImage(ze_context_handle_t hContext,ze_device_handle_t hDevice,ze_image_handle_t hImage)154 zeContextEvictImage(
155 ze_context_handle_t hContext,
156 ze_device_handle_t hDevice,
157 ze_image_handle_t hImage) {
158 return L0::Context::fromHandle(hContext)->evictImage(hDevice, hImage);
159 }
160