EdB <edb+m...@sigluy.net> writes: > The implementation is basically a NOP > but it conforms with OpenCL 1.2 > > As before, it needed CL 1.2 headers
Pushed with a couple of minor-ish fixes [1]. [1] http://cgit.freedesktop.org/mesa/mesa/commit/?id=7fb05f929802bf32391e416ceb62a34b4571905c > --- > src/gallium/state_trackers/clover/api/device.cpp | 59 > ++++++++++++++++++++++ > src/gallium/state_trackers/clover/api/dispatch.cpp | 6 +-- > src/gallium/state_trackers/clover/api/dispatch.hpp | 7 ++- > 3 files changed, 68 insertions(+), 4 deletions(-) > > diff --git a/src/gallium/state_trackers/clover/api/device.cpp > b/src/gallium/state_trackers/clover/api/device.cpp > index 7bc8d0a..46a8548 100644 > --- a/src/gallium/state_trackers/clover/api/device.cpp > +++ b/src/gallium/state_trackers/clover/api/device.cpp > @@ -295,6 +295,28 @@ clGetDeviceInfo(cl_device_id d_dev, cl_device_info param, > buf.as_string() = "OpenCL C 1.1"; > break; > > + // No suport for sub-devices. d_dev is always a root device > + case CL_DEVICE_PARENT_DEVICE: > + buf.as_scalar<cl_device_id>() = 0; > + break; > + > + case CL_DEVICE_PARTITION_MAX_SUB_DEVICES: > + buf.as_scalar<cl_uint>() = 0; > + break; > + > + case CL_DEVICE_PARTITION_PROPERTIES: > + case CL_DEVICE_PARTITION_TYPE: > + buf.as_vector<cl_device_partition_property>(); > + break; > + > + case CL_DEVICE_PARTITION_AFFINITY_DOMAIN: > + buf.as_vector<cl_device_affinity_domain>(); > + break; > + > + case CL_DEVICE_REFERENCE_COUNT: > + buf.as_scalar<cl_uint>() = 1; > + break; > + > default: > throw error(CL_INVALID_VALUE); > } > @@ -304,3 +326,40 @@ clGetDeviceInfo(cl_device_id d_dev, cl_device_info param, > } catch (error &e) { > return e.get(); > } > + > +CLOVER_API cl_int > +clCreateSubDevices(cl_device_id in_device, > + const cl_device_partition_property *properties, > + cl_uint num_devices, cl_device_id *out_devices, > + cl_uint *num_devices_ret) { > + // sub-devices are not really suported > + // so there is no supported partitioning schemes > + // and we may return CL_INVALID_VALUE > + return CL_INVALID_VALUE; > +} > + > +CLOVER_API cl_int > +clRetainDevice(cl_device_id d_dev) try { > + // Sub-devices are not really suported > + // but d_dev has to be a valid device > + obj(d_dev); > + > + // ref count doesn't change for root devices > + return CL_SUCCESS; > + > +} catch (error &e) { > + return e.get(); > +} > + > +CLOVER_API cl_int > +clReleaseDevice(cl_device_id d_dev) try { > + // sub-devices are not really suported > + // but d_dev has to be a valid device > + obj(d_dev); > + > + // ref count doesn't change for root devices > + return CL_SUCCESS; > + > +} catch (error &e) { > + return e.get(); > +} > diff --git a/src/gallium/state_trackers/clover/api/dispatch.cpp > b/src/gallium/state_trackers/clover/api/dispatch.cpp > index e4f7ea3..2ee6208 100644 > --- a/src/gallium/state_trackers/clover/api/dispatch.cpp > +++ b/src/gallium/state_trackers/clover/api/dispatch.cpp > @@ -117,9 +117,9 @@ namespace clover { > NULL, // clRetainDeviceEXT > NULL, // clReleaseDeviceEXT > NULL, // clCreateEventFromGLsyncKHR > - NULL, // clCreateSubDevices > - NULL, // clRetainDevice > - NULL, // clReleaseDevice > + clCreateSubDevices, > + clRetainDevice, > + clReleaseDevice, > NULL, // clCreateImage > NULL, // clCreateProgramWithBuiltInKernels > NULL, // clCompileProgram > diff --git a/src/gallium/state_trackers/clover/api/dispatch.hpp > b/src/gallium/state_trackers/clover/api/dispatch.hpp > index 9dfb2b9..0b1fbf5 100644 > --- a/src/gallium/state_trackers/clover/api/dispatch.hpp > +++ b/src/gallium/state_trackers/clover/api/dispatch.hpp > @@ -638,7 +638,12 @@ struct _cl_icd_dispatch { > cl_GLsync sync, > cl_int *errcode_ret); > > - void *clCreateSubDevices; > + CL_API_ENTRY cl_int (CL_API_CALL *clCreateSubDevices)( > + cl_device_id in_device, > + const cl_device_partition_property *partition_properties, > + cl_uint num_entries, > + cl_device_id *out_devices, > + cl_uint *num_devices); > > CL_API_ENTRY cl_int (CL_API_CALL *clRetainDevice)( > cl_device_id device); > -- > 1.9.1 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev
pgpER5VSxP4qU.pgp
Description: PGP signature
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev