Commit 2565d5e
luigi-rosso
fix: ore buffer per-frame update race (#12976) cc34cea963
* add ore GM exposing the per-frame buffer update race
* fix Metal ore buffer update race with per-write versioning
* add ore_buffer_update_between_draws goldens for metal d3d11 and gl
* fix Vulkan ore buffer update race with per-write versioning
* fix D3D12 ore buffer update race with per-write versioning
* fix WebGPU ore buffer update race with per-write versioning
* add ore_buffer_update_between_draws goldens for vulkan d3d12 and webgpu
* address review notes and tighten comments for the ore buffer race fix
* fix wgpu partial-update shadow seed and harden ore buffer race edge cases
* add multi-frame ore buffer race regression unit test
* scope ore buffer race test to racy backends, fixing linux headless GL abort
* free manager-less GPUResources on release instead of leaking them
* harden ore buffer orphaning against gpu allocation failure on metal, vulkan and wgpu
* make d3d12 buffer orphaning retry on alloc failure, matching the other backends
* wgpu: don't cache a failed bind group creation and correct the shadow comment
* wgpu/vulkan: mark UBOs bound only after a successful resolve, and restore the wgpu bind group label
* fail makeBuffer cleanly on gpu allocation failure (metal, vulkan, wgpu)
* harden ore bind group OOM handling and orphan-failure diagnostics across vulkan/metal/wgpu1 parent f24630f commit 2565d5e
2 files changed
Lines changed: 2 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
| 1 | + | |
Submodule rive-runtime updated 35 files
- .rive_head+1-1
- renderer/include/rive/renderer/ore/ore_context_d3d12.hpp+16
- renderer/include/rive/renderer/ore/ore_context_metal.hpp+21
- renderer/include/rive/renderer/ore/ore_context_vulkan.hpp+11
- renderer/include/rive/renderer/ore/ore_context_wgpu.hpp+7
- renderer/src/gpu_resource.cpp+5-1
- renderer/src/ore/d3d12/ore_bind_group_d3d12.hpp+10-5
- renderer/src/ore/d3d12/ore_buffer_d3d12.cpp+67-4
- renderer/src/ore/d3d12/ore_buffer_d3d12.hpp+34-1
- renderer/src/ore/d3d12/ore_context_d3d12.cpp+40-14
- renderer/src/ore/d3d12/ore_d3d12_bind_group_apply.hpp+6-1
- renderer/src/ore/d3d12/ore_render_pass_d3d12.cpp+4-2
- renderer/src/ore/metal/ore_bind_group_metal.hpp+4-1
- renderer/src/ore/metal/ore_buffer_metal.hpp+33-2
- renderer/src/ore/metal/ore_buffer_metal.mm+58-1
- renderer/src/ore/metal/ore_context_metal.mm+27-13
- renderer/src/ore/metal/ore_render_pass_metal.mm+9-4
- renderer/src/ore/vulkan/ore_bind_group_vulkan.cpp+94-1
- renderer/src/ore/vulkan/ore_bind_group_vulkan.hpp+45-3
- renderer/src/ore/vulkan/ore_buffer_vulkan.cpp+92-1
- renderer/src/ore/vulkan/ore_buffer_vulkan.hpp+41
- renderer/src/ore/vulkan/ore_context_vulkan.cpp+64-80
- renderer/src/ore/vulkan/ore_render_pass_vulkan.cpp+22-4
- renderer/src/ore/wgpu/ore_bind_group_wgpu.cpp+76
- renderer/src/ore/wgpu/ore_bind_group_wgpu.hpp+50-1
- renderer/src/ore/wgpu/ore_buffer_wgpu.cpp+69-2
- renderer/src/ore/wgpu/ore_buffer_wgpu.hpp+42-2
- renderer/src/ore/wgpu/ore_context_wgpu.cpp+29-28
- renderer/src/ore/wgpu/ore_render_pass_wgpu.cpp+20-4
- tests/gm/gmmain.cpp+1
- tests/gm/ore_buffer_update_between_draws.cpp+228
- tests/gm/ore_buffer_update_between_draws.mm+2
- tests/unit_tests/premake5.lua+4
- tests/unit_tests/renderer/ore_buffer_race_test.cpp+295
- tests/unit_tests/renderer/ore_buffer_race_test.mm+2
0 commit comments