{-# language CPP #-}
module Vulkan.Extensions.VK_EXT_fragment_density_map2 ( PhysicalDeviceFragmentDensityMap2FeaturesEXT(..)
, PhysicalDeviceFragmentDensityMap2PropertiesEXT(..)
, EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION
, pattern EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION
, EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME
, pattern EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME
) where
import Foreign.Marshal.Alloc (allocaBytes)
import Foreign.Ptr (nullPtr)
import Foreign.Ptr (plusPtr)
import Vulkan.CStruct (FromCStruct)
import Vulkan.CStruct (FromCStruct(..))
import Vulkan.CStruct (ToCStruct)
import Vulkan.CStruct (ToCStruct(..))
import Vulkan.Zero (Zero(..))
import Data.String (IsString)
import Data.Typeable (Typeable)
import Foreign.Storable (Storable)
import Foreign.Storable (Storable(peek))
import Foreign.Storable (Storable(poke))
import qualified Foreign.Storable (Storable(..))
import GHC.Generics (Generic)
import Foreign.Ptr (Ptr)
import Data.Word (Word32)
import Data.Kind (Type)
import Vulkan.Core10.FundamentalTypes (bool32ToBool)
import Vulkan.Core10.FundamentalTypes (boolToBool32)
import Vulkan.Core10.FundamentalTypes (Bool32)
import Vulkan.Core10.Enums.StructureType (StructureType)
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT))
data PhysicalDeviceFragmentDensityMap2FeaturesEXT = PhysicalDeviceFragmentDensityMap2FeaturesEXT
{
PhysicalDeviceFragmentDensityMap2FeaturesEXT -> Bool
fragmentDensityMapDeferred :: Bool }
deriving (Typeable, PhysicalDeviceFragmentDensityMap2FeaturesEXT
-> PhysicalDeviceFragmentDensityMap2FeaturesEXT -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PhysicalDeviceFragmentDensityMap2FeaturesEXT
-> PhysicalDeviceFragmentDensityMap2FeaturesEXT -> Bool
$c/= :: PhysicalDeviceFragmentDensityMap2FeaturesEXT
-> PhysicalDeviceFragmentDensityMap2FeaturesEXT -> Bool
== :: PhysicalDeviceFragmentDensityMap2FeaturesEXT
-> PhysicalDeviceFragmentDensityMap2FeaturesEXT -> Bool
$c== :: PhysicalDeviceFragmentDensityMap2FeaturesEXT
-> PhysicalDeviceFragmentDensityMap2FeaturesEXT -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceFragmentDensityMap2FeaturesEXT)
#endif
deriving instance Show PhysicalDeviceFragmentDensityMap2FeaturesEXT
instance ToCStruct PhysicalDeviceFragmentDensityMap2FeaturesEXT where
withCStruct :: forall b.
PhysicalDeviceFragmentDensityMap2FeaturesEXT
-> (Ptr PhysicalDeviceFragmentDensityMap2FeaturesEXT -> IO b)
-> IO b
withCStruct PhysicalDeviceFragmentDensityMap2FeaturesEXT
x Ptr PhysicalDeviceFragmentDensityMap2FeaturesEXT -> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceFragmentDensityMap2FeaturesEXT
p -> forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceFragmentDensityMap2FeaturesEXT
p PhysicalDeviceFragmentDensityMap2FeaturesEXT
x (Ptr PhysicalDeviceFragmentDensityMap2FeaturesEXT -> IO b
f Ptr PhysicalDeviceFragmentDensityMap2FeaturesEXT
p)
pokeCStruct :: forall b.
Ptr PhysicalDeviceFragmentDensityMap2FeaturesEXT
-> PhysicalDeviceFragmentDensityMap2FeaturesEXT -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceFragmentDensityMap2FeaturesEXT
p PhysicalDeviceFragmentDensityMap2FeaturesEXT{Bool
fragmentDensityMapDeferred :: Bool
$sel:fragmentDensityMapDeferred:PhysicalDeviceFragmentDensityMap2FeaturesEXT :: PhysicalDeviceFragmentDensityMap2FeaturesEXT -> Bool
..} IO b
f = do
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceFragmentDensityMap2FeaturesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceFragmentDensityMap2FeaturesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceFragmentDensityMap2FeaturesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
fragmentDensityMapDeferred))
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
Ptr PhysicalDeviceFragmentDensityMap2FeaturesEXT -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceFragmentDensityMap2FeaturesEXT
p IO b
f = do
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceFragmentDensityMap2FeaturesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceFragmentDensityMap2FeaturesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceFragmentDensityMap2FeaturesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
IO b
f
instance FromCStruct PhysicalDeviceFragmentDensityMap2FeaturesEXT where
peekCStruct :: Ptr PhysicalDeviceFragmentDensityMap2FeaturesEXT
-> IO PhysicalDeviceFragmentDensityMap2FeaturesEXT
peekCStruct Ptr PhysicalDeviceFragmentDensityMap2FeaturesEXT
p = do
Bool32
fragmentDensityMapDeferred <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceFragmentDensityMap2FeaturesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ Bool -> PhysicalDeviceFragmentDensityMap2FeaturesEXT
PhysicalDeviceFragmentDensityMap2FeaturesEXT
(Bool32 -> Bool
bool32ToBool Bool32
fragmentDensityMapDeferred)
instance Storable PhysicalDeviceFragmentDensityMap2FeaturesEXT where
sizeOf :: PhysicalDeviceFragmentDensityMap2FeaturesEXT -> Int
sizeOf ~PhysicalDeviceFragmentDensityMap2FeaturesEXT
_ = Int
24
alignment :: PhysicalDeviceFragmentDensityMap2FeaturesEXT -> Int
alignment ~PhysicalDeviceFragmentDensityMap2FeaturesEXT
_ = Int
8
peek :: Ptr PhysicalDeviceFragmentDensityMap2FeaturesEXT
-> IO PhysicalDeviceFragmentDensityMap2FeaturesEXT
peek = forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceFragmentDensityMap2FeaturesEXT
-> PhysicalDeviceFragmentDensityMap2FeaturesEXT -> IO ()
poke Ptr PhysicalDeviceFragmentDensityMap2FeaturesEXT
ptr PhysicalDeviceFragmentDensityMap2FeaturesEXT
poked = forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceFragmentDensityMap2FeaturesEXT
ptr PhysicalDeviceFragmentDensityMap2FeaturesEXT
poked (forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceFragmentDensityMap2FeaturesEXT where
zero :: PhysicalDeviceFragmentDensityMap2FeaturesEXT
zero = Bool -> PhysicalDeviceFragmentDensityMap2FeaturesEXT
PhysicalDeviceFragmentDensityMap2FeaturesEXT
forall a. Zero a => a
zero
data PhysicalDeviceFragmentDensityMap2PropertiesEXT = PhysicalDeviceFragmentDensityMap2PropertiesEXT
{
PhysicalDeviceFragmentDensityMap2PropertiesEXT -> Bool
subsampledLoads :: Bool
,
PhysicalDeviceFragmentDensityMap2PropertiesEXT -> Bool
subsampledCoarseReconstructionEarlyAccess :: Bool
,
PhysicalDeviceFragmentDensityMap2PropertiesEXT -> Word32
maxSubsampledArrayLayers :: Word32
,
PhysicalDeviceFragmentDensityMap2PropertiesEXT -> Word32
maxDescriptorSetSubsampledSamplers :: Word32
}
deriving (Typeable, PhysicalDeviceFragmentDensityMap2PropertiesEXT
-> PhysicalDeviceFragmentDensityMap2PropertiesEXT -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PhysicalDeviceFragmentDensityMap2PropertiesEXT
-> PhysicalDeviceFragmentDensityMap2PropertiesEXT -> Bool
$c/= :: PhysicalDeviceFragmentDensityMap2PropertiesEXT
-> PhysicalDeviceFragmentDensityMap2PropertiesEXT -> Bool
== :: PhysicalDeviceFragmentDensityMap2PropertiesEXT
-> PhysicalDeviceFragmentDensityMap2PropertiesEXT -> Bool
$c== :: PhysicalDeviceFragmentDensityMap2PropertiesEXT
-> PhysicalDeviceFragmentDensityMap2PropertiesEXT -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceFragmentDensityMap2PropertiesEXT)
#endif
deriving instance Show PhysicalDeviceFragmentDensityMap2PropertiesEXT
instance ToCStruct PhysicalDeviceFragmentDensityMap2PropertiesEXT where
withCStruct :: forall b.
PhysicalDeviceFragmentDensityMap2PropertiesEXT
-> (Ptr PhysicalDeviceFragmentDensityMap2PropertiesEXT -> IO b)
-> IO b
withCStruct PhysicalDeviceFragmentDensityMap2PropertiesEXT
x Ptr PhysicalDeviceFragmentDensityMap2PropertiesEXT -> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
32 forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceFragmentDensityMap2PropertiesEXT
p -> forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceFragmentDensityMap2PropertiesEXT
p PhysicalDeviceFragmentDensityMap2PropertiesEXT
x (Ptr PhysicalDeviceFragmentDensityMap2PropertiesEXT -> IO b
f Ptr PhysicalDeviceFragmentDensityMap2PropertiesEXT
p)
pokeCStruct :: forall b.
Ptr PhysicalDeviceFragmentDensityMap2PropertiesEXT
-> PhysicalDeviceFragmentDensityMap2PropertiesEXT -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceFragmentDensityMap2PropertiesEXT
p PhysicalDeviceFragmentDensityMap2PropertiesEXT{Bool
Word32
maxDescriptorSetSubsampledSamplers :: Word32
maxSubsampledArrayLayers :: Word32
subsampledCoarseReconstructionEarlyAccess :: Bool
subsampledLoads :: Bool
$sel:maxDescriptorSetSubsampledSamplers:PhysicalDeviceFragmentDensityMap2PropertiesEXT :: PhysicalDeviceFragmentDensityMap2PropertiesEXT -> Word32
$sel:maxSubsampledArrayLayers:PhysicalDeviceFragmentDensityMap2PropertiesEXT :: PhysicalDeviceFragmentDensityMap2PropertiesEXT -> Word32
$sel:subsampledCoarseReconstructionEarlyAccess:PhysicalDeviceFragmentDensityMap2PropertiesEXT :: PhysicalDeviceFragmentDensityMap2PropertiesEXT -> Bool
$sel:subsampledLoads:PhysicalDeviceFragmentDensityMap2PropertiesEXT :: PhysicalDeviceFragmentDensityMap2PropertiesEXT -> Bool
..} IO b
f = do
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceFragmentDensityMap2PropertiesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceFragmentDensityMap2PropertiesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceFragmentDensityMap2PropertiesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
subsampledLoads))
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceFragmentDensityMap2PropertiesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
subsampledCoarseReconstructionEarlyAccess))
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceFragmentDensityMap2PropertiesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Word32)) (Word32
maxSubsampledArrayLayers)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceFragmentDensityMap2PropertiesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr Word32)) (Word32
maxDescriptorSetSubsampledSamplers)
IO b
f
cStructSize :: Int
cStructSize = Int
32
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
Ptr PhysicalDeviceFragmentDensityMap2PropertiesEXT -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceFragmentDensityMap2PropertiesEXT
p IO b
f = do
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceFragmentDensityMap2PropertiesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceFragmentDensityMap2PropertiesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceFragmentDensityMap2PropertiesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceFragmentDensityMap2PropertiesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceFragmentDensityMap2PropertiesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Word32)) (forall a. Zero a => a
zero)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceFragmentDensityMap2PropertiesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr Word32)) (forall a. Zero a => a
zero)
IO b
f
instance FromCStruct PhysicalDeviceFragmentDensityMap2PropertiesEXT where
peekCStruct :: Ptr PhysicalDeviceFragmentDensityMap2PropertiesEXT
-> IO PhysicalDeviceFragmentDensityMap2PropertiesEXT
peekCStruct Ptr PhysicalDeviceFragmentDensityMap2PropertiesEXT
p = do
Bool32
subsampledLoads <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceFragmentDensityMap2PropertiesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
Bool32
subsampledCoarseReconstructionEarlyAccess <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceFragmentDensityMap2PropertiesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32))
Word32
maxSubsampledArrayLayers <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceFragmentDensityMap2PropertiesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Word32))
Word32
maxDescriptorSetSubsampledSamplers <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceFragmentDensityMap2PropertiesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr Word32))
forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ Bool
-> Bool
-> Word32
-> Word32
-> PhysicalDeviceFragmentDensityMap2PropertiesEXT
PhysicalDeviceFragmentDensityMap2PropertiesEXT
(Bool32 -> Bool
bool32ToBool Bool32
subsampledLoads)
(Bool32 -> Bool
bool32ToBool Bool32
subsampledCoarseReconstructionEarlyAccess)
Word32
maxSubsampledArrayLayers
Word32
maxDescriptorSetSubsampledSamplers
instance Storable PhysicalDeviceFragmentDensityMap2PropertiesEXT where
sizeOf :: PhysicalDeviceFragmentDensityMap2PropertiesEXT -> Int
sizeOf ~PhysicalDeviceFragmentDensityMap2PropertiesEXT
_ = Int
32
alignment :: PhysicalDeviceFragmentDensityMap2PropertiesEXT -> Int
alignment ~PhysicalDeviceFragmentDensityMap2PropertiesEXT
_ = Int
8
peek :: Ptr PhysicalDeviceFragmentDensityMap2PropertiesEXT
-> IO PhysicalDeviceFragmentDensityMap2PropertiesEXT
peek = forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceFragmentDensityMap2PropertiesEXT
-> PhysicalDeviceFragmentDensityMap2PropertiesEXT -> IO ()
poke Ptr PhysicalDeviceFragmentDensityMap2PropertiesEXT
ptr PhysicalDeviceFragmentDensityMap2PropertiesEXT
poked = forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceFragmentDensityMap2PropertiesEXT
ptr PhysicalDeviceFragmentDensityMap2PropertiesEXT
poked (forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceFragmentDensityMap2PropertiesEXT where
zero :: PhysicalDeviceFragmentDensityMap2PropertiesEXT
zero = Bool
-> Bool
-> Word32
-> Word32
-> PhysicalDeviceFragmentDensityMap2PropertiesEXT
PhysicalDeviceFragmentDensityMap2PropertiesEXT
forall a. Zero a => a
zero
forall a. Zero a => a
zero
forall a. Zero a => a
zero
forall a. Zero a => a
zero
type EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION = 1
pattern EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION :: forall a . Integral a => a
pattern $bEXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION :: forall a. Integral a => a
$mEXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION = 1
type EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME = "VK_EXT_fragment_density_map2"
pattern EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $bEXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
$mEXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME = "VK_EXT_fragment_density_map2"