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

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

Issue 16175005: GPU: Replace AsyncPixelTransferState with AsyncPixelTransferDelegate. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 7 years, 6 months 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
Index: gpu/command_buffer/service/async_pixel_transfer_manager_idle.cc
diff --git a/gpu/command_buffer/service/async_pixel_transfer_manager_idle.cc b/gpu/command_buffer/service/async_pixel_transfer_manager_idle.cc
index dcb34a48c138d3762ef73f30f3fb57a957c9d14e..acf33efdfb377411157a454f2119f8b722a96e7b 100644
--- a/gpu/command_buffer/service/async_pixel_transfer_manager_idle.cc
+++ b/gpu/command_buffer/service/async_pixel_transfer_manager_idle.cc
@@ -7,6 +7,7 @@
#include "base/bind.h"
#include "base/debug/trace_event.h"
#include "base/lazy_instance.h"
+#include "base/memory/weak_ptr.h"
#include "gpu/command_buffer/service/safe_shared_memory_pool.h"
#include "ui/gl/scoped_binders.h"
@@ -33,18 +34,21 @@ void PerformNotifyCompletion(
callback.Run(safe_mem_params);
}
-class AsyncPixelTransferStateImpl : public AsyncPixelTransferState {
+// TODO(backer): Merge this with Delegate in follow-up CL. It serves no purpose.
+class AsyncPixelTransferState
+ : public base::SupportsWeakPtr<AsyncPixelTransferState> {
public:
typedef base::Callback<void(GLuint)> TransferCallback;
- explicit AsyncPixelTransferStateImpl(GLuint texture_id)
+ explicit AsyncPixelTransferState(GLuint texture_id)
: id_(g_next_pixel_transfer_state_id++),
texture_id_(texture_id),
transfer_in_progress_(false) {
}
- // Implement AsyncPixelTransferState:
- virtual bool TransferIsInProgress() OVERRIDE {
+ virtual ~AsyncPixelTransferState() {}
+
+ bool TransferIsInProgress() {
return transfer_in_progress_;
}
@@ -62,11 +66,11 @@ class AsyncPixelTransferStateImpl : public AsyncPixelTransferState {
}
private:
- virtual ~AsyncPixelTransferStateImpl() {}
-
uint64 id_;
GLuint texture_id_;
bool transfer_in_progress_;
+
+ DISALLOW_COPY_AND_ASSIGN(AsyncPixelTransferState);
};
} // namespace
@@ -76,25 +80,21 @@ class AsyncPixelTransferStateImpl : public AsyncPixelTransferState {
class AsyncPixelTransferDelegateIdle : public AsyncPixelTransferDelegate,
public base::SupportsWeakPtr<AsyncPixelTransferDelegateIdle> {
public:
- explicit AsyncPixelTransferDelegateIdle(
- AsyncPixelTransferManagerIdle::SharedState* state);
+ AsyncPixelTransferDelegateIdle(
+ AsyncPixelTransferManagerIdle::SharedState* state,
+ GLuint texture_id);
virtual ~AsyncPixelTransferDelegateIdle();
// Implement AsyncPixelTransferDelegate:
- virtual AsyncPixelTransferState* CreatePixelTransferState(
- GLuint texture_id,
- const AsyncTexImage2DParams& define_params) OVERRIDE;
virtual void AsyncTexImage2D(
- AsyncPixelTransferState* transfer_state,
const AsyncTexImage2DParams& tex_params,
const AsyncMemoryParams& mem_params,
const base::Closure& bind_callback) OVERRIDE;
virtual void AsyncTexSubImage2D(
- AsyncPixelTransferState* transfer_state,
const AsyncTexSubImage2DParams& tex_params,
const AsyncMemoryParams& mem_params) OVERRIDE;
- virtual void WaitForTransferCompletion(
- AsyncPixelTransferState* transfer_state) OVERRIDE;
+ virtual bool TransferIsInProgress() OVERRIDE;
+ virtual void WaitForTransferCompletion() OVERRIDE;
private:
void PerformAsyncTexImage2D(
@@ -112,40 +112,33 @@ class AsyncPixelTransferDelegateIdle : public AsyncPixelTransferDelegate,
// Safe to hold a raw pointer because SharedState is owned by the Manager
// which owns the Delegate.
AsyncPixelTransferManagerIdle::SharedState* shared_state_;
+ scoped_ptr<AsyncPixelTransferState> state_;
DISALLOW_COPY_AND_ASSIGN(AsyncPixelTransferDelegateIdle);
};
AsyncPixelTransferDelegateIdle::AsyncPixelTransferDelegateIdle(
- AsyncPixelTransferManagerIdle::SharedState* shared_state)
- : shared_state_(shared_state) {}
+ AsyncPixelTransferManagerIdle::SharedState* shared_state,
+ GLuint texture_id)
+ : shared_state_(shared_state),
+ state_(new AsyncPixelTransferState(texture_id)) {}
AsyncPixelTransferDelegateIdle::~AsyncPixelTransferDelegateIdle() {}
-AsyncPixelTransferState* AsyncPixelTransferDelegateIdle::
- CreatePixelTransferState(GLuint texture_id,
- const AsyncTexImage2DParams& define_params) {
- return new AsyncPixelTransferStateImpl(texture_id);
-}
-
void AsyncPixelTransferDelegateIdle::AsyncTexImage2D(
- AsyncPixelTransferState* transfer_state,
const AsyncTexImage2DParams& tex_params,
const AsyncMemoryParams& mem_params,
const base::Closure& bind_callback) {
- AsyncPixelTransferStateImpl* state =
- static_cast<AsyncPixelTransferStateImpl*>(transfer_state);
DCHECK_EQ(static_cast<GLenum>(GL_TEXTURE_2D), tex_params.target);
DCHECK(mem_params.shared_memory);
DCHECK_LE(mem_params.shm_data_offset + mem_params.shm_data_size,
mem_params.shm_size);
- DCHECK(state);
shared_state_->tasks.push_back(AsyncPixelTransferManagerIdle::Task(
- state->id(),
+ state_->id(),
base::Bind(
- &AsyncPixelTransferStateImpl::PerformTransfer,
- base::AsWeakPtr(state),
+ &AsyncPixelTransferState::PerformTransfer,
+ state_->AsWeakPtr(),
base::Bind(
&AsyncPixelTransferDelegateIdle::PerformAsyncTexImage2D,
AsWeakPtr(),
@@ -156,26 +149,22 @@ void AsyncPixelTransferDelegateIdle::AsyncTexImage2D(
mem_params.shared_memory,
mem_params.shm_size))))));
- state->set_transfer_in_progress(true);
+ state_->set_transfer_in_progress(true);
}
void AsyncPixelTransferDelegateIdle::AsyncTexSubImage2D(
- AsyncPixelTransferState* transfer_state,
const AsyncTexSubImage2DParams& tex_params,
const AsyncMemoryParams& mem_params) {
- AsyncPixelTransferStateImpl* state =
- static_cast<AsyncPixelTransferStateImpl*>(transfer_state);
DCHECK_EQ(static_cast<GLenum>(GL_TEXTURE_2D), tex_params.target);
DCHECK(mem_params.shared_memory);
DCHECK_LE(mem_params.shm_data_offset + mem_params.shm_data_size,
mem_params.shm_size);
- DCHECK(state);
shared_state_->tasks.push_back(AsyncPixelTransferManagerIdle::Task(
- state->id(),
+ state_->id(),
base::Bind(
- &AsyncPixelTransferStateImpl::PerformTransfer,
- base::AsWeakPtr(state),
+ &AsyncPixelTransferState::PerformTransfer,
+ state_->AsWeakPtr(),
base::Bind(
&AsyncPixelTransferDelegateIdle::PerformAsyncTexSubImage2D,
AsWeakPtr(),
@@ -185,20 +174,19 @@ void AsyncPixelTransferDelegateIdle::AsyncTexSubImage2D(
mem_params.shared_memory,
mem_params.shm_size))))));
- state->set_transfer_in_progress(true);
+ state_->set_transfer_in_progress(true);
}
-void AsyncPixelTransferDelegateIdle::WaitForTransferCompletion(
- AsyncPixelTransferState* transfer_state) {
- AsyncPixelTransferStateImpl* state =
- static_cast<AsyncPixelTransferStateImpl*>(transfer_state);
- DCHECK(state);
+bool AsyncPixelTransferDelegateIdle::TransferIsInProgress() {
+ return state_->TransferIsInProgress();
+}
+void AsyncPixelTransferDelegateIdle::WaitForTransferCompletion() {
for (std::list<AsyncPixelTransferManagerIdle::Task>::iterator iter =
shared_state_->tasks.begin();
iter != shared_state_->tasks.end();
++iter) {
- if (iter->transfer_id != state->id())
+ if (iter->transfer_id != state_->id())
continue;
(*iter).task.Run();
@@ -299,8 +287,8 @@ void AsyncPixelTransferManagerIdle::SharedState::ProcessNotificationTasks() {
}
AsyncPixelTransferManagerIdle::AsyncPixelTransferManagerIdle()
- : shared_state_(),
- delegate_(new AsyncPixelTransferDelegateIdle(&shared_state_)) {}
+ : shared_state_() {
+}
AsyncPixelTransferManagerIdle::~AsyncPixelTransferManagerIdle() {}
@@ -352,8 +340,10 @@ bool AsyncPixelTransferManagerIdle::NeedsProcessMorePendingTransfers() {
}
AsyncPixelTransferDelegate*
-AsyncPixelTransferManagerIdle::GetAsyncPixelTransferDelegate() {
- return delegate_.get();
+AsyncPixelTransferManagerIdle::CreatePixelTransferDelegateImpl(
+ gles2::TextureRef* ref,
+ const AsyncTexImage2DParams& define_params) {
+ return new AsyncPixelTransferDelegateIdle(&shared_state_, ref->service_id());
}
} // namespace gpu

Powered by Google App Engine
This is Rietveld 408576698