 (defn image3d-max-width ^long [device]
   (info-size* CL/clGetDeviceInfo device CL/CL_DEVICE_IMAGE3D_MAX_WIDTH))
 
-;; TODO Opencl 2.0
-(defn image-base-address-alignment [device]
-  nil)
+(defn image-base-address-alignment ^long [device]
+  (info-int* CL/clGetDeviceInfo device CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT))
 
 (defn image-max-array-size ^long [device]
   (info-size* CL/clGetDeviceInfo device CL/CL_DEVICE_IMAGE_MAX_ARRAY_SIZE))

                         (byte-seq res#)))))
    ([method clobject info]
     `(first (info-size* ~method ~clobject ~info 1)))))

(defmacro ^:private info-long*
  ([method clobject info num]

(defn max-constant-buffer-size ^long [device]
  (info-long* CL/clGetDeviceInfo device CL/CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE))

(defn max-global-variable-size ^long [device]
  (info-size* CL/clGetDeviceInfo device CL_DEVICE_MAX_GLOBAL_VARIABLE_SIZE))

(defn max-mem-aloc-size ^long [device]
  (info-long* CL/clGetDeviceInfo device CL/CL_DEVICE_MAX_MEM_ALLOC_SIZE))

(defn max-on-device-events ^long [device]
  (info-int* CL/clGetDeviceInfo device CL_DEVICE_MAX_ON_DEVICE_EVENTS))

(defn max-on-device-queues ^long [device]
  (info-int* CL/clGetDeviceInfo device CL_DEVICE_MAX_ON_DEVICE_QUEUES))

(defn max-parameter-size ^long [device]
  (info-size* CL/clGetDeviceInfo device CL/CL_DEVICE_MAX_PARAMETER_SIZE))

(defn max-pipe-args ^long [device]
  (info-int* CL/clGetDeviceInfo device CL_DEVICE_MAX_PIPE_ARGS))

(defn max-read-image-args ^long [device]
  (info-int* CL/clGetDeviceInfo device CL/CL_DEVICE_MAX_READ_IMAGE_ARGS))

(defn max-read-write-image-args ^long [device]
  (info-int* CL/clGetDeviceInfo device CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS))

(defn max-samplers ^long [device]
  (info-int* CL/clGetDeviceInfo device CL/CL_DEVICE_MAX_SAMPLERS))
