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