Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(179)

Unified Diff: gpu/command_buffer/service/command_buffer_service.cc

Issue 2550583002: gpu: Thread-safe command buffer state lookup. (Closed)
Patch Set: jbauman's review Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « gpu/command_buffer/service/command_buffer_service.h ('k') | gpu/command_buffer/tests/gl_manager.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gpu/command_buffer/service/command_buffer_service.cc
diff --git a/gpu/command_buffer/service/command_buffer_service.cc b/gpu/command_buffer/service/command_buffer_service.cc
index ec9facb23331dd123e3ee2b831af4ed4e288293d..3e6a92c320b62c1c85c411cccfb0833bdcf6a92a 100644
--- a/gpu/command_buffer/service/command_buffer_service.cc
+++ b/gpu/command_buffer/service/command_buffer_service.cc
@@ -42,24 +42,24 @@ class MemoryBufferBacking : public BufferBacking {
CommandBufferService::CommandBufferService(
TransferBufferManagerInterface* transfer_buffer_manager)
: ring_buffer_id_(-1),
- shared_state_(NULL),
+ shared_state_(nullptr),
num_entries_(0),
get_offset_(0),
put_offset_(0),
transfer_buffer_manager_(transfer_buffer_manager),
token_(0),
+ release_count_(0),
generation_(0),
error_(error::kNoError),
- context_lost_reason_(error::kUnknown) {
-}
+ context_lost_reason_(error::kUnknown) {}
-CommandBufferService::~CommandBufferService() {
-}
+CommandBufferService::~CommandBufferService() {}
CommandBufferService::State CommandBufferService::GetLastState() {
State state;
state.get_offset = get_offset_;
state.token = token_;
+ state.release_count = release_count_;
state.error = error_;
state.context_lost_reason = context_lost_reason_;
state.generation = ++generation_;
@@ -67,10 +67,6 @@ CommandBufferService::State CommandBufferService::GetLastState() {
return state;
}
-int32_t CommandBufferService::GetLastToken() {
- return GetLastState().token;
-}
-
void CommandBufferService::UpdateState() {
if (shared_state_) {
CommandBufferService::State state = GetLastState();
@@ -78,12 +74,17 @@ void CommandBufferService::UpdateState() {
}
}
-void CommandBufferService::WaitForTokenInRange(int32_t start, int32_t end) {
+CommandBuffer::State CommandBufferService::WaitForTokenInRange(int32_t start,
+ int32_t end) {
DCHECK(error_ != error::kNoError || InRange(start, end, token_));
+ return GetLastState();
}
-void CommandBufferService::WaitForGetOffsetInRange(int32_t start, int32_t end) {
+CommandBuffer::State CommandBufferService::WaitForGetOffsetInRange(
+ int32_t start,
+ int32_t end) {
DCHECK(error_ != error::kNoError || InRange(start, end, get_offset_));
+ return GetLastState();
}
void CommandBufferService::Flush(int32_t put_offset) {
@@ -136,6 +137,12 @@ void CommandBufferService::SetGetOffset(int32_t get_offset) {
get_offset_ = get_offset;
}
+void CommandBufferService::SetReleaseCount(uint64_t release_count) {
+ DCHECK(release_count >= release_count_);
+ release_count_ = release_count;
+ UpdateState();
+}
+
scoped_refptr<Buffer> CommandBufferService::CreateTransferBuffer(size_t size,
int32_t* id) {
static int32_t next_id = 1;
@@ -181,7 +188,6 @@ scoped_refptr<Buffer> CommandBufferService::CreateTransferBufferWithId(
return GetTransferBuffer(id);
}
-
void CommandBufferService::SetToken(int32_t token) {
token_ = token;
UpdateState();
« no previous file with comments | « gpu/command_buffer/service/command_buffer_service.h ('k') | gpu/command_buffer/tests/gl_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698