module Graphics.Vulkan.Version where

import Data.Bits( shiftR
                , shiftL
                , (.|.)
                , (.&.)
                )
import Data.Word( Word32
                )

vkApiVersion :: Word32
vkApiVersion  = vkMakeVersion 1 0 3

vkVersionMinor :: Word32 -> Word32
vkVersionMinor version = (.&.) (shiftR version 12) 1023

vkVersionPatch :: Word32 -> Word32
vkVersionPatch version = (.&.) version 4095

vkMakeVersion :: Word32 -> Word32 -> Word32 -> Word32
vkMakeVersion major minor patch = (.|.) ((.|.) (shiftL major 22) (shiftL minor 12)) patch

vkVersionMajor :: Word32 -> Word32
vkVersionMajor version = shiftR version 22