Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
a1285d6
GPUUploadManager: wake upload schedulers when pages return to pool
TheMostDiligent Jun 24, 2026
21d9116
Fix GPU upload manager test constants
TheMostDiligent Jun 24, 2026
36c6d1b
GPUUploadManager: handle page creation failures
TheMostDiligent Jun 24, 2026
b895871
GPUUploadManager: fix interface identity
TheMostDiligent Jun 24, 2026
714594b
GPUUploadManager: require non-null context for Stop
TheMostDiligent Jun 24, 2026
789205b
GPUUploadManager: validate context-owning calls
TheMostDiligent Jun 24, 2026
e3dd13b
GPUUploadManager: clarify Stop threading contract
TheMostDiligent Jun 24, 2026
8d60343
Add DILIGENT_ENABLE_ASAN build option and Linux CI coverage
TheMostDiligent Jun 25, 2026
dfe7fbf
CI: enable GPU tests with ASAN on Linux
TheMostDiligent Jun 25, 2026
b0bc1fd
Update CI actions to v18 and use ASAN input
TheMostDiligent Jun 25, 2026
aac6dd6
Propagate ASAN flags to Abseil third-party build
TheMostDiligent Jun 25, 2026
40c57b8
Add generic sanitizer option and update CI actions
TheMostDiligent Jun 25, 2026
8070b9a
Fix TSAN races in object registry and once logging
TheMostDiligent Jun 26, 2026
3d62de3
ObjectsRegistry: fix create-once race during purge
TheMostDiligent Jun 26, 2026
8f452f4
ObjectsRegistry: fix Get races and re-entry deadlock
TheMostDiligent Jun 26, 2026
d028e02
ObjectsRegistry: fix ProcessElements races and re-entry deadlock
TheMostDiligent Jun 26, 2026
4bf592a
ObjectsRegistry: document re-entry limitations
TheMostDiligent Jun 26, 2026
9076e2b
SerializaionDevice: warm up SPIRV-Cross GLSL compiler before async use
TheMostDiligent Jun 26, 2026
9bd2330
Add Linux TSAN CI configuration
TheMostDiligent Jun 26, 2026
715ddb2
Update Diligent GitHub actions to v20 and add TSAN suppressions
TheMostDiligent Jun 26, 2026
2aef7db
Update Diligent GitHub actions to v21
TheMostDiligent Jun 26, 2026
ebab71c
Rename AtomicMin/Max memory order parameters
TheMostDiligent Jun 26, 2026
bc8a8fa
Fix TSAN races in Vulkan dynamic heap stats
TheMostDiligent Jun 26, 2026
78c1b83
Suppress lavapipe LLVM TSAN race
TheMostDiligent Jun 26, 2026
7565a71
[WebGPU, Dawn]: Upgrade Dawn and new features for WebGPU
MikhailGorobets Dec 5, 2025
106e838
WebGPU: Activate Float32 Blendable Feature
MikhailGorobets Dec 21, 2025
9b491af
[WebGPU, Dawn] Updated Dawn to support texture-tier-1 in the Tint con…
MikhailGorobets Jan 6, 2026
521e4ca
WebGPU: Simplify SwapChainWebGPUImpl logic
MikhailGorobets Jan 16, 2026
9592663
[WebGPU, Dawn]: Fixed build for MacOS
MikhailGorobets Feb 3, 2026
1e7d644
WebGPU: Replaced std::vector<Uint8> with std::unique_ptr<Uint8[]> in …
MikhailGorobets Feb 3, 2026
c8bf55c
WebGPU: Added macOS backing size auto-detection in swap chain configu…
MikhailGorobets Feb 6, 2026
a23c4b4
GPUTestFramework: Added WebGPU device attachment for Emscripten
MikhailGorobets Feb 7, 2026
46cf513
[WebGPU, Dawn]: Enable WebGPU shader serialization on Linux
MikhailGorobets Jun 2, 2026
afeba46
BuildUtils: make GIT_SUBMODULES optional in FetchContent_DeclareShall…
MikhailGorobets Jun 22, 2026
543beb6
[WebGPU, Dawn]: Update Dawn and adapt the WebGPU backend to the new T…
MikhailGorobets Jun 27, 2026
16d664f
WebGPU: Support texture component swizzle
MikhailGorobets Jun 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/build-android.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ jobs:

