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 @@
#include <stdint.h>
#include <string>
#include <utility>
#include "base/threading/simple_thread.h"
#include "base/trace_event/trace_event.h"
......@@ -16,8 +17,7 @@ namespace cc {
SingleThreadTaskGraphRunner::SingleThreadTaskGraphRunner()
: lock_(),
has_ready_to_run_tasks_cv_(&lock_),
has_namespaces_with_finished_running_tasks_cv_(&lock_),
shutdown_(false) {
has_namespaces_with_finished_running_tasks_cv_(&lock_) {
has_ready_to_run_tasks_cv_.declare_only_used_while_idle();
}
......@@ -130,8 +130,6 @@ bool SingleThreadTaskGraphRunner::RunTaskWithLockAcquired() {
TRACE_EVENT0("toplevel",
"SingleThreadTaskGraphRunner::RunTaskWithLockAcquired");
lock_.AssertAcquired();
// Find the first category with any tasks to run. This task graph runner
// treats categories as an additional priority.
const auto& ready_to_run_namespaces = work_queue_.ready_to_run_namespaces();
......
......@@ -6,8 +6,10 @@
#define CC_RASTER_SINGLE_THREAD_TASK_GRAPH_RUNNER_H_
#include <memory>
#include <string>
#include "base/synchronization/condition_variable.h"
#include "base/thread_annotations.h"
#include "base/threading/simple_thread.h"
#include "cc/raster/task_graph_runner.h"
#include "cc/raster/task_graph_work_queue.h"
......@@ -42,7 +44,7 @@ class CC_EXPORT SingleThreadTaskGraphRunner
private:
// Returns true if there was a task to run.
bool RunTaskWithLockAcquired();
bool RunTaskWithLockAcquired() EXCLUSIVE_LOCKS_REQUIRED(lock_);
std::unique_ptr<base::SimpleThread> thread_;
......@@ -51,7 +53,7 @@ class CC_EXPORT SingleThreadTaskGraphRunner
base::Lock lock_;
// 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
// run or shutdown starts.
......@@ -62,7 +64,7 @@ class CC_EXPORT SingleThreadTaskGraphRunner
base::ConditionVariable has_namespaces_with_finished_running_tasks_cv_;
// Set during shutdown. Tells Run() to return when no more tasks are pending.
bool shutdown_;
bool shutdown_ GUARDED_BY(lock_) = false;
};
} // namespace cc
......
......@@ -5,6 +5,8 @@
#include "cc/raster/staging_buffer_pool.h"
#include <memory>
#include <string>
#include <utility>
#include "base/bind.h"
#include "base/strings/stringprintf.h"
......@@ -194,8 +196,6 @@ bool StagingBufferPool::OnMemoryDump(
void StagingBufferPool::AddStagingBuffer(const StagingBuffer* staging_buffer,
viz::ResourceFormat format) {
lock_.AssertAcquired();
DCHECK(buffers_.find(staging_buffer) == buffers_.end());
buffers_.insert(staging_buffer);
int buffer_usage_in_bytes = viz::ResourceSizes::UncheckedSizeInBytes<int>(
......@@ -205,8 +205,6 @@ void StagingBufferPool::AddStagingBuffer(const StagingBuffer* staging_buffer,
void StagingBufferPool::RemoveStagingBuffer(
const StagingBuffer* staging_buffer) {
lock_.AssertAcquired();
DCHECK(buffers_.find(staging_buffer) != buffers_.end());
buffers_.erase(staging_buffer);
int buffer_usage_in_bytes = viz::ResourceSizes::UncheckedSizeInBytes<int>(
......@@ -217,8 +215,6 @@ void StagingBufferPool::RemoveStagingBuffer(
void StagingBufferPool::MarkStagingBufferAsFree(
const StagingBuffer* staging_buffer) {
lock_.AssertAcquired();
int buffer_usage_in_bytes = viz::ResourceSizes::UncheckedSizeInBytes<int>(
staging_buffer->size, staging_buffer->format);
free_staging_buffer_usage_in_bytes_ += buffer_usage_in_bytes;
......@@ -226,8 +222,6 @@ void StagingBufferPool::MarkStagingBufferAsFree(
void StagingBufferPool::MarkStagingBufferAsBusy(
const StagingBuffer* staging_buffer) {
lock_.AssertAcquired();
int buffer_usage_in_bytes = viz::ResourceSizes::UncheckedSizeInBytes<int>(
staging_buffer->size, staging_buffer->format);
DCHECK_GE(free_staging_buffer_usage_in_bytes_, buffer_usage_in_bytes);
......@@ -334,8 +328,6 @@ std::unique_ptr<StagingBuffer> StagingBufferPool::AcquireStagingBuffer(
}
base::TimeTicks StagingBufferPool::GetUsageTimeForLRUBuffer() {
lock_.AssertAcquired();
if (!free_buffers_.empty())
return free_buffers_.front()->last_usage;
......@@ -346,8 +338,6 @@ base::TimeTicks StagingBufferPool::GetUsageTimeForLRUBuffer() {
}
void StagingBufferPool::ScheduleReduceMemoryUsage() {
lock_.AssertAcquired();
if (reduce_memory_usage_pending_)
return;
......@@ -387,8 +377,6 @@ void StagingBufferPool::ReduceMemoryUsage() {
}
void StagingBufferPool::ReleaseBuffersNotUsedSince(base::TimeTicks time) {
lock_.AssertAcquired();
{
viz::RasterContextProvider::ScopedRasterContextLock scoped_context(
worker_context_provider_);
......
......@@ -103,15 +103,20 @@ class CC_EXPORT StagingBufferPool
private:
void AddStagingBuffer(const StagingBuffer* staging_buffer,
viz::ResourceFormat format);
void RemoveStagingBuffer(const StagingBuffer* staging_buffer);
void MarkStagingBufferAsFree(const StagingBuffer* staging_buffer);
void MarkStagingBufferAsBusy(const StagingBuffer* staging_buffer);
base::TimeTicks GetUsageTimeForLRUBuffer();
void ScheduleReduceMemoryUsage();
viz::ResourceFormat format)
EXCLUSIVE_LOCKS_REQUIRED(lock_);
void RemoveStagingBuffer(const StagingBuffer* staging_buffer)
EXCLUSIVE_LOCKS_REQUIRED(lock_);
void MarkStagingBufferAsFree(const StagingBuffer* staging_buffer)
EXCLUSIVE_LOCKS_REQUIRED(lock_);
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 ReleaseBuffersNotUsedSince(base::TimeTicks time);
void ReleaseBuffersNotUsedSince(base::TimeTicks time)
EXCLUSIVE_LOCKS_REQUIRED(lock_);
std::unique_ptr<base::trace_event::ConvertableToTraceFormat> StateAsValue()
const;
......@@ -131,14 +136,14 @@ class CC_EXPORT StagingBufferPool
StagingBufferSet buffers_;
using StagingBufferDeque =
base::circular_deque<std::unique_ptr<StagingBuffer>>;
StagingBufferDeque free_buffers_;
StagingBufferDeque busy_buffers_;
const int max_staging_buffer_usage_in_bytes_;
int staging_buffer_usage_in_bytes_;
int free_staging_buffer_usage_in_bytes_;
const base::TimeDelta staging_buffer_expiration_delay_;
bool reduce_memory_usage_pending_;
base::RepeatingClosure reduce_memory_usage_callback_;
StagingBufferDeque free_buffers_ GUARDED_BY(lock_);
StagingBufferDeque busy_buffers_ GUARDED_BY(lock_);
const int max_staging_buffer_usage_in_bytes_ GUARDED_BY(lock_);
int staging_buffer_usage_in_bytes_ GUARDED_BY(lock_);
int free_staging_buffer_usage_in_bytes_ GUARDED_BY(lock_);
const base::TimeDelta staging_buffer_expiration_delay_ GUARDED_BY(lock_);
bool reduce_memory_usage_pending_ GUARDED_BY(lock_);
base::RepeatingClosure reduce_memory_usage_callback_ GUARDED_BY(lock_);
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