gpu-vulkan-core-khr-surface (empty) → 0.1.0.0
raw patch · 8 files changed
+225/−0 lines, 8 filesdep +basedep +c-structdep +gpu-vulkan-coresetup-changed
Dependencies added: base, c-struct, gpu-vulkan-core, gpu-vulkan-core-khr-surface
Files
- CHANGELOG.md +11/−0
- LICENSE +26/−0
- README.md +1/−0
- Setup.hs +2/−0
- gpu-vulkan-core-khr-surface.cabal +60/−0
- src/Gpu/Vulkan/Khr/Surface/Core.hsc +87/−0
- src/Gpu/Vulkan/Khr/Surface/PhysicalDevice/Core.hsc +36/−0
- test/Spec.hs +2/−0
+ CHANGELOG.md view
@@ -0,0 +1,11 @@+# Changelog for `gpu-vulkan-core-khr-surface`++All notable changes to this project will be documented in this file.++The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),+and this project adheres to the+[Haskell Package Versioning Policy](https://pvp.haskell.org/).++## Unreleased++## 0.1.0.0 - YYYY-MM-DD
+ LICENSE view
@@ -0,0 +1,26 @@+Copyright 2025 Yoshikuni Jujo++Redistribution and use in source and binary forms, with or without+modification, are permitted provided that the following conditions are met:++1. Redistributions of source code must retain the above copyright notice, this+ list of conditions and the following disclaimer.++2. Redistributions in binary form must reproduce the above copyright notice,+ this list of conditions and the following disclaimer in the documentation+ and/or other materials provided with the distribution.++3. Neither the name of the copyright holder nor the names of its contributors+ may be used to endorse or promote products derived from this software+ without specific prior written permission.++THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ README.md view
@@ -0,0 +1,1 @@+# gpu-vulkan-core-khr-surface
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
+ gpu-vulkan-core-khr-surface.cabal view
@@ -0,0 +1,60 @@+cabal-version: 2.2++-- This file has been generated from package.yaml by hpack version 0.37.0.+--+-- see: https://github.com/sol/hpack++name: gpu-vulkan-core-khr-surface+version: 0.1.0.0+synopsis: Thin wrapper for VK_KHR_surface extension of the Vulkan API+description: Please see the README on GitHub at <https://github.com/YoshikuniJujo/gpu-vulkan-core-khr-surface#readme>+category: GPU+homepage: https://github.com/YoshikuniJujo/gpu-vulkan-core-khr-surface#readme+bug-reports: https://github.com/YoshikuniJujo/gpu-vulkan-core-khr-surface/issues+author: Yoshikuni Jujo+maintainer: yoshikuni.jujo@gmail.com+copyright: (c) 2025 Yoshikuni Jujo+license: BSD-3-Clause+license-file: LICENSE+build-type: Simple+extra-doc-files:+ README.md+ CHANGELOG.md++source-repository head+ type: git+ location: https://github.com/YoshikuniJujo/gpu-vulkan-core-khr-surface++library+ exposed-modules:+ Gpu.Vulkan.Khr.Surface.Core+ Gpu.Vulkan.Khr.Surface.PhysicalDevice.Core+ other-modules:+ Paths_gpu_vulkan_core_khr_surface+ autogen-modules:+ Paths_gpu_vulkan_core_khr_surface+ hs-source-dirs:+ src+ ghc-options: -Wall -Wcompat -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-export-lists -Wmissing-home-modules -Wpartial-fields -Wredundant-constraints+ build-depends:+ base >=4.7 && <5+ , c-struct <1+ , gpu-vulkan-core <1+ default-language: Haskell2010++test-suite gpu-vulkan-core-khr-surface-test+ type: exitcode-stdio-1.0+ main-is: Spec.hs+ other-modules:+ Paths_gpu_vulkan_core_khr_surface+ autogen-modules:+ Paths_gpu_vulkan_core_khr_surface+ hs-source-dirs:+ test+ ghc-options: -Wall -Wcompat -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-export-lists -Wmissing-home-modules -Wpartial-fields -Wredundant-constraints -threaded -rtsopts -with-rtsopts=-N+ build-depends:+ base >=4.7 && <5+ , c-struct <1+ , gpu-vulkan-core <1+ , gpu-vulkan-core-khr-surface+ default-language: Haskell2010
+ src/Gpu/Vulkan/Khr/Surface/Core.hsc view
@@ -0,0 +1,87 @@+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TupleSections #-}+{-# LANGUAGE PatternSynonyms, ViewPatterns #-}+{-# OPTIONS_GHC -Wall -fno-warn-tabs #-}++module Gpu.Vulkan.Khr.Surface.Core (++ -- * DESTROY++ destroy, S,++ -- * CAPABILITIES++ Capabilities, pattern Capabilities,+ capabilitiesMinImageCount, capabilitiesMaxImageCount,+ capabilitiesCurrentExtent,+ capabilitiesMinImageExtent, capabilitiesMaxImageExtent,+ capabilitiesMaxImageArrayLayers,+ capabilitiesSupportedTransforms, capabilitiesCurrentTransform,+ capabilitiesSupportedCompositeAlpha, capabilitiesSupportedUsageFlags,++ -- * FORMAT++ Format, pattern Format, formatFormat, formatColorSpace++ ) where++import Foreign.Ptr+import Foreign.Storable+import Foreign.C.Struct+import Data.Word++import Gpu.Vulkan.Core (Extent2d)++import qualified Gpu.Vulkan.AllocationCallbacks.Core as AllocationCallbacks+import qualified Gpu.Vulkan.Instance.Core as Instance++#include <vulkan/vulkan.h>++data STag+type S = Ptr STag++foreign import ccall "vkDestroySurfaceKHR" destroy ::+ Instance.I -> S -> Ptr AllocationCallbacks.A -> IO ()++struct "Capabilities" #{size VkSurfaceCapabilitiesKHR}+ #{alignment VkSurfaceCapabilitiesKHR} [+ ("minImageCount", ''#{type uint32_t},+ [| #{peek VkSurfaceCapabilitiesKHR, minImageCount} |],+ [| #{poke VkSurfaceCapabilitiesKHR, minImageCount} |]),+ ("maxImageCount", ''#{type uint32_t},+ [| #{peek VkSurfaceCapabilitiesKHR, maxImageCount} |],+ [| #{poke VkSurfaceCapabilitiesKHR, maxImageCount} |]),+ ("currentExtent", ''Extent2d,+ [| #{peek VkSurfaceCapabilitiesKHR, currentExtent} |],+ [| #{poke VkSurfaceCapabilitiesKHR, currentExtent} |]),+ ("minImageExtent", ''Extent2d,+ [| #{peek VkSurfaceCapabilitiesKHR, minImageExtent} |],+ [| #{poke VkSurfaceCapabilitiesKHR, minImageExtent} |]),+ ("maxImageExtent", ''Extent2d,+ [| #{peek VkSurfaceCapabilitiesKHR, maxImageExtent} |],+ [| #{poke VkSurfaceCapabilitiesKHR, maxImageExtent} |]),+ ("maxImageArrayLayers", ''#{type uint32_t},+ [| #{peek VkSurfaceCapabilitiesKHR, maxImageArrayLayers} |],+ [| #{poke VkSurfaceCapabilitiesKHR, maxImageArrayLayers} |]),+ ("supportedTransforms", ''#{type VkSurfaceTransformFlagsKHR},+ [| #{peek VkSurfaceCapabilitiesKHR, supportedTransforms} |],+ [| #{poke VkSurfaceCapabilitiesKHR, supportedTransforms} |]),+ ("currentTransform", ''#{type VkSurfaceTransformFlagBitsKHR},+ [| #{peek VkSurfaceCapabilitiesKHR, currentTransform} |],+ [| #{poke VkSurfaceCapabilitiesKHR, currentTransform} |]),+ ("supportedCompositeAlpha", ''#{type VkCompositeAlphaFlagsKHR},+ [| #{peek VkSurfaceCapabilitiesKHR, supportedCompositeAlpha} |],+ [| #{poke VkSurfaceCapabilitiesKHR,+ supportedCompositeAlpha} |]),+ ("supportedUsageFlags", ''#{type VkImageUsageFlags},+ [| #{peek VkSurfaceCapabilitiesKHR, supportedUsageFlags} |],+ [| #{poke VkSurfaceCapabilitiesKHR, supportedUsageFlags} |]) ]+ [''Show, ''Storable]++struct "Format" #{size VkSurfaceFormatKHR} #{alignment VkSurfaceFormatKHR} [+ ("format", ''#{type VkFormat}, [| #{peek VkSurfaceFormatKHR, format} |],+ [| #{poke VkSurfaceFormatKHR, format} |]),+ ("colorSpace", ''#{type VkColorSpaceKHR},+ [| #{peek VkSurfaceFormatKHR, colorSpace} |],+ [| #{poke VkSurfaceFormatKHR, colorSpace} |]) ]+ [''Show, ''Storable]
+ src/Gpu/Vulkan/Khr/Surface/PhysicalDevice/Core.hsc view
@@ -0,0 +1,36 @@+{-# OPTIONS_GHC -Wall -fno-warn-tabs #-}++module Gpu.Vulkan.Khr.Surface.PhysicalDevice.Core (++ -- * FUNCTIONS++ getSupport, getCapabilities, getFormats, getPresentModes++ ) where++import Foreign.Ptr+import Data.Word+import Data.Int++import qualified Gpu.Vulkan.PhysicalDevice.Core as PhysicalDevice+import qualified Gpu.Vulkan.Khr.Surface.Core as Surface++#include <vulkan/vulkan.h>++foreign import ccall "vkGetPhysicalDeviceSurfaceSupportKHR" getSupport ::+ PhysicalDevice.P -> #{type uint32_t} -> Surface.S ->+ Ptr #{type VkBool32} -> IO #{type VkResult}++foreign import ccall "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"+ getCapabilities ::+ PhysicalDevice.P -> Surface.S -> Ptr Surface.Capabilities ->+ IO #{type VkResult}++foreign import ccall "vkGetPhysicalDeviceSurfaceFormatsKHR" getFormats ::+ PhysicalDevice.P -> Surface.S ->+ Ptr #{type uint32_t} -> Ptr Surface.Format -> IO #{type VkResult}++foreign import ccall "vkGetPhysicalDeviceSurfacePresentModesKHR"+ getPresentModes ::+ PhysicalDevice.P -> Surface.S ->+ Ptr #{type uint32_t} -> Ptr #{type VkPresentModeKHR} -> IO #{type VkResult}
+ test/Spec.hs view
@@ -0,0 +1,2 @@+main :: IO ()+main = putStrLn "Test suite not yet implemented"