1010#include " shared/source/device/device.h"
1111#include " shared/source/device/device_info.h"
1212#include " shared/source/helpers/get_info.h"
13+ #include " shared/source/helpers/hw_helper.h"
1314#include " shared/source/os_interface/os_time.h"
1415
1516#include " opencl/source/cl_device/cl_device.h"
@@ -65,7 +66,7 @@ cl_int ClDevice::getDeviceInfo(cl_device_info paramName,
6566 size_t srcSize = GetInfo::invalidSourceSize;
6667 size_t retSize = 0 ;
6768 size_t value = 0u ;
68- cl_uint param;
69+ ClDeviceInfoParam param{} ;
6970 const void *src = nullptr ;
7071
7172 // clang-format off
@@ -176,17 +177,17 @@ cl_int ClDevice::getDeviceInfo(cl_device_info paramName,
176177 case CL_DEVICE_DEVICE_ENQUEUE_CAPABILITIES:
177178 if (paramValueSize == sizeof (cl_bool)) {
178179 srcSize = retSize = sizeof (cl_bool);
179- param = (deviceInfo.deviceEnqueueSupport > 0u ) ? CL_TRUE : CL_FALSE;
180- src = ¶m;
180+ param. boolean = (deviceInfo.deviceEnqueueSupport > 0u ) ? CL_TRUE : CL_FALSE;
181+ src = ¶m. boolean ;
181182 } else {
182183 getCap<CL_DEVICE_DEVICE_ENQUEUE_CAPABILITIES>(src, srcSize, retSize);
183184 }
184185 break ;
185186 case CL_DEVICE_NUM_SIMULTANEOUS_INTEROPS_INTEL:
186187 if (simultaneousInterops.size () > 1u ) {
187188 srcSize = retSize = sizeof (cl_uint);
188- param = 1u ;
189- src = ¶m;
189+ param. uint = 1u ;
190+ src = ¶m. uint ;
190191 }
191192 break ;
192193 case CL_DEVICE_SIMULTANEOUS_INTEROPS_INTEL:
@@ -202,9 +203,9 @@ cl_int ClDevice::getDeviceInfo(cl_device_info paramName,
202203 case CL_DEVICE_REFERENCE_COUNT: {
203204 cl_int ref = this ->getReference ();
204205 DEBUG_BREAK_IF (ref != 1 && !deviceInfo.parentDevice );
205- param = static_cast <cl_uint>(ref);
206- src = ¶m;
207- retSize = srcSize = sizeof (param);
206+ param. uint = static_cast <cl_uint>(ref);
207+ src = ¶m. uint ;
208+ retSize = srcSize = sizeof (param. uint );
208209 break ;
209210 }
210211 case CL_DEVICE_PARTITION_PROPERTIES:
@@ -242,6 +243,49 @@ cl_int ClDevice::getDeviceInfo(cl_device_info paramName,
242243 src = deviceInfo.supportedThreadArbitrationPolicies .data ();
243244 retSize = srcSize = deviceInfo.supportedThreadArbitrationPolicies .size () * sizeof (cl_uint);
244245 break ;
246+ case CL_DEVICE_IP_VERSION_INTEL: {
247+ auto &clHwHelper = ClHwHelper::get (getHardwareInfo ().platform .eRenderCoreFamily );
248+ param.uint = clHwHelper.getDeviceIpVersion (getHardwareInfo ());
249+ src = ¶m.uint ;
250+ retSize = srcSize = sizeof (cl_version);
251+ break ;
252+ }
253+ case CL_DEVICE_ID_INTEL:
254+ param.uint = getHardwareInfo ().platform .usDeviceID ;
255+ src = ¶m.uint ;
256+ retSize = srcSize = sizeof (cl_uint);
257+ break ;
258+ case CL_DEVICE_NUM_SLICES_INTEL:
259+ param.uint = static_cast <cl_uint>(getHardwareInfo ().gtSystemInfo .SliceCount * ((subDevices.size () > 0 ) ? subDevices.size () : 1 ));
260+ src = ¶m.uint ;
261+ retSize = srcSize = sizeof (cl_uint);
262+ break ;
263+ case CL_DEVICE_NUM_SUB_SLICES_PER_SLICE_INTEL: {
264+ const auto >SysInfo = getHardwareInfo ().gtSystemInfo ;
265+ param.uint = gtSysInfo.SubSliceCount / gtSysInfo.SliceCount ;
266+ src = ¶m.uint ;
267+ retSize = srcSize = sizeof (cl_uint);
268+ break ;
269+ }
270+ case CL_DEVICE_NUM_EUS_PER_SUB_SLICE_INTEL:
271+ param.uint = getHardwareInfo ().gtSystemInfo .MaxEuPerSubSlice ;
272+ src = ¶m.uint ;
273+ retSize = srcSize = sizeof (cl_uint);
274+ break ;
275+ case CL_DEVICE_NUM_THREADS_PER_EU_INTEL: {
276+ const auto >SysInfo = getHardwareInfo ().gtSystemInfo ;
277+ param.uint = gtSysInfo.ThreadCount / gtSysInfo.EUCount ;
278+ src = ¶m.uint ;
279+ retSize = srcSize = sizeof (cl_uint);
280+ break ;
281+ }
282+ case CL_DEVICE_FEATURE_CAPABILITIES_INTEL: {
283+ auto &clHwHelper = ClHwHelper::get (getHardwareInfo ().platform .eRenderCoreFamily );
284+ param.bitfield = clHwHelper.getSupportedDeviceFeatureCapabilities ();
285+ src = ¶m.bitfield ;
286+ retSize = srcSize = sizeof (cl_device_feature_capabilities_intel);
287+ break ;
288+ }
245289 default :
246290 if (getDeviceInfoForImage (paramName, src, srcSize, retSize) && !getSharedDeviceInfo ().imageSupport ) {
247291 src = &value;
0 commit comments