- name: Set up build environment
if: success()
uses: DiligentGraphics/github-action/setup-build-env@v14
uses: DiligentGraphics/github-action/setup-build-env@v21
with:
platform: Android

Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/build-apple.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ jobs:

- name: Set up build environment
if: success()
uses: DiligentGraphics/github-action/setup-build-env@v14
uses: DiligentGraphics/github-action/setup-build-env@v21
with:
platform: ${{ matrix.platform }}

Expand All @@ -71,20 +71,20 @@ jobs:

- name: Configure CMake
if: success()
uses: DiligentGraphics/github-action/configure-cmake@v14
uses: DiligentGraphics/github-action/configure-cmake@v21
with:
build-type: ${{ matrix.build_type }}
cmake-args: ${{ matrix.cmake_args }}

- name: Build
if: success()
uses: DiligentGraphics/github-action/build@v14
uses: DiligentGraphics/github-action/build@v21
with:
target: install

- name: DiligentCoreTest
if: ${{ success() && matrix.platform == 'MacOS' }}
uses: DiligentGraphics/github-action/run-core-tests@v14
uses: DiligentGraphics/github-action/run-core-tests@v21

- name: Upload artifact
uses: actions/upload-artifact@v7
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/build-emscripten.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,17 +38,17 @@ jobs:

- name: Set up build environment
if: success()
uses: DiligentGraphics/github-action/setup-build-env@v14
uses: DiligentGraphics/github-action/setup-build-env@v21
with:
platform: Web

- name: Configure CMake
if: success()
uses: DiligentGraphics/github-action/configure-cmake@v14
uses: DiligentGraphics/github-action/configure-cmake@v21
with:
build-type: ${{ matrix.build_type }}
cmake-args: ${{ matrix.cmake_args }}

- name: Build
if: success()
uses: DiligentGraphics/github-action/build@v14
uses: DiligentGraphics/github-action/build@v21
43 changes: 30 additions & 13 deletions .github/workflows/build-linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,22 @@ jobs:
cc: "clang-18"
cxx: "clang++-18"

- name: "Clang-ASAN"
build_type: "RelWithDebInfo"
cmake_generator: "Ninja"
cmake_args: "-DDILIGENT_BUILD_CORE_TESTS=ON"
sanitizer: "address"
cc: "clang-18"
cxx: "clang++-18"

- name: "Clang-TSAN"
build_type: "RelWithDebInfo"
cmake_generator: "Ninja"
cmake_args: "-DDILIGENT_BUILD_CORE_TESTS=ON"
sanitizer: "thread"
cc: "clang-18"
cxx: "clang++-18"

- name: "Clang-NO_GLSLANG"
build_type: "Debug"
cmake_generator: "Ninja"
Expand All @@ -85,7 +101,7 @@ jobs:

- name: Set up build environment
if: success()
uses: DiligentGraphics/github-action/setup-build-env@v14
uses: DiligentGraphics/github-action/setup-build-env@v21
with:
platform: Linux
cmake-generator: ${{ matrix.cmake_generator }}
Expand All @@ -100,57 +116,58 @@ jobs:

- name: Configure CMake
if: success()
uses: DiligentGraphics/github-action/configure-cmake@v14
uses: DiligentGraphics/github-action/configure-cmake@v21
with:
cc: ${{ matrix.cc }}
cxx: ${{ matrix.cxx }}
generator: ${{ matrix.cmake_generator }}
build-type: ${{ matrix.build_type }}
cmake-args: ${{ matrix.cmake_args }}
sanitizer: ${{ matrix.sanitizer }}


- name: Build
id: build
if: success()
uses: DiligentGraphics/github-action/build@v14
uses: DiligentGraphics/github-action/build@v21
with:
target: install

