mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-24 12:23:05 +08:00
refactor: Do not use api version when calculating driver version
Previous design allowed driver version to be no greater than 16-bit. New design allows driver version to use (almost) whole 32-bit size limit. Signed-off-by: Filip Hazubski <filip.hazubski@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
89ddfbb83c
commit
4b7782d2ab
@@ -106,13 +106,8 @@ ze_result_t DriverHandleImp::getApiVersion(ze_api_version_t *version) {
|
||||
}
|
||||
|
||||
ze_result_t DriverHandleImp::getProperties(ze_driver_properties_t *properties) {
|
||||
uint32_t versionMajor = static_cast<uint32_t>(strtoul(L0_PROJECT_VERSION_MAJOR, NULL, 10));
|
||||
uint32_t versionMinor = static_cast<uint32_t>(strtoul(L0_PROJECT_VERSION_MINOR, NULL, 10));
|
||||
uint32_t versionBuild = static_cast<uint32_t>(strtoul(NEO_VERSION_BUILD, NULL, 10));
|
||||
|
||||
properties->driverVersion = ((versionMajor << 24) & 0xFF000000) |
|
||||
((versionMinor << 16) & 0x00FF0000) |
|
||||
(versionBuild & 0x0000FFFF);
|
||||
properties->driverVersion = DriverHandleImp::initialDriverVersionValue + versionBuild;
|
||||
|
||||
uint64_t uniqueId = (properties->driverVersion) | (uuidTimestamp & 0xFFFFFFFF00000000);
|
||||
memcpy_s(properties->uuid.id, sizeof(uniqueId), &uniqueId, sizeof(uniqueId));
|
||||
|
||||
@@ -25,6 +25,8 @@ struct DriverHandleImp : public DriverHandle {
|
||||
~DriverHandleImp() override;
|
||||
DriverHandleImp();
|
||||
|
||||
static constexpr uint32_t initialDriverVersionValue = 0x01030000;
|
||||
|
||||
ze_result_t createContext(const ze_context_desc_t *desc,
|
||||
uint32_t numDevices,
|
||||
ze_device_handle_t *phDevices,
|
||||
|
||||
@@ -98,13 +98,8 @@ TEST_F(DriverVersionTest, WhenGettingDriverVersionThenExpectedDriverVersionIsRet
|
||||
ze_result_t res = driverHandle->getProperties(&properties);
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, res);
|
||||
|
||||
uint32_t versionMajor = static_cast<uint32_t>((properties.driverVersion & 0xFF000000) >> 24);
|
||||
uint32_t versionMinor = static_cast<uint32_t>((properties.driverVersion & 0x00FF0000) >> 16);
|
||||
uint32_t versionBuild = static_cast<uint32_t>(properties.driverVersion & 0x0000FFFF);
|
||||
|
||||
EXPECT_EQ(static_cast<uint32_t>(strtoul(L0_PROJECT_VERSION_MAJOR, NULL, 10)), versionMajor);
|
||||
EXPECT_EQ(static_cast<uint32_t>(strtoul(L0_PROJECT_VERSION_MINOR, NULL, 10)), versionMinor);
|
||||
EXPECT_EQ(static_cast<uint32_t>(strtoul(NEO_VERSION_BUILD, NULL, 10)), versionBuild);
|
||||
auto expectedDriverVersion = static_cast<uint32_t>(DriverHandleImp::initialDriverVersionValue + strtoul(NEO_VERSION_BUILD, NULL, 10));
|
||||
EXPECT_EQ(expectedDriverVersion, properties.driverVersion);
|
||||
}
|
||||
|
||||
TEST_F(DriverVersionTest, givenCallToGetDriverPropertiesThenUuidIsSet) {
|
||||
@@ -116,15 +111,12 @@ TEST_F(DriverVersionTest, givenCallToGetDriverPropertiesThenUuidIsSet) {
|
||||
uint64_t uuid = 0u;
|
||||
memcpy_s(&uuid, sizeof(uuid), properties.uuid.id, sizeof(uuid));
|
||||
|
||||
uint32_t uniqueId = static_cast<uint32_t>((uuid & 0xFFFFFFFF00000000) >> 32);
|
||||
uint32_t versionMajor = static_cast<uint32_t>((uuid & 0xFF000000) >> 24);
|
||||
uint32_t versionMinor = static_cast<uint32_t>((uuid & 0x00FF0000) >> 16);
|
||||
uint32_t versionBuild = static_cast<uint32_t>(uuid & 0x0000FFFF);
|
||||
|
||||
auto uniqueId = static_cast<uint32_t>((uuid & 0xFFFFFFFF00000000) >> 32);
|
||||
EXPECT_NE(0u, uniqueId);
|
||||
EXPECT_EQ(static_cast<uint32_t>(strtoul(L0_PROJECT_VERSION_MAJOR, NULL, 10)), versionMajor);
|
||||
EXPECT_EQ(static_cast<uint32_t>(strtoul(L0_PROJECT_VERSION_MINOR, NULL, 10)), versionMinor);
|
||||
EXPECT_EQ(static_cast<uint32_t>(strtoul(NEO_VERSION_BUILD, NULL, 10)), versionBuild);
|
||||
|
||||
auto driverVersion = static_cast<uint32_t>(uuid & 0xFFFFFFFF);
|
||||
auto expectedDriverVersion = static_cast<uint32_t>(DriverHandleImp::initialDriverVersionValue + strtoul(NEO_VERSION_BUILD, NULL, 10));
|
||||
EXPECT_EQ(expectedDriverVersion, driverVersion);
|
||||
}
|
||||
|
||||
TEST_F(DriverVersionTest, whenCallingGetDriverPropertiesRepeatedlyThenTheSameUuidIsReturned) {
|
||||
@@ -133,19 +125,6 @@ TEST_F(DriverVersionTest, whenCallingGetDriverPropertiesRepeatedlyThenTheSameUui
|
||||
ze_result_t res = driverHandle->getProperties(&properties);
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, res);
|
||||
|
||||
uint64_t uuid = 0u;
|
||||
memcpy_s(&uuid, sizeof(uuid), properties.uuid.id, sizeof(uuid));
|
||||
|
||||
uint32_t uniqueId = static_cast<uint32_t>((uuid & 0xFFFFFFFF00000000) >> 32);
|
||||
uint32_t versionMajor = static_cast<uint32_t>((uuid & 0xFF000000) >> 24);
|
||||
uint32_t versionMinor = static_cast<uint32_t>((uuid & 0x00FF0000) >> 16);
|
||||
uint32_t versionBuild = static_cast<uint32_t>(uuid & 0x0000FFFF);
|
||||
|
||||
EXPECT_NE(0u, uniqueId);
|
||||
EXPECT_EQ(static_cast<uint32_t>(strtoul(L0_PROJECT_VERSION_MAJOR, NULL, 10)), versionMajor);
|
||||
EXPECT_EQ(static_cast<uint32_t>(strtoul(L0_PROJECT_VERSION_MINOR, NULL, 10)), versionMinor);
|
||||
EXPECT_EQ(static_cast<uint32_t>(strtoul(NEO_VERSION_BUILD, NULL, 10)), versionBuild);
|
||||
|
||||
for (uint32_t i = 0; i < 32; i++) {
|
||||
ze_driver_properties_t newProperties;
|
||||
res = driverHandle->getProperties(&newProperties);
|
||||
|
||||
Reference in New Issue
Block a user