clover: Return correct value for CL_DEVICE_ENDIAN_LITTLE
authorTom Stellard <thomas.stellard@amd.com>
Wed, 10 Jul 2013 04:21:40 +0000 (21:21 -0700)
committerFrancisco Jerez <currojerez@riseup.net>
Mon, 22 Jul 2013 20:45:20 +0000 (22:45 +0200)
Query the driver using PIPE_CAP_ENDIANNESS rather than always returning
true.

Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Francisco Jerez <currojerez@riseup.net>
src/gallium/state_trackers/clover/api/device.cpp
src/gallium/state_trackers/clover/core/device.cpp
src/gallium/state_trackers/clover/core/device.hpp

index e132656032a4213c6a1ac11e3bd157db1c6d98ab..3e8b3f821c3147309a75ab37a54dce3eec721805 100644 (file)
@@ -192,7 +192,8 @@ clGetDeviceInfo(cl_device_id dev, cl_device_info param,
       return scalar_property<size_t>(buf, size, size_ret, 0);
 
    case CL_DEVICE_ENDIAN_LITTLE:
-      return scalar_property<cl_bool>(buf, size, size_ret, CL_TRUE);
+      return scalar_property<cl_bool>(buf, size, size_ret,
+                                      dev->endianness() == PIPE_ENDIAN_LITTLE);
 
    case CL_DEVICE_AVAILABLE:
    case CL_DEVICE_COMPILER_AVAILABLE:
index 95a422c8b7afd7b76b0b705e8fe7276786273d9c..94faeee6c44dd858b5772f7c2c50807dcf9e852d 100644 (file)
@@ -192,3 +192,8 @@ _cl_device_id::ir_target() const {
                                                     PIPE_COMPUTE_CAP_IR_TARGET);
    return { target.data() };
 }
+
+enum pipe_endian
+_cl_device_id::endianness() const {
+   return (enum pipe_endian)pipe->get_param(pipe, PIPE_CAP_ENDIANNESS);
+}
index 465af9f197d9e331c4e5585403c6e1d9a6fe835a..c6e50dbde6d50076403e53e71bdc6890ead2d7a3 100644 (file)
@@ -66,6 +66,7 @@ public:
    std::string vendor_name() const;
    enum pipe_shader_ir ir_format() const;
    std::string ir_target() const;
+   enum pipe_endian endianness() const;
 
    friend struct _cl_command_queue;
    friend class clover::root_resource;