- name: DiligentCoreTest
if: success()
uses: DiligentGraphics/github-action/run-core-tests@v14
uses: DiligentGraphics/github-action/run-core-tests@v21

- name: DiligentCoreAPITest VK
# NB: it is essential to include failure() to override the default status check of success()
# that is automatically applied to if conditions that don't contain a status check function.
if: ${{ (success() || failure() && steps.build.outcome == 'success') && (matrix.name == 'Clang' || matrix.name == 'GCC') }}
uses: DiligentGraphics/github-action/run-core-gpu-tests@v14
if: ${{ (success() || failure() && steps.build.outcome == 'success') && (matrix.name == 'Clang' || matrix.name == 'GCC' || matrix.name == 'Clang-ASAN' || matrix.name == 'Clang-TSAN') }}
uses: DiligentGraphics/github-action/run-core-gpu-tests@v21
with:
mode: vk_sw

- name: DiligentCoreAPITest VK Compatibility
if: ${{ (success() || failure() && steps.build.outcome == 'success') && (matrix.name == 'Clang' || matrix.name == 'GCC') }}
uses: DiligentGraphics/github-action/run-core-gpu-tests@v14
if: ${{ (success() || failure() && steps.build.outcome == 'success') && (matrix.name == 'Clang' || matrix.name == 'GCC' || matrix.name == 'Clang-ASAN' || matrix.name == 'Clang-TSAN') }}
uses: DiligentGraphics/github-action/run-core-gpu-tests@v21
with:
mode: vk_sw
vk-compatibility: true

- name: DiligentCoreAPITest GL
if: ${{ (success() || failure() && steps.build.outcome == 'success') && (matrix.name == 'Clang' || matrix.name == 'GCC') }}
uses: DiligentGraphics/github-action/run-core-gpu-tests@v14
if: ${{ (success() || failure() && steps.build.outcome == 'success') && (matrix.name == 'Clang' || matrix.name == 'GCC' || matrix.name == 'Clang-ASAN' || matrix.name == 'Clang-TSAN') }}
uses: DiligentGraphics/github-action/run-core-gpu-tests@v21
with:
mode: gl

- name: DiligentCoreAPITest GL with Non-Separable Programs
if: ${{ (success() || failure() && steps.build.outcome == 'success') && (matrix.name == 'Clang' || matrix.name == 'GCC') }}
uses: DiligentGraphics/github-action/run-core-gpu-tests@v14
if: ${{ (success() || failure() && steps.build.outcome == 'success') && (matrix.name == 'Clang' || matrix.name == 'GCC' || matrix.name == 'Clang-ASAN' || matrix.name == 'Clang-TSAN') }}
uses: DiligentGraphics/github-action/run-core-gpu-tests@v21
with:
mode: gl
non-separable-progs: true

- name: Upload artifact
uses: actions/upload-artifact@v7
if: ${{ success() && matrix.build_type != 'Debug' }}
if: ${{ success() && matrix.build_type != 'Debug' && matrix.name != 'Clang-ASAN' && matrix.name != 'Clang-TSAN' }}
with:
name: DiligentCore-Linux-${{ matrix.name }}-x64-${{ matrix.build_type }}
path: |
Expand Down
16 changes: 8 additions & 8 deletions .github/workflows/build-windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ jobs:

- name: Set up build environment
if: success()
uses: DiligentGraphics/github-action/setup-build-env@v14
uses: DiligentGraphics/github-action/setup-build-env@v21
with:
platform: ${{ matrix.platform }}
cmake-generator: ${{ matrix.cmake_generator }}
Expand All @@ -93,7 +93,7 @@ jobs:

- name: Configure CMake
if: success()
uses: DiligentGraphics/github-action/configure-cmake@v14
uses: DiligentGraphics/github-action/configure-cmake@v21
with:
generator: ${{ matrix.cmake_generator }}
vs-arch: ${{ matrix.toolset }}
Expand All @@ -103,31 +103,31 @@ jobs:
- name: Build
id: build
if: success()
uses: DiligentGraphics/github-action/build@v14
uses: DiligentGraphics/github-action/build@v21
with:
target: install

