module Data.SpirV.Reflect.Traits where import Data.Vector.Storable qualified as Storable import Data.Word (Word32) import GHC.Generics (Generic) import Data.SpirV.Reflect.Enums qualified as Enums data Numeric = Numeric { scalar :: Scalar , vector :: Vector , matrix :: Matrix } deriving (Eq, Ord, Show, Generic) data Scalar = Scalar { width :: Word32 , signedness :: Word32 } deriving (Eq, Ord, Show, Generic) data Vector = Vector { component_count :: Word32 } deriving (Eq, Ord, Show, Generic) data Matrix = Matrix { column_count :: Word32 , row_count :: Word32 , stride :: Word32 -- ^ Measured in bytes } deriving (Eq, Ord, Show, Generic) data Array = Array { dims_count :: Word32 , dims :: Storable.Vector Word32 , stride :: Maybe Word32 } deriving (Eq, Ord, Show, Generic) data Image = Image { dim :: Enums.Dim , depth :: Word32 , arrayed :: Word32 , ms :: Word32 -- ^ 0: single-sampled, 1: multisampled , sampled :: Word32 , image_format :: Enums.ImageFormat } deriving (Eq, Ord, Show, Generic)