summaryrefslogtreecommitdiffstats
path: root/src/gallium/state_trackers/clover/api
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/state_trackers/clover/api')
-rw-r--r--src/gallium/state_trackers/clover/api/device.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/gallium/state_trackers/clover/api/device.cpp b/src/gallium/state_trackers/clover/api/device.cpp
index b202102389f..26e88aadc73 100644
--- a/src/gallium/state_trackers/clover/api/device.cpp
+++ b/src/gallium/state_trackers/clover/api/device.cpp
@@ -150,7 +150,7 @@ clGetDeviceInfo(cl_device_id d_dev, cl_device_info param,
break;
case CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF:
- buf.as_scalar<cl_uint>() = 0;
+ buf.as_scalar<cl_uint>() = dev.has_halves() ? 8 : 0;
break;
case CL_DEVICE_MAX_CLOCK_FREQUENCY:
@@ -213,6 +213,13 @@ clGetDeviceInfo(cl_device_id d_dev, cl_device_info param,
buf.as_scalar<cl_uint>() = 128;
break;
+ case CL_DEVICE_HALF_FP_CONFIG:
+ // This is the "mandated minimum half precision floating-point
+ // capability" for OpenCL 1.x.
+ buf.as_scalar<cl_device_fp_config>() =
+ CL_FP_INF_NAN | CL_FP_ROUND_TO_NEAREST;
+ break;
+
case CL_DEVICE_SINGLE_FP_CONFIG:
// This is the "mandated minimum single precision floating-point
// capability" for OpenCL 1.1. In OpenCL 1.2, nothing is required for
@@ -329,7 +336,8 @@ clGetDeviceInfo(cl_device_id d_dev, cl_device_info param,
" cl_khr_local_int32_base_atomics"
" cl_khr_local_int32_extended_atomics"
" cl_khr_byte_addressable_store"
- + std::string(dev.has_doubles() ? " cl_khr_fp64" : "");
+ + std::string(dev.has_doubles() ? " cl_khr_fp64" : "")
+ + std::string(dev.has_halves() ? " cl_khr_fp16" : "");
break;
case CL_DEVICE_PLATFORM:
@@ -365,7 +373,7 @@ clGetDeviceInfo(cl_device_id d_dev, cl_device_info param,
break;
case CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF:
- buf.as_scalar<cl_uint>() = 0;
+ buf.as_scalar<cl_uint>() = dev.has_halves() ? 8 : 0;
break;
case CL_DEVICE_OPENCL_C_VERSION: