Skip to content

Commit b7b3d5e

Browse files
committed
Stabilize DXC release channel in main repo
1 parent 1fc79eb commit b7b3d5e

4 files changed

Lines changed: 89 additions & 7 deletions

File tree

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
DXC Wasm prebuilt bundle used by WebVulkan runtime shader tooling.
2+
3+
Includes
4+
- `dxc.js`
5+
- `dxc.wasm`
6+
7+
Artifacts
8+
- `dxc-wasm-prebuilt.zip`
9+
- `dxc-wasm-prebuilt.zip.sha256`
10+
- `dxc-wasm-prebuilt.zip.sig`
11+
- `dxc-wasm-prebuilt.zip.pem`

.github/workflows/prebuilt-refresh.yml

Lines changed: 65 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ env:
2121
WEBVULKAN_CCACHE_VERSION: v1
2222
LLVM_RELEASE_TAG: llvm-wasm-prebuilt-latest
2323
PACKAGE_RELEASE_TAG: webvulkan-package-latest
24+
DXC_RELEASE_TAG: dxc-wasm-prebuilt-latest
25+
DXC_WASM_PREBUILT_URL: ${{ vars.WEBVULKAN_DXC_WASM_PREBUILT_URL || 'https://github.com/Devsh-Graphics-Programming/llvmpipe2wasm/releases/download/dxc-wasm-prebuilt-latest/dxc-wasm-prebuilt.zip' }}
26+
DXC_WASM_PREBUILT_SHA256: ${{ vars.WEBVULKAN_DXC_WASM_PREBUILT_SHA256 || '' }}
2427

