anchor.diff:  ;; :atomic-counter-buffer
   ;; :shader-storage-buffer
   
  -(defun2 gpu-buffer-bound (ctx target)
  -  (declare (optimize (speed 3) (safety 1) (debug 1) (compilation-speed 0)))
  +(defn gpu-buffer-bound ((ctx cepl-context)
  +                        (target symbol))
  +    gpu-buffer
  +  (declare (optimize (speed 3) (safety 1) (debug 1) (compilation-speed 0))
  +           (profile t))
     (let ((index (buffer-kind->cache-index target)))
       (%with-cepl-context (array-of-gpu-buffers gl-context)
           ctx
  
positive.code: 
  (defn-inline gpu-buffer-bound-id ((ctx cepl-context) (index (integer 0 11)))
      gl-id
    (declare (profile t))
    (declare (optimize (speed 3) (safety 1) (debug 1) (compilation-speed 0)))
    (%with-cepl-context (array-of-bound-gpu-buffer-ids) ctx
      (declare (type (simple-array gl-id) array-of-bound-gpu-buffer-ids))
      (aref array-of-bound-gpu-buffer-ids index)))
  
  (let ((cache-id->enum-id
         #(34962 37568 36662 36663 37102 36671 34963 35051 35052 37266 37074
           35882)))
    (defun2 set-gpu-buffer-bound-id (ctx index id)
      (declare (inline unknown-gl-id-p))
      (declare (optimize (speed 3) (safety 1) (debug 1) (compilation-speed 0)))
      (%with-cepl-context (array-of-bound-gpu-buffer-ids gl-context) ctx
        (let ((current (gpu-buffer-bound-id ctx index))
              (bind-id (if (unknown-gl-id-p id)
  
negative.code: ;; binding-points trying to mix them in the cache above was more confusing than
  ;; helpful.
  
  (defn ubo-bind-buffer-id-range ((ctx cepl-context)
                                  (id gl-id)
                                  (ubo-binding-point array-index)
                                  (offset (unsigned-byte 32))
                                  (size (unsigned-byte 32)))
      gl-id
    (declare (optimize (speed 3) (safety 1) (debug 1) (compilation-speed 0))
             (inline unknown-gl-id-p)
             (profile t))
    (assert (and offset size))
    ;; don't worry about checking cache for avoiding rebinding as we dont want to
    ;; cache ranges (yet?)
    (%with-cepl-context (array-of-ubo-bindings-buffer-ids) ctx
      (ensure-vec-index array-of-ubo-bindings-buffer-ids ubo-binding-point
                        +null-gl-id+ gl-id)
      (let ((bind-id (if (unknown-gl-id-p id) 0 id)))
        (%gl:bind-buffer-range
         :uniform-buffer ubo-binding-point bind-id offset size)
  