skia2/gn
Arman Uguray 0c3dda058c [ganesh][dawn] Support blocking on async WebGPU events in WASM
The `wgpu::Device::Tick()` function is not available when the Dawn
backend is compiled using emsdk to target WebAssembly. As an
alternative, this CL introduces code that takes advantage of
emscripten's Asyncify feature to yield execution to the browser's event
loop and allowing it to execute async tasks from blocking Skia code.

* Introduced the GrDawnAsyncWait class which abstracts over Asyncify vs
wgpu::Device::Tick depending on the platform and implements common
busy-wait boilerplate.
* Refactored the fence management in GrDawnGpu to make use of
GrDawnAsyncWait. The GPUQueue.onSubmittedWorkDone is now handled by a
callback on GrDawnGpu instead of per-fence callbacks since the latter
cannot easily prevent a use-after-free if a fence is destroyed before
the callback runs.

Bug: skia:12512
Change-Id: I255e92ec87c799dc7a50bd034a815c0aaca0ef5f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/530736
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Commit-Queue: Arman Uguray <armansito@google.com>
2022-04-29 17:02:12 +00:00
..
portable Separate general defaults from Skia defaults 2021-03-22 15:30:56 +00:00
skia Disable no-declaration-after-statement 2022-04-29 15:42:12 +00:00
toolchain Fix our GN files to build pure objcc targets correctly 2022-04-27 21:07:15 +00:00
__init__.py Make gn directory importable in python 2017-03-20 17:40:30 +00:00
bench.gni Move tessellation-specific functions out of GrPathUtils 2021-11-20 02:47:40 +00:00
BUILDCONFIG.gn Enable WASM cross-compilation by correctly using current_cpu 2022-04-20 11:31:35 +00:00
call.py [minor] mark scripts as executable 2019-11-21 17:06:27 +00:00
checkdir.py fix print functions for python3 gn scripts 2020-03-06 17:42:39 +00:00
checkpath.py Python3 tweaks 2019-12-17 17:12:03 +00:00
codesign_ios.py Reland "Set GN's script_executable to "python3"" 2022-04-07 20:11:27 +00:00
compile_ib_files.py [python3] Reland recipes -> python3 changes 2021-12-01 13:04:03 +00:00
compile_sksl_tests.py Avoid hard failure when invalid UTF8 is returned. 2022-04-27 19:51:20 +00:00
copy_git_directory.py [python3] Reland recipes -> python3 changes 2021-12-01 13:04:03 +00:00
core.gni Move skgpu::graphite::Mask to SkEnumBitMask 2022-04-28 14:04:16 +00:00
cp.py Work around python 2 shutil.copy2 date bug 2020-09-28 20:12:13 +00:00
dehydrate_sksl.py Add Graphite-only dehydrated modules. 2022-04-21 21:05:27 +00:00
effects_imagefilters.gni Implement separate crop filter 2021-09-24 20:18:36 +00:00
effects.gni Add missing SkTrimPathEffect to skia_effects_public 2022-02-28 22:42:44 +00:00
find_headers.py Give a human-intelligible message if gn generates a warning 2022-02-23 18:40:03 +00:00
find_msvc.py Add Preview to list of possible MSVC versions. 2020-04-30 19:54:33 +00:00
find_xcode_sysroot.py [python3] Reland recipes -> python3 changes 2021-12-01 13:04:03 +00:00
flutter_defines.gni drawVertices and drawPath apply blend between paint and primitive color. 2021-11-22 19:09:33 +00:00
fuchsia_defines.gni Enable new clip stack for Fuchsia 2020-10-12 20:41:03 +00:00
gen_plist_ios.py Add product bundle name to iOS Xcode projects 2020-11-16 16:00:56 +00:00
gm.gni Reland "skif:LayerSpace<SkRect>::roundOut/In have epsilon tolerance." 2022-04-14 14:41:22 +00:00
gn_meta_sln.py fix print functions for python3 gn scripts 2020-03-06 17:42:39 +00:00
gn_to_bp_utils.py Build the NDK compliant shared library to be used by JNI in SkQP. 2022-01-10 17:11:48 +00:00
gn_to_bp.py Use DEPS to pull in VulkanMemoryAllocator. 2022-04-28 22:59:02 +00:00
gn_to_cmake.py Fix CMakeLists to find Emscripten headers 2021-04-16 16:45:22 +00:00
gpu.gni [ganesh][dawn] Support blocking on async WebGPU events in WASM 2022-04-29 17:02:12 +00:00
graphite.gni [graphite] Add UploadBufferManager class. 2022-04-28 20:59:14 +00:00
highest_version_dir.py fix print functions for python3 gn scripts 2020-03-06 17:42:39 +00:00
ios.gni Fix setup for iOS simulator on arm64 Macs. 2022-03-30 20:06:39 +00:00
is_clang.py Fix is_clang python3 encoding errors 2020-06-26 18:41:00 +00:00
make_gm_gni.py GMs: re-sort gni, script to regenerate gni, file name convention 2019-05-02 20:08:37 +00:00
opts.gni add structure for normal SKX opts 2020-06-05 13:48:39 +00:00
pdf.gni Make skia_use_xps option work on Windows 2020-03-24 17:09:33 +00:00
push_to_android.py skia_android_serial = "auto" 2017-01-12 16:30:17 +00:00
rm.py Delete .a file before writing static library. 2020-06-11 17:19:23 +00:00
run_sksllex.py Reland "Fetch clang-format automatically when compiling .fp files." 2020-06-12 13:21:41 +00:00
samples.gni Revert "Move SkCamera.h to client_utils/android" 2022-04-25 12:33:01 +00:00
shared_sources.gni Update sprint to graphite name 2021-09-21 16:44:10 +00:00
skia.gni Remove mdbviz 2022-04-20 15:59:50 +00:00
skqp_gn_args.py [sksl] Make sksl tracing optional 2022-04-12 13:59:25 +00:00
sksl_tests.gni Move recursion tests into general /errors/ directory. 2022-04-28 21:25:41 +00:00
sksl.gni Rename CheckProgramUnrolledSize to CheckProgramStructure. 2022-04-27 22:30:04 +00:00
tests.gni Move skgpu::graphite::Mask to SkEnumBitMask 2022-04-28 14:04:16 +00:00
utils.gni Revert "Move SkCamera.h to client_utils/android" 2022-04-25 12:33:01 +00:00
xps.gni harmonize rewrite-includes and gn-format checks 2020-04-03 17:00:54 +00:00