From cd2dc4f70c35b6981789b02c32a9f1d71562638c Mon Sep 17 00:00:00 2001 From: Karol Herbst Date: Thu, 8 Aug 2024 19:35:51 +0200 Subject: [PATCH] rusticl/queue: add clSetCommandQueueProperty The CL CTS started to call this API, luckily we don't have to actually implement it, because we don't intent to support CL 1.0 only devices in the first place (probably). Cc: mesa-stable Part-of: --- src/gallium/frontends/rusticl/api/icd.rs | 2 +- src/gallium/frontends/rusticl/api/queue.rs | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/gallium/frontends/rusticl/api/icd.rs b/src/gallium/frontends/rusticl/api/icd.rs index 9370df7b029..71215333cf2 100644 --- a/src/gallium/frontends/rusticl/api/icd.rs +++ b/src/gallium/frontends/rusticl/api/icd.rs @@ -35,7 +35,7 @@ pub static DISPATCH: cl_icd_dispatch = cl_icd_dispatch { clRetainCommandQueue: Some(clRetainCommandQueue), clReleaseCommandQueue: Some(clReleaseCommandQueue), clGetCommandQueueInfo: Some(clGetCommandQueueInfo), - clSetCommandQueueProperty: None, + clSetCommandQueueProperty: Some(clSetCommandQueueProperty), clCreateBuffer: Some(clCreateBuffer), clCreateImage2D: Some(clCreateImage2D), clCreateImage3D: Some(clCreateImage3D), diff --git a/src/gallium/frontends/rusticl/api/queue.rs b/src/gallium/frontends/rusticl/api/queue.rs index aa8460798d7..65d24b8ff91 100644 --- a/src/gallium/frontends/rusticl/api/queue.rs +++ b/src/gallium/frontends/rusticl/api/queue.rs @@ -41,6 +41,22 @@ impl CLInfo for cl_command_queue { } } +#[cl_entrypoint(clSetCommandQueueProperty)] +fn set_command_queue_property( + _command_queue: cl_command_queue, + _properties: cl_command_queue_properties, + _enable: cl_bool, + _old_properties: *mut cl_command_queue_properties, +) -> CLResult<()> { + // clSetCommandQueueProperty may unconditionally return an error if no devices in the context + // associated with command_queue support modifying the properties of a command-queue. Support + // for modifying the properties of a command-queue is required only for OpenCL 1.0 devices. + // + // CL_INVALID_OPERATION if no devices in the context associated with command_queue support + // modifying the properties of a command-queue. + Err(CL_INVALID_OPERATION) +} + fn valid_command_queue_properties(properties: cl_command_queue_properties) -> bool { let valid_flags = cl_bitfield::from( CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE