KhronosGroup / KhronosGroup/Vulkan-Portability
macOS prior to 10.15.6 does not support native host-coherent image memory
- 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