anchor.diff:    (copy-lisp-data-to-texture-backed-gpu-array source destination))
   (defmethod copy-g ((source array) (destination gpu-array-t))
     (copy-lisp-data-to-texture-backed-gpu-array source destination))
  +(defmethod copy-g ((source gpu-array-t) (destination c-array))
  +  (copy-texture-backed-gpu-array-to-c-array source destination))
   (defmethod copy-g ((source gpu-array-t) (destination (eql :c-array)))
     (declare (ignore destination))
     (copy-texture-backed-gpu-array-to-new-c-array source))
   (defmethod copy-g ((source gpu-array-t) (destination (eql :lisp)))
     (declare (ignore destination))
     (copy-texture-backed-gpu-array-to-new-lisp-data source))
  +(defmethod copy-g ((source gpu-array-t) (destination (eql :gpu-array-bb)))
  +  (declare (ignore destination))
  +  (copy-texture-backed-gpu-array-to-new-buffer-backed-gpu-array source))
   (defmethod copy-g ((source gpu-array-bb) (destination gpu-array-t))
     (copy-buffer-backed-gpu-array-to-texture-backed-gpu-array
  +   source destination))
  +(defmethod copy-g ((source gpu-array-t) (destination gpu-array-bb))
  +  (copy-texture-backed-gpu-array-to-buffer-backed-gpu-array
      source destination))
   
   ;; {TODO}
  
positive.code: ;; get texture params
  ;; texture views
  ;; dedicated generate-mipmaps
  
negative.code:     (:texture-2d-multisample #.(gl-enum :texture-2d-multisample))
      (:texture-2d-multisample-array #.(gl-enum :texture-2d-multisample-array))))
  
  (defgeneric pixel-format-from-array (array)
    (:method ((arr c-array))
      (or (c-array-element-pixel-format arr)
          (lisp-type->pixel-format (c-array-element-type arr))))
    (:method ((arr gpu-array-bb))
      (or (gpu-array-bb-element-pixel-format arr)
          (lisp-type->pixel-format (gpu-array-bb-element-type arr)))))
  
  (defun+ %make-texture (tex-obj dimensions mipmap layer-count cubes
                                 buffer-storage rectangle immutable
                                 initial-contents image-format
  