Skip to content

Commit d3eaea6

Browse files
authored
[UR][L0 adapter] Move a piece of init code code to platform (#18237)
Move a piece of call_once init code to ur_platform_handle_t_::initialize() --------- Signed-off-by: Mateusz P. Nowak <[email protected]>
1 parent 9fa69a6 commit d3eaea6

File tree

3 files changed

+40
-41
lines changed

3 files changed

+40
-41
lines changed

unified-runtime/source/adapters/level_zero/image_common.cpp

Lines changed: 12 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -19,19 +19,10 @@
1919
#include "helpers/memory_helpers.hpp"
2020
#include "image_common.hpp"
2121
#include "logger/ur_logger.hpp"
22+
#include "platform.hpp"
2223
#include "sampler.hpp"
2324
#include "ur_interface_loader.hpp"
2425

25-
typedef ze_result_t(ZE_APICALL *zeMemGetPitchFor2dImage_pfn)(
26-
ze_context_handle_t hContext, ze_device_handle_t hDevice, size_t imageWidth,
27-
size_t imageHeight, unsigned int elementSizeInBytes, size_t *rowPitch);
28-
29-
typedef ze_result_t(ZE_APICALL *zeImageGetDeviceOffsetExp_pfn)(
30-
ze_image_handle_t hImage, uint64_t *pDeviceOffset);
31-
32-
zeMemGetPitchFor2dImage_pfn zeMemGetPitchFor2dImageFunctionPtr = nullptr;
33-
zeImageGetDeviceOffsetExp_pfn zeImageGetDeviceOffsetExpFunctionPtr = nullptr;
34-
3526
namespace {
3627

3728
/// Construct UR image format from ZE image desc.
@@ -370,26 +361,16 @@ ur_result_t bindlessImagesCreateImpl(ur_context_handle_t hContext,
370361
return UR_RESULT_ERROR_INVALID_VALUE;
371362
}
372363

373-
static std::once_flag InitFlag;
374-
std::call_once(InitFlag, [&]() {
375-
ze_driver_handle_t DriverHandle = hContext->getPlatform()->ZeDriver;
376-
auto Result = zeDriverGetExtensionFunctionAddress(
377-
DriverHandle, "zeImageGetDeviceOffsetExp",
378-
(void **)&zeImageGetDeviceOffsetExpFunctionPtr);
379-
if (Result != ZE_RESULT_SUCCESS)
380-
UR_LOG(ERR,
381-
"zeDriverGetExtensionFunctionAddress "
382-
"zeImageGetDeviceOffsetExpv failed, err = {}",
383-
Result);
384-
});
385-
if (!zeImageGetDeviceOffsetExpFunctionPtr)
364+
if (!hDevice->Platform->ZeImageGetDeviceOffsetExt.Supported)
386365
return UR_RESULT_ERROR_INVALID_OPERATION;
366+
387367
uint64_t DeviceOffset{};
388368
ze_image_handle_t ZeImageTranslated;
389369
ZE2UR_CALL(zelLoaderTranslateHandle,
390370
(ZEL_HANDLE_IMAGE, ZeImage.get(), (void **)&ZeImageTranslated));
391-
ZE2UR_CALL(zeImageGetDeviceOffsetExpFunctionPtr,
392-
(ZeImageTranslated, &DeviceOffset));
371+
ZE2UR_CALL(
372+
hDevice->Platform->ZeImageGetDeviceOffsetExt.zeImageGetDeviceOffsetExp,
373+
(ZeImageTranslated, &DeviceOffset));
393374
*phImage = DeviceOffset;
394375

395376
std::shared_lock<ur_shared_mutex> Lock(hDevice->Mutex);
@@ -1078,29 +1059,19 @@ ur_result_t urUSMPitchedAllocExp(ur_context_handle_t hContext,
10781059
UR_ASSERT(widthInBytes != 0, UR_RESULT_ERROR_INVALID_USM_SIZE);
10791060
UR_ASSERT(ppMem && pResultPitch, UR_RESULT_ERROR_INVALID_NULL_POINTER);
10801061

1081-
static std::once_flag InitFlag;
1082-
std::call_once(InitFlag, [&]() {
1083-
ze_driver_handle_t DriverHandle = hContext->getPlatform()->ZeDriver;
1084-
auto Result = zeDriverGetExtensionFunctionAddress(
1085-
DriverHandle, "zeMemGetPitchFor2dImage",
1086-
(void **)&zeMemGetPitchFor2dImageFunctionPtr);
1087-
if (Result != ZE_RESULT_SUCCESS)
1088-
UR_LOG(ERR,
1089-
"zeDriverGetExtensionFunctionAddress zeMemGetPitchFor2dImage "
1090-
"failed, err = {}",
1091-
Result);
1092-
});
1093-
if (!zeMemGetPitchFor2dImageFunctionPtr)
1062+
if (!hDevice->Platform->ZeMemGetPitchFor2dImageExt.Supported) {
10941063
return UR_RESULT_ERROR_INVALID_OPERATION;
1064+
}
10951065

10961066
size_t Width = widthInBytes / elementSizeBytes;
10971067
size_t RowPitch;
10981068
ze_device_handle_t ZeDeviceTranslated;
10991069
ZE2UR_CALL(zelLoaderTranslateHandle, (ZEL_HANDLE_DEVICE, hDevice->ZeDevice,
11001070
(void **)&ZeDeviceTranslated));
1101-
ZE2UR_CALL(zeMemGetPitchFor2dImageFunctionPtr,
1102-
(hContext->getZeHandle(), ZeDeviceTranslated, Width, height,
1103-
elementSizeBytes, &RowPitch));
1071+
ZE2UR_CALL(
1072+
hDevice->Platform->ZeMemGetPitchFor2dImageExt.zeMemGetPitchFor2dImage,
1073+
(hContext->getZeHandle(), ZeDeviceTranslated, Width, height,
1074+
elementSizeBytes, &RowPitch));
11041075
*pResultPitch = RowPitch;
11051076

11061077
size_t Size = height * RowPitch;

unified-runtime/source/adapters/level_zero/platform.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -543,6 +543,22 @@ ur_result_t ur_platform_handle_t_::initialize() {
543543
.zeCommandListImmediateAppendCommandListsExp != nullptr;
544544
}
545545

546+
ZE_CALL_NOCHECK(zeDriverGetExtensionFunctionAddress,
547+
(ZeDriver, "zeImageGetDeviceOffsetExp",
548+
reinterpret_cast<void **>(
549+
&ZeImageGetDeviceOffsetExt.zeImageGetDeviceOffsetExp)));
550+
551+
ZeImageGetDeviceOffsetExt.Supported =
552+
ZeImageGetDeviceOffsetExt.zeImageGetDeviceOffsetExp != nullptr;
553+
554+
ZE_CALL_NOCHECK(zeDriverGetExtensionFunctionAddress,
555+
(ZeDriver, "zeMemGetPitchFor2dImage",
556+
reinterpret_cast<void **>(
557+
&ZeMemGetPitchFor2dImageExt.zeMemGetPitchFor2dImage)));
558+
559+
ZeMemGetPitchFor2dImageExt.Supported =
560+
ZeMemGetPitchFor2dImageExt.zeMemGetPitchFor2dImage != nullptr;
561+
546562
return UR_RESULT_SUCCESS;
547563
}
548564

unified-runtime/source/adapters/level_zero/platform.hpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,4 +169,16 @@ struct ur_platform_handle_t_ : public ur_platform {
169169
ze_command_list_handle_t, uint32_t, ze_command_list_handle_t *,
170170
ze_event_handle_t, uint32_t, ze_event_handle_t *);
171171
} ZeCommandListImmediateAppendExt;
172+
173+
struct ZeImageGetDeviceOffsetExtension {
174+
bool Supported = false;
175+
ze_result_t (*zeImageGetDeviceOffsetExp)(ze_image_handle_t, uint64_t *);
176+
} ZeImageGetDeviceOffsetExt;
177+
178+
struct ZeMemGetPitchFor2dImageExtension {
179+
bool Supported = false;
180+
ze_result_t (*zeMemGetPitchFor2dImage)(ze_context_handle_t,
181+
ze_device_handle_t, size_t, size_t,
182+
unsigned int, size_t *);
183+
} ZeMemGetPitchFor2dImageExt;
172184
};

0 commit comments

Comments
 (0)