tinker around to hopefully get all layers needed
This commit is contained in:
parent
79a4fea655
commit
dce40ecf08
3 changed files with 16 additions and 50 deletions
|
@ -35,8 +35,13 @@
|
|||
cabal-install
|
||||
]) ++ (with pkgs; [
|
||||
shaderc
|
||||
vulkan-loader
|
||||
vulkan-validation-layers
|
||||
]);
|
||||
SDL_VULKAN_LIBRARY = "${pkgs.vulkan-loader}/lib/libvulkan.so";
|
||||
shellHook = ''
|
||||
export VK_LAYER_PATH="${pkgs.vulkan-validation-layers}/share/vulkan/explicit_layer.d";
|
||||
export SDL_VULKAN_LIBRARY="${pkgs.vulkan-loader}/lib/libvulkan.so";
|
||||
'';
|
||||
};
|
||||
#devShell = pkgs.mkShell {
|
||||
# buildInputs = with haskellPackages; [
|
||||
|
|
|
@ -38,7 +38,7 @@ initEngine
|
|||
initEngine = do
|
||||
-- initialize SDL2 with all subsystems
|
||||
void $ allocate_
|
||||
(SDL.initialize [ SDL.InitVideo ])
|
||||
SDL.initializeAll
|
||||
(do
|
||||
putStrLn "This is the end!"
|
||||
SDL.quit
|
||||
|
|
|
@ -10,67 +10,28 @@ import qualified Data.Vector as V
|
|||
import qualified SDL hiding (V2)
|
||||
import qualified SDL.Video.Vulkan as SDL
|
||||
import qualified Vulkan as Vk
|
||||
import qualified Vulkan.Requirement as Vk
|
||||
import qualified Vulkan.Zero as Vk
|
||||
import qualified Vulkan.Utils.Initialization as VkU
|
||||
|
||||
createInstance :: MonadResource m => SDL.Window -> m Vk.Instance
|
||||
createInstance window = do
|
||||
windowExtensions <-
|
||||
(++)
|
||||
-- [ Vk.KHR_PUSH_DESCRIPTOR_EXTENSION_NAME
|
||||
-- , Vk.EXT_DEBUG_UTILS_EXTENSION_NAME
|
||||
-- ]
|
||||
[ Vk.EXT_DEBUG_UTILS_EXTENSION_NAME
|
||||
]
|
||||
<$>
|
||||
((liftIO . mapM BS.packCString) =<< SDL.vkGetInstanceExtensions window)
|
||||
-- liftIO $ do
|
||||
-- putStrLn "activating followinfg extensions:"
|
||||
-- print windowExtensions
|
||||
windowExtensions <- liftIO $ fmap (
|
||||
[ Vk.EXT_DEBUG_UTILS_EXTENSION_NAME
|
||||
] ++) $
|
||||
traverse BS.packCString =<< SDL.vkGetInstanceExtensions window
|
||||
liftIO $ do
|
||||
putStrLn "activating following extensions:"
|
||||
print windowExtensions
|
||||
let createInfo = Vk.zero
|
||||
{ Vk.applicationInfo = Just Vk.zero
|
||||
{ Vk.applicationName = Just "Haskell ❤️ Vulkan"
|
||||
, Vk.apiVersion = Vk.API_VERSION_1_2
|
||||
, Vk.apiVersion = Vk.API_VERSION_1_3
|
||||
}
|
||||
-- enable debug util extension for debugging purposes
|
||||
, Vk.enabledExtensionNames = V.fromList windowExtensions
|
||||
-- enable validation layer for debugging purposes
|
||||
, Vk.enabledLayerNames = V.fromList
|
||||
[ "VK_LAYER_KHRONOS_validation"
|
||||
]
|
||||
, Vk.enabledLayerNames = V.singleton "VK_LAYER_KHRONOS_validation"
|
||||
}
|
||||
requirements =
|
||||
[ Vk.RequireInstanceExtension
|
||||
{ Vk.instanceExtensionLayerName = Nothing
|
||||
, Vk.instanceExtensionName = Vk.KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME
|
||||
, Vk.instanceExtensionMinVersion = Vk.KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION
|
||||
}
|
||||
, Vk.RequireInstanceExtension
|
||||
{ Vk.instanceExtensionLayerName = Nothing
|
||||
, Vk.instanceExtensionName = Vk.KHR_XLIB_SURFACE_EXTENSION_NAME
|
||||
, Vk.instanceExtensionMinVersion = Vk.KHR_XLIB_SURFACE_SPEC_VERSION
|
||||
}
|
||||
, Vk.RequireInstanceExtension
|
||||
{ Vk.instanceExtensionLayerName = Nothing
|
||||
, Vk.instanceExtensionName = Vk.KHR_DISPLAY_EXTENSION_NAME
|
||||
, Vk.instanceExtensionMinVersion = Vk.KHR_DISPLAY_SPEC_VERSION
|
||||
}
|
||||
, Vk.RequireInstanceExtension
|
||||
{ Vk.instanceExtensionLayerName = Nothing
|
||||
, Vk.instanceExtensionName = Vk.KHR_SURFACE_EXTENSION_NAME
|
||||
, Vk.instanceExtensionMinVersion = Vk.KHR_SURFACE_SPEC_VERSION
|
||||
}
|
||||
, Vk.RequireInstanceExtension
|
||||
{ Vk.instanceExtensionLayerName = Nothing
|
||||
, Vk.instanceExtensionName = Vk.KHR_PUSH_DESCRIPTOR_EXTENSION_NAME
|
||||
, Vk.instanceExtensionMinVersion = Vk.KHR_PUSH_DESCRIPTOR_SPEC_VERSION
|
||||
}
|
||||
]
|
||||
|
||||
SDL.vkLoadLibrary Nothing
|
||||
|
||||
-- VkU.createDebugInstanceFromRequirements requirements [] createInfo
|
||||
(_, inst) <- allocate
|
||||
(Vk.createInstance createInfo Nothing)
|
||||
(\inst -> do
|
||||
|
|
Loading…
Reference in a new issue