Implement WaitableEvent and WorkerTaskPool for multi-threaded tasks

This patch adds the basic implementation of WaitableEvent and
WorkerTaskPool for multi-threaded tasks in Dawn (for example, the
multi-threaded implementation of CreateReady*Pipeline()).

BUG=dawn:529
TEST=dawn_unittests

Change-Id: Ibf84348f4c0f0d26badc19ae94cd536cef89d084
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/36360
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
This commit is contained in:
Jiawei Shao
2021-01-20 08:56:07 +00:00
committed by Commit Bot service account
parent 311a17a8fe
commit 064f33e441
11 changed files with 312 additions and 0 deletions

View File

@@ -171,6 +171,7 @@ if (is_win || is_linux || is_chromeos || is_mac || is_fuchsia || is_android) {
"Math.cpp",
"Math.h",
"NSRef.h",
"NonCopyable.h",
"PlacementAllocated.h",
"Platform.h",
"RefBase.h",

View File

@@ -33,6 +33,7 @@ target_sources(dawn_common PRIVATE
"Math.cpp"
"Math.h"
"NSRef.h"
"NonCopyable.h"
"PlacementAllocated.h"
"Platform.h"
"RefBase.h"

32
src/common/NonCopyable.h Normal file
View File

@@ -0,0 +1,32 @@
// Copyright 2021 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.
#ifndef COMMON_NONCOPYABLE_H_
#define COMMON_NONCOPYABLE_H_
// NonCopyable:
// the base class for the classes that are not copyable.
//
class NonCopyable {
protected:
constexpr NonCopyable() = default;
~NonCopyable() = default;
private:
NonCopyable(const NonCopyable&) = delete;
void operator=(const NonCopyable&) = delete;
};
#endif