- name: DiligentCoreTest
if: ${{ success() && matrix.name != 'UWP'}}
uses: DiligentGraphics/github-action/run-core-tests@v14
uses: DiligentGraphics/github-action/run-core-tests@v21

- name: DiligentCoreAPITest D3D11
# NB: it is essential to include failure() to override the default status check of success()
# that is automatically applied to if conditions that don't contain a status check function.
if: ${{ (success() || failure() && steps.build.outcome == 'success') && (matrix.name == 'Win10' || matrix.name == 'Win10-Ninja') }}
uses: DiligentGraphics/github-action/run-core-gpu-tests@v14
uses: DiligentGraphics/github-action/run-core-gpu-tests@v21
with:
mode: d3d11_sw

- name: DiligentCoreAPITest D3D12
if: ${{ (success() || failure() && steps.build.outcome == 'success') && (matrix.name == 'Win10' || matrix.name == 'Win10-Ninja') }}
uses: DiligentGraphics/github-action/run-core-gpu-tests@v14
uses: DiligentGraphics/github-action/run-core-gpu-tests@v21
with:
mode: d3d12_sw

- name: DiligentCoreAPITest D3D12 DXC
if: ${{ (success() || failure() && steps.build.outcome == 'success') && (matrix.name == 'Win10' || matrix.name == 'Win10-Ninja') }}
uses: DiligentGraphics/github-action/run-core-gpu-tests@v14
uses: DiligentGraphics/github-action/run-core-gpu-tests@v21
with:
mode: d3d12_sw
use-dxc: true
Expand All @@ -136,7 +136,7 @@ jobs:

- name: DiligentCoreAPITest WebGPU
if: ${{ (success() || failure() && steps.build.outcome == 'success') && matrix.name == 'Win10' }}
uses: DiligentGraphics/github-action/run-core-gpu-tests@v14
uses: DiligentGraphics/github-action/run-core-gpu-tests@v21
with:
mode: wgpu

Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,14 +41,14 @@ jobs:

- name: Set up build environment
if: success()
uses: DiligentGraphics/github-action/setup-build-env@v14
uses: DiligentGraphics/github-action/setup-build-env@v21
with:
platform: ${{ matrix.platform }}
cmake-generator: ${{ matrix.cmake_generator }}

- name: Configure CMake
if: success()
uses: DiligentGraphics/github-action/configure-cmake@v14
uses: DiligentGraphics/github-action/configure-cmake@v21
with:
cc: ${{ matrix.cc }}
cxx: ${{ matrix.cxx }}
Expand All @@ -65,7 +65,7 @@ jobs:

- name: Build
if: success()
uses: DiligentGraphics/github-action/build@v14
uses: DiligentGraphics/github-action/build@v21

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v4
6 changes: 3 additions & 3 deletions .github/workflows/msvc_analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,14 +32,14 @@ jobs:

- name: Set up build environment
if: success()
uses: DiligentGraphics/github-action/setup-build-env@v14
uses: DiligentGraphics/github-action/setup-build-env@v21
with:
platform: ${{ matrix.platform }}
cmake-generator: ${{ matrix.cmake_generator }}

- name: Configure CMake
if: success()
uses: DiligentGraphics/github-action/configure-cmake@v14
uses: DiligentGraphics/github-action/configure-cmake@v21
with:
generator: ${{ matrix.cmake_generator }}
vs-arch: ${{ matrix.toolset }}
Expand All @@ -48,7 +48,7 @@ jobs:

- name: Build
if: success()
uses: DiligentGraphics/github-action/build@v14
uses: DiligentGraphics/github-action/build@v21

- name: Run MSVC Code Analysis
uses: DiligentGraphics/msvc-code-analysis-action@main
Expand Down
48 changes: 36 additions & 12 deletions BuildTools/CMake/BuildUtils.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -295,6 +295,21 @@ function(set_common_target_properties TARGET)
custom_post_configure_target(${TARGET})
endif()

