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

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

Issue 16325018: GPU: Factory produces APTManagers instead of APTDelegates (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 7 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_delegate_idle.cc
diff --git a/gpu/command_buffer/service/async_pixel_transfer_delegate_idle.cc b/gpu/command_buffer/service/async_pixel_transfer_delegate_idle.cc
deleted file mode 100644
index d8bf916dbbed19b003fa075fda36414bb5dce507..0000000000000000000000000000000000000000
--- a/gpu/command_buffer/service/async_pixel_transfer_delegate_idle.cc
+++ /dev/null
@@ -1,299 +0,0 @@
-// Copyright (c) 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "gpu/command_buffer/service/async_pixel_transfer_delegate_idle.h"
-
-#include "base/bind.h"
-#include "base/debug/trace_event.h"
-#include "base/lazy_instance.h"
-#include "gpu/command_buffer/service/safe_shared_memory_pool.h"
-#include "ui/gl/scoped_binders.h"
-
-namespace gpu {
-
-namespace {
-
-base::LazyInstance<SafeSharedMemoryPool> g_safe_shared_memory_pool =
- LAZY_INSTANCE_INITIALIZER;
-
-SafeSharedMemoryPool* safe_shared_memory_pool() {
- return g_safe_shared_memory_pool.Pointer();
-}
-
-static uint64 g_next_pixel_transfer_state_id = 1;
-
-class AsyncPixelTransferStateImpl : public AsyncPixelTransferState {
- public:
- typedef base::Callback<void(GLuint)> TransferCallback;
-
- explicit AsyncPixelTransferStateImpl(GLuint texture_id)
- : id_(g_next_pixel_transfer_state_id++),
- texture_id_(texture_id),
- transfer_in_progress_(false) {
- }
-
- // Implement AsyncPixelTransferState:
- virtual bool TransferIsInProgress() OVERRIDE {
- return transfer_in_progress_;
- }
-
- uint64 id() const { return id_; }
-
- void set_transfer_in_progress(bool transfer_in_progress) {
- transfer_in_progress_ = transfer_in_progress;
- }
-
- void PerformTransfer(const TransferCallback& callback) {
- DCHECK(texture_id_);
- DCHECK(transfer_in_progress_);
- callback.Run(texture_id_);
- transfer_in_progress_ = false;
- }
-
- private:
- virtual ~AsyncPixelTransferStateImpl() {}
-
- uint64 id_;
- GLuint texture_id_;
- bool transfer_in_progress_;
-};
-
-} // namespace
-
-AsyncPixelTransferDelegateIdle::Task::Task(
- uint64 transfer_id, const base::Closure& task)
- : transfer_id(transfer_id),
- task(task) {
-}
-
-AsyncPixelTransferDelegateIdle::Task::~Task() {}
-
-AsyncPixelTransferDelegateIdle::AsyncPixelTransferDelegateIdle()
- : texture_upload_count_(0) {
-}
-
-AsyncPixelTransferDelegateIdle::~AsyncPixelTransferDelegateIdle() {}
-
-AsyncPixelTransferState* AsyncPixelTransferDelegateIdle::
- CreatePixelTransferState(GLuint texture_id,
- const AsyncTexImage2DParams& define_params) {
- return new AsyncPixelTransferStateImpl(texture_id);
-}
-
-void AsyncPixelTransferDelegateIdle::BindCompletedAsyncTransfers() {
- // Everything is already bound.
-}
-
-void AsyncPixelTransferDelegateIdle::AsyncNotifyCompletion(
- const AsyncMemoryParams& mem_params,
- const CompletionCallback& callback) {
- if (tasks_.empty()) {
- callback.Run(mem_params);
- return;
- }
-
- tasks_.push_back(
- Task(0, // 0 transfer_id for notification tasks.
- base::Bind(
- &AsyncPixelTransferDelegateIdle::PerformNotifyCompletion,
- AsWeakPtr(),
- mem_params,
- base::Owned(new ScopedSafeSharedMemory(
- safe_shared_memory_pool(),
- mem_params.shared_memory,
- mem_params.shm_size)),
- callback)));
-}
-
-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);
-
- tasks_.push_back(
- Task(state->id(),
- base::Bind(
- &AsyncPixelTransferStateImpl::PerformTransfer,
- base::AsWeakPtr(state),
- base::Bind(
- &AsyncPixelTransferDelegateIdle::PerformAsyncTexImage2D,
- AsWeakPtr(),
- tex_params,
- mem_params,
- bind_callback,
- base::Owned(new ScopedSafeSharedMemory(
- safe_shared_memory_pool(),
- mem_params.shared_memory,
- mem_params.shm_size))))));
-
- 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);
-
- tasks_.push_back(
- Task(state->id(),
- base::Bind(
- &AsyncPixelTransferStateImpl::PerformTransfer,
- base::AsWeakPtr(state),
- base::Bind(
- &AsyncPixelTransferDelegateIdle::PerformAsyncTexSubImage2D,
- AsWeakPtr(),
- tex_params,
- mem_params,
- base::Owned(new ScopedSafeSharedMemory(
- safe_shared_memory_pool(),
- mem_params.shared_memory,
- mem_params.shm_size))))));
-
- state->set_transfer_in_progress(true);
-}
-
-void AsyncPixelTransferDelegateIdle::WaitForTransferCompletion(
- AsyncPixelTransferState* transfer_state) {
- AsyncPixelTransferStateImpl* state =
- static_cast<AsyncPixelTransferStateImpl*>(transfer_state);
- DCHECK(state);
-
- for (std::list<Task>::iterator iter = tasks_.begin();
- iter != tasks_.end(); ++iter) {
- if (iter->transfer_id != state->id())
- continue;
-
- (*iter).task.Run();
- tasks_.erase(iter);
- break;
- }
-
- ProcessNotificationTasks();
-}
-
-uint32 AsyncPixelTransferDelegateIdle::GetTextureUploadCount() {
- return texture_upload_count_;
-}
-
-base::TimeDelta AsyncPixelTransferDelegateIdle::GetTotalTextureUploadTime() {
- return total_texture_upload_time_;
-}
-
-void AsyncPixelTransferDelegateIdle::ProcessMorePendingTransfers() {
- if (tasks_.empty())
- return;
-
- // First task should always be a pixel transfer task.
- DCHECK(tasks_.front().transfer_id);
- tasks_.front().task.Run();
- tasks_.pop_front();
-
- ProcessNotificationTasks();
-}
-
-bool AsyncPixelTransferDelegateIdle::NeedsProcessMorePendingTransfers() {
- return !tasks_.empty();
-}
-
-void AsyncPixelTransferDelegateIdle::ProcessNotificationTasks() {
- while (!tasks_.empty()) {
- // Stop when we reach a pixel transfer task.
- if (tasks_.front().transfer_id)
- return;
-
- tasks_.front().task.Run();
- tasks_.pop_front();
- }
-}
-
-void AsyncPixelTransferDelegateIdle::PerformNotifyCompletion(
- AsyncMemoryParams mem_params,
- ScopedSafeSharedMemory* safe_shared_memory,
- const CompletionCallback& callback) {
- TRACE_EVENT0("gpu", "PerformNotifyCompletion");
- AsyncMemoryParams safe_mem_params = mem_params;
- safe_mem_params.shared_memory = safe_shared_memory->shared_memory();
- callback.Run(safe_mem_params);
-}
-
-void AsyncPixelTransferDelegateIdle::PerformAsyncTexImage2D(
- AsyncTexImage2DParams tex_params,
- AsyncMemoryParams mem_params,
- const base::Closure& bind_callback,
- ScopedSafeSharedMemory* safe_shared_memory,
- GLuint texture_id) {
- TRACE_EVENT2("gpu", "PerformAsyncTexImage2D",
- "width", tex_params.width,
- "height", tex_params.height);
-
- void* data = GetAddress(safe_shared_memory, mem_params);
-
- gfx::ScopedTextureBinder texture_binder(tex_params.target, texture_id);
-
- {
- TRACE_EVENT0("gpu", "glTexImage2D");
- glTexImage2D(
- tex_params.target,
- tex_params.level,
- tex_params.internal_format,
- tex_params.width,
- tex_params.height,
- tex_params.border,
- tex_params.format,
- tex_params.type,
- data);
- }
-
- // The texture is already fully bound so just call it now.
- bind_callback.Run();
-}
-
-void AsyncPixelTransferDelegateIdle::PerformAsyncTexSubImage2D(
- AsyncTexSubImage2DParams tex_params,
- AsyncMemoryParams mem_params,
- ScopedSafeSharedMemory* safe_shared_memory,
- GLuint texture_id) {
- TRACE_EVENT2("gpu", "PerformAsyncTexSubImage2D",
- "width", tex_params.width,
- "height", tex_params.height);
-
- void* data = GetAddress(safe_shared_memory, mem_params);
-
- base::TimeTicks begin_time(base::TimeTicks::HighResNow());
- gfx::ScopedTextureBinder texture_binder(tex_params.target, texture_id);
-
- {
- TRACE_EVENT0("gpu", "glTexSubImage2D");
- glTexSubImage2D(
- tex_params.target,
- tex_params.level,
- tex_params.xoffset,
- tex_params.yoffset,
- tex_params.width,
- tex_params.height,
- tex_params.format,
- tex_params.type,
- data);
- }
-
- texture_upload_count_++;
- total_texture_upload_time_ += base::TimeTicks::HighResNow() - begin_time;
-}
-
-} // namespace gpu

Powered by Google App Engine
This is Rietveld 408576698