Chromium Code Reviews| Index: content/common/gpu/client/webgraphicscontext3d_command_buffer_impl.cc |
| diff --git a/content/common/gpu/client/webgraphicscontext3d_command_buffer_impl.cc b/content/common/gpu/client/webgraphicscontext3d_command_buffer_impl.cc |
| index 8e426f319a7f9e39b8a26ab1f83008b603bde6ee..c506c9a9fde17a7ddc74e815a0fd9f1b4f614635 100644 |
| --- a/content/common/gpu/client/webgraphicscontext3d_command_buffer_impl.cc |
| +++ b/content/common/gpu/client/webgraphicscontext3d_command_buffer_impl.cc |
| @@ -104,6 +104,93 @@ base::LazyInstance<GLES2Initializer> g_gles2_initializer = |
| } // namespace anonymous |
| +// Helper macros to reduce the amount of code. |
| + |
| +#define DELEGATE_TO_GL(name, glname) \ |
| +void WebGraphicsContext3DCommandBufferImpl::name() { \ |
| + gl_->glname(); \ |
| +} |
| + |
| +#define DELEGATE_TO_GL_R(name, glname, rt) \ |
| +rt WebGraphicsContext3DCommandBufferImpl::name() { \ |
| + return gl_->glname(); \ |
| +} |
| + |
| +#define DELEGATE_TO_GL_1(name, glname, t1) \ |
| +void WebGraphicsContext3DCommandBufferImpl::name(t1 a1) { \ |
| + gl_->glname(a1); \ |
| +} |
| + |
| +#define DELEGATE_TO_GL_1R(name, glname, t1, rt) \ |
| +rt WebGraphicsContext3DCommandBufferImpl::name(t1 a1) { \ |
| + return gl_->glname(a1); \ |
| +} |
| + |
| +#define DELEGATE_TO_GL_1RB(name, glname, t1, rt) \ |
| +rt WebGraphicsContext3DCommandBufferImpl::name(t1 a1) { \ |
| + return gl_->glname(a1) ? true : false; \ |
| +} |
| + |
| +#define DELEGATE_TO_GL_2(name, glname, t1, t2) \ |
| +void WebGraphicsContext3DCommandBufferImpl::name(t1 a1, t2 a2) { \ |
| + gl_->glname(a1, a2); \ |
| +} |
| + |
| +#define DELEGATE_TO_GL_2R(name, glname, t1, t2, rt) \ |
| +rt WebGraphicsContext3DCommandBufferImpl::name(t1 a1, t2 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) { \ |
| + 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) { \ |
| + gl_->glname(a1, a2, a3, a4); \ |
| +} |
| + |
| +#define DELEGATE_TO_GL_4R(name, glname, t1, t2, t3, t4, rt) \ |
| +rt WebGraphicsContext3DCommandBufferImpl::name(t1 a1, t2 a2, t3 a3, \ |
| + t4 a4) { \ |
|
greggman
2013/06/06 18:07:13
do you want to align this?
|
| + return 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) { \ |
| + 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) { \ |
| + 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) { \ |
| + 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) { \ |
| + 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) { \ |
| + gl_->glname(a1, a2, a3, a4, a5, a6, a7, a8, a9); \ |
| +} |
| + |
| class WebGraphicsContext3DErrorMessageCallback |
| : public gpu::gles2::GLES2Implementation::ErrorMessageCallback { |
| public: |
| @@ -404,9 +491,7 @@ int WebGraphicsContext3DCommandBufferImpl::height() { |
| return cached_height_; |
| } |
| -unsigned int WebGraphicsContext3DCommandBufferImpl::insertSyncPoint() { |
| - return gl_->InsertSyncPointCHROMIUM(); |
| -} |
| +DELEGATE_TO_GL_R(insertSyncPoint, InsertSyncPointCHROMIUM, unsigned int) |
| void WebGraphicsContext3DCommandBufferImpl::Destroy() { |
| if (gl_) { |
| @@ -590,18 +675,11 @@ void WebGraphicsContext3DCommandBufferImpl::synthesizeGLError( |
| } |
| } |
| -void* WebGraphicsContext3DCommandBufferImpl::mapBufferSubDataCHROMIUM( |
| - WGC3Denum target, |
| - WGC3Dintptr offset, |
| - WGC3Dsizeiptr size, |
| - WGC3Denum access) { |
| - return gl_->MapBufferSubDataCHROMIUM(target, offset, size, access); |
| -} |
| +DELEGATE_TO_GL_4R(mapBufferSubDataCHROMIUM, MapBufferSubDataCHROMIUM, WGC3Denum, |
| + WGC3Dintptr, WGC3Dsizeiptr, WGC3Denum, void*) |
| -void WebGraphicsContext3DCommandBufferImpl::unmapBufferSubDataCHROMIUM( |
| - const void* mem) { |
| - return gl_->UnmapBufferSubDataCHROMIUM(mem); |
| -} |
| +DELEGATE_TO_GL_1(unmapBufferSubDataCHROMIUM, UnmapBufferSubDataCHROMIUM, |
| + const void*) |
| void* WebGraphicsContext3DCommandBufferImpl::mapTexSubImage2DCHROMIUM( |
| WGC3Denum target, |
| @@ -617,10 +695,8 @@ void* WebGraphicsContext3DCommandBufferImpl::mapTexSubImage2DCHROMIUM( |
| target, level, xoffset, yoffset, width, height, format, type, access); |
| } |
| -void WebGraphicsContext3DCommandBufferImpl::unmapTexSubImage2DCHROMIUM( |
| - const void* mem) { |
| - gl_->UnmapTexSubImage2DCHROMIUM(mem); |
| -} |
| +DELEGATE_TO_GL_1(unmapTexSubImage2DCHROMIUM, UnmapTexSubImage2DCHROMIUM, |
| + const void*) |
| void WebGraphicsContext3DCommandBufferImpl::setVisibilityCHROMIUM( |
| bool visible) { |
| @@ -631,10 +707,8 @@ void WebGraphicsContext3DCommandBufferImpl::setVisibilityCHROMIUM( |
| real_gl_->FreeEverything(); |
| } |
| -void WebGraphicsContext3DCommandBufferImpl::discardFramebufferEXT( |
| - WGC3Denum target, WGC3Dsizei numAttachments, const WGC3Denum* attachments) { |
| - gl_->DiscardFramebufferEXT(target, numAttachments, attachments); |
| -} |
| +DELEGATE_TO_GL_3(discardFramebufferEXT, DiscardFramebufferEXT, WGC3Denum, |
| + WGC3Dsizei, const WGC3Denum*) |
| void WebGraphicsContext3DCommandBufferImpl::discardBackbufferCHROMIUM() { |
| gl_->Flush(); |
| @@ -679,10 +753,8 @@ void WebGraphicsContext3DCommandBufferImpl::copyTextureToParentTextureCHROMIUM( |
| NOTIMPLEMENTED(); |
| } |
| -void WebGraphicsContext3DCommandBufferImpl:: |
| - rateLimitOffscreenContextCHROMIUM() { |
| - gl_->RateLimitOffscreenContextCHROMIUM(); |
| -} |
| +DELEGATE_TO_GL(rateLimitOffscreenContextCHROMIUM, |
| + RateLimitOffscreenContextCHROMIUM) |
| WebKit::WebString WebGraphicsContext3DCommandBufferImpl:: |
| getRequestableExtensionsCHROMIUM() { |
| @@ -690,10 +762,8 @@ WebKit::WebString WebGraphicsContext3DCommandBufferImpl:: |
| gl_->GetRequestableExtensionsCHROMIUM()); |
| } |
| -void WebGraphicsContext3DCommandBufferImpl::requestExtensionCHROMIUM( |
| - const char* extension) { |
| - gl_->RequestExtensionCHROMIUM(extension); |
| -} |
| +DELEGATE_TO_GL_1(requestExtensionCHROMIUM, RequestExtensionCHROMIUM, |
| + const char*) |
| void WebGraphicsContext3DCommandBufferImpl::blitFramebufferCHROMIUM( |
| WGC3Dint srcX0, WGC3Dint srcY0, WGC3Dint srcX1, WGC3Dint srcY1, |
| @@ -705,97 +775,15 @@ void WebGraphicsContext3DCommandBufferImpl::blitFramebufferCHROMIUM( |
| mask, filter); |
| } |
| -void WebGraphicsContext3DCommandBufferImpl:: |
| - renderbufferStorageMultisampleCHROMIUM( |
| - WGC3Denum target, WGC3Dsizei samples, WGC3Denum internalformat, |
| - WGC3Dsizei width, WGC3Dsizei height) { |
| - gl_->RenderbufferStorageMultisampleEXT( |
| - target, samples, internalformat, width, height); |
| -} |
| - |
| -WebGLId WebGraphicsContext3DCommandBufferImpl::createStreamTextureCHROMIUM( |
| - WebGLId texture) { |
| - return gl_->CreateStreamTextureCHROMIUM(texture); |
| -} |
| +DELEGATE_TO_GL_5(renderbufferStorageMultisampleCHROMIUM, |
| + RenderbufferStorageMultisampleEXT, WGC3Denum, WGC3Dsizei, |
| + WGC3Denum, WGC3Dsizei, WGC3Dsizei) |
| -void WebGraphicsContext3DCommandBufferImpl::destroyStreamTextureCHROMIUM( |
| - WebGLId texture) { |
| - gl_->DestroyStreamTextureCHROMIUM(texture); |
| -} |
| +DELEGATE_TO_GL_1R(createStreamTextureCHROMIUM, CreateStreamTextureCHROMIUM, |
| + WebGLId, WebGLId) |
| -// Helper macros to reduce the amount of code. |
| - |
| -#define DELEGATE_TO_GL(name, glname) \ |
| -void WebGraphicsContext3DCommandBufferImpl::name() { \ |
| - gl_->glname(); \ |
| -} |
| - |
| -#define DELEGATE_TO_GL_1(name, glname, t1) \ |
| -void WebGraphicsContext3DCommandBufferImpl::name(t1 a1) { \ |
| - gl_->glname(a1); \ |
| -} |
| - |
| -#define DELEGATE_TO_GL_1R(name, glname, t1, rt) \ |
| -rt WebGraphicsContext3DCommandBufferImpl::name(t1 a1) { \ |
| - return gl_->glname(a1); \ |
| -} |
| - |
| -#define DELEGATE_TO_GL_1RB(name, glname, t1, rt) \ |
| -rt WebGraphicsContext3DCommandBufferImpl::name(t1 a1) { \ |
| - return gl_->glname(a1) ? true : false; \ |
| -} |
| - |
| -#define DELEGATE_TO_GL_2(name, glname, t1, t2) \ |
| -void WebGraphicsContext3DCommandBufferImpl::name(t1 a1, t2 a2) { \ |
| - gl_->glname(a1, a2); \ |
| -} |
| - |
| -#define DELEGATE_TO_GL_2R(name, glname, t1, t2, rt) \ |
| -rt WebGraphicsContext3DCommandBufferImpl::name(t1 a1, t2 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) { \ |
| - 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) { \ |
| - 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) { \ |
| - 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) { \ |
| - 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) { \ |
| - 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) { \ |
| - 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) { \ |
| - gl_->glname(a1, a2, a3, a4, a5, a6, a7, a8, a9); \ |
| -} |
| +DELEGATE_TO_GL_1(destroyStreamTextureCHROMIUM, DestroyStreamTextureCHROMIUM, |
| + WebGLId) |
| DELEGATE_TO_GL_1(activeTexture, ActiveTexture, WGC3Denum) |
| @@ -1323,9 +1311,7 @@ WebGLId WebGraphicsContext3DCommandBufferImpl::createFramebuffer() { |
| return o; |
| } |
| -WebGLId WebGraphicsContext3DCommandBufferImpl::createProgram() { |
| - return gl_->CreateProgram(); |
| -} |
| +DELEGATE_TO_GL_R(createProgram, CreateProgram, WebGLId) |
| WebGLId WebGraphicsContext3DCommandBufferImpl::createRenderbuffer() { |
| GLuint o; |
| @@ -1333,7 +1319,7 @@ WebGLId WebGraphicsContext3DCommandBufferImpl::createRenderbuffer() { |
| return o; |
| } |
| -DELEGATE_TO_GL_1R(createShader, CreateShader, WGC3Denum, WebGLId); |
| +DELEGATE_TO_GL_1R(createShader, CreateShader, WGC3Denum, WebGLId) |
| WebGLId WebGraphicsContext3DCommandBufferImpl::createTexture() { |
| GLuint o; |
| @@ -1350,18 +1336,14 @@ void WebGraphicsContext3DCommandBufferImpl::deleteFramebuffer( |
| gl_->DeleteFramebuffers(1, &framebuffer); |
| } |
| -void WebGraphicsContext3DCommandBufferImpl::deleteProgram(WebGLId program) { |
| - gl_->DeleteProgram(program); |
| -} |
| +DELEGATE_TO_GL_1(deleteProgram, DeleteProgram, WebGLId) |
| void WebGraphicsContext3DCommandBufferImpl::deleteRenderbuffer( |
| WebGLId renderbuffer) { |
| gl_->DeleteRenderbuffers(1, &renderbuffer); |
| } |
| -void WebGraphicsContext3DCommandBufferImpl::deleteShader(WebGLId shader) { |
| - gl_->DeleteShader(shader); |
| -} |
| +DELEGATE_TO_GL_1(deleteShader, DeleteShader, WebGLId) |
| void WebGraphicsContext3DCommandBufferImpl::deleteTexture(WebGLId texture) { |
| gl_->DeleteTextures(1, &texture); |
| @@ -1585,56 +1567,22 @@ DELEGATE_TO_GL_2(bindTexImage2DCHROMIUM, BindTexImage2DCHROMIUM, |
| DELEGATE_TO_GL_2(releaseTexImage2DCHROMIUM, ReleaseTexImage2DCHROMIUM, |
| WGC3Denum, WGC3Dint) |
| -void* WebGraphicsContext3DCommandBufferImpl::mapBufferCHROMIUM( |
| - WGC3Denum target, WGC3Denum access) { |
| - return gl_->MapBufferCHROMIUM(target, access); |
| -} |
| +DELEGATE_TO_GL_2R(mapBufferCHROMIUM, MapBufferCHROMIUM, WGC3Denum, WGC3Denum, |
| + void*) |
| +DELEGATE_TO_GL_1R(unmapBufferCHROMIUM, UnmapBufferCHROMIUM, WGC3Denum, |
| + WGC3Dboolean) |
| -WGC3Dboolean WebGraphicsContext3DCommandBufferImpl::unmapBufferCHROMIUM( |
| - WGC3Denum target) { |
| - return gl_->UnmapBufferCHROMIUM(target); |
| -} |
| - |
| -void WebGraphicsContext3DCommandBufferImpl::asyncTexImage2DCHROMIUM( |
| - WGC3Denum target, |
| - WGC3Dint level, |
| - WGC3Denum internalformat, |
| - WGC3Dsizei width, |
| - WGC3Dsizei height, |
| - WGC3Dint border, |
| - WGC3Denum format, |
| - WGC3Denum type, |
| - const void* pixels) { |
| - return gl_->AsyncTexImage2DCHROMIUM( |
| - target, level, internalformat, |
| - width, height, border, format, type, pixels); |
| -} |
| - |
| -void WebGraphicsContext3DCommandBufferImpl::asyncTexSubImage2DCHROMIUM( |
| - WGC3Denum target, |
| - WGC3Dint level, |
| - WGC3Dint xoffset, |
| - WGC3Dint yoffset, |
| - WGC3Dsizei width, |
| - WGC3Dsizei height, |
| - WGC3Denum format, |
| - WGC3Denum type, |
| - const void *pixels) { |
| - return gl_->AsyncTexSubImage2DCHROMIUM( |
| - target, level, xoffset, yoffset, |
| - width, height, format, type, pixels); |
| -} |
| +DELEGATE_TO_GL_9(asyncTexImage2DCHROMIUM, AsyncTexImage2DCHROMIUM, WGC3Denum, |
| + WGC3Dint, WGC3Denum, WGC3Dsizei, WGC3Dsizei, WGC3Dint, |
| + WGC3Denum, WGC3Denum, const void*) |
| +DELEGATE_TO_GL_9(asyncTexSubImage2DCHROMIUM, AsyncTexSubImage2DCHROMIUM, |
| + WGC3Denum, WGC3Dint, WGC3Dint, WGC3Dint, WGC3Dsizei, |
| + WGC3Dsizei, WGC3Denum, WGC3Denum, const void*) |
| -void WebGraphicsContext3DCommandBufferImpl::waitAsyncTexImage2DCHROMIUM( |
| - WGC3Denum target) { |
| - return gl_->WaitAsyncTexImage2DCHROMIUM(target); |
| -} |
| +DELEGATE_TO_GL_1(waitAsyncTexImage2DCHROMIUM, WaitAsyncTexImage2DCHROMIUM, |
| + WGC3Denum) |
| -void WebGraphicsContext3DCommandBufferImpl::drawBuffersEXT( |
| - WGC3Dsizei n, |
| - const WGC3Denum* bufs) { |
| - gl_->DrawBuffersEXT(n, bufs); |
| -} |
| +DELEGATE_TO_GL_2(drawBuffersEXT, DrawBuffersEXT, WGC3Dsizei, const WGC3Denum*) |
| GrGLInterface* WebGraphicsContext3DCommandBufferImpl::onCreateGrGLInterface() { |
| return webkit::gpu::CreateCommandBufferSkiaGLBinding(); |