Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor defining MTLPixelFormat and GPU capabilities. #2308

Merged
merged 1 commit into from
Aug 19, 2024

Conversation

billhollings
Copy link
Contributor

@billhollings billhollings commented Aug 14, 2024

  • Add MVKMTLDeviceCapabilities to encapsulate Metal GPU family capabilities, and use it in MVKPhysicalDevice and MVKPixelFormats to identify GPU capabilities.
  • Remove all references to MTLGPUFamily and MTLFeatureSet outside MVKMTLDeviceCapabilities.
  • Blend or select AppleGPU and MacGPU format capabilities.
  • Simplify MVKPixelFormats::modifyMTLFormatCapabilities() based on MVKMTLDeviceCapabilities.
  • Add guard code to ensure MTLPixelFormatInvalid & MTLVertexFormatInvalid capabilities are not overwritten by other formats that don't exist on some platforms.
  • Update MTLPixelFormat capabilities based on latest Metal docs.
  • Remove some variations tied to very older OS versions, or MTLFeatureSets that have the same GPU family, including setting MSL 2.0 as the earliest supported version.
  • Enable VkPhysicalDeviceFeatures::vertexPipelineStoresAndAtomics & fragmentStoresAndAtomics on all platforms.
  • During startup, only log the highest GPU family.

Fixes issue #2301.

- Add MVKMTLDeviceCapabilities to encapsulate Metal GPU family
  capabilities, and use it in MVKPhysicalDevice and MVKPixelFormats
  to identify GPU capabilities.
- Remove all references to MTLGPUFamily and MTLFeatureSet
  outside MVKMTLDeviceCapabilities.
- Blend or select AppleGPU and MacGPU format capabilities.
- Simplify MVKPixelFormats::modifyMTLFormatCapabilities()
  based on MVKMTLDeviceCapabilities.
- Add guard code to ensure MTLPixelFormatInvalid &
  MTLVertexFormatInvalid capabilities are not overwritten
  by other formats that don't exist on some platforms.
- Update MTLPixelFormat capabilities based on latest Metal docs.
- Remove some variations tied to very older OS versions,
  or MTLFeatureSets that have the same GPU family, including
  setting MSL 2.0 as the earliest supported version.
- Enable VkPhysicalDeviceFeatures::vertexPipelineStoresAndAtomics
  & fragmentStoresAndAtomics on all platforms.
- During startup, only log the highest GPU family.
Copy link
Collaborator

@cdavis5e cdavis5e left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry for the delay. GitHub went down for a bit yesterday.

Since you're bumping the minimum OS version needed to use MoltenVK, you should probably update the README and User's Guide.

@billhollings
Copy link
Contributor Author

Sorry for the delay. GitHub went down for a bit yesterday.

No worries. Thanks for having a look, and for your feedback.

Since you're bumping the minimum OS version needed to use MoltenVK, you should probably update the README and User's Guide.

The changes embodied here in terms of older OS's should be covered by the existing minimums in MoltenVK_Runtime_UserGuide: macOS 10.15 & iOS/tvOS 13.0.

Do you see anything particular that doesn't get covered by those minimums?

@cdavis5e
Copy link
Collaborator

The changes embodied here in terms of older OS's should be covered by the existing minimums in MoltenVK_Runtime_UserGuide: macOS 10.15 & iOS/tvOS 13.0.

Must've missed that...

@billhollings billhollings merged commit 01d86f5 into KhronosGroup:main Aug 19, 2024
6 checks passed
@billhollings billhollings deleted the gpu-fmt-capabilities branch August 19, 2024 18:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants