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

Unified Diff: chrome/renderer/ggl/ggl.cc

Issue 3531008: Integrated Pepper3D v2 with the accelerated compositor.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 1 month 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: chrome/renderer/ggl/ggl.cc
===================================================================
--- chrome/renderer/ggl/ggl.cc (revision 65093)
+++ chrome/renderer/ggl/ggl.cc (working copy)
@@ -6,7 +6,6 @@
#include "base/ref_counted.h"
#include "base/singleton.h"
-#include "base/thread_local.h"
#include "base/weak_ptr.h"
#include "chrome/renderer/command_buffer_proxy.h"
#include "chrome/renderer/ggl/ggl.h"
@@ -35,8 +34,6 @@
// creation attributes.
const int32 kTransferBufferSize = 1024 * 1024;
-base::ThreadLocalPointer<Context> g_current_context;
-
// Singleton used to initialize and terminate the gles2 library.
class GLES2Initializer {
public:
@@ -77,7 +74,7 @@
// Provides a callback that will be invoked when SwapBuffers has completed
// service side.
- void SetSwapBuffersCallback(Callback1<Context*>::Type* callback) {
+ void SetSwapBuffersCallback(Callback0::Type* callback) {
swap_buffers_callback_.reset(callback);
}
@@ -117,17 +114,22 @@
// TODO(gman): Remove this.
void DisableShaderTranslation();
+ gpu::gles2::GLES2Implementation* gles2_implementation() const {
+ return gles2_implementation_;
+ }
private:
void OnSwapBuffers();
scoped_refptr<GpuChannelHost> channel_;
base::WeakPtr<Context> parent_;
- scoped_ptr<Callback1<Context*>::Type> swap_buffers_callback_;
+ scoped_ptr<Callback0::Type> swap_buffers_callback_;
uint32 parent_texture_id_;
CommandBufferProxy* command_buffer_;
gpu::gles2::GLES2CmdHelper* gles2_helper_;
int32 transfer_buffer_id_;
gpu::gles2::GLES2Implementation* gles2_implementation_;
+ gfx::Size size_;
+
Error last_error_;
DISALLOW_COPY_AND_ASSIGN(Context);
@@ -262,19 +264,25 @@
transfer_buffer_id_,
false);
+ size_ = size;
+
return true;
}
#if defined(OS_MACOSX)
void Context::ResizeOnscreen(const gfx::Size& size) {
DCHECK(size.width() > 0 && size.height() > 0);
+ size_ = size;
command_buffer_->SetWindowSize(size);
}
#endif
void Context::ResizeOffscreen(const gfx::Size& size) {
DCHECK(size.width() > 0 && size.height() > 0);
- command_buffer_->ResizeOffscreenFrameBuffer(size);
+ if (size_ != size) {
+ command_buffer_->ResizeOffscreenFrameBuffer(size);
+ size_ = size;
+ }
}
uint32 Context::CreateParentTexture(const gfx::Size& size) const {
@@ -343,7 +351,6 @@
}
bool Context::MakeCurrent(Context* context) {
- g_current_context.Set(context);
if (context) {
gles2::SetGLContext(context->gles2_implementation_);
@@ -405,7 +412,7 @@
void Context::OnSwapBuffers() {
if (swap_buffers_callback_.get())
- swap_buffers_callback_->Run(this);
+ swap_buffers_callback_->Run();
}
#endif // ENABLE_GPU
@@ -480,7 +487,7 @@
}
void SetSwapBuffersCallback(Context* context,
- Callback1<Context*>::Type* callback) {
+ Callback0::Type* callback) {
#if defined(ENABLE_GPU)
context->SetSwapBuffersCallback(callback);
#endif
@@ -494,14 +501,6 @@
#endif
}
-Context* GetCurrentContext() {
-#if defined(ENABLE_GPU)
- return g_current_context.Get();
-#else
- return NULL;
-#endif
-}
-
bool SwapBuffers(Context* context) {
#if defined(ENABLE_GPU)
if (!context)
@@ -518,9 +517,6 @@
if (!context)
return false;
- if (context == GetCurrentContext())
- MakeCurrent(NULL);
-
delete context;
return true;
#else
@@ -537,12 +533,8 @@
return context->CreateVideoDecodeContext(message_loop, hardware_decoder);
}
-Error GetError() {
+Error GetError(Context* context) {
#if defined(ENABLE_GPU)
- Context* context = GetCurrentContext();
- if (!context)
- return BAD_CONTEXT;
-
return context->GetError();
#else
return NOT_INITIALIZED;
@@ -557,4 +549,12 @@
}
#endif
}
+
+gpu::gles2::GLES2Implementation* GetImplementation(Context* context) {
+ if (!context)
+ return NULL;
+
+ return context->gles2_implementation();
+}
+
} // namespace ggl

Powered by Google App Engine
This is Rietveld 408576698