summaryrefslogtreecommitdiffstats
path: root/content
diff options
context:
space:
mode:
authorgman@chromium.org <gman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-23 19:45:27 +0000
committergman@chromium.org <gman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-23 19:45:27 +0000
commit4a27569a34bcd476a834b54c4dac6a99bb402705 (patch)
treefd222ab0f5897fb1743c6fc3ea138bb9d3036760 /content
parent3062672163bddcbefb7a96036559c16020999c55 (diff)
downloadchromium_src-4a27569a34bcd476a834b54c4dac6a99bb402705.zip
chromium_src-4a27569a34bcd476a834b54c4dac6a99bb402705.tar.gz
chromium_src-4a27569a34bcd476a834b54c4dac6a99bb402705.tar.bz2
Make WebGraphics3DCommandBufferImpl use GLES2Implemenation directly.
Note: I can do this 2 ways. I can either make it call it truly direclty as in gles2_implementation_->BindBuffer(args) or I can do as I have using CALL_GL_API in which case it's CALL_GL_API(BindBuffer)(args) The only advantage to the second format is a macro changes it back to the way it was. On the other hand the class is called WebGraphics3DCommandBufferImpl so maybe I should change it to the first style. TEST=try-bots and ran chrome myself BUG=none Review URL: http://codereview.chromium.org/7056020 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@86325 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content')
-rw-r--r--content/renderer/webgraphicscontext3d_command_buffer_impl.cc204
-rw-r--r--content/renderer/webgraphicscontext3d_command_buffer_impl.h3
2 files changed, 84 insertions, 123 deletions
diff --git a/content/renderer/webgraphicscontext3d_command_buffer_impl.cc b/content/renderer/webgraphicscontext3d_command_buffer_impl.cc
index ff8d96f..ac1b62d 100644
--- a/content/renderer/webgraphicscontext3d_command_buffer_impl.cc
+++ b/content/renderer/webgraphicscontext3d_command_buffer_impl.cc
@@ -23,6 +23,7 @@
#include "content/renderer/gpu_channel_host.h"
#include "content/renderer/render_thread.h"
#include "content/renderer/render_view.h"
+#include "gpu/command_buffer/client/gles2_implementation.h"
#include "gpu/command_buffer/common/constants.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h"
@@ -30,6 +31,7 @@
WebGraphicsContext3DCommandBufferImpl::WebGraphicsContext3DCommandBufferImpl()
: context_(NULL),
+ gl_(NULL),
web_view_(NULL),
#if defined(OS_MACOSX)
plugin_handle_(NULL),
@@ -144,6 +146,7 @@ bool WebGraphicsContext3DCommandBufferImpl::initialize(
if (!context_)
return false;
+ gl_ = context_->GetImplementation();
context_->SetContextLostCallback(
NewCallback(this,
&WebGraphicsContext3DCommandBufferImpl::OnContextLost));
@@ -204,13 +207,12 @@ void WebGraphicsContext3DCommandBufferImpl::prepareTexture() {
void WebGraphicsContext3DCommandBufferImpl::reshape(int width, int height) {
cached_width_ = width;
cached_height_ = height;
- makeContextCurrent();
if (web_view_) {
#if defined(OS_MACOSX)
context_->ResizeOnscreen(gfx::Size(width, height));
#else
- glResizeCHROMIUM(width, height);
+ gl_->ResizeCHROMIUM(width, height);
#endif
} else {
context_->ResizeOffscreen(gfx::Size(width, height));
@@ -225,13 +227,11 @@ void WebGraphicsContext3DCommandBufferImpl::reshape(int width, int height) {
WebGLId WebGraphicsContext3DCommandBufferImpl::createCompositorTexture(
WGC3Dsizei width, WGC3Dsizei height) {
- makeContextCurrent();
return context_->CreateParentTexture(gfx::Size(width, height));
}
void WebGraphicsContext3DCommandBufferImpl::deleteCompositorTexture(
WebGLId parent_texture) {
- makeContextCurrent();
context_->DeleteParentTexture(parent_texture);
}
@@ -266,8 +266,6 @@ bool WebGraphicsContext3DCommandBufferImpl::readBackFramebuffer(
return false;
}
- makeContextCurrent();
-
// Earlier versions of this code used the GPU to flip the
// framebuffer vertically before reading it back for compositing
// via software. This code was quite complicated, used a lot of
@@ -277,10 +275,10 @@ bool WebGraphicsContext3DCommandBufferImpl::readBackFramebuffer(
bool mustRestoreFBO = (bound_fbo_ != 0);
if (mustRestoreFBO) {
- glBindFramebuffer(GL_FRAMEBUFFER, 0);
+ gl_->BindFramebuffer(GL_FRAMEBUFFER, 0);
}
- glReadPixels(0, 0, cached_width_, cached_height_,
- GL_RGBA, GL_UNSIGNED_BYTE, pixels);
+ gl_->ReadPixels(0, 0, cached_width_, cached_height_,
+ GL_RGBA, GL_UNSIGNED_BYTE, pixels);
// Swizzle red and blue channels
// TODO(kbr): expose GL_BGRA as extension
@@ -289,7 +287,7 @@ bool WebGraphicsContext3DCommandBufferImpl::readBackFramebuffer(
}
if (mustRestoreFBO) {
- glBindFramebuffer(GL_FRAMEBUFFER, bound_fbo_);
+ gl_->BindFramebuffer(GL_FRAMEBUFFER, bound_fbo_);
}
#ifdef FLIP_FRAMEBUFFER_VERTICALLY
@@ -314,14 +312,12 @@ void* WebGraphicsContext3DCommandBufferImpl::mapBufferSubDataCHROMIUM(
WGC3Dintptr offset,
WGC3Dsizeiptr size,
WGC3Denum access) {
- makeContextCurrent();
- return glMapBufferSubDataCHROMIUM(target, offset, size, access);
+ return gl_->MapBufferSubDataCHROMIUM(target, offset, size, access);
}
void WebGraphicsContext3DCommandBufferImpl::unmapBufferSubDataCHROMIUM(
const void* mem) {
- makeContextCurrent();
- return glUnmapBufferSubDataCHROMIUM(mem);
+ return gl_->UnmapBufferSubDataCHROMIUM(mem);
}
void* WebGraphicsContext3DCommandBufferImpl::mapTexSubImage2DCHROMIUM(
@@ -334,14 +330,13 @@ void* WebGraphicsContext3DCommandBufferImpl::mapTexSubImage2DCHROMIUM(
WGC3Denum format,
WGC3Denum type,
WGC3Denum access) {
- return glMapTexSubImage2DCHROMIUM(
+ return gl_->MapTexSubImage2DCHROMIUM(
target, level, xoffset, yoffset, width, height, format, type, access);
}
void WebGraphicsContext3DCommandBufferImpl::unmapTexSubImage2DCHROMIUM(
const void* mem) {
- makeContextCurrent();
- glUnmapTexSubImage2DCHROMIUM(mem);
+ gl_->UnmapTexSubImage2DCHROMIUM(mem);
}
void WebGraphicsContext3DCommandBufferImpl::copyTextureToParentTextureCHROMIUM(
@@ -372,140 +367,123 @@ void WebGraphicsContext3DCommandBufferImpl::getChildToParentLatchCHROMIUM(
void WebGraphicsContext3DCommandBufferImpl::waitLatchCHROMIUM(
WGC3Duint latch_id)
{
- makeContextCurrent();
- glWaitLatchCHROMIUM(latch_id);
+ gl_->WaitLatchCHROMIUM(latch_id);
}
void WebGraphicsContext3DCommandBufferImpl::setLatchCHROMIUM(
WGC3Duint latch_id)
{
- makeContextCurrent();
- glSetLatchCHROMIUM(latch_id);
- glFlush(); // required to ensure set command is sent to GPU process
+ gl_->SetLatchCHROMIUM(latch_id);
+ // required to ensure set command is sent to GPU process
+ gl_->Flush();
}
void WebGraphicsContext3DCommandBufferImpl::
rateLimitOffscreenContextCHROMIUM() {
- makeContextCurrent();
- glRateLimitOffscreenContextCHROMIUM();
+ gl_->RateLimitOffscreenContextCHROMIUM();
}
WebKit::WebString WebGraphicsContext3DCommandBufferImpl::
getRequestableExtensionsCHROMIUM() {
- makeContextCurrent();
- return WebKit::WebString::fromUTF8(glGetRequestableExtensionsCHROMIUM());
+ return WebKit::WebString::fromUTF8(
+ gl_->GetRequestableExtensionsCHROMIUM());
}
void WebGraphicsContext3DCommandBufferImpl::requestExtensionCHROMIUM(
const char* extension) {
- makeContextCurrent();
- glRequestExtensionCHROMIUM(extension);
+ gl_->RequestExtensionCHROMIUM(extension);
}
void WebGraphicsContext3DCommandBufferImpl::blitFramebufferCHROMIUM(
WGC3Dint srcX0, WGC3Dint srcY0, WGC3Dint srcX1, WGC3Dint srcY1,
WGC3Dint dstX0, WGC3Dint dstY0, WGC3Dint dstX1, WGC3Dint dstY1,
WGC3Dbitfield mask, WGC3Denum filter) {
- makeContextCurrent();
- glBlitFramebufferEXT(srcX0, srcY0, srcX1, srcY1,
- dstX0, dstY0, dstX1, dstY1,
- mask, filter);
+ gl_->BlitFramebufferEXT(
+ srcX0, srcY0, srcX1, srcY1,
+ dstX0, dstY0, dstX1, dstY1,
+ mask, filter);
}
void WebGraphicsContext3DCommandBufferImpl::
renderbufferStorageMultisampleCHROMIUM(
WGC3Denum target, WGC3Dsizei samples, WGC3Denum internalformat,
WGC3Dsizei width, WGC3Dsizei height) {
- makeContextCurrent();
- glRenderbufferStorageMultisampleEXT(target, samples, internalformat,
- width, height);
+ gl_->RenderbufferStorageMultisampleEXT(
+ target, samples, internalformat, width, height);
}
// Helper macros to reduce the amount of code.
#define DELEGATE_TO_GL(name, glname) \
void WebGraphicsContext3DCommandBufferImpl::name() { \
- makeContextCurrent(); \
- gl##glname(); \
+ gl_->glname(); \
}
#define DELEGATE_TO_GL_1(name, glname, t1) \
void WebGraphicsContext3DCommandBufferImpl::name(t1 a1) { \
- makeContextCurrent(); \
- gl##glname(a1); \
+ gl_->glname(a1); \
}
#define DELEGATE_TO_GL_1R(name, glname, t1, rt) \
rt WebGraphicsContext3DCommandBufferImpl::name(t1 a1) { \
- makeContextCurrent(); \
- return gl##glname(a1); \
+ return gl_->glname(a1); \
}
#define DELEGATE_TO_GL_1RB(name, glname, t1, rt) \
rt WebGraphicsContext3DCommandBufferImpl::name(t1 a1) { \
- makeContextCurrent(); \
- return gl##glname(a1) ? true : false; \
+ return gl_->glname(a1) ? true : false; \
}
#define DELEGATE_TO_GL_2(name, glname, t1, t2) \
void WebGraphicsContext3DCommandBufferImpl::name(t1 a1, t2 a2) { \
- makeContextCurrent(); \
- gl##glname(a1, a2); \
+ gl_->glname(a1, a2); \
}
#define DELEGATE_TO_GL_2R(name, glname, t1, t2, rt) \
rt WebGraphicsContext3DCommandBufferImpl::name(t1 a1, t2 a2) { \
- makeContextCurrent(); \
- return gl##glname(a1, a2); \
+ return gl_->glname(a1, a2); \
}
#define DELEGATE_TO_GL_3(name, glname, t1, t2, t3) \
void WebGraphicsContext3DCommandBufferImpl::name(t1 a1, t2 a2, t3 a3) { \
- makeContextCurrent(); \
- gl##glname(a1, a2, a3); \
+ gl_->glname(a1, a2, a3); \
}
#define DELEGATE_TO_GL_4(name, glname, t1, t2, t3, t4) \
void WebGraphicsContext3DCommandBufferImpl::name(t1 a1, t2 a2, t3 a3, t4 a4) { \
- makeContextCurrent(); \
- gl##glname(a1, a2, a3, a4); \
+ gl_->glname(a1, a2, a3, a4); \
}
#define DELEGATE_TO_GL_5(name, glname, t1, t2, t3, t4, t5) \
void WebGraphicsContext3DCommandBufferImpl::name(t1 a1, t2 a2, t3 a3, \
t4 a4, t5 a5) { \
- makeContextCurrent(); \
- gl##glname(a1, a2, a3, a4, a5); \
+ gl_->glname(a1, a2, a3, a4, a5); \
}
#define DELEGATE_TO_GL_6(name, glname, t1, t2, t3, t4, t5, t6) \
void WebGraphicsContext3DCommandBufferImpl::name(t1 a1, t2 a2, t3 a3, \
t4 a4, t5 a5, t6 a6) { \
- makeContextCurrent(); \
- gl##glname(a1, a2, a3, a4, a5, a6); \
+ gl_->glname(a1, a2, a3, a4, a5, a6); \
}
#define DELEGATE_TO_GL_7(name, glname, t1, t2, t3, t4, t5, t6, t7) \
void WebGraphicsContext3DCommandBufferImpl::name(t1 a1, t2 a2, t3 a3, \
t4 a4, t5 a5, t6 a6, t7 a7) { \
- makeContextCurrent(); \
- gl##glname(a1, a2, a3, a4, a5, a6, a7); \
+ gl_->glname(a1, a2, a3, a4, a5, a6, a7); \
}
#define DELEGATE_TO_GL_8(name, glname, t1, t2, t3, t4, t5, t6, t7, t8) \
void WebGraphicsContext3DCommandBufferImpl::name(t1 a1, t2 a2, t3 a3, \
t4 a4, t5 a5, t6 a6, \
t7 a7, t8 a8) { \
- makeContextCurrent(); \
- gl##glname(a1, a2, a3, a4, a5, a6, a7, a8); \
+ gl_->glname(a1, a2, a3, a4, a5, a6, a7, a8); \
}
#define DELEGATE_TO_GL_9(name, glname, t1, t2, t3, t4, t5, t6, t7, t8, t9) \
void WebGraphicsContext3DCommandBufferImpl::name(t1 a1, t2 a2, t3 a3, \
t4 a4, t5 a5, t6 a6, \
t7 a7, t8 a8, t9 a9) { \
- makeContextCurrent(); \
- gl##glname(a1, a2, a3, a4, a5, a6, a7, a8, a9); \
+ gl_->glname(a1, a2, a3, a4, a5, a6, a7, a8, a9); \
}
DELEGATE_TO_GL_1(activeTexture, ActiveTexture, WGC3Denum)
@@ -520,8 +498,7 @@ DELEGATE_TO_GL_2(bindBuffer, BindBuffer, WGC3Denum, WebGLId)
void WebGraphicsContext3DCommandBufferImpl::bindFramebuffer(
WGC3Denum target,
WebGLId framebuffer) {
- makeContextCurrent();
- glBindFramebuffer(target, framebuffer);
+ gl_->BindFramebuffer(target, framebuffer);
bound_fbo_ = framebuffer;
}
@@ -594,9 +571,9 @@ void WebGraphicsContext3DCommandBufferImpl::drawElements(WGC3Denum mode,
WGC3Dsizei count,
WGC3Denum type,
WGC3Dintptr offset) {
- makeContextCurrent();
- glDrawElements(mode, count, type,
- reinterpret_cast<void*>(static_cast<intptr_t>(offset)));
+ gl_->DrawElements(
+ mode, count, type,
+ reinterpret_cast<void*>(static_cast<intptr_t>(offset)));
}
DELEGATE_TO_GL_1(enable, Enable, WGC3Denum)
@@ -620,13 +597,13 @@ DELEGATE_TO_GL_1(generateMipmap, GenerateMipmap, WGC3Denum)
bool WebGraphicsContext3DCommandBufferImpl::getActiveAttrib(
WebGLId program, WGC3Duint index, ActiveInfo& info) {
- makeContextCurrent();
if (!program) {
synthesizeGLError(GL_INVALID_VALUE);
return false;
}
GLint max_name_length = -1;
- glGetProgramiv(program, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, &max_name_length);
+ gl_->GetProgramiv(
+ program, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, &max_name_length);
if (max_name_length < 0)
return false;
scoped_array<GLchar> name(new GLchar[max_name_length]);
@@ -637,8 +614,8 @@ bool WebGraphicsContext3DCommandBufferImpl::getActiveAttrib(
GLsizei length = 0;
GLint size = -1;
GLenum type = 0;
- glGetActiveAttrib(program, index, max_name_length,
- &length, &size, &type, name.get());
+ gl_->GetActiveAttrib(
+ program, index, max_name_length, &length, &size, &type, name.get());
if (size < 0) {
return false;
}
@@ -650,9 +627,9 @@ bool WebGraphicsContext3DCommandBufferImpl::getActiveAttrib(
bool WebGraphicsContext3DCommandBufferImpl::getActiveUniform(
WebGLId program, WGC3Duint index, ActiveInfo& info) {
- makeContextCurrent();
GLint max_name_length = -1;
- glGetProgramiv(program, GL_ACTIVE_UNIFORM_MAX_LENGTH, &max_name_length);
+ gl_->GetProgramiv(
+ program, GL_ACTIVE_UNIFORM_MAX_LENGTH, &max_name_length);
if (max_name_length < 0)
return false;
scoped_array<GLchar> name(new GLchar[max_name_length]);
@@ -663,8 +640,8 @@ bool WebGraphicsContext3DCommandBufferImpl::getActiveUniform(
GLsizei length = 0;
GLint size = -1;
GLenum type = 0;
- glGetActiveUniform(program, index, max_name_length,
- &length, &size, &type, name.get());
+ gl_->GetActiveUniform(
+ program, index, max_name_length, &length, &size, &type, name.get());
if (size < 0) {
return false;
}
@@ -698,8 +675,7 @@ WGC3Denum WebGraphicsContext3DCommandBufferImpl::getError() {
return err;
}
- makeContextCurrent();
- return glGetError();
+ return gl_->GetError();
}
bool WebGraphicsContext3DCommandBufferImpl::isContextLost() {
@@ -718,16 +694,16 @@ DELEGATE_TO_GL_3(getProgramiv, GetProgramiv, WebGLId, WGC3Denum, WGC3Dint*)
WebKit::WebString WebGraphicsContext3DCommandBufferImpl::getProgramInfoLog(
WebGLId program) {
- makeContextCurrent();
GLint logLength = 0;
- glGetProgramiv(program, GL_INFO_LOG_LENGTH, &logLength);
+ gl_->GetProgramiv(program, GL_INFO_LOG_LENGTH, &logLength);
if (!logLength)
return WebKit::WebString();
scoped_array<GLchar> log(new GLchar[logLength]);
if (!log.get())
return WebKit::WebString();
GLsizei returnedLogLength = 0;
- glGetProgramInfoLog(program, logLength, &returnedLogLength, log.get());
+ gl_->GetProgramInfoLog(
+ program, logLength, &returnedLogLength, log.get());
DCHECK_EQ(logLength, returnedLogLength + 1);
WebKit::WebString res =
WebKit::WebString::fromUTF8(log.get(), returnedLogLength);
@@ -741,16 +717,16 @@ DELEGATE_TO_GL_3(getShaderiv, GetShaderiv, WebGLId, WGC3Denum, WGC3Dint*)
WebKit::WebString WebGraphicsContext3DCommandBufferImpl::getShaderInfoLog(
WebGLId shader) {
- makeContextCurrent();
GLint logLength = 0;
- glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &logLength);
+ gl_->GetShaderiv(shader, GL_INFO_LOG_LENGTH, &logLength);
if (!logLength)
return WebKit::WebString();
scoped_array<GLchar> log(new GLchar[logLength]);
if (!log.get())
return WebKit::WebString();
GLsizei returnedLogLength = 0;
- glGetShaderInfoLog(shader, logLength, &returnedLogLength, log.get());
+ gl_->GetShaderInfoLog(
+ shader, logLength, &returnedLogLength, log.get());
DCHECK_EQ(logLength, returnedLogLength + 1);
WebKit::WebString res =
WebKit::WebString::fromUTF8(log.get(), returnedLogLength);
@@ -759,16 +735,16 @@ WebKit::WebString WebGraphicsContext3DCommandBufferImpl::getShaderInfoLog(
WebKit::WebString WebGraphicsContext3DCommandBufferImpl::getShaderSource(
WebGLId shader) {
- makeContextCurrent();
GLint logLength = 0;
- glGetShaderiv(shader, GL_SHADER_SOURCE_LENGTH, &logLength);
+ gl_->GetShaderiv(shader, GL_SHADER_SOURCE_LENGTH, &logLength);
if (!logLength)
return WebKit::WebString();
scoped_array<GLchar> log(new GLchar[logLength]);
if (!log.get())
return WebKit::WebString();
GLsizei returnedLogLength = 0;
- glGetShaderSource(shader, logLength, &returnedLogLength, log.get());
+ gl_->GetShaderSource(
+ shader, logLength, &returnedLogLength, log.get());
DCHECK_EQ(logLength, returnedLogLength + 1);
WebKit::WebString res =
WebKit::WebString::fromUTF8(log.get(), returnedLogLength);
@@ -777,9 +753,8 @@ WebKit::WebString WebGraphicsContext3DCommandBufferImpl::getShaderSource(
WebKit::WebString WebGraphicsContext3DCommandBufferImpl::getString(
WGC3Denum name) {
- makeContextCurrent();
return WebKit::WebString::fromUTF8(
- reinterpret_cast<const char*>(glGetString(name)));
+ reinterpret_cast<const char*>(gl_->GetString(name)));
}
DELEGATE_TO_GL_3(getTexParameterfv, GetTexParameterfv,
@@ -803,11 +778,10 @@ DELEGATE_TO_GL_3(getVertexAttribiv, GetVertexAttribiv,
WGC3Dsizeiptr WebGraphicsContext3DCommandBufferImpl::getVertexAttribOffset(
WGC3Duint index, WGC3Denum pname) {
- makeContextCurrent();
GLvoid* value = NULL;
// NOTE: If pname is ever a value that returns more then 1 element
// this will corrupt memory.
- glGetVertexAttribPointerv(index, pname, &value);
+ gl_->GetVertexAttribPointerv(index, pname, &value);
return static_cast<WGC3Dsizeiptr>(reinterpret_cast<intptr_t>(value));
}
@@ -851,9 +825,8 @@ DELEGATE_TO_GL_4(scissor, Scissor, WGC3Dint, WGC3Dint, WGC3Dsizei, WGC3Dsizei)
void WebGraphicsContext3DCommandBufferImpl::shaderSource(
WebGLId shader, const WGC3Dchar* string) {
- makeContextCurrent();
GLint length = strlen(string);
- glShaderSource(shader, 1, &string, &length);
+ gl_->ShaderSource(shader, 1, &string, &length);
}
DELEGATE_TO_GL_3(stencilFunc, StencilFunc, WGC3Denum, WGC3Dint, WGC3Duint)
@@ -890,8 +863,7 @@ void WebGraphicsContext3DCommandBufferImpl::texParameteri(
if (pname == kTextureWrapR) {
return;
}
- makeContextCurrent();
- glTexParameteri(target, pname, param);
+ gl_->TexParameteri(target, pname, param);
}
DELEGATE_TO_GL_9(texSubImage2D, TexSubImage2D,
@@ -976,89 +948,75 @@ DELEGATE_TO_GL_2(vertexAttrib4fv, VertexAttrib4fv, WGC3Duint,
void WebGraphicsContext3DCommandBufferImpl::vertexAttribPointer(
WGC3Duint index, WGC3Dint size, WGC3Denum type, WGC3Dboolean normalized,
WGC3Dsizei stride, WGC3Dintptr offset) {
- makeContextCurrent();
-
- glVertexAttribPointer(index, size, type, normalized, stride,
- reinterpret_cast<void*>(
- static_cast<intptr_t>(offset)));
+ gl_->VertexAttribPointer(
+ index, size, type, normalized, stride,
+ reinterpret_cast<void*>(static_cast<intptr_t>(offset)));
}
DELEGATE_TO_GL_4(viewport, Viewport,
WGC3Dint, WGC3Dint, WGC3Dsizei, WGC3Dsizei)
WebGLId WebGraphicsContext3DCommandBufferImpl::createBuffer() {
- makeContextCurrent();
GLuint o;
- glGenBuffers(1, &o);
+ gl_->GenBuffers(1, &o);
return o;
}
WebGLId WebGraphicsContext3DCommandBufferImpl::createFramebuffer() {
- makeContextCurrent();
GLuint o = 0;
- glGenFramebuffers(1, &o);
+ gl_->GenFramebuffers(1, &o);
return o;
}
WebGLId WebGraphicsContext3DCommandBufferImpl::createProgram() {
- makeContextCurrent();
- return glCreateProgram();
+ return gl_->CreateProgram();
}
WebGLId WebGraphicsContext3DCommandBufferImpl::createRenderbuffer() {
- makeContextCurrent();
GLuint o;
- glGenRenderbuffers(1, &o);
+ gl_->GenRenderbuffers(1, &o);
return o;
}
DELEGATE_TO_GL_1R(createShader, CreateShader, WGC3Denum, WebGLId);
WebGLId WebGraphicsContext3DCommandBufferImpl::createTexture() {
- makeContextCurrent();
GLuint o;
- glGenTextures(1, &o);
+ gl_->GenTextures(1, &o);
return o;
}
void WebGraphicsContext3DCommandBufferImpl::deleteBuffer(WebGLId buffer) {
- makeContextCurrent();
- glDeleteBuffers(1, &buffer);
+ gl_->DeleteBuffers(1, &buffer);
}
void WebGraphicsContext3DCommandBufferImpl::deleteFramebuffer(
WebGLId framebuffer) {
- makeContextCurrent();
- glDeleteFramebuffers(1, &framebuffer);
+ gl_->DeleteFramebuffers(1, &framebuffer);
}
void WebGraphicsContext3DCommandBufferImpl::deleteProgram(WebGLId program) {
- makeContextCurrent();
- glDeleteProgram(program);
+ gl_->DeleteProgram(program);
}
void WebGraphicsContext3DCommandBufferImpl::deleteRenderbuffer(
WebGLId renderbuffer) {
- makeContextCurrent();
- glDeleteRenderbuffers(1, &renderbuffer);
+ gl_->DeleteRenderbuffers(1, &renderbuffer);
}
void WebGraphicsContext3DCommandBufferImpl::deleteShader(WebGLId shader) {
- makeContextCurrent();
- glDeleteShader(shader);
+ gl_->DeleteShader(shader);
}
void WebGraphicsContext3DCommandBufferImpl::deleteTexture(WebGLId texture) {
- makeContextCurrent();
- glDeleteTextures(1, &texture);
+ gl_->DeleteTextures(1, &texture);
}
void WebGraphicsContext3DCommandBufferImpl::copyTextureToCompositor(
WebGLId texture, WebGLId parentTexture) {
TRACE_EVENT0("gpu", "WebGfxCtx3DCmdBfrImpl::copyTextureToCompositor");
- makeContextCurrent();
- glCopyTextureToParentTextureCHROMIUM(texture, parentTexture);
- glFlush();
+ gl_->CopyTextureToParentTextureCHROMIUM(texture, parentTexture);
+ gl_->Flush();
}
void WebGraphicsContext3DCommandBufferImpl::OnSwapBuffersComplete() {
diff --git a/content/renderer/webgraphicscontext3d_command_buffer_impl.h b/content/renderer/webgraphicscontext3d_command_buffer_impl.h
index 82441c3..9f6aa25 100644
--- a/content/renderer/webgraphicscontext3d_command_buffer_impl.h
+++ b/content/renderer/webgraphicscontext3d_command_buffer_impl.h
@@ -438,6 +438,9 @@ class WebGraphicsContext3DCommandBufferImpl
// The context we use for OpenGL rendering.
RendererGLContext* context_;
+ // The GLES2Implementation we use for OpenGL rendering.
+ gpu::gles2::GLES2Implementation* gl_;
+
// If rendering directly to WebView, weak pointer to it.
WebKit::WebView* web_view_;
#if defined(OS_MACOSX)