Skip to content

Commit 3cb5c72

Browse files
authored
fix ddi compatibility to avoid assigning values which don't exist (#328)
Signed-off-by: Neil R. Spruit <neil.r.spruit@intel.com>
1 parent c182a1e commit 3cb5c72

11 files changed

Lines changed: 3773 additions & 2416 deletions

File tree

scripts/templates/helper.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1726,6 +1726,46 @@ def get_class_function_objs_exp(specs, cname):
17261726
return objects, exp_objects, optional
17271727

17281728

1729+
"""
1730+
Public:
1731+
returns the version of a function object
1732+
"""
1733+
def get_version(obj):
1734+
if obj_traits.is_function(obj):
1735+
ret_version = "ZE_API_VERSION_FORCE_UINT32"
1736+
version = obj.get('version')
1737+
if version == "1.0":
1738+
ret_version = "ZE_API_VERSION_1_0"
1739+
if version == "1.1":
1740+
ret_version = "ZE_API_VERSION_1_1"
1741+
if version == "1.2":
1742+
ret_version = "ZE_API_VERSION_1_2"
1743+
if version == "1.3":
1744+
ret_version = "ZE_API_VERSION_1_3"
1745+
if version == "1.4":
1746+
ret_version = "ZE_API_VERSION_1_4"
1747+
if version == "1.5":
1748+
ret_version = "ZE_API_VERSION_1_5"
1749+
if version == "1.6":
1750+
ret_version = "ZE_API_VERSION_1_6"
1751+
if version == "1.7":
1752+
ret_version = "ZE_API_VERSION_1_7"
1753+
if version == "1.8":
1754+
ret_version = "ZE_API_VERSION_1_8"
1755+
if version == "1.9":
1756+
ret_version = "ZE_API_VERSION_1_9"
1757+
if version == "1.10":
1758+
ret_version = "ZE_API_VERSION_1_10"
1759+
if version == "1.11":
1760+
ret_version = "ZE_API_VERSION_1_11"
1761+
if version == "1.12":
1762+
ret_version = "ZE_API_VERSION_1_12"
1763+
if version == "1.13":
1764+
ret_version = "ZE_API_VERSION_1_13"
1765+
if (ret_version == "ZE_API_VERSION_FORCE_UINT32"):
1766+
ret_version = "ZE_API_VERSION_1_0"
1767+
return ret_version
1768+
17291769
"""
17301770
Public:
17311771
returns string name of DDI table for function object

scripts/templates/ldrddi.cpp.mako

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -443,15 +443,17 @@ ${tbl['export']['name']}(
443443
{
444444
// return pointers to loader's DDIs
445445
%for obj in tbl['functions']:
446+
if (version >= ${th.get_version(obj)}) {
446447
%if 'condition' in obj:
447448
#if ${th.subt(n, tags, obj['condition'])}
448449
%endif
449-
pDdiTable->${th.append_ws(th.make_pfn_name(n, tags, obj), 43)} = loader::${th.make_func_name(n, tags, obj)};
450+
pDdiTable->${th.append_ws(th.make_pfn_name(n, tags, obj), 43)} = loader::${th.make_func_name(n, tags, obj)};
450451
%if 'condition' in obj:
451452
#else
452-
pDdiTable->${th.append_ws(th.make_pfn_name(n, tags, obj), 43)} = nullptr;
453+
pDdiTable->${th.append_ws(th.make_pfn_name(n, tags, obj), 43)} = nullptr;
453454
#endif
454455
%endif
456+
}
455457
%endfor
456458
}
457459
else

scripts/templates/tracing/trcddi.cpp.mako

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -91,25 +91,25 @@ ${tbl['export']['name']}(
9191
if( nullptr == pDdiTable )
9292
return ${X}_RESULT_ERROR_INVALID_NULL_POINTER;
9393

94-
if (ZE_MAJOR_VERSION(tracing_layer::context.version) != ZE_MAJOR_VERSION(version) ||
95-
ZE_MINOR_VERSION(tracing_layer::context.version) > ZE_MINOR_VERSION(version))
94+
if (tracing_layer::context.version < version)
9695
return ${X}_RESULT_ERROR_UNSUPPORTED_VERSION;
9796

9897
${x}_result_t result = ${X}_RESULT_SUCCESS;
9998

10099
%for obj in tbl['functions']:
100+
if (version >= ${th.get_version(obj)}) {
101101
%if 'condition' in obj:
102102
#if ${th.subt(n, tags, obj['condition'])}
103103
%endif
104-
dditable.${th.append_ws(th.make_pfn_name(n, tags, obj), 43)} = pDdiTable->${th.make_pfn_name(n, tags, obj)};
105-
pDdiTable->${th.append_ws(th.make_pfn_name(n, tags, obj), 41)} = tracing_layer::${th.make_func_name(n, tags, obj)};
104+
dditable.${th.append_ws(th.make_pfn_name(n, tags, obj), 43)} = pDdiTable->${th.make_pfn_name(n, tags, obj)};
105+
pDdiTable->${th.append_ws(th.make_pfn_name(n, tags, obj), 41)} = tracing_layer::${th.make_func_name(n, tags, obj)};
106106
%if 'condition' in obj:
107107
#else
108-
dditable.${th.append_ws(th.make_pfn_name(n, tags, obj), 43)} = nullptr;
109-
pDdiTable->${th.append_ws(th.make_pfn_name(n, tags, obj), 41)} = nullptr;
108+
dditable.${th.append_ws(th.make_pfn_name(n, tags, obj), 43)} = nullptr;
109+
pDdiTable->${th.append_ws(th.make_pfn_name(n, tags, obj), 41)} = nullptr;
110110
#endif
111111
%endif
112-
112+
}
113113
%endfor
114114
return result;
115115
}

scripts/templates/validation/valddi.cpp.mako

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -154,25 +154,25 @@ ${tbl['export']['name']}(
154154
if( nullptr == pDdiTable )
155155
return ${X}_RESULT_ERROR_INVALID_NULL_POINTER;
156156

157-
if (ZE_MAJOR_VERSION(validation_layer::context.version) != ZE_MAJOR_VERSION(version) ||
158-
ZE_MINOR_VERSION(validation_layer::context.version) > ZE_MINOR_VERSION(version))
157+
if (validation_layer::context.version < version)
159158
return ${X}_RESULT_ERROR_UNSUPPORTED_VERSION;
160159

161160
${x}_result_t result = ${X}_RESULT_SUCCESS;
162161

163162
%for obj in tbl['functions']:
163+
if (version >= ${th.get_version(obj)}) {
164164
%if 'condition' in obj:
165165
#if ${th.subt(n, tags, obj['condition'])}
166166
%endif
167-
dditable.${th.append_ws(th.make_pfn_name(n, tags, obj), 43)} = pDdiTable->${th.make_pfn_name(n, tags, obj)};
168-
pDdiTable->${th.append_ws(th.make_pfn_name(n, tags, obj), 41)} = validation_layer::${th.make_func_name(n, tags, obj)};
167+
dditable.${th.append_ws(th.make_pfn_name(n, tags, obj), 43)} = pDdiTable->${th.make_pfn_name(n, tags, obj)};
168+
pDdiTable->${th.append_ws(th.make_pfn_name(n, tags, obj), 41)} = validation_layer::${th.make_func_name(n, tags, obj)};
169169
%if 'condition' in obj:
170170
#else
171-
dditable.${th.append_ws(th.make_pfn_name(n, tags, obj), 43)} = nullptr;
172-
pDdiTable->${th.append_ws(th.make_pfn_name(n, tags, obj), 41)} = nullptr;
171+
dditable.${th.append_ws(th.make_pfn_name(n, tags, obj), 43)} = nullptr;
172+
pDdiTable->${th.append_ws(th.make_pfn_name(n, tags, obj), 41)} = nullptr;
173173
#endif
174174
%endif
175-
175+
}
176176
%endfor
177177
return result;
178178
}

0 commit comments

Comments
 (0)