Skip to content

Commit 08d4b42

Browse files
authored
Fix GHC-9.2 build (#145)
1 parent 7d4f3a8 commit 08d4b42

File tree

3 files changed

+34
-37
lines changed

3 files changed

+34
-37
lines changed

examples/vulkan/Backend.hs

Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -190,9 +190,9 @@ initialiseVulkanContext instanceType appName ( VulkanRequirements { instanceRequ
190190
device <- logDebug "Creating logical device" *>
191191
Vulkan.Utils.createDeviceFromRequirements swapchainDeviceRequirements [] physicalDevice deviceCreateInfo
192192
queue <- Vulkan.getDeviceQueue device ( fromIntegral queueFamily ) 0
193-
193+
194194
pure ( VulkanContext { .. } )
195-
195+
196196

197197

198198
vulkanInstanceInfo
@@ -206,7 +206,7 @@ vulkanInstanceInfo appName = do
206206
let
207207
validationLayer :: Maybe ValidationLayerName
208208
validationLayer
209-
= coerce
209+
= coerce
210210
. foldMap
211211
( ( Vulkan.layerName :: Vulkan.LayerProperties -> ByteString )
212212
>>> \case
@@ -374,11 +374,10 @@ chooseSwapchainFormat
374374

375375
case sortOn ( Down . score ) ( Boxed.Vector.toList surfaceFormats ) of
376376
[] -> error "No formats found."
377-
( best : _ )
378-
| Vulkan.FORMAT_UNDEFINED <- ( Vulkan.format :: Vulkan.SurfaceFormatKHR -> Vulkan.Format ) best
379-
-> pure preferredFormat
380-
| otherwise
381-
-> pure best
377+
Vulkan.SurfaceFormatKHR{format=Vulkan.FORMAT_UNDEFINED} : _rest ->
378+
pure preferredFormat
379+
best : _rest
380+
-> pure best
382381

383382
where
384383
match :: Eq a => a -> a -> Int
@@ -406,20 +405,17 @@ createSwapchain physicalDevice device surface surfaceFormat imageUsage imageCoun
406405
surfaceCapabilities <- Vulkan.getPhysicalDeviceSurfaceCapabilitiesKHR physicalDevice ( Vulkan.SurfaceKHR surface )
407406

408407
( _, presentModes ) <- Vulkan.getPhysicalDeviceSurfacePresentModesKHR physicalDevice ( Vulkan.SurfaceKHR surface )
409-
408+
410409
let
411410
presentMode :: Vulkan.PresentModeKHR
412-
presentMode
411+
presentMode
413412
| Vulkan.PRESENT_MODE_MAILBOX_KHR `elem` presentModes
414413
= Vulkan.PRESENT_MODE_MAILBOX_KHR
415414
| otherwise
416415
= Vulkan.PRESENT_MODE_FIFO_KHR
417416

418-
currentExtent :: Vulkan.Extent2D
419-
currentExtent = ( Vulkan.currentExtent :: Vulkan.SurfaceCapabilitiesKHR -> Vulkan.Extent2D ) surfaceCapabilities
420-
421-
currentTransform :: Vulkan.SurfaceTransformFlagBitsKHR
422-
currentTransform = ( Vulkan.currentTransform :: Vulkan.SurfaceCapabilitiesKHR -> Vulkan.SurfaceTransformFlagBitsKHR ) surfaceCapabilities
417+
Vulkan.SurfaceCapabilitiesKHR{currentExtent, currentTransform} = surfaceCapabilities
418+
Vulkan.SurfaceFormatKHR{format=fmt, colorSpace=csp} = surfaceFormat
423419

424420
swapchainCreateInfo :: Vulkan.SwapchainCreateInfoKHR '[]
425421
swapchainCreateInfo =
@@ -428,8 +424,8 @@ createSwapchain physicalDevice device surface surfaceFormat imageUsage imageCoun
428424
, Vulkan.flags = Vulkan.zero
429425
, Vulkan.surface = Vulkan.SurfaceKHR surface
430426
, Vulkan.minImageCount = imageCount
431-
, Vulkan.imageFormat = ( Vulkan.format :: Vulkan.SurfaceFormatKHR -> Vulkan.Format ) surfaceFormat
432-
, Vulkan.imageColorSpace = ( Vulkan.colorSpace :: Vulkan.SurfaceFormatKHR -> Vulkan.ColorSpaceKHR ) surfaceFormat
427+
, Vulkan.imageFormat = fmt
428+
, Vulkan.imageColorSpace = csp
433429
, Vulkan.imageExtent = currentExtent
434430
, Vulkan.imageArrayLayers = 1
435431
, Vulkan.imageUsage = imageUsage
@@ -494,7 +490,7 @@ simpleRenderPass dev attachments = Vulkan.withRenderPass dev createInfo Nothing
494490
{ Vulkan.next = ()
495491
, Vulkan.flags = Vulkan.zero
496492
, Vulkan.attachments = Boxed.Vector.fromList attachmentDescriptions
497-
, Vulkan.subpasses = Boxed.Vector.singleton subpass
493+
, Vulkan.subpasses = Boxed.Vector.singleton subpass
498494
, Vulkan.dependencies = Boxed.Vector.fromList [ dependency1, dependency2 ]
499495
}
500496

@@ -591,7 +587,7 @@ createFramebuffer
591587
-> Vulkan.Extent2D
592588
-> f Vulkan.ImageView
593589
-> m ( ResourceT.ReleaseKey, Vulkan.Framebuffer )
594-
createFramebuffer dev renderPass extent attachments = Vulkan.withFramebuffer dev createInfo Nothing ResourceT.allocate
590+
createFramebuffer dev renderPass Vulkan.Extent2D{width, height} attachments = Vulkan.withFramebuffer dev createInfo Nothing ResourceT.allocate
595591
where
596592
createInfo :: Vulkan.FramebufferCreateInfo '[]
597593
createInfo =
@@ -600,8 +596,8 @@ createFramebuffer dev renderPass extent attachments = Vulkan.withFramebuffer dev
600596
, Vulkan.flags = Vulkan.zero
601597
, Vulkan.renderPass = renderPass
602598
, Vulkan.attachments = Boxed.Vector.fromList . toList $ attachments
603-
, Vulkan.width = ( Vulkan.width :: Vulkan.Extent2D -> Word32 ) extent
604-
, Vulkan.height = ( Vulkan.height :: Vulkan.Extent2D -> Word32 ) extent
599+
, Vulkan.width = width
600+
, Vulkan.height = height
605601
, Vulkan.layers = 1
606602
}
607603

examples/vulkan/Main.hs

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -201,9 +201,7 @@ app = do
201201
surfaceCapabilities <- Vulkan.getPhysicalDeviceSurfaceCapabilitiesKHR physicalDevice ( Vulkan.SurfaceKHR surface )
202202

203203
let
204-
minImageCount, maxImageCount, imageCount :: Word32
205-
minImageCount = ( Vulkan.minImageCount :: Vulkan.SurfaceCapabilitiesKHR -> Word32 ) surfaceCapabilities
206-
maxImageCount = ( Vulkan.maxImageCount :: Vulkan.SurfaceCapabilitiesKHR -> Word32 ) surfaceCapabilities
204+
Vulkan.SurfaceCapabilitiesKHR{minImageCount, maxImageCount} = surfaceCapabilities
207205
imageCount
208206
| maxImageCount == 0 = minImageCount + 1
209207
| otherwise = ( minImageCount + 1 ) `min` maxImageCount
@@ -213,31 +211,30 @@ app = do
213211

214212
swapchainResources :: Maybe SwapchainResources -> m ( m (), SwapchainResources )
215213
swapchainResources mbOldResources = do
216-
( surfaceFormat, imGuiRenderPass ) <- case mbOldResources of
214+
( colFmt, surfaceFormat, imGuiRenderPass ) <- case mbOldResources of
217215
Nothing -> do
218216
logDebug "Choosing swapchain format & color space"
219217
surfaceFormat <- chooseSwapchainFormat preferredFormat physicalDevice surface
220-
let
221-
colFmt :: Vulkan.Format
222-
colFmt = ( Vulkan.format :: Vulkan.SurfaceFormatKHR -> Vulkan.Format ) surfaceFormat
218+
let Vulkan.SurfaceFormatKHR{format=colFmt} = surfaceFormat
223219
logDebug "Creating Dear ImGui render pass"
224220
( _, imGuiRenderPass ) <-
225221
simpleRenderPass device
226222
( noAttachments
227223
{ colorAttachments = Boxed.Vector.singleton $ presentableColorAttachmentDescription colFmt }
228224
)
229-
pure ( surfaceFormat, imGuiRenderPass )
230-
Just oldResources -> pure ( surfaceFormat oldResources, imGuiRenderPass oldResources )
231-
232-
let
233-
colFmt :: Vulkan.Format
234-
colFmt = ( Vulkan.format :: Vulkan.SurfaceFormatKHR -> Vulkan.Format ) surfaceFormat
225+
pure ( colFmt, surfaceFormat, imGuiRenderPass )
226+
Just oldResources -> do
227+
let surFmt = surfaceFormat oldResources
228+
let Vulkan.SurfaceFormatKHR{format=colFmt} = surFmt
229+
pure ( colFmt, surFmt, imGuiRenderPass oldResources )
235230

236231
logDebug "Creating swapchain"
237232
( swapchainKey, swapchain, swapchainExtent ) <-
238233
createSwapchain
239-
physicalDevice device
240-
surface surfaceFormat
234+
physicalDevice
235+
device
236+
surface
237+
surfaceFormat
241238
surfaceUsage
242239
imageCount
243240
( swapchain <$> mbOldResources )

generator/DearImGui/Generator.hs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@ import Data.Traversable
2424
( for )
2525
import Foreign.Storable
2626
( Storable )
27+
#if MIN_VERSION_template_haskell(2,18,0)
28+
import Data.Coerce
29+
( coerce )
30+
#endif
2731

2832
-- containers
2933
import Data.Map.Strict
@@ -171,7 +175,7 @@ declareEnumeration finiteEnumName countName ( Enumeration {..} ) = do
171175
else
172176
\ nm args dir pat ->
173177
TH.patSynD_doc nm args dir pat
174-
( Just $ Text.unpack patDoc ) []
178+
( Just $ Text.unpack _patDoc ) []
175179
)
176180
#else
177181
TH.patSynD

0 commit comments

Comments
 (0)