|
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