From e497f81603674c4cc3f7377bc735a5146a3126cf Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Fri, 16 Aug 2024 13:44:27 -0400 Subject: [PATCH] rusticl: Add clCreateSubDevices stub unified-runtime tries to call this unconditionally. It handles errors correctly, but calling None here isn't an error, it's a crash. Just return CL_INVALID_VALUE so we don't crash. Reviewed-by: Karol Herbst Part-of: --- src/gallium/frontends/rusticl/api/device.rs | 14 ++++++++++++++ src/gallium/frontends/rusticl/api/icd.rs | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/gallium/frontends/rusticl/api/device.rs b/src/gallium/frontends/rusticl/api/device.rs index c1cb7902e03..826b4ac793b 100644 --- a/src/gallium/frontends/rusticl/api/device.rs +++ b/src/gallium/frontends/rusticl/api/device.rs @@ -372,6 +372,20 @@ fn release_device(_device: cl_device_id) -> CLResult<()> { Ok(()) } +#[cl_entrypoint(clCreateSubDevices)] +fn create_sub_devices( + _device: cl_device_id, + _properties: *const cl_device_partition_property, + _num_devices: cl_uint, + _out_devices: *mut cl_device_id, + _num_devices_ret: *mut cl_uint, +) -> CLResult<()> { + // CL_INVALID_VALUE if values specified in properties are not valid or + // if values specified in properties are valid but not supported by the + // device. + Err(CL_INVALID_VALUE) +} + #[cl_entrypoint(clGetDeviceAndHostTimer)] fn get_device_and_host_timer( device: cl_device_id, diff --git a/src/gallium/frontends/rusticl/api/icd.rs b/src/gallium/frontends/rusticl/api/icd.rs index 71215333cf2..47bd38fa514 100644 --- a/src/gallium/frontends/rusticl/api/icd.rs +++ b/src/gallium/frontends/rusticl/api/icd.rs @@ -115,7 +115,7 @@ pub static DISPATCH: cl_icd_dispatch = cl_icd_dispatch { clRetainDeviceEXT: None, clReleaseDeviceEXT: None, clCreateEventFromGLsyncKHR: None, - clCreateSubDevices: None, + clCreateSubDevices: Some(clCreateSubDevices), clRetainDevice: Some(clRetainDevice), clReleaseDevice: Some(clReleaseDevice), clCreateImage: Some(clCreateImage),