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