packages feed

brillo-1.13.3: Brillo/Internals/Interface/Debug.hs

{-# OPTIONS_HADDOCK hide #-}

{-| Implements functions to dump portions of the OpenGL state to stdout.
     Used for debugging.
-}
module Brillo.Internals.Interface.Debug (
  dumpFramebufferState,
  dumpFragmentState,
)
where

import Graphics.Rendering.OpenGL (get)
import Graphics.Rendering.OpenGL.GL qualified as GL


-- | Dump internal state of the OpenGL framebuffer
dumpFramebufferState :: IO ()
dumpFramebufferState =
  do
    auxBuffers <- get GL.auxBuffers
    doubleBuffer <- get GL.doubleBuffer
    drawBuffer <- get GL.drawBuffer

    rgbaBits <- get GL.rgbaBits
    stencilBits <- get GL.stencilBits
    depthBits <- get GL.depthBits
    accumBits <- get GL.accumBits

    clearColor <- get GL.clearColor
    clearStencil <- get GL.clearStencil
    clearDepth <- get GL.clearDepth
    clearAccum <- get GL.clearAccum

    colorMask <- get GL.colorMask
    stencilMask <- get GL.stencilMask
    depthMask <- get GL.depthMask

    putStr $
      "* dumpFramebufferState\n"
        ++ "  auxBuffers         = "
        ++ show auxBuffers
        ++ "\n"
        ++ "  doubleBuffer       = "
        ++ show doubleBuffer
        ++ "\n"
        ++ "  drawBuffer         = "
        ++ show drawBuffer
        ++ "\n"
        ++ "\n"
        ++ "  bits       rgba    = "
        ++ show rgbaBits
        ++ "\n"
        ++ "             stencil = "
        ++ show stencilBits
        ++ "\n"
        ++ "             depth   = "
        ++ show depthBits
        ++ "\n"
        ++ "             accum   = "
        ++ show accumBits
        ++ "\n"
        ++ "\n"
        ++ "  clear      color   = "
        ++ show clearColor
        ++ "\n"
        ++ "             stencil = "
        ++ show clearStencil
        ++ "\n"
        ++ "             depth   = "
        ++ show clearDepth
        ++ "\n"
        ++ "             accum   = "
        ++ show clearAccum
        ++ "\n"
        ++ "\n"
        ++ "  mask       color   = "
        ++ show colorMask
        ++ "\n"
        ++ "             stencil = "
        ++ show stencilMask
        ++ "\n"
        ++ "             depth   = "
        ++ show depthMask
        ++ "\n"
        ++ "\n"


-- | Dump internal state of the fragment renderer.
dumpFragmentState :: IO ()
dumpFragmentState =
  do
    blend <- get GL.blend
    blendEquation <- get GL.blendEquation
    blendFunc <- get GL.blendFunc

    putStr $
      "* dumpFragmentState\n"
        ++ "  blend              = "
        ++ show blend
        ++ "\n"
        ++ "  blend equation     = "
        ++ show blendEquation
        ++ "\n"
        ++ "  blend func         = "
        ++ show blendFunc
        ++ "\n"
        ++ "\n"