Correct CL_QUEUE_PROPERTIES_ARRAY query

Add support of this query for Device Queues.

Change-Id: Ia4ad110af22e509efe8b9ae4c27bcccd4271f4a5
Signed-off-by: Filip Hazubski <filip.hazubski@intel.com>
This commit is contained in:
Filip Hazubski
2020-08-27 18:30:18 +02:00
committed by sys_ocldev
parent 1c0e2430c5
commit cfe1d76781
4 changed files with 44 additions and 8 deletions

View File

@@ -38,6 +38,7 @@ DeviceQueue::DeviceQueue(Context *context,
queueSize = device->getDeviceInfo().queueOnDevicePreferredSize;
}
storeProperties(&properties);
allocateResources();
initDeviceQueue();
}
@@ -101,6 +102,16 @@ cl_int DeviceQueue::getCommandQueueInfo(cl_command_queue_info paramName,
return getQueueInfo<DeviceQueue>(this, paramName, paramValueSize, paramValue, paramValueSizeRet);
}
void DeviceQueue::storeProperties(const cl_queue_properties *properties) {
if (properties) {
for (size_t i = 0; properties[i] != 0; i += 2) {
propertiesVector.push_back(properties[i]);
propertiesVector.push_back(properties[i + 1]);
}
propertiesVector.push_back(0);
}
}
void DeviceQueue::allocateResources() {
auto &caps = device->getDeviceInfo();

View File

@@ -49,6 +49,7 @@ class DeviceQueue : public BaseObject<_device_queue> {
Context &getContext() { return *context; }
cl_uint getQueueSize() { return queueSize; }
cl_command_queue_properties getCommandQueueProperties() const { return commandQueueProperties; }
const std::vector<uint64_t> &getPropertiesVector() const { return propertiesVector; }
GraphicsAllocation *getQueueBuffer() { return queueBuffer; }
GraphicsAllocation *getEventPoolBuffer() { return eventPoolBuffer; }
GraphicsAllocation *getSlbBuffer() { return slbBuffer; }
@@ -109,12 +110,14 @@ class DeviceQueue : public BaseObject<_device_queue> {
static const uint32_t numberOfDeviceEnqueues;
protected:
void storeProperties(const cl_queue_properties *properties);
void allocateResources();
void initDeviceQueue();
Context *context = nullptr;
ClDevice *device = nullptr;
cl_command_queue_properties commandQueueProperties = 0;
std::vector<uint64_t> propertiesVector;
cl_uint queueSize = 0;
GraphicsAllocation *queueBuffer = nullptr;