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

Unified Diff: chrome/renderer/render_widget.cc

Issue 1136006: Calling OpenGL from the renderer process. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 9 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
« no previous file with comments | « chrome/renderer/render_widget.h ('k') | gpu/command_buffer/build_gles2_cmd_buffer.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/renderer/render_widget.cc
===================================================================
--- chrome/renderer/render_widget.cc (revision 42644)
+++ chrome/renderer/render_widget.cc (working copy)
@@ -26,6 +26,13 @@
#include "third_party/WebKit/WebKit/chromium/public/WebSize.h"
#include "webkit/glue/webkit_glue.h"
+// TODO(apatrick): begin hack. Will remove before checkin.
+#if defined(OS_WIN) && defined(ENABLE_GPU)
+#include "chrome/renderer/ggl/ggl.h"
+#include "gpu/gles2/gl2.h"
+#endif
+// end hack
+
#if defined(OS_POSIX)
#include "ipc/ipc_channel_posix.h"
#include "third_party/skia/include/core/SkPixelRef.h"
@@ -150,7 +157,6 @@
IPC_MESSAGE_HANDLER(ViewMsg_ImeSetComposition, OnImeSetComposition)
IPC_MESSAGE_HANDLER(ViewMsg_Repaint, OnMsgRepaint)
IPC_MESSAGE_HANDLER(ViewMsg_SetTextDirection, OnSetTextDirection)
- IPC_MESSAGE_HANDLER(ViewMsg_GpuChannelEstablished, OnGpuChannelEstablished)
IPC_MESSAGE_HANDLER(ViewMsg_Move_ACK, OnRequestMoveAck)
IPC_MESSAGE_UNHANDLED_ERROR()
IPC_END_MESSAGE_MAP()
@@ -393,6 +399,44 @@
canvas->getTopPlatformDevice().accessBitmap(false);
canvas->restore();
+
+ // TODO(apatrick): begin hack. Will remove before checkin. This is an example of how to call OpenGL from a renderer process.
+#if defined(OS_WIN) && defined(ENABLE_GPU)
+ //GpuChannelHost* channel = RenderThread::current()->GetGpuChannel();
+ //if (!channel) {
+ // RenderThread::current()->EstablishGpuChannel();
+ //} else {
+ // DebugBreak();
+ // ggl::Context* view_context = ggl::CreateViewContext(channel,
+ // host_window_);
+ // ggl::Context* offscreen_context = ggl::CreateOffscreenContext(channel, view_context, 256, 256);
+ // GLuint offscreen_texture_id = ggl::GetParentTextureId(offscreen_context);
+
+ // ggl::MakeCurrent(view_context);
+
+ // GLenum error = glGetError();
+ // glBindTexture(GL_TEXTURE_2D, offscreen_texture_id);
+ // error = glGetError();
+
+ // ggl::MakeCurrent(offscreen_context);
+ // glClearColor(1, 1, 0, 1);
+ // glClear(GL_COLOR_BUFFER_BIT);
+ // ggl::SwapBuffers();
+ // glFinish();
+
+ // ggl::MakeCurrent(view_context);
+ // glClearColor(1, 0, 1, 1);
+ // glClear(GL_COLOR_BUFFER_BIT);
+ // ggl::SwapBuffers();
+
+ // error = glGetError();
+ // glBindTexture(GL_TEXTURE_2D, offscreen_texture_id);
+ // error = glGetError();
+
+ // ggl::DestroyContext(offscreen_context);
+ // ggl::DestroyContext(view_context);
+ //}
+#endif
}
void RenderWidget::PaintDebugBorder(const gfx::Rect& rect,
@@ -732,23 +776,6 @@
webwidget_->setTextDirection(direction);
}
-void RenderWidget::OnGpuChannelEstablished(
- const IPC::ChannelHandle& channel_handle) {
-#if defined(OS_POSIX)
- // If we received a ChannelHandle, register it now.
- if (channel_handle.socket.fd >= 0)
- IPC::AddChannelSocket(channel_handle.name, channel_handle.socket.fd);
-#endif
-
- if (channel_handle.name.size() != 0) {
- // Connect to the GPU process if a channel name was received.
- gpu_channel_->Connect(channel_handle.name);
- } else {
- // Otherwise cancel the connection.
- gpu_channel_ = NULL;
- }
-}
-
void RenderWidget::SetHidden(bool hidden) {
if (is_hidden_ == hidden)
return;
@@ -892,31 +919,3 @@
}
}
-void RenderWidget::EstablishGpuChannel() {
- if (gpu_channel_.get()) {
- // Do nothing if we are already establishing GPU channel.
- if (gpu_channel_->state() == GpuChannelHost::UNCONNECTED)
- return;
-
- // Recreate the channel if it has been lost.
- if (gpu_channel_->state() == GpuChannelHost::LOST)
- gpu_channel_ = NULL;
- }
-
- if (!gpu_channel_.get())
- gpu_channel_ = new GpuChannelHost;
-
- // Ask the browser for the channel name.
- CHECK(Send(new ViewHostMsg_EstablishGpuChannel(routing_id_)));
-}
-
-GpuChannelHost* RenderWidget::GetGpuChannel() {
- if (!gpu_channel_.get())
- return NULL;
-
- if (gpu_channel_->state() != GpuChannelHost::CONNECTED)
- return NULL;
-
- return gpu_channel_.get();
-}
-
« no previous file with comments | « chrome/renderer/render_widget.h ('k') | gpu/command_buffer/build_gles2_cmd_buffer.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698