diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index cb792195..37e6b807 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -15,9 +15,9 @@ jobs: build: strategy: matrix: - xcode: [ "14.2" ] - platform: [ "macos", "maccat", "ios", "tvos" ] - os: [ "macos-latest" ] + xcode: [ "14.3" ] + platform: [ "all" ] + os: [ "macos-13" ] upload_artifacts: [ true ] # additional specific configurations include: @@ -41,7 +41,7 @@ jobs: steps: # 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 run: sudo xcode-select -switch "${XCODE_DEV_PATH}" @@ -54,12 +54,12 @@ jobs: echo "${XCODE_VERSION}" XCODE_VERSION="$(echo "${XCODE_VERSION}" | tr '\t\r\n ' '_')" echo "${XCODE_VERSION}" - echo "::set-output name=XCODE_VERSION::${XCODE_VERSION}" + echo "XCODE_VERSION=${XCODE_VERSION}" >> $GITHUB_OUTPUT - name: Cache Dependencies id: cache-dependencies 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: path: | External/build @@ -94,11 +94,11 @@ jobs: - name: Tar Artifacts if: success() && matrix.upload_artifacts == true # 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 if: success() && matrix.upload_artifacts == true - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: - name: ${{ matrix.platform }} - path: "${{ matrix.platform }}.tar" + name: "MoltenVK" + path: "MoltenVK.tar" diff --git a/Docs/Whats_New.md b/Docs/Whats_New.md index 0dd33d02..76f3b586 100644 --- a/Docs/Whats_New.md +++ b/Docs/Whats_New.md @@ -31,6 +31,7 @@ Released TBD disable recent fixes to handling LOD for arrayed depth images in shaders, on Apple Silicon, when those fixes cause regression in rendering behavior. - For correctness, set `VkPhysicalDeviceLimits::lineWidthGranularity` to `1`. +- Modify GitHub CI to build and create a single universal binary artifact. diff --git a/README.md b/README.md index e55b96e0..8349a8ca 100644 --- a/README.md +++ b/README.md @@ -18,8 +18,10 @@ Copyright (c) 2015-2023 [The Brenwill Workshop Ltd.](http://www.brenwill.com) Table of Contents ----------------- -- [Developing Vulkan Applications on *macOS, iOS, and tvOS*](#developing_vulkan) - [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) - [Building **MoltenVK**](#building) - [Running **MoltenVK** Demo Applications](#demos) @@ -30,41 +32,6 @@ Table of Contents - -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. - - - Introduction to MoltenVK ------------------------ @@ -99,6 +66,52 @@ The **MoltenVK** runtime package contains two products: + +Developing *Vulkan* Applications for *macOS, iOS, and tvOS* +--------------------------------------------------------- + + +### 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. + + +### 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. + + + Fetching **MoltenVK** Source Code --------------------------------- @@ -293,7 +306,7 @@ or it can be included in any of the `make` build commands. For example: or make macos MVK_HIDE_VULKAN_SYMBOLS=1 - + ...etc.