{-# LANGUAGE ImportQualifiedPost #-}
{-# OPTIONS_GHC -Wall -fno-warn-tabs #-}

module Gpu.Vulkan.Sparse.Middle.Internal where

import Gpu.Vulkan.Device.Middle.Internal qualified as Device
import Gpu.Vulkan.Memory.Middle.Internal qualified as Memory
import Gpu.Vulkan.Sparse.Enum

import Gpu.Vulkan.Sparse.Core qualified as C

data MemoryBind = MemoryBind {
	MemoryBind -> Size
memoryBindResourceOffset :: Device.Size,
	MemoryBind -> Size
memoryBindSize :: Device.Size,
	MemoryBind -> M
memoryBindMemory :: Memory.M,
	MemoryBind -> Size
memoryBindMemoryOffset :: Device.Size,
	MemoryBind -> MemoryBindFlags
memoryBindFlags :: MemoryBindFlags }

memoryBindToCore :: MemoryBind -> IO C.MemoryBind
memoryBindToCore :: MemoryBind -> IO MemoryBind
memoryBindToCore MemoryBind {
	memoryBindResourceOffset :: MemoryBind -> Size
memoryBindResourceOffset = Device.Size Word64
ro,
	memoryBindSize :: MemoryBind -> Size
memoryBindSize = Device.Size Word64
sz,
	memoryBindMemory :: MemoryBind -> M
memoryBindMemory = M
mm,
	memoryBindMemoryOffset :: MemoryBind -> Size
memoryBindMemoryOffset = Device.Size Word64
mo,
	memoryBindFlags :: MemoryBind -> MemoryBindFlags
memoryBindFlags = MemoryBindFlagBits Word32
fs } = do
	M
cmm <- M -> IO M
Memory.mToCore M
mm
	MemoryBind -> IO MemoryBind
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure C.MemoryBind {
		memoryBindResourceOffset :: Word64
C.memoryBindResourceOffset = Word64
ro,
		memoryBindSize :: Word64
C.memoryBindSize = Word64
sz,
		memoryBindMemory :: M
C.memoryBindMemory = M
cmm,
		memoryBindMemoryOffset :: Word64
C.memoryBindMemoryOffset = Word64
mo,
		memoryBindFlags :: Word32
C.memoryBindFlags = Word32
fs }