summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSerge Martin <edb+mesa@sigluy.net>2016-10-01 18:51:11 +0200
committerSerge Martin <edb@sigluy.net>2016-11-06 15:56:49 +0100
commit05fcc73f087fa2b8c447ec8c79c7bdab57d49faf (patch)
tree6b637ccc31efb82c52fb5bc03d6309ed6a2fcea1
parent8cc4a749713ce5940d077d0a3ab3d2af341e7ae2 (diff)
clover: add missing clGetDeviceInfo CL1.2 queries
Reviewed-by: Francisco Jerez <currojerez@riseup.net> Reviewed-by: Edward O'Callaghan <funfunctor@folklore1984.net> Reviewed-by: Vedran Miletić <vedran@miletic.net>
-rw-r--r--src/gallium/state_trackers/clover/api/device.cpp23
-rw-r--r--src/gallium/state_trackers/clover/core/device.cpp10
-rw-r--r--src/gallium/state_trackers/clover/core/device.hpp2
3 files changed, 35 insertions, 0 deletions
diff --git a/src/gallium/state_trackers/clover/api/device.cpp b/src/gallium/state_trackers/clover/api/device.cpp
index f7bd61b929b..a80ca46654f 100644
--- a/src/gallium/state_trackers/clover/api/device.cpp
+++ b/src/gallium/state_trackers/clover/api/device.cpp
@@ -184,6 +184,14 @@ clGetDeviceInfo(cl_device_id d_dev, cl_device_info param,
buf.as_scalar<size_t>() = 1 << dev.max_image_levels_3d();
break;
+ case CL_DEVICE_IMAGE_MAX_BUFFER_SIZE:
+ buf.as_scalar<size_t>() = dev.max_image_buffer_size();
+ break;
+
+ case CL_DEVICE_IMAGE_MAX_ARRAY_SIZE:
+ buf.as_scalar<size_t>() = dev.max_image_array_number();
+ break;
+
case CL_DEVICE_IMAGE_SUPPORT:
buf.as_scalar<cl_bool>() = dev.image_support();
break;
@@ -273,6 +281,7 @@ clGetDeviceInfo(cl_device_id d_dev, cl_device_info param,
case CL_DEVICE_AVAILABLE:
case CL_DEVICE_COMPILER_AVAILABLE:
+ case CL_DEVICE_LINKER_AVAILABLE:
buf.as_scalar<cl_bool>() = CL_TRUE;
break;
@@ -284,6 +293,10 @@ clGetDeviceInfo(cl_device_id d_dev, cl_device_info param,
buf.as_scalar<cl_command_queue_properties>() = CL_QUEUE_PROFILING_ENABLE;
break;
+ case CL_DEVICE_BUILT_IN_KERNELS:
+ buf.as_string() = "";
+ break;
+
case CL_DEVICE_NAME:
buf.as_string() = dev.device_name();
break;
@@ -358,6 +371,16 @@ clGetDeviceInfo(cl_device_id d_dev, cl_device_info param,
buf.as_string() = "OpenCL C 1.1 ";
break;
+ case CL_DEVICE_PRINTF_BUFFER_SIZE:
+ // Per the spec, the minimum value for the FULL profile is 1 MB.
+ // However, clover is not ready yet to support it
+ buf.as_scalar<size_t>() = 0 /* 1024 */;
+ break;
+
+ case CL_DEVICE_PREFERRED_INTEROP_USER_SYNC:
+ buf.as_scalar<cl_bool>() = CL_TRUE;
+ break;
+
case CL_DEVICE_PARENT_DEVICE:
buf.as_scalar<cl_device_id>() = NULL;
break;
diff --git a/src/gallium/state_trackers/clover/core/device.cpp b/src/gallium/state_trackers/clover/core/device.cpp
index 8825f993a75..8f1c1da5136 100644
--- a/src/gallium/state_trackers/clover/core/device.cpp
+++ b/src/gallium/state_trackers/clover/core/device.cpp
@@ -98,6 +98,11 @@ device::max_images_write() const {
return PIPE_MAX_SHADER_IMAGES;
}
+size_t
+device::max_image_buffer_size() const {
+ return pipe->get_param(pipe, PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE);
+}
+
cl_uint
device::max_image_levels_2d() const {
return pipe->get_param(pipe, PIPE_CAP_MAX_TEXTURE_2D_LEVELS);
@@ -108,6 +113,11 @@ device::max_image_levels_3d() const {
return pipe->get_param(pipe, PIPE_CAP_MAX_TEXTURE_3D_LEVELS);
}
+size_t
+device::max_image_array_number() const {
+ return pipe->get_param(pipe, PIPE_CAP_MAX_TEXTURE_ARRAY_LAYERS);
+}
+
cl_uint
device::max_samplers() const {
return pipe->get_shader_param(pipe, PIPE_SHADER_COMPUTE,
diff --git a/src/gallium/state_trackers/clover/core/device.hpp b/src/gallium/state_trackers/clover/core/device.hpp
index 6cf6c7fcb24..94a61d10500 100644
--- a/src/gallium/state_trackers/clover/core/device.hpp
+++ b/src/gallium/state_trackers/clover/core/device.hpp
@@ -51,8 +51,10 @@ namespace clover {
cl_uint vendor_id() const;
size_t max_images_read() const;
size_t max_images_write() const;
+ size_t max_image_buffer_size() const;
cl_uint max_image_levels_2d() const;
cl_uint max_image_levels_3d() const;
+ size_t max_image_array_number() const;
cl_uint max_samplers() const;
cl_ulong max_mem_global() const;
cl_ulong max_mem_local() const;