KhronosGroup / KhronosGroup/Vulkan-Portability

macOS prior to 10.15.6 does not support native host-coherent image memory

Open
#9 0 comments 0 reactions 0 assignees View on GitHub
Metal
Dominant language
No language data
Stars
45
Forks
7
PR merge metrics
No merged PRs in 30d

Description

On *macOS* versions prior to *macOS 10.15.6*, native host-coherent image device memory is not available. Because of this, changes made to `VkImage VK_MEMORY_PROPERTY_HOST_COHERENT_BIT` device memory by the CPU or GPU will not be available to the GPU or CPU, respectively, until the memory is flushed or unmapped by the application.

Applications using `vkMapMemory()` with `VkImage VK_MEMORY_PROPERTY_HOST_COHERENT_BIT`
device memory on *macOS* versions prior to *macOS 10.15.6* must call either `vkUnmapMemory()`, or `vkFlushMappedMemoryRanges()` / `vkInvalidateMappedMemoryRanges()` to ensure memory changes are coherent between the CPU and GPU.

This limitation does **_not_** apply to `VKImage` device memory on *macOS* starting with *macOS 10.15.6*, does not apply to `VKImage` device memory on any version of *iOS* or *tvOS*, and does **_not_** apply to `VKBuffer` device memory on any platform.

Although performance-killing heroics might be possible (such as forcing coherence before and after each affected Vulkan queue submission), given that the restriction expires with current _macOS_ versions, suggest that a portability flag indicating the restriction on earlier _macOS_ versions be added. Perhaps `nativeHostCoherentImageMemory` or `permantentlyMappedCoherentImageMemory`?

Contributor guide

No contributing guide indexed for this repository

Research direction

No file, test, or entry point is named in the issue. Start by locating the portability flag definitions and existing macOS memory-property handling, then review how platform limitations are represented. Done means the pre-10.15.6 macOS image-memory limitation is represented by a documented portability flag without changing the stated iOS, tvOS, or buffer behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
macos
Domain
operating-systems
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
32/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.