Update R16G16_S10_5_NV format to R16G16_SFIXED5_NV (#921) #814
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Copyright 2015-2020 The Khronos Group Inc. | |
# SPDX-License-Identifier: Apache-2.0 | |
name: KTX-Software Windows CI | |
# Seems no way to avoid duplicating this on logic in each .yml file. | |
# See https://github.com/actions/starter-workflows/issues/245. | |
on: | |
# Trigger the workflow on a pull request, | |
pull_request: | |
push: | |
# And on pushes to main, which will occur when a PR is merged. | |
branches: | |
- main | |
# Also trigger on push of release tags to any branch. Useful | |
# for testing release builds before merging to main. | |
tags: | |
- 'v[0-9]+.[0-9]+.[0-9]+' | |
- 'v[0-9]+.[0-9]+.[0-9]+-*' | |
paths-ignore: | |
- .appveyor.yml | |
- .travis.yml | |
# Allow manual trigger | |
workflow_dispatch: | |
jobs: | |
windows: | |
strategy: | |
matrix: | |
os: [ windows-latest ] | |
generator: [ 'Visual Studio 17 2022' ] | |
toolset: [v143, CLangCL] | |
arch: [ x64 ] | |
check_mkvk: [ NO ] | |
options: [ | |
{config: 'Debug,Release', | |
doc: ON, jni: ON, loadtests: OpenGL+Vulkan, py: ON, tests: ON, tools: ON, tools_cts: ON, | |
package: YES, | |
sse: ON, opencl: OFF}, | |
{config: Release, | |
doc: OFF, loadtests: OFF, py: OFF, tests: OFF, tools: OFF, tools_cts: OFF, | |
package: NO, | |
sse: OFF, opencl: OFF}, | |
{config: Release, | |
doc: OFF, loadtests: OFF, py: OFF, tests: OFF, tools: OFF, tools_cts: OFF, | |
package: NO, | |
sse: OFF, opencl: ON}, | |
{config: Release, | |
doc: OFF, loadtests: OFF, py: OFF, tests: OFF, tools: OFF, tools_cts: OFF, | |
package: NO, | |
sse: ON, opencl: ON} | |
] | |
include: | |
- os: windows-2019 | |
generator: 'Visual Studio 16 2019' | |
toolset: v142 | |
arch: x64 | |
options: { | |
config: 'Debug,Release', | |
doc: ON, jni: ON, loadtests: OpenGL+Vulkan, py: ON, tests: ON, tools: ON, tools_cts: ON, | |
package: NO, | |
sse: ON, opencl: OFF | |
} | |
- os: windows-latest | |
generator: 'Visual Studio 17 2022' | |
toolset: CLangCL | |
arch: arm64 | |
options: { | |
config: 'Debug,Release', | |
doc: ON, jni: ON, loadtests: OpenGL, py: OFF, tests: ON, tools: ON, tools_cts: ON, | |
package: YES | |
} | |
runs-on: ${{ matrix.os }} | |
env: | |
# Skip downloading necessities for the load tests and source and golden | |
# images for the other tests since we can't run arm64 tests on the x64 | |
# build host. | |
GIT_LFS_SKIP_SMUDGE: 1 | |
BUILD_DIR: "build" | |
CMAKE_GEN: ${{ matrix.generator }} | |
CMAKE_TOOLSET: ${{ matrix.toolset }} | |
ARCH: ${{ matrix.arch }} | |
CHECK_MKVK: ${{ matrix.check_mkvk }} | |
CONFIGURATION: ${{ matrix.options.config }} | |
FEATURE_DOC: ${{ matrix.options.doc }} | |
FEATURE_JNI: ${{ matrix.options.jni }} | |
FEATURE_LOADTESTS: ${{ matrix.options.loadtests }} | |
FEATURE_PY: ${{ matrix.options.py }} | |
FEATURE_TESTS: ${{ matrix.options.tests }} | |
FEATURE_TOOLS: ${{ matrix.options.tools }} | |
FEATURE_TOOLS_CTS: ${{ matrix.options.tools_cts }} | |
PACKAGE: ${{ matrix.options.package }} | |
SUPPORT_OPENCL: ${{ matrix.options.opencl }} | |
SUPPORT_SSE: ${{ matrix.options.sse }} | |
WERROR: ON | |
CODE_SIGN_TIMESTAMP_URL: "http://timestamp.digicert.com" | |
AZURE_KEY_VAULT_URL: ${{ secrets.AZURE_KEY_VAULT_URL }} | |
AZURE_KEY_VAULT_CERTIFICATE: ${{ secrets.AZURE_KEY_VAULT_CERTIFICATE }} | |
AZURE_KEY_VAULT_CLIENT_ID: ${{ secrets.AZURE_KEY_VAULT_CLIENT_ID }} | |
AZURE_KEY_VAULT_CLIENT_SECRET: ${{ secrets.AZURE_KEY_VAULT_CLIENT_SECRET }} | |
AZURE_KEY_VAULT_TENANT_ID: ${{ secrets.AZURE_KEY_VAULT_TENANT_ID }} | |
OPENCL_SDK_HOME: https://github.com/intel/llvm/releases/download/2021-09 | |
OPENCL_SDK_NAME: win-oclcpuexp-2021.12.9.0.24_rel | |
OPENGL_ES_EMULATOR: C:/Imagination/Windows_x86_64 | |
OPENGL_ES_EMULATOR_WIN: C:\Imagination\Windows_x86_64 | |
PVR_SDK_HOME: https://github.com/powervr-graphics/Native_SDK/raw/master/lib/Windows_x86_64/ | |
PYTHON: C:\hostedtoolcache\windows\Python\3.11.4\x64\python.exe | |
# This is set to avoid the compiler running out of heap space | |
# when vcpkg is compiling glew. Default is logical cores + 1. | |
# Runners have 1 thread per core and 2 cores. | |
VCPKG_MAX_CONCURRENCY: 2 | |
VULKAN_SDK_VER: 1.3.243.0 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
# Fetch all history to make sure tags are | |
# included (used for version creation) | |
fetch-depth: 0 | |
- name: Install NSIS with large string support | |
if: matrix.check_mkvk != 'ONLY' | |
shell: bash | |
run: | | |
retryCount=4 | |
success=0 | |
for i in $(seq $retryCount) ; do | |
echo "Attempt no: $i" | |
stack exec -- wget -O nsis-3.08-strlen_8192.zip https://downloads.sourceforge.net/nsis/NSIS%203/3.08/nsis-3.08-strlen_8192.zip | |
if [[ $? -eq 0 ]] ; then | |
success=1 | |
7z x -aoa -o"/c/Program Files (x86)/NSIS" nsis-3.08-strlen_8192.zip | |
rm nsis-3.08-strlen_8192.zip | |
echo "Installation successful." | |
break | |
else | |
echo "Installation failed. Retrying..." | |
sleep $(( 2*$i )) | |
fi | |
done | |
if (( ! $success )) ; then | |
echo "Installation failed after $retryCount attempts." | |
exit 1 | |
fi | |
- name: Force fetch provoking tag's annotation. | |
# Work around https://github.com/actions/checkout/issues/290. | |
if: github.ref_type == 'tag' && matrix.check_mkvk != 'ONLY' | |
run: git fetch -f origin ${{ github.ref }}:${{ github.ref }} | |
# Need doxygen if docs are supposed to be built. | |
# Note this suffers frequent failures due to Chocolatey attempts | |
# to blackmail you into purchasing a license. Hence we retry a | |
# few times. If this still fails, re-run the build. | |
- name: Install Doxygen | |
if: matrix.options.doc == 'ON' | |
#run: choco install doxygen.install | |
run: | | |
$retryCount = 4 | |
$success = $false | |
for ($i = 1; $i -le $retryCount; $i++) { | |
Write-Host "Attempt no: $i" | |
choco install doxygen.install --no-progress | |
if ($LASTEXITCODE -eq 0) { | |
$success = $true | |
Write-Host "Installation successful." | |
break | |
} else { | |
Write-Host "Installation failed. Retrying..." | |
Start-Sleep -Seconds (2*$i) | |
} | |
} | |
if (-not $success) { | |
Write-Host "Installation failed after $retryCount attempts." | |
exit 1 | |
} | |
- name: Install AzureSignTool | |
if: matrix.check_mkvk != 'ONLY' | |
id: install-ast | |
run: | | |
if ($env:PACKAGE -eq "YES" -and $env:AZURE_KEY_VAULT_URL) { | |
dotnet tool install --global AzureSignTool | |
echo "CODE_SIGN_KEY_VAULT=Azure" >> $env:GITHUB_ENV | |
} | |
- name: Install Dependencies for load tests on arm64 | |
if: matrix.arch == 'arm64' && matrix.options.loadtests != 'OFF' | |
run: | | |
pushd $env:VCPKG_INSTALLATION_ROOT | |
./vcpkg install SDL2:arm64-windows assimp:arm64-windows glew:arm64-windows | |
cat buildtrees\glew\install-arm64-windows-rel-out.log | |
popd | |
echo "CMAKE_TOOLCHAIN_FILE=$env:VCPKG_INSTALLATION_ROOT/scripts/buildsystems/vcpkg.cmake" >> $env:GITHUB_ENV | |
echo "LOADTESTS_USE_LOCAL_DEPENDENCIES=ON" >> $env:GITHUB_ENV | |
- name: Install Dependencies | |
if: matrix.check_mkvk != 'ONLY' | |
# This script only installs what's needed by ON FEATUREs. | |
run: scripts/install_win.ps1 | |
- name: Set up JDK 17. | |
if: matrix.options.jni == 'ON' && matrix.check_mkvk != 'ONLY' | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'temurin' | |
java-version: '17' | |
- name: Set up Python 3.11 | |
if: matrix.options.py == 'ON' && matrix.check_mkvk != 'ONLY' | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.11.4' | |
- name: Init CTS submodule | |
if: matrix.options.tools_cts =='ON' | |
run: | |
git submodule update --init --recursive tests/cts | |
- name: Smudge embedded dates | |
if: matrix.options.doc == 'ON' | |
run: | | |
./install-gitconfig.ps1 | |
scripts/smudge_date.ps1 | |
- name: Build Windows | |
if: matrix.check_mkvk != 'ONLY' | |
# The installers run as part of "Install Dependencies" add | |
# environment variables to the registry and augment $Path there. | |
# Although each step gets a new Powershell instance, that instance | |
# is spawned from some parent Powershell so it does not pick up | |
# the changes from the registry. Use Chocolatey's helper to | |
# pull in the changes. | |
# After import, `refreshenv` is an alias for | |
# Update-SessionEnvironment. Without the import refreshenv will end | |
# up calling the cmd.exe version, which won't help Powershell, and | |
# Update-SessionEnvironment will not exist. | |
# Unfortunately this resets JAVA_HOME to whatever is in the registry. | |
# The one from the Set Up JDK step was set in the environment before | |
# this step is called. | |
run: | | |
$step_java_home=$env:JAVA_HOME | |
Import-Module "$env:ChocolateyInstall/helpers/chocolateyInstaller.psm1" | |
refreshenv | |
$env:JAVA_HOME=$step_java_home | |
scripts/build_win.ps1 | |
- name: Test Generation of VkFormat-related files | |
if: matrix.check_mkvk == 'ONLY' | |
run: scripts/check_mkvk.ps1 | |
# Works around issues with 2024.06.03.1.0 runner image. See | |
# https://github.com/actions/runner-images/issues/10004 and | |
# https://github.com/actions/runner-images/issues/10055 | |
- name: Remove conflicting msvcp140.dll as workaround for runner image bugs. | |
shell: bash -l {0} | |
run: | | |
find "C:/hostedtoolcache/windows/Java_Temurin-Hotspot_jdk" -name "msvcp140.dll" -exec rm {} \; | |
- name: Test Windows build | |
# Tests built for arm64 can't be run as the CI runners are all x64. | |
if: matrix.arch == 'x64' && matrix.options.tests == 'ON' | |
run: ctest --output-on-failure --test-dir $env:BUILD_DIR -C Release | |
- name: Upload test log | |
if: ${{ failure() }} | |
run: scripts/on_failure.ps1 | |
- name: Get KTX version | |
if: matrix.options.package == 'YES' | |
id: ktx-version | |
run: | | |
$KTX_VERSION = Get-Content $env:BUILD_DIR/ktx.version | |
echo "KTX_VERSION=$KTX_VERSION" >> $env:GITHUB_ENV | |
- name: Upload Artifact | |
if: matrix.options.package == 'YES' && matrix.toolset == 'CLangCL' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: KTX-Software-${{env.KTX_VERSION}}-Windows-${{matrix.arch}} | |
path: ${{env.BUILD_DIR}}/KTX-Software-*.exe* | |
- name: Upload pyktx artifacts | |
if: matrix.options.package == 'YES' && matrix.options.py == 'ON' | |
uses: kittaakos/upload-artifact-as-is@v0 | |
with: | |
path: ${{env.BUILD_DIR}}/interface/python_binding/dist/ | |
- name: Upload to Release | |
uses: softprops/action-gh-release@v1 | |
if: matrix.options.package == 'YES' && matrix.toolset == 'CLangCL' && github.event_name == 'push' && github.ref_type == 'tag' | |
with: | |
draft: true | |
prerelease: true | |
files: | | |
${{env.BUILD_DIR}}/KTX-Software-*.exe* | |
${{env.BUILD_DIR}}/interface/python_binding/dist/pyktx-* | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |