GitHub CI improvements.

- Build one universal build, instead of per-platform.
- Upload this single build artifact to GitHub.
- Upgrade to v3 of action dependencies to remove Node.js deprecation warnings.
- Avoid use of deprecated set-output GitHub action command.
- Use macOS 13 and Xcode 14.3.
- README.md document access to binary artifacts.
This commit is contained in:
Bill Hollings 2023-05-08 18:14:22 -04:00
parent dfc0af84aa
commit ab5429b18c
3 changed files with 61 additions and 47 deletions

View File

@ -15,9 +15,9 @@ jobs:
build: build:
strategy: strategy:
matrix: matrix:
xcode: [ "14.2" ] xcode: [ "14.3" ]
platform: [ "macos", "maccat", "ios", "tvos" ] platform: [ "all" ]
os: [ "macos-latest" ] os: [ "macos-13" ]
upload_artifacts: [ true ] upload_artifacts: [ true ]
# additional specific configurations # additional specific configurations
include: include:
@ -41,7 +41,7 @@ jobs:
steps: steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v2 - uses: actions/checkout@v3
- name: Select Xcode version - name: Select Xcode version
run: sudo xcode-select -switch "${XCODE_DEV_PATH}" run: sudo xcode-select -switch "${XCODE_DEV_PATH}"
@ -54,12 +54,12 @@ jobs:
echo "${XCODE_VERSION}" echo "${XCODE_VERSION}"
XCODE_VERSION="$(echo "${XCODE_VERSION}" | tr '\t\r\n ' '_')" XCODE_VERSION="$(echo "${XCODE_VERSION}" | tr '\t\r\n ' '_')"
echo "${XCODE_VERSION}" echo "${XCODE_VERSION}"
echo "::set-output name=XCODE_VERSION::${XCODE_VERSION}" echo "XCODE_VERSION=${XCODE_VERSION}" >> $GITHUB_OUTPUT
- name: Cache Dependencies - name: Cache Dependencies
id: cache-dependencies id: cache-dependencies
if: success() && !(github.event_name == 'push' && contains(github.ref, 'refs/tags/')) # never cache dependencies for pushed tags if: success() && !(github.event_name == 'push' && contains(github.ref, 'refs/tags/')) # never cache dependencies for pushed tags
uses: actions/cache@v2 uses: actions/cache@v3
with: with:
path: | path: |
External/build External/build
@ -94,11 +94,11 @@ jobs:
- name: Tar Artifacts - name: Tar Artifacts
if: success() && matrix.upload_artifacts == true if: success() && matrix.upload_artifacts == true
# See: https://github.com/actions/upload-artifact#maintaining-file-permissions-and-case-sensitive-files # See: https://github.com/actions/upload-artifact#maintaining-file-permissions-and-case-sensitive-files
run: tar -cvf "${{ matrix.platform }}.tar" Package/Release/ run: tar -C Package -s/Release/MoltenVK/ -cvf "MoltenVK.tar" Release/
- name: Upload Artifacts - name: Upload Artifacts
if: success() && matrix.upload_artifacts == true if: success() && matrix.upload_artifacts == true
uses: actions/upload-artifact@v2 uses: actions/upload-artifact@v3
with: with:
name: ${{ matrix.platform }} name: "MoltenVK"
path: "${{ matrix.platform }}.tar" path: "MoltenVK.tar"

View File

@ -31,6 +31,7 @@ Released TBD
disable recent fixes to handling LOD for arrayed depth images in shaders, disable recent fixes to handling LOD for arrayed depth images in shaders,
on Apple Silicon, when those fixes cause regression in rendering behavior. on Apple Silicon, when those fixes cause regression in rendering behavior.
- For correctness, set `VkPhysicalDeviceLimits::lineWidthGranularity` to `1`. - For correctness, set `VkPhysicalDeviceLimits::lineWidthGranularity` to `1`.
- Modify GitHub CI to build and create a single universal binary artifact.

View File

