|
19 | 19 | #include "helpers/memory_helpers.hpp" |
20 | 20 | #include "image_common.hpp" |
21 | 21 | #include "logger/ur_logger.hpp" |
| 22 | +#include "platform.hpp" |
22 | 23 | #include "sampler.hpp" |
23 | 24 | #include "ur_interface_loader.hpp" |
24 | 25 |
|
25 | 26 | typedef ze_result_t(ZE_APICALL *zeMemGetPitchFor2dImage_pfn)( |
26 | 27 | ze_context_handle_t hContext, ze_device_handle_t hDevice, size_t imageWidth, |
27 | 28 | size_t imageHeight, unsigned int elementSizeInBytes, size_t *rowPitch); |
28 | 29 |
|
29 | | -typedef ze_result_t(ZE_APICALL *zeImageGetDeviceOffsetExp_pfn)( |
30 | | - ze_image_handle_t hImage, uint64_t *pDeviceOffset); |
31 | | - |
32 | 30 | zeMemGetPitchFor2dImage_pfn zeMemGetPitchFor2dImageFunctionPtr = nullptr; |
33 | | -zeImageGetDeviceOffsetExp_pfn zeImageGetDeviceOffsetExpFunctionPtr = nullptr; |
34 | 31 |
|
35 | 32 | namespace { |
36 | 33 |
|
@@ -351,25 +348,16 @@ ur_result_t bindlessImagesCreateImpl(ur_context_handle_t hContext, |
351 | 348 | return UR_RESULT_ERROR_INVALID_VALUE; |
352 | 349 | } |
353 | 350 |
|
354 | | - static std::once_flag InitFlag; |
355 | | - std::call_once(InitFlag, [&]() { |
356 | | - ze_driver_handle_t DriverHandle = hContext->getPlatform()->ZeDriver; |
357 | | - auto Result = zeDriverGetExtensionFunctionAddress( |
358 | | - DriverHandle, "zeImageGetDeviceOffsetExp", |
359 | | - (void **)&zeImageGetDeviceOffsetExpFunctionPtr); |
360 | | - if (Result != ZE_RESULT_SUCCESS) |
361 | | - logger::error("zeDriverGetExtensionFunctionAddress " |
362 | | - "zeImageGetDeviceOffsetExpv failed, err = {}", |
363 | | - Result); |
364 | | - }); |
365 | | - if (!zeImageGetDeviceOffsetExpFunctionPtr) |
| 351 | + if (!hDevice->Platform->ZeImageGetDeviceOffsetExt.Supported) |
366 | 352 | return UR_RESULT_ERROR_INVALID_OPERATION; |
| 353 | + |
367 | 354 | uint64_t DeviceOffset{}; |
368 | 355 | ze_image_handle_t ZeImageTranslated; |
369 | 356 | ZE2UR_CALL(zelLoaderTranslateHandle, |
370 | 357 | (ZEL_HANDLE_IMAGE, ZeImage, (void **)&ZeImageTranslated)); |
371 | | - ZE2UR_CALL(zeImageGetDeviceOffsetExpFunctionPtr, |
372 | | - (ZeImageTranslated, &DeviceOffset)); |
| 358 | + ZE2UR_CALL( |
| 359 | + hDevice->Platform->ZeImageGetDeviceOffsetExt.zeImageGetDeviceOffsetExp, |
| 360 | + (ZeImageTranslated, &DeviceOffset)); |
373 | 361 | *phImage = DeviceOffset; |
374 | 362 |
|
375 | 363 | std::shared_lock<ur_shared_mutex> Lock(hDevice->Mutex); |
|
0 commit comments