From 06e3d5c2ecd22ac7227185e0e70248f78b75adbd Mon Sep 17 00:00:00 2001 From: nek0 Date: Thu, 24 Aug 2023 19:48:36 +0200 Subject: [PATCH] fix ambiguous record updates --- src/Devices.hs | 9 +++++---- src/Main.hs | 4 ++-- src/Memory.hs | 6 +++--- vulkan-tutorial.cabal | 2 +- 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/Devices.hs b/src/Devices.hs index 63cbd08..7fda8cc 100644 --- a/src/Devices.hs +++ b/src/Devices.hs @@ -1,6 +1,7 @@ {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE DataKinds #-} +{-# LANGUAGE OverloadedRecordDot #-} module Devices where import Control.Monad @@ -38,7 +39,7 @@ pickPhysicalDevice vkInstance = do physDevices let discretePhysDevices = V.filter - (\(_, devProps, devFeatures) -> + (\(_, _, devFeatures) -> -- Vk.deviceType devProps == Vk.PHYSICAL_DEVICE_TYPE_DISCRETE_GPU && Vk.geometryShader devFeatures ) @@ -140,9 +141,9 @@ createSwapchain surface surfaceFormats windowDimension logicalDevice allocator = if V.any (\a -> - (Vk.format :: Vk.SurfaceFormatKHR -> Vk.Format) a == + a.format == Vk.FORMAT_B8G8R8A8_SRGB - && (Vk.colorSpace :: Vk.SurfaceFormatKHR -> Vk.ColorSpaceKHR) a == + && a.colorSpace == Vk.COLOR_SPACE_SRGB_NONLINEAR_KHR) surfaceFormats then @@ -219,7 +220,7 @@ getImageViewHandles swapchain surfaceFormat logicalDevice = do let createInfo = Vk.zero { Vk.image = tmpImage , Vk.viewType = Vk.IMAGE_VIEW_TYPE_2D - , Vk.format = (Vk.format :: Vk.SurfaceFormatKHR -> Vk.Format) surfaceFormat + , Vk.format = surfaceFormat.format , Vk.components = Vk.ComponentMapping { Vk.r = Vk.COMPONENT_SWIZZLE_IDENTITY , Vk.g = Vk.COMPONENT_SWIZZLE_IDENTITY diff --git a/src/Main.hs b/src/Main.hs index db8d643..35ed229 100644 --- a/src/Main.hs +++ b/src/Main.hs @@ -1,6 +1,7 @@ {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE DataKinds #-} +{-# LANGUAGE OverloadedRecordDot #-} module Main where import qualified Control.Concurrent.STM as STM @@ -11,7 +12,6 @@ import Control.Monad.Trans.Resource import Data.Bits import qualified Data.Map.Strict as M import qualified Data.Vector as V -import Data.Word import qualified SDL hiding (V2) import System.Mem import qualified Vulkan as Vk @@ -103,7 +103,7 @@ allocateMemory logicalDevice buffer = do memoryRequirements <- Vk.getBufferMemoryRequirements logicalDevice buffer let memoryAllocateInfo = Vk.zero - { Vk.allocationSize = (Vk.size :: Vk.MemoryRequirements -> Word64) memoryRequirements + { Vk.allocationSize = memoryRequirements.size , Vk.memoryTypeIndex = error ("createBuffer: TODO: populate memoryTypeIndex!" :: String) } diff --git a/src/Memory.hs b/src/Memory.hs index 90a6458..71b29f2 100644 --- a/src/Memory.hs +++ b/src/Memory.hs @@ -1,6 +1,6 @@ -{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE DataKinds #-} +{-# LANGUAGE OverloadedRecordDot #-} module Memory where import Control.Monad.IO.Class @@ -27,9 +27,9 @@ initAllocator -> m VMA.Allocator initAllocator physicalDevice device instance' = do let instanceProcAddr = castFunPtr $ - Vk.pVkGetInstanceProcAddr ((Vk.instanceCmds :: Vk.Instance -> Vk.InstanceCmds) instance') + Vk.pVkGetInstanceProcAddr (instance'.instanceCmds) deviceProcAddr = castFunPtr $ - Vk.pVkGetDeviceProcAddr ((Vk.deviceCmds :: Vk.Device -> Vk.DeviceCmds) device) + Vk.pVkGetDeviceProcAddr (device.deviceCmds) let allocatorInfo = Vk.zero { VMA.physicalDevice = Vk.physicalDeviceHandle physicalDevice , VMA.device = Vk.deviceHandle device diff --git a/vulkan-tutorial.cabal b/vulkan-tutorial.cabal index b0c1026..0a4ac44 100644 --- a/vulkan-tutorial.cabal +++ b/vulkan-tutorial.cabal @@ -41,7 +41,7 @@ executable vulkan-tutorial -- LANGUAGE extensions used by modules in this package. -- other-extensions: - build-depends: base >=4.14.3.0 + build-depends: base , sdl2 , vulkan , vulkan-utils