On Tuesday, April 29, 2014 04:21:35 PM Francisco Jerez wrote: > 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=7fb05f929802bf32391e416ceb > 62a34b4571905c
Tanks > > --- > > > > 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); > > > > _______________________________________________ > > mesa-dev mailing list > > mesa-dev@lists.freedesktop.org > > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev