128040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu/* 228040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu * Copyright (C) 2010 Google Inc. All rights reserved. 328040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu * 428040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu * Redistribution and use in source and binary forms, with or without 528040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu * modification, are permitted provided that the following conditions 628040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu * are met: 728040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu * 828040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu * 1. Redistributions of source code must retain the above copyright 928040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu * notice, this list of conditions and the following disclaimer. 1028040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu * 2. Redistributions in binary form must reproduce the above copyright 1128040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu * notice, this list of conditions and the following disclaimer in the 1228040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu * documentation and/or other materials provided with the distribution. 1328040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu * 1428040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 1528040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 1628040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 1728040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 1828040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 1928040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 2028040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 2128040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2228040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 2328040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2428040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu */ 2528040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu 2628040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu#include "config.h" 2728040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu 282fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#if ENABLE(WEBGL) 2928040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu 3028040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu#include "Extensions3DChromium.h" 3128040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu 3228040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu#include "GraphicsContext3D.h" 3328040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu#include "GraphicsContext3DInternal.h" 3428040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu 3528040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhunamespace WebCore { 3628040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu 3728040489d744e0c5d475a88663056c9040ed5320Teng-Hui ZhuExtensions3DChromium::Extensions3DChromium(GraphicsContext3DInternal* internal) 3828040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu : m_internal(internal) 3928040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu{ 4028040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu} 4128040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu 4228040489d744e0c5d475a88663056c9040ed5320Teng-Hui ZhuExtensions3DChromium::~Extensions3DChromium() 4328040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu{ 4428040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu} 4528040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu 4628040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhubool Extensions3DChromium::supports(const String& name) 4728040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu{ 4828040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu return m_internal->supportsExtension(name); 4928040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu} 5028040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu 51f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochvoid Extensions3DChromium::ensureEnabled(const String& name) 52f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch{ 53f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch#ifndef NDEBUG 54f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch bool result = 55f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch#endif 56f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch m_internal->ensureExtensionEnabled(name); 57f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ASSERT(result); 58f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch} 59f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 602daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochbool Extensions3DChromium::isEnabled(const String& name) 612daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{ 622daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch return m_internal->isExtensionEnabled(name); 632daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch} 642daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 6528040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhuint Extensions3DChromium::getGraphicsResetStatusARB() 6628040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu{ 674576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang return m_internal->isContextLost() ? static_cast<int>(Extensions3D::UNKNOWN_CONTEXT_RESET_ARB) : static_cast<int>(GraphicsContext3D::NO_ERROR); 6828040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu} 6928040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu 702fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid Extensions3DChromium::blitFramebuffer(long srcX0, long srcY0, long srcX1, long srcY1, long dstX0, long dstY0, long dstX1, long dstY1, unsigned long mask, unsigned long filter) 712fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 722fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_internal->blitFramebufferCHROMIUM(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); 732fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 742fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 752fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid Extensions3DChromium::renderbufferStorageMultisample(unsigned long target, unsigned long samples, unsigned long internalformat, unsigned long width, unsigned long height) 762fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 772fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_internal->renderbufferStorageMultisampleCHROMIUM(target, samples, internalformat, width, height); 782fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 792fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 8028040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhuvoid* Extensions3DChromium::mapBufferSubDataCHROMIUM(unsigned target, int offset, int size, unsigned access) 8128040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu{ 8228040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu return m_internal->mapBufferSubDataCHROMIUM(target, offset, size, access); 8328040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu} 8428040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu 8528040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhuvoid Extensions3DChromium::unmapBufferSubDataCHROMIUM(const void* data) 8628040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu{ 8728040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu m_internal->unmapBufferSubDataCHROMIUM(data); 8828040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu} 8928040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu 9028040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhuvoid* Extensions3DChromium::mapTexSubImage2DCHROMIUM(unsigned target, int level, int xoffset, int yoffset, int width, int height, unsigned format, unsigned type, unsigned access) 9128040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu{ 9228040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu return m_internal->mapTexSubImage2DCHROMIUM(target, level, xoffset, yoffset, width, height, format, type, access); 9328040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu} 9428040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu 9528040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhuvoid Extensions3DChromium::unmapTexSubImage2DCHROMIUM(const void* data) 9628040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu{ 9728040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu m_internal->unmapTexSubImage2DCHROMIUM(data); 9828040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu} 9928040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu 10028040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhuvoid Extensions3DChromium::copyTextureToParentTextureCHROMIUM(unsigned texture, unsigned parentTexture) 10128040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu{ 10228040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu m_internal->copyTextureToParentTextureCHROMIUM(texture, parentTexture); 10328040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu} 10428040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu 1052daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochvoid Extensions3DChromium::getParentToChildLatchCHROMIUM(GC3Duint* latchId) 1062daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{ 1072daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch m_internal->getParentToChildLatchCHROMIUM(latchId); 1082daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch} 1092daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 1102daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochvoid Extensions3DChromium::getChildToParentLatchCHROMIUM(GC3Duint* latchId) 1112daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{ 1122daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch m_internal->getChildToParentLatchCHROMIUM(latchId); 1132daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch} 1142daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 1152daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochvoid Extensions3DChromium::waitLatchCHROMIUM(GC3Duint latchId) 1162daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{ 1172daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch m_internal->waitLatchCHROMIUM(latchId); 1182daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch} 1192daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 1202daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochvoid Extensions3DChromium::setLatchCHROMIUM(GC3Duint latchId) 1212daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{ 1222daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch m_internal->setLatchCHROMIUM(latchId); 1232daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch} 1242daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 12581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen MurdochPlatform3DObject Extensions3DChromium::createVertexArrayOES() 12681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch{ 12781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch return 0; 12881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch} 12981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 13081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochvoid Extensions3DChromium::deleteVertexArrayOES(Platform3DObject) 13181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch{ 13281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch} 13381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 13481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen MurdochGC3Dboolean Extensions3DChromium::isVertexArrayOES(Platform3DObject) 13581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch{ 13681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch return 0; 13781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch} 13881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 13981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochvoid Extensions3DChromium::bindVertexArrayOES(Platform3DObject) 14081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch{ 14181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch} 14281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 14328040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu} // namespace WebCore 14428040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu 1452fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#endif // ENABLE(WEBGL) 146