Skip to content

Commit bf5a36f

Browse files
authored
Fix zesInit to init the correct requested api version (#332)
Signed-off-by: Neil R. Spruit <neil.r.spruit@intel.com>
1 parent 37f2501 commit bf5a36f

File tree

7 files changed

+156
-103
lines changed

7 files changed

+156
-103
lines changed

scripts/templates/ldrddi.cpp.mako

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -410,9 +410,10 @@ ${tbl['export']['name']}(
410410
%endif
411411
%if tbl['experimental'] is False: #//Experimental Tables may not be implemented in driver
412412
auto getTableResult = getTable( version, &drv.dditable.${n}.${tbl['name']});
413-
if(getTableResult == ZE_RESULT_SUCCESS)
413+
if(getTableResult == ZE_RESULT_SUCCESS) {
414414
atLeastOneDriverValid = true;
415-
else
415+
loader::context->configured_version = version;
416+
} else
416417
drv.initStatus = getTableResult;
417418
%if namespace != "zes":
418419
%if tbl['name'] == "Global":

scripts/templates/ze_loader_internal.h.mako

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ namespace loader
9393
std::unordered_map<ze_image_object_t *, ze_image_handle_t> image_handle_map;
9494
std::unordered_map<ze_sampler_object_t *, ze_sampler_handle_t> sampler_handle_map;
9595
ze_api_version_t version = ZE_API_VERSION_CURRENT;
96+
ze_api_version_t configured_version = ZE_API_VERSION_CURRENT;
9697

9798
driver_vector_t allDrivers;
9899
driver_vector_t zeDrivers;

source/loader/ze_ldrddi.cpp

Lines changed: 57 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -6909,9 +6909,10 @@ zeGetGlobalProcAddrTable(
69096909
if(!getTable)
69106910
continue;
69116911
auto getTableResult = getTable( version, &drv.dditable.ze.Global);
6912-
if(getTableResult == ZE_RESULT_SUCCESS)
6912+
if(getTableResult == ZE_RESULT_SUCCESS) {
69136913
atLeastOneDriverValid = true;
6914-
else
6914+
loader::context->configured_version = version;
6915+
} else
69156916
drv.initStatus = getTableResult;
69166917
if (drv.dditable.ze.Global.pfnInitDrivers) {
69176918
loader::context->initDriversSupport = true;
@@ -7009,9 +7010,10 @@ zeGetRTASBuilderProcAddrTable(
70097010
if(!getTable)
70107011
continue;
70117012
auto getTableResult = getTable( version, &drv.dditable.ze.RTASBuilder);
7012-
if(getTableResult == ZE_RESULT_SUCCESS)
7013+
if(getTableResult == ZE_RESULT_SUCCESS) {
70137014
atLeastOneDriverValid = true;
7014-
else
7015+
loader::context->configured_version = version;
7016+
} else
70157017
drv.initStatus = getTableResult;
70167018
}
70177019

@@ -7209,9 +7211,10 @@ zeGetRTASParallelOperationProcAddrTable(
72097211
if(!getTable)
72107212
continue;
72117213
auto getTableResult = getTable( version, &drv.dditable.ze.RTASParallelOperation);
7212-
if(getTableResult == ZE_RESULT_SUCCESS)
7214+
if(getTableResult == ZE_RESULT_SUCCESS) {
72137215
atLeastOneDriverValid = true;
7214-
else
7216+
loader::context->configured_version = version;
7217+
} else
72157218
drv.initStatus = getTableResult;
72167219
}
72177220

@@ -7406,9 +7409,10 @@ zeGetDriverProcAddrTable(
74067409
if(!getTable)
74077410
continue;
74087411
auto getTableResult = getTable( version, &drv.dditable.ze.Driver);
7409-
if(getTableResult == ZE_RESULT_SUCCESS)
7412+
if(getTableResult == ZE_RESULT_SUCCESS) {
74107413
atLeastOneDriverValid = true;
7411-
else
7414+
loader::context->configured_version = version;
7415+
} else
74127416
drv.initStatus = getTableResult;
74137417
}
74147418

@@ -7606,9 +7610,10 @@ zeGetDeviceProcAddrTable(
76067610
if(!getTable)
76077611
continue;
76087612
auto getTableResult = getTable( version, &drv.dditable.ze.Device);
7609-
if(getTableResult == ZE_RESULT_SUCCESS)
7613+
if(getTableResult == ZE_RESULT_SUCCESS) {
76107614
atLeastOneDriverValid = true;
7611-
else
7615+
loader::context->configured_version = version;
7616+
} else
76127617
drv.initStatus = getTableResult;
76137618
}
76147619

@@ -7848,9 +7853,10 @@ zeGetContextProcAddrTable(
78487853
if(!getTable)
78497854
continue;
78507855
auto getTableResult = getTable( version, &drv.dditable.ze.Context);
7851-
if(getTableResult == ZE_RESULT_SUCCESS)
7856+
if(getTableResult == ZE_RESULT_SUCCESS) {
78527857
atLeastOneDriverValid = true;
7853-
else
7858+
loader::context->configured_version = version;
7859+
} else
78547860
drv.initStatus = getTableResult;
78557861
}
78567862

@@ -7966,9 +7972,10 @@ zeGetCommandQueueProcAddrTable(
79667972
if(!getTable)
79677973
continue;
79687974
auto getTableResult = getTable( version, &drv.dditable.ze.CommandQueue);
7969-
if(getTableResult == ZE_RESULT_SUCCESS)
7975+
if(getTableResult == ZE_RESULT_SUCCESS) {
79707976
atLeastOneDriverValid = true;
7971-
else
7977+
loader::context->configured_version = version;
7978+
} else
79727979
drv.initStatus = getTableResult;
79737980
}
79747981

@@ -8075,9 +8082,10 @@ zeGetCommandListProcAddrTable(
80758082
if(!getTable)
80768083
continue;
80778084
auto getTableResult = getTable( version, &drv.dditable.ze.CommandList);
8078-
if(getTableResult == ZE_RESULT_SUCCESS)
8085+
if(getTableResult == ZE_RESULT_SUCCESS) {
80798086
atLeastOneDriverValid = true;
8080-
else
8087+
loader::context->configured_version = version;
8088+
} else
80818089
drv.initStatus = getTableResult;
80828090
}
80838091

@@ -8380,9 +8388,10 @@ zeGetEventProcAddrTable(
83808388
if(!getTable)
83818389
continue;
83828390
auto getTableResult = getTable( version, &drv.dditable.ze.Event);
8383-
if(getTableResult == ZE_RESULT_SUCCESS)
8391+
if(getTableResult == ZE_RESULT_SUCCESS) {
83848392
atLeastOneDriverValid = true;
8385-
else
8393+
loader::context->configured_version = version;
8394+
} else
83868395
drv.initStatus = getTableResult;
83878396
}
83888397

@@ -8589,9 +8598,10 @@ zeGetEventPoolProcAddrTable(
85898598
if(!getTable)
85908599
continue;
85918600
auto getTableResult = getTable( version, &drv.dditable.ze.EventPool);
8592-
if(getTableResult == ZE_RESULT_SUCCESS)
8601+
if(getTableResult == ZE_RESULT_SUCCESS) {
85938602
atLeastOneDriverValid = true;
8594-
else
8603+
loader::context->configured_version = version;
8604+
} else
85958605
drv.initStatus = getTableResult;
85968606
}
85978607

@@ -8704,9 +8714,10 @@ zeGetFenceProcAddrTable(
87048714
if(!getTable)
87058715
continue;
87068716
auto getTableResult = getTable( version, &drv.dditable.ze.Fence);
8707-
if(getTableResult == ZE_RESULT_SUCCESS)
8717+
if(getTableResult == ZE_RESULT_SUCCESS) {
87088718
atLeastOneDriverValid = true;
8709-
else
8719+
loader::context->configured_version = version;
8720+
} else
87108721
drv.initStatus = getTableResult;
87118722
}
87128723

@@ -8810,9 +8821,10 @@ zeGetImageProcAddrTable(
88108821
if(!getTable)
88118822
continue;
88128823
auto getTableResult = getTable( version, &drv.dditable.ze.Image);
8813-
if(getTableResult == ZE_RESULT_SUCCESS)
8824+
if(getTableResult == ZE_RESULT_SUCCESS) {
88148825
atLeastOneDriverValid = true;
8815-
else
8826+
loader::context->configured_version = version;
8827+
} else
88168828
drv.initStatus = getTableResult;
88178829
}
88188830

@@ -9007,9 +9019,10 @@ zeGetKernelProcAddrTable(
90079019
if(!getTable)
90089020
continue;
90099021
auto getTableResult = getTable( version, &drv.dditable.ze.Kernel);
9010-
if(getTableResult == ZE_RESULT_SUCCESS)
9022+
if(getTableResult == ZE_RESULT_SUCCESS) {
90119023
atLeastOneDriverValid = true;
9012-
else
9024+
loader::context->configured_version = version;
9025+
} else
90139026
drv.initStatus = getTableResult;
90149027
}
90159028

@@ -9225,9 +9238,10 @@ zeGetMemProcAddrTable(
92259238
if(!getTable)
92269239
continue;
92279240
auto getTableResult = getTable( version, &drv.dditable.ze.Mem);
9228-
if(getTableResult == ZE_RESULT_SUCCESS)
9241+
if(getTableResult == ZE_RESULT_SUCCESS) {
92299242
atLeastOneDriverValid = true;
9230-
else
9243+
loader::context->configured_version = version;
9244+
} else
92319245
drv.initStatus = getTableResult;
92329246
}
92339247

@@ -9446,9 +9460,10 @@ zeGetModuleProcAddrTable(
94469460
if(!getTable)
94479461
continue;
94489462
auto getTableResult = getTable( version, &drv.dditable.ze.Module);
9449-
if(getTableResult == ZE_RESULT_SUCCESS)
9463+
if(getTableResult == ZE_RESULT_SUCCESS) {
94509464
atLeastOneDriverValid = true;
9451-
else
9465+
loader::context->configured_version = version;
9466+
} else
94529467
drv.initStatus = getTableResult;
94539468
}
94549469

@@ -9564,9 +9579,10 @@ zeGetModuleBuildLogProcAddrTable(
95649579
if(!getTable)
95659580
continue;
95669581
auto getTableResult = getTable( version, &drv.dditable.ze.ModuleBuildLog);
9567-
if(getTableResult == ZE_RESULT_SUCCESS)
9582+
if(getTableResult == ZE_RESULT_SUCCESS) {
95689583
atLeastOneDriverValid = true;
9569-
else
9584+
loader::context->configured_version = version;
9585+
} else
95709586
drv.initStatus = getTableResult;
95719587
}
95729588

@@ -9661,9 +9677,10 @@ zeGetPhysicalMemProcAddrTable(
96619677
if(!getTable)
96629678
continue;
96639679
auto getTableResult = getTable( version, &drv.dditable.ze.PhysicalMem);
9664-
if(getTableResult == ZE_RESULT_SUCCESS)
9680+
if(getTableResult == ZE_RESULT_SUCCESS) {
96659681
atLeastOneDriverValid = true;
9666-
else
9682+
loader::context->configured_version = version;
9683+
} else
96679684
drv.initStatus = getTableResult;
96689685
}
96699686

@@ -9758,9 +9775,10 @@ zeGetSamplerProcAddrTable(
97589775
if(!getTable)
97599776
continue;
97609777
auto getTableResult = getTable( version, &drv.dditable.ze.Sampler);
9761-
if(getTableResult == ZE_RESULT_SUCCESS)
9778+
if(getTableResult == ZE_RESULT_SUCCESS) {
97629779
atLeastOneDriverValid = true;
9763-
else
9780+
loader::context->configured_version = version;
9781+
} else
97649782
drv.initStatus = getTableResult;
97659783
}
97669784

@@ -9855,9 +9873,10 @@ zeGetVirtualMemProcAddrTable(
98559873
if(!getTable)
98569874
continue;
98579875
auto getTableResult = getTable( version, &drv.dditable.ze.VirtualMem);
9858-
if(getTableResult == ZE_RESULT_SUCCESS)
9876+
if(getTableResult == ZE_RESULT_SUCCESS) {
98599877
atLeastOneDriverValid = true;
9860-
else
9878+
loader::context->configured_version = version;
9879+
} else
98619880
drv.initStatus = getTableResult;
98629881
}
98639882

source/loader/ze_loader.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -372,7 +372,7 @@ namespace loader
372372
}
373373

374374
zes_global_dditable_t global;
375-
auto getTableResult = getTable(ZE_API_VERSION_CURRENT, &global);
375+
auto getTableResult = getTable(this->configured_version, &global);
376376
if(getTableResult != ZE_RESULT_SUCCESS) {
377377
if (debugTraceEnabled) {
378378
std::string errorMessage = "init driver " + driver.name + " failed, zesGetGlobalProcAddrTable() failed with ";

source/loader/ze_loader_internal.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ namespace loader
129129
std::unordered_map<ze_image_object_t *, ze_image_handle_t> image_handle_map;
130130
std::unordered_map<ze_sampler_object_t *, ze_sampler_handle_t> sampler_handle_map;
131131
ze_api_version_t version = ZE_API_VERSION_CURRENT;
132+
ze_api_version_t configured_version = ZE_API_VERSION_CURRENT;
132133

133134
driver_vector_t allDrivers;
134135
driver_vector_t zeDrivers;

0 commit comments

Comments
 (0)