{-# LINE 1 "src/Gpu/Vulkan/Descriptor/Middle/Internal.hsc" #-}
{-# LANGUAGE ImportQualifiedPost #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ScopedTypeVariables, TypeApplications #-}
{-# LANGUAGE MonoLocalBinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# OPTIONS_GHC -Wall -fno-warn-tabs #-}

module Gpu.Vulkan.Descriptor.Middle.Internal (
	indexingExtensionName,
	ImageInfo(..), imageInfoToCore, BufferInfo(..), bufferInfoToCore ) where

import qualified Gpu.Vulkan.Device.Middle.Internal as Device
import qualified Gpu.Vulkan.Buffer.Middle.Internal as Buffer
import qualified Gpu.Vulkan.Image.Enum as Image
import qualified Gpu.Vulkan.ImageView.Middle.Internal as ImageView
import qualified Gpu.Vulkan.Sampler.Middle.Internal as Sampler
import qualified Gpu.Vulkan.Descriptor.Core as C

import Data.Text qualified as T



indexingExtensionName :: T.Text
indexingExtensionName :: Text
indexingExtensionName = Text
"VK_EXT_descriptor_indexing"
{-# LINE 25 "src/Gpu/Vulkan/Descriptor/Middle/Internal.hsc" #-}

data BufferInfo = BufferInfo {
	BufferInfo -> B
bufferInfoBuffer :: Buffer.B,
	BufferInfo -> Size
bufferInfoOffset :: Device.Size,
	BufferInfo -> Size
bufferInfoRange :: Device.Size }
	deriving Int -> BufferInfo -> ShowS
[BufferInfo] -> ShowS
BufferInfo -> String
(Int -> BufferInfo -> ShowS)
-> (BufferInfo -> String)
-> ([BufferInfo] -> ShowS)
-> Show BufferInfo
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> BufferInfo -> ShowS
showsPrec :: Int -> BufferInfo -> ShowS
$cshow :: BufferInfo -> String
show :: BufferInfo -> String
$cshowList :: [BufferInfo] -> ShowS
showList :: [BufferInfo] -> ShowS
Show

bufferInfoToCore :: BufferInfo -> C.BufferInfo
bufferInfoToCore :: BufferInfo -> BufferInfo
bufferInfoToCore BufferInfo {
	bufferInfoBuffer :: BufferInfo -> B
bufferInfoBuffer = Buffer.B B
b,
	bufferInfoOffset :: BufferInfo -> Size
bufferInfoOffset = Device.Size Word64
os,
	bufferInfoRange :: BufferInfo -> Size
bufferInfoRange = Device.Size Word64
rg } = C.BufferInfo {
	bufferInfoBuffer :: B
C.bufferInfoBuffer = B
b,
	bufferInfoOffset :: Word64
C.bufferInfoOffset = Word64
os,
	bufferInfoRange :: Word64
C.bufferInfoRange = Word64
rg }

data ImageInfo = ImageInfo {
	ImageInfo -> S
imageInfoSampler :: Sampler.S,
	ImageInfo -> I
imageInfoImageView :: ImageView.I,
	ImageInfo -> Layout
imageInfoImageLayout :: Image.Layout }
	deriving Int -> ImageInfo -> ShowS
[ImageInfo] -> ShowS
ImageInfo -> String
(Int -> ImageInfo -> ShowS)
-> (ImageInfo -> String)
-> ([ImageInfo] -> ShowS)
-> Show ImageInfo
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ImageInfo -> ShowS
showsPrec :: Int -> ImageInfo -> ShowS
$cshow :: ImageInfo -> String
show :: ImageInfo -> String
$cshowList :: [ImageInfo] -> ShowS
showList :: [ImageInfo] -> ShowS
Show

imageInfoToCore :: ImageInfo -> IO C.ImageInfo
imageInfoToCore :: ImageInfo -> IO ImageInfo
imageInfoToCore ImageInfo {
	imageInfoSampler :: ImageInfo -> S
imageInfoSampler = Sampler.S S
s,
	imageInfoImageView :: ImageInfo -> I
imageInfoImageView = I
iv,
	imageInfoImageLayout :: ImageInfo -> Layout
imageInfoImageLayout = Image.Layout Word32
l } = do
	iv' <- I -> IO I
ImageView.iToCore I
iv
	pure C.ImageInfo {
		C.imageInfoSampler = s,
		C.imageInfoImageView = iv',
		C.imageInfoImageLayout = l }