2528
jobs:
2629
refresh_prebuilt:
@@ -54,7 +57,7 @@ jobs:
5457
with:
5558
path: |
5659
.3rdparty
57-
key: ${{ runner.os }}-webvulkan-refresh-3rdparty-${{ env.WEBVULKAN_REFRESH_CACHE_VERSION }}-${{ hashFiles('CMakeLists.txt', 'cmake/FetchWebVulkanSources.cmake', 'cmake/BuildMesaLlvmpipeWasm.cmake') }}
60+
key: ${{ runner.os }}-webvulkan-refresh-3rdparty-${{ env.WEBVULKAN_REFRESH_CACHE_VERSION }}-${{ hashFiles('CMakeLists.txt', 'cmake/FetchWebVulkanSources.cmake', 'cmake/BuildMesaLlvmpipeWasm.cmake') }}-${{ env.DXC_WASM_PREBUILT_SHA256 }}
5861
restore-keys: |
5962
${{ runner.os }}-webvulkan-refresh-3rdparty-${{ env.WEBVULKAN_REFRESH_CACHE_VERSION }}-
6063
@@ -90,11 +93,32 @@ jobs:
9093
ccache --zero-stats
9194
ccache --show-stats
9295
96+
- name: Bootstrap DXC Wasm prebuilt
97+
shell: bash
98+
run: |
99+
set -euo pipefail
100+
dxc_dir="${GITHUB_WORKSPACE}/.3rdparty/dxc-wasm"
101+
dxc_js="${dxc_dir}/dxc.js"
102+
dxc_wasm="${dxc_dir}/dxc.wasm"
103+
if [ ! -f "${dxc_js}" ] || [ ! -f "${dxc_wasm}" ]; then
104+
mkdir -p "${dxc_dir}"
105+
curl -L --fail "${DXC_WASM_PREBUILT_URL}" -o "${RUNNER_TEMP}/dxc-wasm-prebuilt.zip"
106+
if [ -n "${DXC_WASM_PREBUILT_SHA256}" ]; then
107+
echo "${DXC_WASM_PREBUILT_SHA256} ${RUNNER_TEMP}/dxc-wasm-prebuilt.zip" | sha256sum -c -
108+
fi
109+
python3 -c "import sys,zipfile; zipfile.ZipFile(sys.argv[1]).extractall(sys.argv[2])" \
110+
"${RUNNER_TEMP}/dxc-wasm-prebuilt.zip" "${dxc_dir}"
111+
fi
112+
test -f "${dxc_js}"
113+
test -f "${dxc_wasm}"
114+
echo "WEBVULKAN_DXC_WASM_JS=${dxc_js}" >> "${GITHUB_ENV}"
115+
93116
- name: Configure latest source refresh build
94117
run: |
95118
cmake -S . -B build_refresh -G "${CMAKE_GENERATOR}" \
96119
-DCMAKE_BUILD_TYPE="${BUILD_TYPE}" \
97120
-DWEBVULKAN_BUILD_TESTS=ON \
121+
-DWEBVULKAN_DXC_WASM_JS="${WEBVULKAN_DXC_WASM_JS}" \
98122
-DWEBVULKAN_ALLOW_DEP_UPDATES=ON \
99123
-DWASM_EMSDK_GIT_REF=main \
100124
-DWASM_EMSDK_VERSION=latest \
@@ -130,6 +154,7 @@ jobs:
130154
bundles = [
131155
("llvm-wasm-install.zip", root / ".3rdparty" / "llvm-wasm-install"),
132156
("webvulkan-package.zip", root / "package_refresh"),
157+
("dxc-wasm-prebuilt.zip", root / ".3rdparty" / "dxc-wasm"),
133158
]
134159
135160
for zip_name, src_dir in bundles:
@@ -158,6 +183,10 @@ jobs:
158183
--output-signature release_artifacts/webvulkan-package.zip.sig \
159184
--output-certificate release_artifacts/webvulkan-package.zip.pem \
160185
release_artifacts/webvulkan-package.zip
186+
cosign sign-blob --yes \
187+
--output-signature release_artifacts/dxc-wasm-prebuilt.zip.sig \
188+
--output-certificate release_artifacts/dxc-wasm-prebuilt.zip.pem \
189+
release_artifacts/dxc-wasm-prebuilt.zip
161190
162191
- name: Prepare release notes
163192
shell: bash
@@ -180,6 +209,14 @@ jobs:
180209
echo "- Workflow run: https://github.com/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}"
181210
} >> release_notes/webvulkan-package-latest.md
182211
212+
cp .github/release-notes/dxc-wasm-prebuilt-latest.md release_notes/dxc-wasm-prebuilt-latest.md
213+
{
214+
echo
215+
echo "Build metadata:"
216+
echo "- Commit: \`${GITHUB_SHA}\`"
217+
echo "- Workflow run: https://github.com/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}"
218+
} >> release_notes/dxc-wasm-prebuilt-latest.md
219+
183220
- name: Upload refresh artifacts
184221
uses: actions/upload-artifact@v4
185222
with:
@@ -227,6 +264,26 @@ jobs:
227264
--notes-file "${PKG_NOTES}"
228265
fi
229266
267+
- name: Publish DXC prebuilt release
268+
env:
269+
GH_TOKEN: ${{ github.token }}
270+
run: |
271+
DXC_ZIP="release_artifacts/dxc-wasm-prebuilt.zip"
272+
DXC_SHA="release_artifacts/dxc-wasm-prebuilt.zip.sha256"
273+
DXC_SIG="release_artifacts/dxc-wasm-prebuilt.zip.sig"
274+
DXC_PEM="release_artifacts/dxc-wasm-prebuilt.zip.pem"
275+
DXC_NOTES="release_notes/dxc-wasm-prebuilt-latest.md"
276+
if gh release view "${DXC_RELEASE_TAG}" >/dev/null 2>&1; then
277+
gh release upload "${DXC_RELEASE_TAG}" "${DXC_ZIP}" "${DXC_SHA}" "${DXC_SIG}" "${DXC_PEM}" --clobber
278+
gh release edit "${DXC_RELEASE_TAG}" \
279+
--title "DXC wasm prebuilt latest" \
280+
--notes-file "${DXC_NOTES}"
281+
else
282+
gh release create "${DXC_RELEASE_TAG}" "${DXC_ZIP}" "${DXC_SHA}" "${DXC_SIG}" "${DXC_PEM}" \
283+
--title "DXC wasm prebuilt latest" \
284+
--notes-file "${DXC_NOTES}"
285+
fi
286+
230287
- name: Update repository variables
231288
env:
232289
GH_TOKEN: ${{ github.token }}
@@ -237,6 +294,8 @@ jobs:
237294
LLVM_URL="https://github.com/${GITHUB_REPOSITORY}/releases/download/${LLVM_RELEASE_TAG}/llvm-wasm-install.zip"
238295
PKG_SHA="$(cut -d' ' -f1 release_artifacts/webvulkan-package.zip.sha256)"
239296
PKG_URL="https://github.com/${GITHUB_REPOSITORY}/releases/download/${PACKAGE_RELEASE_TAG}/webvulkan-package.zip"
297+
DXC_SHA="$(cut -d' ' -f1 release_artifacts/dxc-wasm-prebuilt.zip.sha256)"
298+
DXC_URL="https://github.com/${GITHUB_REPOSITORY}/releases/download/${DXC_RELEASE_TAG}/dxc-wasm-prebuilt.zip"
240299
241300
set +e
242301
gh variable set WEBVULKAN_LLVM_PREBUILT_URL --repo "${GITHUB_REPOSITORY}" --body "${LLVM_URL}"
@@ -247,9 +306,13 @@ jobs:
247306
STATUS_C=$?
248307
gh variable set WEBVULKAN_PACKAGE_SHA256 --repo "${GITHUB_REPOSITORY}" --body "${PKG_SHA}"
249308
STATUS_D=$?
309+
gh variable set WEBVULKAN_DXC_WASM_PREBUILT_URL --repo "${GITHUB_REPOSITORY}" --body "${DXC_URL}"
310+
STATUS_E=$?
311+
gh variable set WEBVULKAN_DXC_WASM_PREBUILT_SHA256 --repo "${GITHUB_REPOSITORY}" --body "${DXC_SHA}"
312+
STATUS_F=$?
250313
set -e
251314
252-
if [ "${STATUS_A}" -ne 0 ] || [ "${STATUS_B}" -ne 0 ] || [ "${STATUS_C}" -ne 0 ] || [ "${STATUS_D}" -ne 0 ]; then
315+
if [ "${STATUS_A}" -ne 0 ] || [ "${STATUS_B}" -ne 0 ] || [ "${STATUS_C}" -ne 0 ] || [ "${STATUS_D}" -ne 0 ] || [ "${STATUS_E}" -ne 0 ] || [ "${STATUS_F}" -ne 0 ]; then
253316
echo "::warning::Repository variable update was skipped due to permission policy. Releases were still updated."
254317
fi
255318

