Skip to content

Commit 04ddc9d

Browse files
committed
Updated properties query after rebase
Signed-off-by: Neil R. Spruit <[email protected]>
1 parent ad1f0ef commit 04ddc9d

File tree

6 files changed

+93
-15
lines changed

6 files changed

+93
-15
lines changed

scripts/templates/ldrddi.cpp.mako

+19-1
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,25 @@ namespace loader
138138
{
139139
for( uint32_t i = 0; i < library_driver_handle_count; ++i ) {
140140
uint32_t driver_index = total_driver_handle_count + i;
141-
if (!drv.driverSupportsDDIHandles) {
141+
if (drv.driverDDIHandleSupportQueried == false) {
142+
drv.properties = {};
143+
drv.properties.stype = ZE_STRUCTURE_TYPE_DRIVER_DDI_HANDLES_EXT_PROPERTIES;
144+
drv.properties.pNext = nullptr;
145+
ze_driver_properties_t driverProperties = {};
146+
driverProperties.stype = ZE_STRUCTURE_TYPE_DRIVER_PROPERTIES;
147+
driverProperties.pNext = nullptr;
148+
driverProperties.pNext = &drv.properties;
149+
ze_result_t res = drv.dditable.ze.Driver.pfnGetProperties(${obj['params'][1]['name']}[ driver_index ], &driverProperties);
150+
if (res != ZE_RESULT_SUCCESS) {
151+
if (loader::context->debugTraceEnabled) {
152+
std::string message = drv.name + " failed zeDriverGetProperties query, returned ";
153+
loader::context->debug_trace_message(message, loader::to_string(res));
154+
}
155+
return res;
156+
}
157+
drv.driverDDIHandleSupportQueried = true;
158+
}
159+
if (!(drv.properties.flags & ZE_DRIVER_DDI_HANDLE_EXT_FLAG_DDI_HANDLE_EXT_SUPPORTED)) {
142160
${obj['params'][1]['name']}[ driver_index ] = reinterpret_cast<${n}_driver_handle_t>(
143161
context->${n}_driver_factory.getInstance( ${obj['params'][1]['name']}[ driver_index ], &drv.dditable ) );
144162
}

scripts/templates/ze_loader_internal.h.mako

+7-4
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,7 @@ from templates import helper as th
2121
#include <map>
2222
#include <atomic>
2323

24-
#include "ze_ddi.h"
25-
#include "zet_ddi.h"
26-
#include "zes_ddi.h"
24+
#include "ze_ddi_common.h"
2725

2826
#include "ze_util.h"
2927
#include "ze_object.h"
@@ -62,8 +60,9 @@ namespace loader
6260
std::string name;
6361
bool driverInuse = false;
6462
zel_driver_type_t driverType = ZEL_DRIVER_TYPE_FORCE_UINT32;
65-
ze_driver_properties_t properties;
63+
ze_driver_ddi_handles_ext_properties_t properties;
6664
bool pciOrderingRequested = false;
65+
bool driverDDIHandleSupportQueried = false;
6766
};
6867

6968
using driver_vector_t = std::vector< driver_t >;
@@ -124,5 +123,9 @@ namespace loader
124123
std::shared_ptr<Logger> zel_logger;
125124
};
126125

126+
extern ze_handle_t* loaderDispatch;
127+
extern ze_dditable_t* loaderZeDdiTable;
128+
extern zet_dditable_t* loaderZetDdiTable;
129+
extern zes_dditable_t* loaderZesDdiTable;
127130
extern context_t *context;
128131
}

source/loader/ze_ldrddi.cpp

