packages feed

gpu-vulkan-core-0.1.0.11: src/Gpu/Vulkan/Sparse/Image/Core.hsc

{-# LANGUAGE ImportQualifiedPost #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TupleSections #-}
{-# LANGUAGE PatternSynonyms, ViewPatterns #-}
{-# OPTIONS_GHC -Wall -fno-warn-tabs #-}

module Gpu.Vulkan.Sparse.Image.Core where

import Foreign.Ptr
import Foreign.Storable
import Foreign.C.Struct
import Data.Word

import Gpu.Vulkan.Core
import Gpu.Vulkan.Memory.Core qualified as Memory
import Gpu.Vulkan.Image.Core qualified as Image
import Gpu.Vulkan.Sparse.Core qualified as S

#include <vulkan/vulkan.h>

struct "OpaqueMemoryBindInfo" #{size VkSparseImageOpaqueMemoryBindInfo}
	#{alignment VkSparseImageOpaqueMemoryBindInfo} [
	("image", ''Image.I,
		[| #{peek VkSparseImageOpaqueMemoryBindInfo, image} |],
		[| #{poke VkSparseImageOpaqueMemoryBindInfo, image} |]),
	("bindCount", ''#{type uint32_t},
		[| #{peek VkSparseImageOpaqueMemoryBindInfo, bindCount} |],
		[| #{poke VkSparseImageOpaqueMemoryBindInfo, bindCount} |]),
	("pBinds", ''S.PtrMemoryBind,
		[| #{peek VkSparseImageOpaqueMemoryBindInfo, pBinds} |],
		[| #{poke VkSparseImageOpaqueMemoryBindInfo, pBinds} |]) ]
	[''Show, ''Storable]

type PtrOpaqueMemoryBindInfo = Ptr OpaqueMemoryBindInfo

struct "MemoryBind" #{size VkSparseImageMemoryBind}
	#{alignment VkSparseImageMemoryBind} [
	("subresource", ''Image.Subresource,
		[| #{peek VkSparseImageMemoryBind, subresource} |],
		[| #{poke VkSparseImageMemoryBind, subresource} |]),
	("offset", ''Offset3d,
		[| #{peek VkSparseImageMemoryBind, offset} |],
		[| #{poke VkSparseImageMemoryBind, offset} |]),
	("extent", ''Extent3d,
		[| #{peek VkSparseImageMemoryBind, extent} |],
		[| #{poke VkSparseImageMemoryBind, extent} |]),
	("memory", ''Memory.M,
		[| #{peek VkSparseImageMemoryBind, memory} |],
		[| #{poke VkSparseImageMemoryBind, memory} |]),
	("memoryOffset", ''#{type VkDeviceSize},
		[| #{peek VkSparseImageMemoryBind, memoryOffset} |],
		[| #{poke VkSparseImageMemoryBind, memoryOffset} |]),
	("flags", ''#{type VkSparseMemoryBindFlags},
		[| #{peek VkSparseImageMemoryBind, flags} |],
		[| #{poke VkSparseImageMemoryBind, flags} |]) ]
	[''Show, ''Storable]

type PtrMemoryBind = Ptr MemoryBind

struct "MemoryBindInfo" #{size VkSparseImageMemoryBindInfo}
	#{alignment VkSparseImageMemoryBindInfo} [
	("image", ''Image.I,
		[| #{peek VkSparseImageMemoryBindInfo, image} |],
		[| #{poke VkSparseImageMemoryBindInfo, image} |]),
	("bindCount", ''#{type uint32_t},
		[| #{peek VkSparseImageMemoryBindInfo, bindCount} |],
		[| #{poke VkSparseImageMemoryBindInfo, bindCount} |]),
	("pBinds", ''PtrMemoryBind,
		[| #{peek VkSparseImageMemoryBindInfo, pBinds} |],
		[| #{poke VkSparseImageMemoryBindInfo, pBinds} |]) ]
	[''Show, ''Storable]

type PtrMemoryBindInfo = Ptr MemoryBindInfo