Add cl_khr_pci_bus_info extension

Signed-off-by: Egor Suldin <egor.suldin@intel.com>

https://github.com/intel/compute-runtime/pull/374
This commit is contained in:
Suldin, Egor
2020-11-05 15:40:03 +03:00
committed by Compute-Runtime-Automation
parent c94ad034d9
commit 2b3b47b495
23 changed files with 435 additions and 45 deletions

View File

@ -263,4 +263,9 @@ void ClDevice::getQueueFamilyName(char *outputName, size_t maxOutputNameLength,
Platform *ClDevice::getPlatform() const {
return castToObject<Platform>(platformId);
}
bool ClDevice::isPciBusInfoValid() const {
return deviceInfo.pciBusInfo.pci_domain != PhysicalDevicePciBusInfo::InvalidValue && deviceInfo.pciBusInfo.pci_bus != PhysicalDevicePciBusInfo::InvalidValue &&
deviceInfo.pciBusInfo.pci_device != PhysicalDevicePciBusInfo::InvalidValue && deviceInfo.pciBusInfo.pci_function != PhysicalDevicePciBusInfo::InvalidValue;
}
} // namespace NEO

View File

@ -121,6 +121,7 @@ class ClDevice : public BaseObject<_cl_device_id> {
DeviceBitfield getDeviceBitfield() const;
bool isDeviceEnqueueSupported() const;
bool arePipesSupported() const;
bool isPciBusInfoValid() const;
static cl_command_queue_capabilities_intel getQueueFamilyCapabilitiesAll();
MOCKABLE_VIRTUAL cl_command_queue_capabilities_intel getQueueFamilyCapabilities(EngineGroupType type);

View File

@ -202,6 +202,21 @@ void ClDevice::initializeCaps() {
deviceExtensions += sharingFactory.getExtensions(driverInfo.get());
}
PhysicalDevicePciBusInfo pciBusInfo(PhysicalDevicePciBusInfo::InvalidValue, PhysicalDevicePciBusInfo::InvalidValue, PhysicalDevicePciBusInfo::InvalidValue, PhysicalDevicePciBusInfo::InvalidValue);
if (driverInfo) {
pciBusInfo = driverInfo->getPciBusInfo();
}
deviceInfo.pciBusInfo.pci_domain = pciBusInfo.pciDomain;
deviceInfo.pciBusInfo.pci_bus = pciBusInfo.pciBus;
deviceInfo.pciBusInfo.pci_device = pciBusInfo.pciDevice;
deviceInfo.pciBusInfo.pci_function = pciBusInfo.pciFunction;
if (isPciBusInfoValid()) {
deviceExtensions += "cl_khr_pci_bus_info ";
}
deviceExtensions += hwHelper.getExtensions();
deviceInfo.deviceExtensions = deviceExtensions.c_str();

View File

@ -286,6 +286,12 @@ cl_int ClDevice::getDeviceInfo(cl_device_info paramName,
retSize = srcSize = sizeof(cl_device_feature_capabilities_intel);
break;
}
case CL_DEVICE_PCI_BUS_INFO_KHR:
if (isPciBusInfoValid()) {
src = &deviceInfo.pciBusInfo;
retSize = srcSize = sizeof(deviceInfo.pciBusInfo);
}
break;
default:
if (getDeviceInfoForImage(paramName, src, srcSize, retSize) && !getSharedDeviceInfo().imageSupport) {
src = &value;

View File

@ -129,6 +129,7 @@ struct ClDeviceInfo {
cl_uint internalDriverVersion;
cl_uint grfSize;
bool preemptionSupported;
cl_device_pci_bus_info_khr pciBusInfo;
/* Extensions supported */
bool nv12Extension;
bool vmeExtension;