keid-core-0.1.8.0: src/Resource/Vulkan/Named.hs
module Resource.Vulkan.Named
( object
, objectOrigin
) where
import RIO
import GHC.Stack (callStack, getCallStack, srcLocModule, withFrozenCallStack)
import RIO.List qualified as List
import Vulkan.Core10 qualified as Vk
import Vulkan.Utils.Debug qualified as Debug
import Engine.Vulkan.Types (MonadVulkan, getDevice)
object
:: ( MonadVulkan env m
, Vk.HasObjectType a
)
=> a
-> Text
-> m ()
object o name = do
device <- asks getDevice
Debug.nameObject device o $
encodeUtf8 name
objectOrigin
:: ( MonadVulkan env m
, Vk.HasObjectType a
, HasCallStack
)
=> a
-> m ()
objectOrigin o =
withFrozenCallStack $
object o $
fromString . List.intercalate "|" $
map (srcLocModule . snd) (getCallStack callStack)