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