vulkan-utils 0.5.0.2 → 0.5.1
raw patch · 4 files changed
+23/−11 lines, 4 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- changelog.md +5/−0
- package.yaml +1/−1
- src/Vulkan/Utils/Requirements.hs +16/−9
- vulkan-utils.cabal +1/−1
changelog.md view
@@ -2,6 +2,11 @@ ## WIP +## [0.5.1] - 2021-07-24+- Fix bug where `createInstanceFromRequirements` and+ `createDebugInstanceFromRequirements` would fail for missing layers in+ optional requirements.+ ## [0.5.0.2] - 2021-06-22 - Relax bounds on `vulkan`
package.yaml view
@@ -1,5 +1,5 @@ name: vulkan-utils-version: "0.5.0.2"+version: "0.5.1" synopsis: Utils for the vulkan package category: Graphics maintainer: Joe Hermaszewski <live.long.and.prosper@monoid.al>
src/Vulkan/Utils/Requirements.hs view
@@ -27,7 +27,7 @@ import Data.Functor.Product ( Product(..) ) import qualified Data.HashMap.Strict as Map import Data.Kind ( Type )-import Data.List ( intercalate )+import Data.List ( intercalate, intersect ) import Data.List.Extra ( nubOrd ) import Data.Proxy import Data.Semigroup ( Endo(..) )@@ -85,6 +85,7 @@ foundVersion <- enumerateInstanceVersion (_, layerProps) <- enumerateInstanceLayerProperties lookupExtension <- getLookupExtension+ layerProps Nothing [ instanceExtensionLayerName | RequireInstanceExtension { instanceExtensionLayerName } <- allAsList@@ -206,7 +207,9 @@ -- feats <- getPhysicalDeviceFeaturesMaybe @fs phys props <- getPhysicalDevicePropertiesMaybe @ps phys+ (_, layerProps) <- enumerateDeviceLayerProperties phys lookupExtension <- getLookupExtension+ layerProps (Just phys) [ deviceExtensionLayerName | RequireDeviceExtension { deviceExtensionLayerName } <- allAsList@@ -486,29 +489,33 @@ -- Helpers for 'Device' and 'Instance' extensions ---------------------------------------------------------------- --- | Make a lookup function for extensions in layers+-- | Make a lookup function for extensions in layers. Ignores layers not+-- present in the instance/device getLookupExtension :: MonadIO m- => Maybe PhysicalDevice+ => Vector LayerProperties+ -> Maybe PhysicalDevice -- ^ Pass 'Nothing' for 'Instance' extensions, pass a PhysicalDevice for- -- device extensions.+ -- 'Device' extensions. -> ["layerName" ::: Maybe ByteString] -> m ( ("layerName" ::: Maybe ByteString) -> ByteString -> Maybe ExtensionProperties )-getLookupExtension mbPhys extensionLayers = do+getLookupExtension layerProps mbPhys extensionLayers = do let enumerate = maybe enumerateInstanceExtensionProperties enumerateDeviceExtensionProperties mbPhys- extensions <- for (nubOrd extensionLayers) $ \layer -> do+ availableLayers = Nothing : ((Just . layerName) <$> V.toList layerProps)+ searchedLayers = availableLayers `intersect` extensionLayers+ extensions <- for searchedLayers $ \layer -> do (_, props) <- enumerate layer pure (layer, props) let extensionMap = Map.fromListWith (<>) extensions- pure $ \layer name ->- let es = Map.lookupDefault mempty layer extensionMap- in find ((== name) . extensionName) es+ pure $ \layer name -> do+ es <- Map.lookup layer extensionMap+ find ((== name) . extensionName) es ---------------------------------------------------------------- -- Helpers for extracting the type of chain used by a set of requirements
vulkan-utils.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack name: vulkan-utils-version: 0.5.0.2+version: 0.5.1 synopsis: Utils for the vulkan package category: Graphics homepage: https://github.com/expipiplus1/vulkan#readme