st/clover: ship Doxyfile in the release tarball
[mesa.git] / src / gallium / state_trackers / clover / api / device.cpp
index 7bc8d0a7142f96b3857c7d8493290587f7c0ca13..e82546842580e22b9b25675c781481fc46921fd4 100644 (file)
@@ -62,6 +62,37 @@ clGetDeviceIDs(cl_platform_id d_platform, cl_device_type device_type,
    return e.get();
 }
 
+CLOVER_API cl_int
+clCreateSubDevices(cl_device_id d_dev,
+                   const cl_device_partition_property *props,
+                   cl_uint num_devs, cl_device_id *rd_devs,
+                   cl_uint *rnum_devs) {
+   // There are no currently supported partitioning schemes.
+   return CL_INVALID_VALUE;
+}
+
+CLOVER_API cl_int
+clRetainDevice(cl_device_id d_dev) try {
+   obj(d_dev);
+
+   // The reference 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 {
+   obj(d_dev);
+
+   // The reference count doesn't change for root devices.
+   return CL_SUCCESS;
+
+} catch (error &e) {
+   return e.get();
+}
+
 CLOVER_API cl_int
 clGetDeviceInfo(cl_device_id d_dev, cl_device_info param,
                 size_t size, void *r_buf, size_t *r_size) try {
@@ -78,7 +109,7 @@ clGetDeviceInfo(cl_device_id d_dev, cl_device_info param,
       break;
 
    case CL_DEVICE_MAX_COMPUTE_UNITS:
-      buf.as_scalar<cl_uint>() = 1;
+      buf.as_scalar<cl_uint>() = dev.max_compute_units();
       break;
 
    case CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS:
@@ -122,7 +153,7 @@ clGetDeviceInfo(cl_device_id d_dev, cl_device_info param,
       break;
 
    case CL_DEVICE_MAX_CLOCK_FREQUENCY:
-      buf.as_scalar<cl_uint>() = 0;
+      buf.as_scalar<cl_uint>() = dev.max_clock_frequency();
       break;
 
    case CL_DEVICE_ADDRESS_BITS:
@@ -153,7 +184,7 @@ clGetDeviceInfo(cl_device_id d_dev, cl_device_info param,
       break;
 
    case CL_DEVICE_IMAGE_SUPPORT:
-      buf.as_scalar<cl_bool>() = CL_TRUE;
+      buf.as_scalar<cl_bool>() = dev.image_support();
       break;
 
    case CL_DEVICE_MAX_PARAMETER_SIZE:
@@ -295,6 +326,32 @@ clGetDeviceInfo(cl_device_id d_dev, cl_device_info param,
       buf.as_string() = "OpenCL C 1.1";
       break;
 
+   case CL_DEVICE_PARENT_DEVICE:
+      buf.as_scalar<cl_device_id>() = NULL;
+      break;
+
+   case CL_DEVICE_PARTITION_MAX_SUB_DEVICES:
+      buf.as_scalar<cl_uint>() = 0;
+      break;
+
+   case CL_DEVICE_PARTITION_PROPERTIES:
+      buf.as_vector<cl_device_partition_property>() =
+         desc(property_list<cl_device_partition_property>());
+      break;
+
+   case CL_DEVICE_PARTITION_AFFINITY_DOMAIN:
+      buf.as_scalar<cl_device_affinity_domain>() = 0;
+      break;
+
+   case CL_DEVICE_PARTITION_TYPE:
+      buf.as_vector<cl_device_partition_property>() =
+         desc(property_list<cl_device_partition_property>());
+      break;
+
+   case CL_DEVICE_REFERENCE_COUNT:
+      buf.as_scalar<cl_uint>() = 1;
+      break;
+
    default:
       throw error(CL_INVALID_VALUE);
    }