Skip to content

Commit 00cf7b8

Browse files
committed
Expose runtime shader registry and streamline HLSL tooling
1 parent f8d8679 commit 00cf7b8

13 files changed

Lines changed: 588 additions & 389 deletions

.github/workflows/smoke.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,12 @@ on:
77
- master
88
pull_request:
99
workflow_dispatch:
10+
inputs:
11+
run_extended_smoke:
12+
description: Run extended hot-loop runtime smoke profile
13+
required: false
14+
default: false
15+
type: boolean
1016

1117
concurrency:
1218
group: smoke-${{ github.ref }}
@@ -80,6 +86,11 @@ jobs:
8086
run: |
8187
cmake --build build --target runtime_smoke --config "${BUILD_TYPE}"
8288
89+
- name: Build and run extended in-tree smoke
90+
if: ${{ github.event_name == 'workflow_dispatch' && inputs.run_extended_smoke }}
91+
run: |
92+
cmake --build build --target lavapipe_runtime_smoke_hot_loop --config "${BUILD_TYPE}"
93+
8394
- name: Install relocatable package
8495
run: |
8596
cmake --install build --prefix "${GITHUB_WORKSPACE}/package"

CMakeLists.txt

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,10 @@ option(WASM_AUTO_FETCH_TOOLS "Auto-download missing tools during configure" ON)
1212
option(WEBVULKAN_BUILD_TESTS "Build maintainer smoke tests" OFF)
1313
option(WEBVULKAN_ALLOW_DEP_UPDATES "Allow dependency git update during configure" OFF)
1414
option(WEBVULKAN_DEPS_EDITABLE "Use editable local dependency checkouts without automatic git reset/update" OFF)
15-
set(WEBVULKAN_CLANG_WASM_PACKAGE "clang/clang" CACHE STRING "Wasmer package used for OpenCL C to SPIR-V compilation")
16-
set(WEBVULKAN_SPIRV_WASM_PACKAGE "lights0123/llvm-spir" CACHE STRING "Wasmer package that provides SPIR-V compiler entrypoint")
17-
set(WEBVULKAN_SPIRV_WASM_ENTRYPOINT "clspv" CACHE STRING "Wasmer package command used for OpenCL C to SPIR-V")
15+
set(WEBVULKAN_DXC_WASM_JS "" CACHE FILEPATH "Path to dxc.js built for Wasm HLSL-to-SPIR-V helper")
16+
set(WEBVULKAN_CLANG_WASM_PACKAGE "clang/clang" CACHE STRING "Wasmer package used for clang-in-wasm tooling")
17+
set(WEBVULKAN_SPIRV_WASM_PACKAGE "lights0123/llvm-spir" CACHE STRING "Wasmer package used for optional SPIR-V probe tooling")
18+
set(WEBVULKAN_SPIRV_WASM_ENTRYPOINT "clspv" CACHE STRING "Wasmer package command used for optional SPIR-V probe tooling")
1819
set(WASM_EMSDK_VERSION "latest" CACHE STRING "emsdk version or tag")
1920
set(WASM_EMSDK_GIT_URL "https://github.com/emscripten-core/emsdk.git" CACHE STRING "emsdk git repository URL")
2021
set(WASM_EMSDK_GIT_REF "14c18b569f55138fe4963924162244251f454fb0" CACHE STRING "Pinned emsdk git ref")
@@ -79,7 +80,10 @@ include(cmake/BootstrapCpm.cmake)
7980
webvulkan_bootstrap_cpm()
8081
include(cmake/FetchWebVulkanSources.cmake)
8182
set(WEBVULKAN_SHADER_COMPILER_SCRIPT "${PROJECT_SOURCE_DIR}/tools/webvulkan_compile_spirv.mjs")
83+
set(WEBVULKAN_RUNTIME_SHADER_REGISTRY_SOURCE "${PROJECT_SOURCE_DIR}/runtime/src/webvulkan_shader_runtime_registry.c")
84+
set(WEBVULKAN_RUNTIME_SHADER_REGISTRY_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/runtime/include")
8285
include(cmake/WebVulkanShaderTools.cmake)
86+
include(cmake/WebVulkanRuntimeShaderRegistry.cmake)
8387

8488
include(cmake/BootstrapEmsdk.cmake)
8589
ensure_emsdk_ready(
@@ -156,6 +160,8 @@ add_library(webvulkan_llvm_jit INTERFACE)
156160
add_library(webvulkan::llvm_jit ALIAS webvulkan_llvm_jit)
157161
add_library(webvulkan_shader_tools INTERFACE)
158162
add_library(webvulkan::shader_tools ALIAS webvulkan_shader_tools)
163+
add_library(webvulkan_runtime_shader_registry INTERFACE)
164+
add_library(webvulkan::runtime_shader_registry ALIAS webvulkan_runtime_shader_registry)
159165

160166
add_dependencies(webvulkan_llvmpipe_wasm llvmpipe_wasm_spike)
161167
add_dependencies(webvulkan_llvm_jit llvmpipe_wasm_spike)
@@ -175,6 +181,12 @@ target_link_libraries(webvulkan_llvmpipe_wasm INTERFACE
175181
target_link_libraries(webvulkan_llvm_jit INTERFACE webvulkan::llvmpipe_wasm)
176182
target_compile_definitions(webvulkan_llvm_jit INTERFACE WEBVULKAN_ENABLE_LLVM_JIT=1)
177183
set_property(TARGET webvulkan_shader_tools PROPERTY WEBVULKAN_SHADER_COMPILER_SCRIPT "${WEBVULKAN_SHADER_COMPILER_SCRIPT}")
184+
target_include_directories(webvulkan_runtime_shader_registry INTERFACE
185+
"$<BUILD_INTERFACE:${WEBVULKAN_RUNTIME_SHADER_REGISTRY_INCLUDE_DIR}>"
186+
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_DATADIR}/webvulkan/runtime/include>"
187+
)
188+
set_property(TARGET webvulkan_runtime_shader_registry PROPERTY WEBVULKAN_RUNTIME_SHADER_REGISTRY_SOURCE "${WEBVULKAN_RUNTIME_SHADER_REGISTRY_SOURCE}")
189+
set_property(TARGET webvulkan_runtime_shader_registry PROPERTY WEBVULKAN_RUNTIME_SHADER_REGISTRY_INCLUDE_DIR "${WEBVULKAN_RUNTIME_SHADER_REGISTRY_INCLUDE_DIR}")
178190

179191
set(WEBVULKAN_PACKAGE_NAME "WebVulkanLlvmpipeWasm")
180192
set(WEBVULKAN_CONFIG_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/${WEBVULKAN_PACKAGE_NAME}")
@@ -206,8 +218,11 @@ install(FILES "${WEBVULKAN_DRIVER_ARCHIVE}" DESTINATION "${CMAKE_INSTALL_LIBDIR}
206218
install(DIRECTORY "${MESA_SRC_DIR}/include/" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/mesa")
207219
install(DIRECTORY "${MESA_SRC_DIR}/src/" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/mesa/src")
208220
install(DIRECTORY "${LLVM_WASM_INSTALL_DIR}/include/" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/llvm")
221+
install(DIRECTORY "${PROJECT_SOURCE_DIR}/runtime/include/" DESTINATION "${CMAKE_INSTALL_DATADIR}/webvulkan/runtime/include")
222+
install(FILES "${WEBVULKAN_RUNTIME_SHADER_REGISTRY_SOURCE}" DESTINATION "${CMAKE_INSTALL_DATADIR}/webvulkan/runtime/src")
209223
install(FILES "${WEBVULKAN_CONFIG_FILE}" "${WEBVULKAN_VERSION_FILE}" DESTINATION "${WEBVULKAN_CONFIG_DIR}")
210224
install(FILES "${PROJECT_SOURCE_DIR}/cmake/WebVulkanShaderTools.cmake" DESTINATION "${WEBVULKAN_CONFIG_DIR}")
225+
install(FILES "${PROJECT_SOURCE_DIR}/cmake/WebVulkanRuntimeShaderRegistry.cmake" DESTINATION "${WEBVULKAN_CONFIG_DIR}")
211226
install(FILES "${PROJECT_SOURCE_DIR}/tools/webvulkan_compile_spirv.mjs" DESTINATION "${CMAKE_INSTALL_DATADIR}/webvulkan/tools")
212227

213228
if(WEBVULKAN_BUILD_TESTS)

0 commit comments

Comments
 (0)