@ -18,8 +18,10 @@ Copyright (c) 2015-2023 [The Brenwill Workshop Ltd.](http://www.brenwill.com)
Table of Contents Table of Contents
----------------- -----------------
- [Developing Vulkan Applications on *macOS, iOS, and tvOS*](#developing_vulkan)
- [Introduction to **MoltenVK**](#intro) - [Introduction to **MoltenVK**](#intro)
- [Developing Vulkan Applications on *macOS, iOS, and tvOS*](#developing_vulkan)
- [Using the *Vulkan SDK*](#sdk)
- [Using MoltenVK Directly](#download)
- [Fetching **MoltenVK** Source Code](#install) - [Fetching **MoltenVK** Source Code](#install)
- [Building **MoltenVK**](#building) - [Building **MoltenVK**](#building)
- [Running **MoltenVK** Demo Applications](#demos) - [Running **MoltenVK** Demo Applications](#demos)
@ -30,41 +32,6 @@ Table of Contents
<a name="developing_vulkan"></a>
Developing Vulkan Applications for *macOS, iOS, and tvOS*
---------------------------------------------------------
The recommended method for developing a *Vulkan* application for *macOS* is to use the
[*Vulkan SDK*](https://vulkan.lunarg.com/sdk/home).
The *Vulkan SDK* includes a **MoltenVK** runtime library for *macOS*. *Vulkan* is a layered
architecture that allows applications to add additional functionality without modifying the
application itself. The *Validation Layers* included in the *Vulkan SDK* are an essential debugging
tool for application developers because they identify inappropriate use of the *Vulkan API*.
If you are developing a *Vulkan* application for *macOS*, it is highly recommended that you use the
[*Vulkan SDK*](https://vulkan.lunarg.com/sdk/home) and the **MoltenVK** library included in it.
Refer to the *Vulkan SDK [Getting Started](https://vulkan.lunarg.com/doc/sdk/latest/mac/getting_started.html)*
document for more info.
Because **MoltenVK** supports the `VK_KHR_portability_subset` extension, when using the
*Vulkan Loader* from the *Vulkan SDK* to run **MoltenVK** on *macOS*, the *Vulkan Loader*
will only include **MoltenVK** `VkPhysicalDevices` in the list returned by
`vkEnumeratePhysicalDevices()` if the `VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR`
flag is enabled in `vkCreateInstance()`. See the description of the `VK_KHR_portability_enumeration`
extension in the *Vulkan* specification for more information about the use of the
`VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR` flag.
If you are developing a *Vulkan* application for *iOS* or *tvOS*, or are developing a *Vulkan*
application for *macOS* and want to use a different version of the **MoltenVK** runtime library
provided in the *macOS Vulkan SDK*, you can use this document to learn how to build a **MoltenVK**
runtime library from source code.
To learn how to integrate the **MoltenVK** runtime library into a game or application,
see the [`MoltenVK_Runtime_UserGuide.md `](Docs/MoltenVK_Runtime_UserGuide.md)
document in the `Docs` directory.
<a name="intro"></a> <a name="intro"></a>
Introduction to MoltenVK Introduction to MoltenVK
------------------------ ------------------------
@ -99,6 +66,52 @@ The **MoltenVK** runtime package contains two products:
<a name="developing_vulkan"></a>
Developing *Vulkan* Applications for *macOS, iOS, and tvOS*
---------------------------------------------------------
<a name="sdk"></a>
### Using the *Vulkan SDK*
The recommended method for developing a *Vulkan* application for *macOS* is to use the
[*Vulkan SDK*](https://vulkan.lunarg.com/sdk/home).
The *Vulkan SDK* includes a **MoltenVK** runtime library for *macOS*. *Vulkan* is a layered
architecture that allows applications to add additional functionality without modifying the
application itself. The *Validation Layers* included in the *Vulkan SDK* are an essential debugging
tool for application developers because they identify inappropriate use of the *Vulkan API*.
If you are developing a *Vulkan* application for *macOS*, it is highly recommended that you use the
[*Vulkan SDK*](https://vulkan.lunarg.com/sdk/home) and the **MoltenVK** library included in it.
Refer to the *Vulkan SDK [Getting Started](https://vulkan.lunarg.com/doc/sdk/latest/mac/getting_started.html)*
document for more info.
Because **MoltenVK** supports the `VK_KHR_portability_subset` extension, when using the
*Vulkan Loader* from the *Vulkan SDK* to run **MoltenVK** on *macOS*, the *Vulkan Loader*
will only include **MoltenVK** `VkPhysicalDevices` in the list returned by
`vkEnumeratePhysicalDevices()` if the `VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR`
flag is enabled in `vkCreateInstance()`. See the description of the `VK_KHR_portability_enumeration`
extension in the *Vulkan* specification for more information about the use of the
`VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR` flag.
<a name="download"></a>
### Using MoltenVK Directly
If you are developing a *Vulkan* application for *iOS* or *tvOS*, or are developing a
*Vulkan* application for *macOS* and want to use a different version or build of the
**MoltenVK** runtime library than provided in the *macOS Vulkan SDK*, you can access
a pre-built MoltenVK binary library from the **MoltenVK** repository, by
[selecting a repository commit from the list](https://github.com/KhronosGroup/MoltenVK/actions),
and downloading the associated **MoltenVK** runtime library artifact.
Finally, if you want a customized build of **MoltenVK**, you can follow the [instructions below](#install)
to create a **MoltenVK** runtime library by fetching and building the **MoltenVK** source code.
To learn how to integrate the **MoltenVK** runtime library into a game or application,
see the [`MoltenVK_Runtime_UserGuide.md `](Docs/MoltenVK_Runtime_UserGuide.md)
document in the `Docs` directory.
<a name="install"></a> <a name="install"></a>
Fetching **MoltenVK** Source Code Fetching **MoltenVK** Source Code
--------------------------------- ---------------------------------