# Mark generated files as such to avoid "file not found" warnings in some IDEs in configuration stage
if (WEBGPU_SUPPORTED AND (NOT PLATFORM_WEB))
set(DAWN_GENERATED_HEADERS
${DAWN_BUILD_GEN_DIR}/include/dawn/webgpu.h
${DAWN_BUILD_GEN_DIR}/include/dawn/webgpu_cpp.h
${DAWN_BUILD_GEN_DIR}/include/dawn/webgpu_cpp_print.h
${DAWN_BUILD_GEN_DIR}/include/dawn/wire/client/webgpu.h
${DAWN_BUILD_GEN_DIR}/include/dawn/wire/client/webgpu_cpp.h
${DAWN_BUILD_GEN_DIR}/include/dawn/wire/client/webgpu_cpp_print.h
${DAWN_BUILD_GEN_DIR}/include/dawn/dawn_proc_table.h
${DAWN_BUILD_GEN_DIR}/include/webgpu/webgpu_cpp_chained_struct.h
)
set_source_files_properties(${DAWN_GENERATED_HEADERS} PROPERTIES GENERATED TRUE)
endif()

endfunction()

function(find_targets_in_directory _RESULT _DIR)
Expand Down Expand Up @@ -518,24 +533,33 @@ function(add_format_validation_target MODULE_NAME MODULE_ROOT_PATH IDE_FOLDER)

endfunction()

# FetchContent's GIT_SHALLOW option is buggy and does not actually do a shallow
# clone. This macro takes care of it.
macro(FetchContent_DeclareShallowGit Name GIT_REPOSITORY GitRepository GIT_TAG GitTag)
# The GIT_SHALLOW option in FetchContent is buggy and does not actually perform
# a shallow clone. This macro fixes that. Also, we do not want to clone all
# submodules to reduce download time, therefore an optional GIT_SUBMODULES
# argument specifies which submodules should be cloned (if omitted, all of them).
macro(FetchContent_DeclareShallowGit Name)
set(oneValueArgs GIT_REPOSITORY GIT_TAG)
set(multiValueArgs GIT_SUBMODULES)
cmake_parse_arguments(ARG "" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})

include(FetchContent)
FetchContent_Declare(
"${Name}"

# This is what it'd look like if GIT_SHALLOW was indeed working:
#GIT_REPOSITORY "${GitRepository}"
#GIT_TAG "${GitTag}"
#GIT_SHALLOW ON
# This is what it'd look like if GIT_SHALLOW was indeed working:
#GIT_REPOSITORY "${ARG_GIT_REPOSITORY}"
#GIT_TAG "${ARG_GIT_TAG}"
#GIT_SHALLOW ON
#GIT_SUBMODULES "${ARG_GIT_SUBMODULES}"

# Manual download mode instead:
# Manual download mode instead:
FetchContent_Declare(
${Name}
DOWNLOAD_COMMAND
cd "${FETCHCONTENT_BASE_DIR}/${Name}-src" &&
git init &&
git fetch --depth=1 "${GitRepository}" "${GitTag}" &&
git reset --hard FETCH_HEAD
git remote add origin "${ARG_GIT_REPOSITORY}" &&
git fetch --depth=1 origin "${ARG_GIT_TAG}" &&
git checkout FETCH_HEAD &&
git submodule update --init --recursive --depth=1 ${ARG_GIT_SUBMODULES}
)
endmacro()

Expand Down
14 changes: 14 additions & 0 deletions BuildTools/Sanitizers/tsan.supp
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Mesa lavapipe/llvmpipe internal synchronization during Vulkan teardown.
race:libvulkan_lvp.so

# Mesa lavapipe LLVM internals during Vulkan shader compilation.
race:libLLVM.so

# Mesa Gallium/llvmpipe internal synchronization during OpenGL readback/present.
race:libgallium

# Vulkan validation layer object lifetime tracking may trigger lock-order-inversion reports.
deadlock:libVkLayer_khronos_validation.so

# DXC/glibc locale conversion internals during parallel shader compilation.
race:DXCompilerImpl::Compile
Loading
Loading