.github/workflows/smoke.yml

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,10 @@ env:
2222
BUILD_TYPE: Release
2323
CMAKE_GENERATOR: Ninja
2424
WEBVULKAN_CACHE_VERSION: v3
25-
LLVM_PREBUILT_URL: https://github.com/Devsh-Graphics-Programming/llvmpipe2wasm/releases/download/llvm-wasm-prebuilt-latest/llvm-wasm-install.zip
26-
LLVM_PREBUILT_SHA256: ""
27-
DXC_WASM_PREBUILT_URL: https://github.com/Devsh-Graphics-Programming/llvmpipe2wasm/releases/download/dxc-wasm-prebuilt-latest/dxc-wasm-prebuilt.zip
25+
LLVM_PREBUILT_URL: ${{ vars.WEBVULKAN_LLVM_PREBUILT_URL || 'https://github.com/Devsh-Graphics-Programming/llvmpipe2wasm/releases/download/llvm-wasm-prebuilt-latest/llvm-wasm-install.zip' }}
26+
LLVM_PREBUILT_SHA256: ${{ vars.WEBVULKAN_LLVM_PREBUILT_SHA256 || '' }}
27+
DXC_WASM_PREBUILT_URL: ${{ vars.WEBVULKAN_DXC_WASM_PREBUILT_URL || 'https://github.com/Devsh-Graphics-Programming/llvmpipe2wasm/releases/download/dxc-wasm-prebuilt-latest/dxc-wasm-prebuilt.zip' }}
28+
DXC_WASM_PREBUILT_SHA256: ${{ vars.WEBVULKAN_DXC_WASM_PREBUILT_SHA256 || '' }}
2829