+38-2
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,25 @@ namespace loader
9494
{
9595
for( uint32_t i = 0; i < library_driver_handle_count; ++i ) {
9696
uint32_t driver_index = total_driver_handle_count + i;
97-
if (!drv.driverSupportsDDIHandles) {
97+
if (drv.driverDDIHandleSupportQueried == false) {
98+
drv.properties = {};
99+
drv.properties.stype = ZE_STRUCTURE_TYPE_DRIVER_DDI_HANDLES_EXT_PROPERTIES;
100+
drv.properties.pNext = nullptr;
101+
ze_driver_properties_t driverProperties = {};
102+
driverProperties.stype = ZE_STRUCTURE_TYPE_DRIVER_PROPERTIES;
103+
driverProperties.pNext = nullptr;
104+
driverProperties.pNext = &drv.properties;
105+
ze_result_t res = drv.dditable.ze.Driver.pfnGetProperties(phDrivers[ driver_index ], &driverProperties);
106+
if (res != ZE_RESULT_SUCCESS) {
107+
if (loader::context->debugTraceEnabled) {
108+
std::string message = drv.name + " failed zeDriverGetProperties query, returned ";
109+
loader::context->debug_trace_message(message, loader::to_string(res));
110+
}
111+
return res;
112+
}
113+
drv.driverDDIHandleSupportQueried = true;
114+
}
115+
if (!(drv.properties.flags & ZE_DRIVER_DDI_HANDLE_EXT_FLAG_DDI_HANDLE_EXT_SUPPORTED)) {
98116
phDrivers[ driver_index ] = reinterpret_cast<ze_driver_handle_t>(
99117
context->ze_driver_factory.getInstance( phDrivers[ driver_index ], &drv.dditable ) );
100118
}
@@ -180,7 +198,25 @@ namespace loader
180198
{
181199
for( uint32_t i = 0; i < library_driver_handle_count; ++i ) {
182200
uint32_t driver_index = total_driver_handle_count + i;
183-
if (!drv.driverSupportsDDIHandles) {
201+
if (drv.driverDDIHandleSupportQueried == false) {
202+
drv.properties = {};
203+
drv.properties.stype = ZE_STRUCTURE_TYPE_DRIVER_DDI_HANDLES_EXT_PROPERTIES;
204+
drv.properties.pNext = nullptr;
205+
ze_driver_properties_t driverProperties = {};
206+
driverProperties.stype = ZE_STRUCTURE_TYPE_DRIVER_PROPERTIES;
207+
driverProperties.pNext = nullptr;
208+
driverProperties.pNext = &drv.properties;
209+
ze_result_t res = drv.dditable.ze.Driver.pfnGetProperties(phDrivers[ driver_index ], &driverProperties);
210+
if (res != ZE_RESULT_SUCCESS) {
211+
if (loader::context->debugTraceEnabled) {
212+
std::string message = drv.name + " failed zeDriverGetProperties query, returned ";
213+
loader::context->debug_trace_message(message, loader::to_string(res));
214+
}
215+
return res;
216+
}
217+
drv.driverDDIHandleSupportQueried = true;
218+
}
219+
if (!(drv.properties.flags & ZE_DRIVER_DDI_HANDLE_EXT_FLAG_DDI_HANDLE_EXT_SUPPORTED)) {
184220
phDrivers[ driver_index ] = reinterpret_cast<ze_driver_handle_t>(
185221
context->ze_driver_factory.getInstance( phDrivers[ driver_index ], &drv.dditable ) );
186222
}

source/loader/ze_loader.cpp

+8-5
Original file line numberDiff line numberDiff line change
@@ -126,18 +126,21 @@ namespace loader
126126
}
127127

128128
for (auto handle : driverHandles) {
129-
ze_driver_properties_t properties = {};
130-
properties.stype = ZE_STRUCTURE_TYPE_DRIVER_PROPERTIES;
131-
properties.pNext = nullptr;
132-
ze_result_t res = driver.dditable.ze.Driver.pfnGetProperties(handle, &properties);
129+
driver.properties = {};
130+
driver.properties.stype = ZE_STRUCTURE_TYPE_DRIVER_DDI_HANDLES_EXT_PROPERTIES;
131+
driver.properties.pNext = nullptr;
132+
ze_driver_properties_t driverProperties = {};
133+
driverProperties.stype = ZE_STRUCTURE_TYPE_DRIVER_PROPERTIES;
134+
driverProperties.pNext = &driver.properties;
135+
ze_result_t res = driver.dditable.ze.Driver.pfnGetProperties(handle, &driverProperties);
133136
if (res != ZE_RESULT_SUCCESS) {
134137
if (debugTraceEnabled) {
135138
std::string message = "driverSorting " + driver.name + " failed, zeDriverGetProperties returned ";
136139
debug_trace_message(message, loader::to_string(res));
137140
}
138141
continue;
139142
}
140-
driver.properties = properties;
143+
driver.driverDDIHandleSupportQueried = true;
141144
uint32_t deviceCount = 0;
142145
res = driver.dditable.ze.Device.pfnGet( handle, &deviceCount, nullptr );
143146
if( ZE_RESULT_SUCCESS != res ) {

source/loader/ze_loader_internal.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,9 @@ namespace loader
5151
std::string name;
5252
bool driverInuse = false;
5353
zel_driver_type_t driverType = ZEL_DRIVER_TYPE_FORCE_UINT32;
54-
ze_driver_properties_t properties;
54+
ze_driver_ddi_handles_ext_properties_t properties;
5555
bool pciOrderingRequested = false;
56-
bool driverSupportsDDIHandles = false;
56+
bool driverDDIHandleSupportQueried = false;
5757
};
5858

5959
using driver_vector_t = std::vector< driver_t >;

source/loader/zes_ldrddi.cpp

+19-1
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,25 @@ namespace loader
9595
{
9696
for( uint32_t i = 0; i < library_driver_handle_count; ++i ) {
9797
uint32_t driver_index = total_driver_handle_count + i;
98-
if (!drv.driverSupportsDDIHandles) {
98+
if (drv.driverDDIHandleSupportQueried == false) {
99+
drv.properties = {};
100+
drv.properties.stype = ZE_STRUCTURE_TYPE_DRIVER_DDI_HANDLES_EXT_PROPERTIES;
101+
drv.properties.pNext = nullptr;
102+
ze_driver_properties_t driverProperties = {};
103+
driverProperties.stype = ZE_STRUCTURE_TYPE_DRIVER_PROPERTIES;
104+
driverProperties.pNext = nullptr;
105+
driverProperties.pNext = &drv.properties;
106+
ze_result_t res = drv.dditable.ze.Driver.pfnGetProperties(phDrivers[ driver_index ], &driverProperties);
107+
if (res != ZE_RESULT_SUCCESS) {
108+
if (loader::context->debugTraceEnabled) {
109+
std::string message = drv.name + " failed zeDriverGetProperties query, returned ";
110+
loader::context->debug_trace_message(message, loader::to_string(res));
111+
}
112+
return res;
113+
}
114+
drv.driverDDIHandleSupportQueried = true;
115+
}
116+
if (!(drv.properties.flags & ZE_DRIVER_DDI_HANDLE_EXT_FLAG_DDI_HANDLE_EXT_SUPPORTED)) {
99117
phDrivers[ driver_index ] = reinterpret_cast<zes_driver_handle_t>(
100118
context->zes_driver_factory.getInstance( phDrivers[ driver_index ], &drv.dditable ) );
101119
}

0 commit comments

Comments
 (0)