diff --git a/opencl/source/cl_device/cl_device_info.cpp b/opencl/source/cl_device/cl_device_info.cpp index 48dcc2465a..15d5fb6145 100644 --- a/opencl/source/cl_device/cl_device_info.cpp +++ b/opencl/source/cl_device/cl_device_info.cpp @@ -68,6 +68,7 @@ cl_int ClDevice::getDeviceInfo(cl_device_info paramName, size_t value = 0u; ClDeviceInfoParam param{}; const void *src = nullptr; + std::array deviceUuid; // clang-format off // please keep alphabetical order @@ -292,6 +293,12 @@ cl_int ClDevice::getDeviceInfo(cl_device_info paramName, retSize = srcSize = sizeof(deviceInfo.pciBusInfo); } break; + case CL_DEVICE_UUID_KHR: { + device.generateUuid(deviceUuid); + src = &deviceUuid; + retSize = srcSize = sizeof(deviceUuid); + break; + } default: if (getDeviceInfoForImage(paramName, src, srcSize, retSize) && !getSharedDeviceInfo().imageSupport) { src = &value; diff --git a/opencl/test/unit_test/device/get_device_info_tests.cpp b/opencl/test/unit_test/device/get_device_info_tests.cpp index 5d43a55d8a..10f4a8fa5b 100644 --- a/opencl/test/unit_test/device/get_device_info_tests.cpp +++ b/opencl/test/unit_test/device/get_device_info_tests.cpp @@ -1042,6 +1042,18 @@ TEST(GetDeviceInfoTest, givenPciBusInfoIsNotAvailableWhenGettingPciBusInfoForDev ASSERT_EQ(retVal, CL_INVALID_VALUE); } +TEST(GetDeviceInfo, givenDeviceUuidWhenGettingDeviceInfoThenGenerateDeviceUuid) { + std::array generateDeviceUuid, deviceUuidKHR; + size_t retSize = 0; + + auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(nullptr)); + auto retVal = device->getDeviceInfo(CL_DEVICE_UUID_KHR, sizeof(deviceUuidKHR), &deviceUuidKHR, &retSize); + ASSERT_EQ(retVal, CL_SUCCESS); + + device.get()->getDevice().generateUuid(generateDeviceUuid); + EXPECT_EQ(generateDeviceUuid, deviceUuidKHR); +} + struct DeviceAttributeQueryTest : public ::testing::TestWithParam { void SetUp() override { param = GetParam(); diff --git a/shared/test/unit_test/device/neo_device_tests.cpp b/shared/test/unit_test/device/neo_device_tests.cpp index 85ead79a08..f08868a1c2 100644 --- a/shared/test/unit_test/device/neo_device_tests.cpp +++ b/shared/test/unit_test/device/neo_device_tests.cpp @@ -86,6 +86,19 @@ TEST_F(DeviceTest, whenAllocateRTDispatchGlobalsIsCalledThenRTDispatchGlobalsIsA EXPECT_NE(nullptr, pDevice->getRTDispatchGlobals(3)); } +TEST_F(DeviceTest, GivenDeviceWhenGenerateUuidThenValidValuesAreSet) { + std::array uuid, expectedUuid; + pDevice->generateUuid(uuid); + uint32_t rootDeviceIndex = pDevice->getRootDeviceIndex(); + + expectedUuid.fill(0); + memcpy_s(&expectedUuid[0], sizeof(uint32_t), &pDevice->getDeviceInfo().vendorId, sizeof(pDevice->getDeviceInfo().vendorId)); + memcpy_s(&expectedUuid[4], sizeof(uint32_t), &pDevice->getHardwareInfo().platform.usDeviceID, sizeof(pDevice->getHardwareInfo().platform.usDeviceID)); + memcpy_s(&expectedUuid[8], sizeof(uint32_t), &rootDeviceIndex, sizeof(rootDeviceIndex)); + + EXPECT_EQ(memcmp(&uuid, &expectedUuid, HwInfoConfig::uuidSize), 0); +} + using DeviceGetCapsTest = Test; TEST_F(DeviceGetCapsTest, givenMockCompilerInterfaceWhenInitializeCapsIsCalledThenMaxParameterSizeIsSetCorrectly) { diff --git a/shared/test/unit_test/os_interface/device_uuid_tests.cpp b/shared/test/unit_test/os_interface/device_uuid_tests.cpp index 04aa5072ca..337ca4b96b 100644 --- a/shared/test/unit_test/os_interface/device_uuid_tests.cpp +++ b/shared/test/unit_test/os_interface/device_uuid_tests.cpp @@ -219,21 +219,4 @@ HWTEST2_F(DeviceUuidEnablementTest, GivenEnableChipsetUniqueUUIDIsDisabledWhenDe EXPECT_EQ(true, deviceFactory->rootDevices[0]->getUuid(uuid)); EXPECT_FALSE(0 == std::memcmp(uuid.data(), expectedUuid.data(), 16)); } - -using DeviceTest = Test; - -HWTEST2_F(DeviceTest, GivenDeviceWhenGenerateUuidThenValidValuesAreSet, MatchAny) { - - std::array uuid, expectedUuid; - auto device = std::unique_ptr(MockDevice::createWithNewExecutionEnvironment(defaultHwInfo.get())); - device->generateUuid(uuid); - uint32_t rootDeviceIndex = device->getRootDeviceIndex(); - - expectedUuid.fill(0); - memcpy_s(&expectedUuid[0], sizeof(uint32_t), &device->getDeviceInfo().vendorId, sizeof(device->getDeviceInfo().vendorId)); - memcpy_s(&expectedUuid[4], sizeof(uint32_t), &device->getHardwareInfo().platform.usDeviceID, sizeof(device->getHardwareInfo().platform.usDeviceID)); - memcpy_s(&expectedUuid[8], sizeof(uint32_t), &rootDeviceIndex, sizeof(rootDeviceIndex)); - - EXPECT_EQ(memcmp(&uuid, &expectedUuid, NEO::HwInfoConfig::uuidSize), 0); -} } // namespace NEO