2930
jobs:
3031
in_tree_add_subdirectory:
@@ -51,7 +52,7 @@ jobs:
5152
with:
5253
path: |
5354
.3rdparty
54-
key: ${{ runner.os }}-webvulkan-3rdparty-${{ env.WEBVULKAN_CACHE_VERSION }}-${{ env.LLVM_PREBUILT_SHA256 }}
55+
key: ${{ runner.os }}-webvulkan-3rdparty-${{ env.WEBVULKAN_CACHE_VERSION }}-${{ env.LLVM_PREBUILT_SHA256 }}-${{ env.DXC_WASM_PREBUILT_SHA256 }}
5556
restore-keys: |
5657
${{ runner.os }}-webvulkan-3rdparty-${{ env.WEBVULKAN_CACHE_VERSION }}-
5758
@@ -76,6 +77,9 @@ jobs:
7677
if [ ! -f "${dxc_js}" ] || [ ! -f "${dxc_wasm}" ]; then
7778
mkdir -p "${dxc_dir}"
7879
curl -L --fail "${DXC_WASM_PREBUILT_URL}" -o "${RUNNER_TEMP}/dxc-wasm-prebuilt.zip"
80+
if [ -n "${DXC_WASM_PREBUILT_SHA256}" ]; then
81+
echo "${DXC_WASM_PREBUILT_SHA256} ${RUNNER_TEMP}/dxc-wasm-prebuilt.zip" | sha256sum -c -
82+
fi
7983
python3 -c "import sys,zipfile; zipfile.ZipFile(sys.argv[1]).extractall(sys.argv[2])" \
8084
"${RUNNER_TEMP}/dxc-wasm-prebuilt.zip" "${dxc_dir}"
8185
fi
@@ -160,7 +164,7 @@ jobs:
160164
with:
161165
path: |
162166
.3rdparty
163-
key: ${{ runner.os }}-webvulkan-3rdparty-${{ env.WEBVULKAN_CACHE_VERSION }}-${{ env.LLVM_PREBUILT_SHA256 }}
167+
key: ${{ runner.os }}-webvulkan-3rdparty-${{ env.WEBVULKAN_CACHE_VERSION }}-${{ env.LLVM_PREBUILT_SHA256 }}-${{ env.DXC_WASM_PREBUILT_SHA256 }}
164168
restore-keys: |
165169
${{ runner.os }}-webvulkan-3rdparty-${{ env.WEBVULKAN_CACHE_VERSION }}-
166170
@@ -188,6 +192,9 @@ jobs:
188192
if [ ! -f "${dxc_js}" ] || [ ! -f "${dxc_wasm}" ]; then
189193
mkdir -p "${dxc_dir}"
190194
curl -L --fail "${DXC_WASM_PREBUILT_URL}" -o "${RUNNER_TEMP}/dxc-wasm-prebuilt.zip"
195+
if [ -n "${DXC_WASM_PREBUILT_SHA256}" ]; then
196+
echo "${DXC_WASM_PREBUILT_SHA256} ${RUNNER_TEMP}/dxc-wasm-prebuilt.zip" | sha256sum -c -
197+
fi
191198
python3 -c "import sys,zipfile; zipfile.ZipFile(sys.argv[1]).extractall(sys.argv[2])" \
192199
"${RUNNER_TEMP}/dxc-wasm-prebuilt.zip" "${dxc_dir}"
193200
fi

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -403,6 +403,7 @@ Fairness note for this measurement
403403

404404
- `llvm-wasm-prebuilt-latest` includes LLVM prebuilt bundle only
405405
- `webvulkan-package-latest` includes relocatable CMake package only
406+
- `dxc-wasm-prebuilt-latest` includes DXC-in-Wasm prebuilt bundle only
406407

407408
Each channel ships
408409

0 commit comments

Comments
 (0)