mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-08-02 18:25:56 +00:00
This is a reland of b04a92f01be0e7dc2faf91e0f6f974f990e8b2f2 with the deletion of a duplicate exported function in dawn_wire that was causing a compilation failure on Windows. Original change's description: > Add a per-thread proc table using thread local storage > > In situations where both dawn_wire and dawn_native are used on separate > threads (Chrome with --single-process or --in-process-gpu), it's > desirable to have a per-thread proc table so that the WebGPU C++ API can > still be used. This eliminates classes of bugs with manual > reference/release errors. > > This also changes many of the GetProcs functions to return const > references to the static proc tables known at compile time, instead of a > copy. > > Bug: none > Change-Id: I8775bb715b312dd9476a1903fbd797d4b1302614 > Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/29240 > Reviewed-by: Stephen White <senorblanco@chromium.org> > Reviewed-by: Corentin Wallez <cwallez@chromium.org> > Commit-Queue: Austin Eng <enga@chromium.org> Bug: none Change-Id: Id90e5372132cd93a2f8631c8185d0e71b01bc1af Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/29443 Commit-Queue: Austin Eng <enga@chromium.org> Reviewed-by: Kai Ninomiya <kainino@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Stephen White <senorblanco@chromium.org>
107 lines
3.0 KiB
Plaintext
107 lines
3.0 KiB
Plaintext
# Copyright 2019 The Dawn Authors
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
import("../../scripts/dawn_overrides_with_defaults.gni")
|
|
|
|
import("${dawn_root}/generator/dawn_generator.gni")
|
|
import("${dawn_root}/scripts/dawn_component.gni")
|
|
|
|
###############################################################################
|
|
# Dawn headers
|
|
###############################################################################
|
|
|
|
dawn_json_generator("dawn_headers_gen") {
|
|
target = "dawn_headers"
|
|
outputs = [
|
|
"src/include/dawn/dawn_proc_table.h",
|
|
"src/include/dawn/webgpu.h",
|
|
]
|
|
}
|
|
|
|
dawn_json_generator("emscripten_bits_gen") {
|
|
target = "emscripten_bits"
|
|
outputs = [
|
|
"src/dawn/webgpu_struct_info.json",
|
|
"src/dawn/library_webgpu_enum_tables.js",
|
|
]
|
|
}
|
|
|
|
source_set("dawn_headers") {
|
|
all_dependent_configs = [ "${dawn_root}/src/common:dawn_public_include_dirs" ]
|
|
public_deps = [ ":dawn_headers_gen" ]
|
|
|
|
sources = get_target_outputs(":dawn_headers_gen")
|
|
sources += [ "${dawn_root}/src/include/dawn/dawn_wsi.h" ]
|
|
}
|
|
|
|
###############################################################################
|
|
# Dawn C++ headers
|
|
###############################################################################
|
|
|
|
dawn_json_generator("dawncpp_headers_gen") {
|
|
target = "dawncpp_headers"
|
|
outputs = [ "src/include/dawn/webgpu_cpp.h" ]
|
|
}
|
|
|
|
source_set("dawncpp_headers") {
|
|
public_deps = [
|
|
":dawn_headers",
|
|
":dawncpp_headers_gen",
|
|
]
|
|
|
|
sources = get_target_outputs(":dawncpp_headers_gen")
|
|
sources += [ "${dawn_root}/src/include/dawn/EnumClassBitmasks.h" ]
|
|
}
|
|
|
|
###############################################################################
|
|
# Dawn C++ wrapper
|
|
###############################################################################
|
|
|
|
dawn_json_generator("dawncpp_gen") {
|
|
target = "dawncpp"
|
|
outputs = [ "src/dawn/webgpu_cpp.cpp" ]
|
|
}
|
|
|
|
source_set("dawncpp") {
|
|
deps = [
|
|
":dawncpp_gen",
|
|
":dawncpp_headers",
|
|
]
|
|
sources = get_target_outputs(":dawncpp_gen")
|
|
}
|
|
|
|
###############################################################################
|
|
# dawn_proc
|
|
###############################################################################
|
|
|
|
dawn_json_generator("dawn_proc_gen") {
|
|
target = "dawn_proc"
|
|
outputs = [
|
|
"src/dawn/dawn_proc.c",
|
|
"src/dawn/dawn_thread_dispatch_proc.cpp",
|
|
]
|
|
}
|
|
|
|
dawn_component("dawn_proc") {
|
|
DEFINE_PREFIX = "WGPU"
|
|
|
|
public_deps = [ ":dawn_headers" ]
|
|
deps = [ ":dawn_proc_gen" ]
|
|
sources = get_target_outputs(":dawn_proc_gen")
|
|
sources += [
|
|
"${dawn_root}/src/include/dawn/dawn_proc.h",
|
|
"${dawn_root}/src/include/dawn/dawn_thread_dispatch_proc.h",
|
|
]
|
|
}
|