anchor.diff:                 (blend (virgl:make-blend context :colormask :rgba))
                  (rasterizer (virgl:make-rasterizer
                               context
  -                            :front-ccw t
  +                            :front-ccw t ; match opengl
                               :cull-face :back))
  +               (dsa (virgl:make-dsa
  +                     context
  +                     :depth-enabled t
  +                     :depth-writemask t
  +                     :depth-func :less))
                  (setup-cmd-buf (virgl:make-command-buffer context)))
             ;; Attach scanout surface object to the framebuffer's color0 channel.
  -          ;; No depth/stencil surface.
  -          (virgl:add-command-set-framebuffer-state setup-cmd-buf nil scanout-surface)
  +          (virgl:add-command-set-framebuffer-state setup-cmd-buf depth-surface scanout-surface)
             ;; Viewport.
             (virgl:add-command-set-viewport-state
              setup-cmd-buf
  
positive.code:     result))
  
  (defun test-cube ()
    "Draw a cube."
    (virgl:with-context (context :name "Test context")
      ;; A cube is made of 8 vertices, formed into 6 faces, made of 2 tris each.
      (let ((test-data '(+0.5 +0.5 +0.5 1.0   ; 0 Position RUF (right upper front)
  
negative.code:           (virgl:add-command-bind-shader cmd-buf fragment-shader)
            ;; Enable writes to the color channels
            (virgl:add-command-bind-blend cmd-buf blend)
            (virgl:add-command-draw-vbo cmd-buf 0 (length test-data) :triangles)
            (virgl:command-buffer-finalize cmd-buf)
            (virgl:command-buffer-submit cmd-buf)
            (virgl:scanout-flush scanout 0 0 (virgl:width scanout) (virgl:height scanout)))))))
  