Commit c3fca2f9 authored by Benoit Lize's avatar Benoit Lize Committed by Commit Bot

[cc] Add locking annotations to cc/raster.

Also fix `git cl lint` warnings.

Change-Id: Ibdd0d2337b576efe8b255e39efd3d78ce070d191
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2410483Reviewed-by: default avatardanakj <danakj@chromium.org>
Commit-Queue: Benoit L <lizeb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#808433}
parent 7fc5d2f9
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include <stdint.h> #include <stdint.h>
#include <string> #include <string>
#include <utility>
#include "base/threading/simple_thread.h" #include "base/threading/simple_thread.h"
#include "base/trace_event/trace_event.h" #include "base/trace_event/trace_event.h"
...@@ -16,8 +17,7 @@ namespace cc { ...@@ -16,8 +17,7 @@ namespace cc {
SingleThreadTaskGraphRunner::SingleThreadTaskGraphRunner() SingleThreadTaskGraphRunner::SingleThreadTaskGraphRunner()
: lock_(), : lock_(),
has_ready_to_run_tasks_cv_(&lock_), has_ready_to_run_tasks_cv_(&lock_),
has_namespaces_with_finished_running_tasks_cv_(&lock_), has_namespaces_with_finished_running_tasks_cv_(&lock_) {
shutdown_(false) {
has_ready_to_run_tasks_cv_.declare_only_used_while_idle(); has_ready_to_run_tasks_cv_.declare_only_used_while_idle();
} }
...@@ -130,8 +130,6 @@ bool SingleThreadTaskGraphRunner::RunTaskWithLockAcquired() { ...@@ -130,8 +130,6 @@ bool SingleThreadTaskGraphRunner::RunTaskWithLockAcquired() {
TRACE_EVENT0("toplevel", TRACE_EVENT0("toplevel",
"SingleThreadTaskGraphRunner::RunTaskWithLockAcquired"); "SingleThreadTaskGraphRunner::RunTaskWithLockAcquired");
lock_.AssertAcquired();
// Find the first category with any tasks to run. This task graph runner // Find the first category with any tasks to run. This task graph runner
// treats categories as an additional priority. // treats categories as an additional priority.
const auto& ready_to_run_namespaces = work_queue_.ready_to_run_namespaces(); const auto& ready_to_run_namespaces = work_queue_.ready_to_run_namespaces();
......
...@@ -6,8 +6,10 @@ ...@@ -6,8 +6,10 @@
#define CC_RASTER_SINGLE_THREAD_TASK_GRAPH_RUNNER_H_ #define CC_RASTER_SINGLE_THREAD_TASK_GRAPH_RUNNER_H_
#include <memory> #include <memory>
#include <string>
#include "base/synchronization/condition_variable.h" #include "base/synchronization/condition_variable.h"
#include "base/thread_annotations.h"
#include "base/threading/simple_thread.h" #include "base/threading/simple_thread.h"
#include "cc/raster/task_graph_runner.h" #include "cc/raster/task_graph_runner.h"
#include "cc/raster/task_graph_work_queue.h" #include "cc/raster/task_graph_work_queue.h"
...@@ -42,7 +44,7 @@ class CC_EXPORT SingleThreadTaskGraphRunner ...@@ -42,7 +44,7 @@ class CC_EXPORT SingleThreadTaskGraphRunner
private: private:
// Returns true if there was a task to run. // Returns true if there was a task to run.
bool RunTaskWithLockAcquired(); bool RunTaskWithLockAcquired() EXCLUSIVE_LOCKS_REQUIRED(lock_);
std::unique_ptr<base::SimpleThread> thread_; std::unique_ptr<base::SimpleThread> thread_;
...@@ -51,7 +53,7 @@ class CC_EXPORT SingleThreadTaskGraphRunner ...@@ -51,7 +53,7 @@ class CC_EXPORT SingleThreadTaskGraphRunner
base::Lock lock_; base::Lock lock_;
// Stores the actual tasks to be run by this runner, sorted by priority. // Stores the actual tasks to be run by this runner, sorted by priority.
TaskGraphWorkQueue work_queue_; TaskGraphWorkQueue work_queue_ GUARDED_BY(lock_);
// Condition variable that is waited on by Run() until new tasks are ready to // Condition variable that is waited on by Run() until new tasks are ready to
// run or shutdown starts. // run or shutdown starts.
...@@ -62,7 +64,7 @@ class CC_EXPORT SingleThreadTaskGraphRunner ...@@ -62,7 +64,7 @@ class CC_EXPORT SingleThreadTaskGraphRunner
base::ConditionVariable has_namespaces_with_finished_running_tasks_cv_; base::ConditionVariable has_namespaces_with_finished_running_tasks_cv_;
// Set during shutdown. Tells Run() to return when no more tasks are pending. // Set during shutdown. Tells Run() to return when no more tasks are pending.
bool shutdown_; bool shutdown_ GUARDED_BY(lock_) = false;
}; };
} // namespace cc } // namespace cc
......
...@@ -5,6 +5,8 @@ ...@@ -5,6 +5,8 @@
#include "cc/raster/staging_buffer_pool.h" #include "cc/raster/staging_buffer_pool.h"
#include <memory> #include <memory>
#include <string>
#include <utility>
#include "base/bind.h" #include "base/bind.h"
#include "base/strings/stringprintf.h" #include "base/strings/stringprintf.h"
...@@ -194,8 +196,6 @@ bool StagingBufferPool::OnMemoryDump( ...@@ -194,8 +196,6 @@ bool StagingBufferPool::OnMemoryDump(
void StagingBufferPool::AddStagingBuffer(const StagingBuffer* staging_buffer, void StagingBufferPool::AddStagingBuffer(const StagingBuffer* staging_buffer,
viz::ResourceFormat format) { viz::ResourceFormat format) {
lock_.AssertAcquired();
DCHECK(buffers_.find(staging_buffer) == buffers_.end()); DCHECK(buffers_.find(staging_buffer) == buffers_.end());
buffers_.insert(staging_buffer); buffers_.insert(staging_buffer);
int buffer_usage_in_bytes = viz::ResourceSizes::UncheckedSizeInBytes<int>( int buffer_usage_in_bytes = viz::ResourceSizes::UncheckedSizeInBytes<int>(
...@@ -205,8 +205,6 @@ void StagingBufferPool::AddStagingBuffer(const StagingBuffer* staging_buffer, ...@@ -205,8 +205,6 @@ void StagingBufferPool::AddStagingBuffer(const StagingBuffer* staging_buffer,
void StagingBufferPool::RemoveStagingBuffer( void StagingBufferPool::RemoveStagingBuffer(
const StagingBuffer* staging_buffer) { const StagingBuffer* staging_buffer) {
lock_.AssertAcquired();
DCHECK(buffers_.find(staging_buffer) != buffers_.end()); DCHECK(buffers_.find(staging_buffer) != buffers_.end());
buffers_.erase(staging_buffer); buffers_.erase(staging_buffer);
int buffer_usage_in_bytes = viz::ResourceSizes::UncheckedSizeInBytes<int>( int buffer_usage_in_bytes = viz::ResourceSizes::UncheckedSizeInBytes<int>(
...@@ -217,8 +215,6 @@ void StagingBufferPool::RemoveStagingBuffer( ...@@ -217,8 +215,6 @@ void StagingBufferPool::RemoveStagingBuffer(
void StagingBufferPool::MarkStagingBufferAsFree( void StagingBufferPool::MarkStagingBufferAsFree(
const StagingBuffer* staging_buffer) { const StagingBuffer* staging_buffer) {
lock_.AssertAcquired();
int buffer_usage_in_bytes = viz::ResourceSizes::UncheckedSizeInBytes<int>( int buffer_usage_in_bytes = viz::ResourceSizes::UncheckedSizeInBytes<int>(
staging_buffer->size, staging_buffer->format); staging_buffer->size, staging_buffer->format);
free_staging_buffer_usage_in_bytes_ += buffer_usage_in_bytes; free_staging_buffer_usage_in_bytes_ += buffer_usage_in_bytes;
...@@ -226,8 +222,6 @@ void StagingBufferPool::MarkStagingBufferAsFree( ...@@ -226,8 +222,6 @@ void StagingBufferPool::MarkStagingBufferAsFree(
void StagingBufferPool::MarkStagingBufferAsBusy( void StagingBufferPool::MarkStagingBufferAsBusy(
const StagingBuffer* staging_buffer) { const StagingBuffer* staging_buffer) {
lock_.AssertAcquired();
int buffer_usage_in_bytes = viz::ResourceSizes::UncheckedSizeInBytes<int>( int buffer_usage_in_bytes = viz::ResourceSizes::UncheckedSizeInBytes<int>(
staging_buffer->size, staging_buffer->format); staging_buffer->size, staging_buffer->format);
DCHECK_GE(free_staging_buffer_usage_in_bytes_, buffer_usage_in_bytes); DCHECK_GE(free_staging_buffer_usage_in_bytes_, buffer_usage_in_bytes);
...@@ -334,8 +328,6 @@ std::unique_ptr<StagingBuffer> StagingBufferPool::AcquireStagingBuffer( ...@@ -334,8 +328,6 @@ std::unique_ptr<StagingBuffer> StagingBufferPool::AcquireStagingBuffer(
} }
base::TimeTicks StagingBufferPool::GetUsageTimeForLRUBuffer() { base::TimeTicks StagingBufferPool::GetUsageTimeForLRUBuffer() {
lock_.AssertAcquired();
if (!free_buffers_.empty()) if (!free_buffers_.empty())
return free_buffers_.front()->last_usage; return free_buffers_.front()->last_usage;
...@@ -346,8 +338,6 @@ base::TimeTicks StagingBufferPool::GetUsageTimeForLRUBuffer() { ...@@ -346,8 +338,6 @@ base::TimeTicks StagingBufferPool::GetUsageTimeForLRUBuffer() {
} }
void StagingBufferPool::ScheduleReduceMemoryUsage() { void StagingBufferPool::ScheduleReduceMemoryUsage() {
lock_.AssertAcquired();
if (reduce_memory_usage_pending_) if (reduce_memory_usage_pending_)
return; return;
...@@ -387,8 +377,6 @@ void StagingBufferPool::ReduceMemoryUsage() { ...@@ -387,8 +377,6 @@ void StagingBufferPool::ReduceMemoryUsage() {
} }
void StagingBufferPool::ReleaseBuffersNotUsedSince(base::TimeTicks time) { void StagingBufferPool::ReleaseBuffersNotUsedSince(base::TimeTicks time) {
lock_.AssertAcquired();
{ {
viz::RasterContextProvider::ScopedRasterContextLock scoped_context( viz::RasterContextProvider::ScopedRasterContextLock scoped_context(
worker_context_provider_); worker_context_provider_);
......
...@@ -103,15 +103,20 @@ class CC_EXPORT StagingBufferPool ...@@ -103,15 +103,20 @@ class CC_EXPORT StagingBufferPool
private: private:
void AddStagingBuffer(const StagingBuffer* staging_buffer, void AddStagingBuffer(const StagingBuffer* staging_buffer,
viz::ResourceFormat format); viz::ResourceFormat format)
void RemoveStagingBuffer(const StagingBuffer* staging_buffer); EXCLUSIVE_LOCKS_REQUIRED(lock_);
void MarkStagingBufferAsFree(const StagingBuffer* staging_buffer); void RemoveStagingBuffer(const StagingBuffer* staging_buffer)
void MarkStagingBufferAsBusy(const StagingBuffer* staging_buffer); EXCLUSIVE_LOCKS_REQUIRED(lock_);
void MarkStagingBufferAsFree(const StagingBuffer* staging_buffer)
base::TimeTicks GetUsageTimeForLRUBuffer(); EXCLUSIVE_LOCKS_REQUIRED(lock_);
void ScheduleReduceMemoryUsage(); void MarkStagingBufferAsBusy(const StagingBuffer* staging_buffer)
EXCLUSIVE_LOCKS_REQUIRED(lock_);
base::TimeTicks GetUsageTimeForLRUBuffer() EXCLUSIVE_LOCKS_REQUIRED(lock_);
void ScheduleReduceMemoryUsage() EXCLUSIVE_LOCKS_REQUIRED(lock_);
void ReduceMemoryUsage(); void ReduceMemoryUsage();
void ReleaseBuffersNotUsedSince(base::TimeTicks time); void ReleaseBuffersNotUsedSince(base::TimeTicks time)
EXCLUSIVE_LOCKS_REQUIRED(lock_);
std::unique_ptr<base::trace_event::ConvertableToTraceFormat> StateAsValue() std::unique_ptr<base::trace_event::ConvertableToTraceFormat> StateAsValue()
const; const;
...@@ -131,14 +136,14 @@ class CC_EXPORT StagingBufferPool ...@@ -131,14 +136,14 @@ class CC_EXPORT StagingBufferPool
StagingBufferSet buffers_; StagingBufferSet buffers_;
using StagingBufferDeque = using StagingBufferDeque =
base::circular_deque<std::unique_ptr<StagingBuffer>>; base::circular_deque<std::unique_ptr<StagingBuffer>>;
StagingBufferDeque free_buffers_; StagingBufferDeque free_buffers_ GUARDED_BY(lock_);
StagingBufferDeque busy_buffers_; StagingBufferDeque busy_buffers_ GUARDED_BY(lock_);
const int max_staging_buffer_usage_in_bytes_; const int max_staging_buffer_usage_in_bytes_ GUARDED_BY(lock_);
int staging_buffer_usage_in_bytes_; int staging_buffer_usage_in_bytes_ GUARDED_BY(lock_);
int free_staging_buffer_usage_in_bytes_; int free_staging_buffer_usage_in_bytes_ GUARDED_BY(lock_);
const base::TimeDelta staging_buffer_expiration_delay_; const base::TimeDelta staging_buffer_expiration_delay_ GUARDED_BY(lock_);
bool reduce_memory_usage_pending_; bool reduce_memory_usage_pending_ GUARDED_BY(lock_);
base::RepeatingClosure reduce_memory_usage_callback_; base::RepeatingClosure reduce_memory_usage_callback_ GUARDED_BY(lock_);
std::unique_ptr<base::MemoryPressureListener> memory_pressure_listener_; std::unique_ptr<base::MemoryPressureListener> memory_pressure_listener_;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment