| Differences between
and this patch
- a/Source/WebCore/ChangeLog +30 lines
Lines 1-3 a/Source/WebCore/ChangeLog_sec1
1
2011-08-05  Andrew Wason  <rectalogic@rectalogic.com>
2
3
        [Qt] Implement WebGL antialiasing (part 3)
4
        https://bugs.webkit.org/show_bug.cgi?id=64879
5
6
        Reviewed by NOBODY (OOPS!).
7
8
        Existing WebGL layout tests.
9
10
        Adopt Extensions3DOpenGL for Qt and implement WebGL antialiasing.
11
12
        * WebCore.pri:
13
        * WebCore.pro:
14
        * platform/graphics/GraphicsContext3D.h:
15
        * platform/graphics/opengl/Extensions3DOpenGL.cpp:
16
        (WebCore::Extensions3DOpenGL::createVertexArrayOES):
17
        (WebCore::Extensions3DOpenGL::deleteVertexArrayOES):
18
        (WebCore::Extensions3DOpenGL::isVertexArrayOES):
19
        (WebCore::Extensions3DOpenGL::bindVertexArrayOES):
20
        * platform/graphics/opengl/GraphicsContext3DOpenGL.cpp:
21
        (WebCore::GraphicsContext3D::getExtensions):
22
        * platform/graphics/qt/GraphicsContext3DQt.cpp:
23
        (WebCore::GraphicsContext3DInternal::GraphicsContext3DInternal):
24
        (WebCore::GraphicsContext3DInternal::paintToTextureMapper):
25
        (WebCore::GraphicsContext3DInternal::paint):
26
        (WebCore::GraphicsContext3DInternal::multisampleResolve):
27
        (WebCore::GraphicsContext3D::GraphicsContext3D):
28
        (WebCore::GraphicsContext3D::~GraphicsContext3D):
29
        (WebCore::GraphicsContext3D::layerComposited):
30
1
2011-08-05  Keishi Hattori  <keishi@webkit.org>
31
2011-08-05  Keishi Hattori  <keishi@webkit.org>
2
32
3
        Implement <input type=color> UI behavior WebCore part
33
        Implement <input type=color> UI behavior WebCore part
- a/Source/WebCore/WebCore.pri +1 lines
Lines 124-129 WEBCORE_INCLUDEPATH = \ a/Source/WebCore/WebCore.pri_sec1
124
WEBCORE_INCLUDEPATH = \
124
WEBCORE_INCLUDEPATH = \
125
    $$SOURCE_DIR/WebCore/bridge/qt \
125
    $$SOURCE_DIR/WebCore/bridge/qt \
126
    $$SOURCE_DIR/WebCore/page/qt \
126
    $$SOURCE_DIR/WebCore/page/qt \
127
    $$SOURCE_DIR/WebCore/platform/graphics/opengl \
127
    $$SOURCE_DIR/WebCore/platform/graphics/qt \
128
    $$SOURCE_DIR/WebCore/platform/graphics/qt \
128
    $$SOURCE_DIR/WebCore/platform/network/qt \
129
    $$SOURCE_DIR/WebCore/platform/network/qt \
129
    $$SOURCE_DIR/WebCore/platform/qt \
130
    $$SOURCE_DIR/WebCore/platform/qt \
- a/Source/WebCore/WebCore.pro +4 lines
Lines 3659-3665 contains(DEFINES, ENABLE_WEBGL=1) { a/Source/WebCore/WebCore.pro_sec1
3659
    INCLUDEPATH += $$PWD/platform/graphics/gpu
3659
    INCLUDEPATH += $$PWD/platform/graphics/gpu
3660
3660
3661
    !contains(QT_CONFIG, opengles2) {
3661
    !contains(QT_CONFIG, opengles2) {
3662
        HEADERS += \
3663
            platform/graphics/opengl/Extensions3DOpenGL.h
3664
3662
        SOURCES += \
3665
        SOURCES += \
3666
            platform/graphics/opengl/Extensions3DOpenGL.cpp \
3663
            platform/graphics/opengl/GraphicsContext3DOpenGL.cpp
3667
            platform/graphics/opengl/GraphicsContext3DOpenGL.cpp
3664
3668
3665
        ANGLE_DIR = $$replace(PWD, "WebCore", "ThirdParty/ANGLE")
3669
        ANGLE_DIR = $$replace(PWD, "WebCore", "ThirdParty/ANGLE")
- a/Source/WebCore/platform/graphics/GraphicsContext3D.h -3 / +4 lines
Lines 88-96 namespace WebCore { a/Source/WebCore/platform/graphics/GraphicsContext3D.h_sec1
88
class CanvasRenderingContext;
88
class CanvasRenderingContext;
89
class DrawingBuffer;
89
class DrawingBuffer;
90
class Extensions3D;
90
class Extensions3D;
91
#if PLATFORM(MAC) || PLATFORM(GTK)
91
#if PLATFORM(MAC) || PLATFORM(GTK) || PLATFORM(QT)
92
class Extensions3DOpenGL;
92
class Extensions3DOpenGL;
93
#elif PLATFORM(QT)
93
#endif
94
#if PLATFORM(QT)
94
class Extensions3DQt;
95
class Extensions3DQt;
95
#endif
96
#endif
96
class HostWindow;
97
class HostWindow;
Lines 918-924 public: a/Source/WebCore/platform/graphics/GraphicsContext3D.h_sec2
918
    HashMap<Platform3DObject, ShaderSourceEntry> m_shaderSourceMap;
919
    HashMap<Platform3DObject, ShaderSourceEntry> m_shaderSourceMap;
919
920
920
    ANGLEWebKitBridge m_compiler;
921
    ANGLEWebKitBridge m_compiler;
921
#if PLATFORM(QT)
922
#if PLATFORM(QT) && defined(QT_OPENGL_ES_2)
922
    friend class Extensions3DQt;
923
    friend class Extensions3DQt;
923
    OwnPtr<Extensions3DQt> m_extensions;
924
    OwnPtr<Extensions3DQt> m_extensions;
924
#else
925
#else
- a/Source/WebCore/platform/graphics/opengl/Extensions3DOpenGL.cpp -4 / +6 lines
Lines 37-42 a/Source/WebCore/platform/graphics/opengl/Extensions3DOpenGL.cpp_sec1
37
#include <OpenGL/gl.h>
37
#include <OpenGL/gl.h>
38
#elif PLATFORM(GTK)
38
#elif PLATFORM(GTK)
39
#include "OpenGLShims.h"
39
#include "OpenGLShims.h"
40
#elif PLATFORM(QT)
41
#include <cairo/OpenGLShims.h>
40
#endif
42
#endif
41
43
42
namespace WebCore {
44
namespace WebCore {
Lines 147-153 void Extensions3DOpenGL::renderbufferStorageMultisample(unsigned long target, un a/Source/WebCore/platform/graphics/opengl/Extensions3DOpenGL.cpp_sec2
147
Platform3DObject Extensions3DOpenGL::createVertexArrayOES()
149
Platform3DObject Extensions3DOpenGL::createVertexArrayOES()
148
{
150
{
149
    m_context->makeContextCurrent();
151
    m_context->makeContextCurrent();
150
#if !PLATFORM(GTK) && defined(GL_APPLE_vertex_array_object) && GL_APPLE_vertex_array_object
152
#if !PLATFORM(GTK) && !PLATFORM(QT) && defined(GL_APPLE_vertex_array_object) && GL_APPLE_vertex_array_object
151
    GLuint array = 0;
153
    GLuint array = 0;
152
    glGenVertexArraysAPPLE(1, &array);
154
    glGenVertexArraysAPPLE(1, &array);
153
    return array;
155
    return array;
Lines 162-168 void Extensions3DOpenGL::deleteVertexArrayOES(Platform3DObject array) a/Source/WebCore/platform/graphics/opengl/Extensions3DOpenGL.cpp_sec3
162
        return;
164
        return;
163
    
165
    
164
    m_context->makeContextCurrent();
166
    m_context->makeContextCurrent();
165
#if !PLATFORM(GTK) && defined(GL_APPLE_vertex_array_object) && GL_APPLE_vertex_array_object
167
#if !PLATFORM(GTK) && !PLATFORM(QT) && defined(GL_APPLE_vertex_array_object) && GL_APPLE_vertex_array_object
166
    glDeleteVertexArraysAPPLE(1, &array);
168
    glDeleteVertexArraysAPPLE(1, &array);
167
#endif
169
#endif
168
}
170
}
Lines 173-179 GC3Dboolean Extensions3DOpenGL::isVertexArrayOES(Platform3DObject array) a/Source/WebCore/platform/graphics/opengl/Extensions3DOpenGL.cpp_sec4
173
        return GL_FALSE;
175
        return GL_FALSE;
174
    
176
    
175
    m_context->makeContextCurrent();
177
    m_context->makeContextCurrent();
176
#if !PLATFORM(GTK) && defined(GL_APPLE_vertex_array_object) && GL_APPLE_vertex_array_object
178
#if !PLATFORM(GTK) && !PLATFORM(QT) && defined(GL_APPLE_vertex_array_object) && GL_APPLE_vertex_array_object
177
    return glIsVertexArrayAPPLE(array);
179
    return glIsVertexArrayAPPLE(array);
178
#else
180
#else
179
    return GL_FALSE;
181
    return GL_FALSE;
Lines 186-192 void Extensions3DOpenGL::bindVertexArrayOES(Platform3DObject array) a/Source/WebCore/platform/graphics/opengl/Extensions3DOpenGL.cpp_sec5
186
        return;
188
        return;
187
189
188
    m_context->makeContextCurrent();
190
    m_context->makeContextCurrent();
189
#if !PLATFORM(GTK) && defined(GL_APPLE_vertex_array_object) && GL_APPLE_vertex_array_object
191
#if !PLATFORM(GTK) && !PLATFORM(QT) && defined(GL_APPLE_vertex_array_object) && GL_APPLE_vertex_array_object
190
    glBindVertexArrayAPPLE(array);
192
    glBindVertexArrayAPPLE(array);
191
#endif
193
#endif
192
}
194
}
- a/Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGL.cpp -2 lines
Lines 1523-1536 bool GraphicsContext3D::layerComposited() const a/Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGL.cpp_sec1
1523
    return m_layerComposited;
1523
    return m_layerComposited;
1524
}
1524
}
1525
1525
1526
#if !PLATFORM(QT)
1527
Extensions3D* GraphicsContext3D::getExtensions()
1526
Extensions3D* GraphicsContext3D::getExtensions()
1528
{
1527
{
1529
    if (!m_extensions)
1528
    if (!m_extensions)
1530
        m_extensions = adoptPtr(new Extensions3DOpenGL(this));
1529
        m_extensions = adoptPtr(new Extensions3DOpenGL(this));
1531
    return m_extensions.get();
1530
    return m_extensions.get();
1532
}
1531
}
1533
#endif
1534
1532
1535
}
1533
}
1536
1534
- a/Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp -18 / +59 lines
Lines 23-29 a/Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp_sec1
23
#include "WebGLObject.h"
23
#include "WebGLObject.h"
24
#include <cairo/OpenGLShims.h>
24
#include <cairo/OpenGLShims.h>
25
#include "CanvasRenderingContext.h"
25
#include "CanvasRenderingContext.h"
26
#if defined(QT_OPENGL_ES_2)
26
#include "Extensions3DQt.h"
27
#include "Extensions3DQt.h"
28
#else
29
#include "Extensions3DOpenGL.h"
30
#endif
27
#include "GraphicsContext.h"
31
#include "GraphicsContext.h"
28
#include "HTMLCanvasElement.h"
32
#include "HTMLCanvasElement.h"
29
#include "HostWindow.h"
33
#include "HostWindow.h"
Lines 76-81 public: a/Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp_sec2
76
80
77
    void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*);
81
    void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*);
78
    QRectF boundingRect() const;
82
    QRectF boundingRect() const;
83
    void multisampleResolve() const;
79
84
80
    GraphicsContext3D* m_context;
85
    GraphicsContext3D* m_context;
81
    HostWindow* m_hostWindow;
86
    HostWindow* m_hostWindow;
Lines 109-119 GraphicsContext3DInternal::GraphicsContext3DInternal(GraphicsContext3D* context, a/Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp_sec3
109
    m_glWidget->setGeometry(0, 0, 0, 0);
114
    m_glWidget->setGeometry(0, 0, 0, 0);
110
115
111
    m_glWidget->makeCurrent();
116
    m_glWidget->makeCurrent();
112
113
#if !defined(QT_OPENGL_ES_2)
114
    glEnable(GL_POINT_SPRITE);
115
    glEnable(GL_VERTEX_PROGRAM_POINT_SIZE);
116
#endif
117
}
117
}
118
118
119
GraphicsContext3DInternal::~GraphicsContext3DInternal()
119
GraphicsContext3DInternal::~GraphicsContext3DInternal()
Lines 143-148 static inline quint32 swapBgrToRgb(quint32 pixel) a/Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp_sec4
143
#if USE(ACCELERATED_COMPOSITING) && USE(TEXTURE_MAPPER)
143
#if USE(ACCELERATED_COMPOSITING) && USE(TEXTURE_MAPPER)
144
void GraphicsContext3DInternal::paintToTextureMapper(TextureMapper* textureMapper, const FloatRect& targetRect, const TransformationMatrix& matrix, float opacity, BitmapTexture* mask) const
144
void GraphicsContext3DInternal::paintToTextureMapper(TextureMapper* textureMapper, const FloatRect& targetRect, const TransformationMatrix& matrix, float opacity, BitmapTexture* mask) const
145
{
145
{
146
    if (m_context->m_attrs.antialias) {
147
        const QGLContext* currentContext = QGLContext::currentContext();
148
        const QGLContext* widgetContext = m_glWidget->context();
149
        if (currentContext != widgetContext)
150
            m_glWidget->makeCurrent();
151
        multisampleResolve();
152
        if (currentContext) {
153
            if (currentContext != widgetContext)
154
                const_cast<QGLContext*>(currentContext)->makeCurrent();
155
        } else
156
            m_glWidget->doneCurrent();
157
    }
158
146
    if (textureMapper->isOpenGLBacked()) {
159
    if (textureMapper->isOpenGLBacked()) {
147
        TextureMapperGL* texmapGL = static_cast<TextureMapperGL*>(textureMapper);
160
        TextureMapperGL* texmapGL = static_cast<TextureMapperGL*>(textureMapper);
148
        texmapGL->drawTexture(m_context->m_texture, !m_context->m_attrs.alpha, FloatSize(1, 1), targetRect, matrix, opacity, mask, true /* flip */);
161
        texmapGL->drawTexture(m_context->m_texture, !m_context->m_attrs.alpha, FloatSize(1, 1), targetRect, matrix, opacity, mask, true /* flip */);
Lines 205-210 void GraphicsContext3DInternal::paint(QPainter* painter, const QStyleOptionGraph a/Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp_sec5
205
218
206
    QRectF rect = option ? option->rect : boundingRect();
219
    QRectF rect = option ? option->rect : boundingRect();
207
220
221
    m_glWidget->makeCurrent();
222
    if (m_context->m_attrs.antialias)
223
        multisampleResolve();
224
208
    // Use direct texture mapping if WebGL canvas has a shared OpenGL context
225
    // Use direct texture mapping if WebGL canvas has a shared OpenGL context
209
    // with browsers OpenGL context.
226
    // with browsers OpenGL context.
210
    QGLWidget* viewportGLWidget = getViewportGLWidget();
227
    QGLWidget* viewportGLWidget = getViewportGLWidget();
Lines 217-223 void GraphicsContext3DInternal::paint(QPainter* painter, const QStyleOptionGraph a/Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp_sec6
217
    QImage offscreenImage(rect.width(), rect.height(), QImage::Format_ARGB32);
234
    QImage offscreenImage(rect.width(), rect.height(), QImage::Format_ARGB32);
218
    quint32* imagePixels = reinterpret_cast<quint32*>(offscreenImage.bits());
235
    quint32* imagePixels = reinterpret_cast<quint32*>(offscreenImage.bits());
219
236
220
    m_glWidget->makeCurrent();
221
    glBindFramebuffer(GraphicsContext3D::FRAMEBUFFER, m_context->m_fbo);
237
    glBindFramebuffer(GraphicsContext3D::FRAMEBUFFER, m_context->m_fbo);
222
    glReadPixels(/* x */ 0, /* y */ 0, rect.width(), rect.height(), GraphicsContext3D::RGBA, GraphicsContext3D::UNSIGNED_BYTE, imagePixels);
238
    glReadPixels(/* x */ 0, /* y */ 0, rect.width(), rect.height(), GraphicsContext3D::RGBA, GraphicsContext3D::UNSIGNED_BYTE, imagePixels);
223
    glBindFramebuffer(GraphicsContext3D::FRAMEBUFFER, m_context->m_boundFBO);
239
    glBindFramebuffer(GraphicsContext3D::FRAMEBUFFER, m_context->m_boundFBO);
Lines 249-254 void GraphicsContext3DInternal::paint(QPainter* painter, const QStyleOptionGraph a/Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp_sec7
249
    painter->drawImage(/* x */ 0, /* y */ 0, offscreenImage);
265
    painter->drawImage(/* x */ 0, /* y */ 0, offscreenImage);
250
}
266
}
251
267
268
void GraphicsContext3DInternal::multisampleResolve() const
269
{
270
    glBindFramebuffer(GL_READ_FRAMEBUFFER_EXT, m_context->m_multisampleFBO);
271
    glBindFramebuffer(GL_DRAW_FRAMEBUFFER_EXT, m_context->m_fbo);
272
    glBlitFramebuffer(0, 0, m_context->m_currentWidth, m_context->m_currentHeight, 0, 0, m_context->m_currentWidth, m_context->m_currentHeight, GL_COLOR_BUFFER_BIT, GL_LINEAR);
273
    glBindFramebuffer(GraphicsContext3D::FRAMEBUFFER, m_context->m_boundFBO);
274
}
275
252
PassRefPtr<GraphicsContext3D> GraphicsContext3D::create(GraphicsContext3D::Attributes attrs, HostWindow* hostWindow, GraphicsContext3D::RenderStyle renderStyle)
276
PassRefPtr<GraphicsContext3D> GraphicsContext3D::create(GraphicsContext3D::Attributes attrs, HostWindow* hostWindow, GraphicsContext3D::RenderStyle renderStyle)
253
{
277
{
254
    // This implementation doesn't currently support rendering directly to the HostWindow.
278
    // This implementation doesn't currently support rendering directly to the HostWindow.
Lines 280-289 GraphicsContext3D::GraphicsContext3D(GraphicsContext3D::Attributes attrs, HostWi a/Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp_sec8
280
#if defined(QT_OPENGL_ES_2)
304
#if defined(QT_OPENGL_ES_2)
281
    m_attrs.stencil = false;
305
    m_attrs.stencil = false;
282
#else
306
#else
283
    if (m_attrs.stencil)
307
    validateAttributes();
284
        m_attrs.depth = true;
285
#endif
308
#endif
286
    m_attrs.antialias = false;
287
309
288
    if (!m_internal->m_glWidget->isValid()) {
310
    if (!m_internal->m_glWidget->isValid()) {
289
        LOG_ERROR("GraphicsContext3D: QGLWidget initialization failed.");
311
        LOG_ERROR("GraphicsContext3D: QGLWidget initialization failed.");
Lines 313-325 GraphicsContext3D::GraphicsContext3D(GraphicsContext3D::Attributes attrs, HostWi a/Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp_sec9
313
    glTexParameteri(GraphicsContext3D::TEXTURE_2D, GraphicsContext3D::TEXTURE_WRAP_T, GraphicsContext3D::CLAMP_TO_EDGE);
335
    glTexParameteri(GraphicsContext3D::TEXTURE_2D, GraphicsContext3D::TEXTURE_WRAP_T, GraphicsContext3D::CLAMP_TO_EDGE);
314
    glBindTexture(GraphicsContext3D::TEXTURE_2D, 0);
336
    glBindTexture(GraphicsContext3D::TEXTURE_2D, 0);
315
337
316
    if (m_attrs.depth)
338
    // Create a multisample FBO.
317
        glGenRenderbuffers(/* count */ 1, &m_depthStencilBuffer);
339
    if (m_attrs.antialias) {
318
340
        glGenFramebuffers(1, &m_multisampleFBO);
319
    // Bind canvas FBO and set initial clear color to black.
341
        glBindFramebuffer(GraphicsContext3D::FRAMEBUFFER, m_multisampleFBO);
320
    m_boundFBO = m_fbo;
342
        m_boundFBO = m_multisampleFBO;
321
    glBindFramebuffer(GraphicsContext3D::FRAMEBUFFER, m_fbo);
343
        glGenRenderbuffers(1, &m_multisampleColorBuffer);
322
    glClearColor(0.0, 0.0, 0.0, 0.0);
344
        if (m_attrs.stencil || m_attrs.depth)
345
            glGenRenderbuffers(1, &m_multisampleDepthStencilBuffer);
346
    } else {
347
        // Bind canvas FBO
348
        glBindFramebuffer(GraphicsContext3D::FRAMEBUFFER, m_fbo);
349
        m_boundFBO = m_fbo;
350
        if (m_attrs.stencil || m_attrs.depth)
351
            glGenRenderbuffers(1, &m_depthStencilBuffer);
352
    }
323
353
324
#if !defined(QT_OPENGL_ES_2)
354
#if !defined(QT_OPENGL_ES_2)
325
    // ANGLE initialization.
355
    // ANGLE initialization.
Lines 337-343 GraphicsContext3D::GraphicsContext3D(GraphicsContext3D::Attributes attrs, HostWi a/Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp_sec10
337
    // Always set to 1 for OpenGL ES.
367
    // Always set to 1 for OpenGL ES.
338
    ANGLEResources.MaxDrawBuffers = 1;
368
    ANGLEResources.MaxDrawBuffers = 1;
339
    m_compiler.setResources(ANGLEResources);
369
    m_compiler.setResources(ANGLEResources);
370
371
    glEnable(GL_POINT_SPRITE);
372
    glEnable(GL_VERTEX_PROGRAM_POINT_SIZE);
340
#endif
373
#endif
374
375
    glClearColor(0.0, 0.0, 0.0, 0.0);
341
}
376
}
342
377
343
GraphicsContext3D::~GraphicsContext3D()
378
GraphicsContext3D::~GraphicsContext3D()
Lines 345-351 GraphicsContext3D::~GraphicsContext3D() a/Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp_sec11
345
    m_internal->m_glWidget->makeCurrent();
380
    m_internal->m_glWidget->makeCurrent();
346
    if (m_internal->m_glWidget->isValid()) {
381
    if (m_internal->m_glWidget->isValid()) {
347
        glDeleteTextures(1, &m_texture);
382
        glDeleteTextures(1, &m_texture);
348
        glDeleteRenderbuffers(1, &m_depthStencilBuffer);
383
        if (m_attrs.antialias) {
384
            glDeleteRenderbuffers(1, &m_multisampleColorBuffer);
385
            if (m_attrs.stencil || m_attrs.depth)
386
                glDeleteRenderbuffers(1, &m_multisampleDepthStencilBuffer);
387
            glDeleteFramebuffers(1, &m_multisampleFBO);
388
        } else if (m_attrs.stencil || m_attrs.depth)
389
            glDeleteRenderbuffers(1, &m_depthStencilBuffer);
349
        glDeleteFramebuffers(1, &m_fbo);
390
        glDeleteFramebuffers(1, &m_fbo);
350
    }
391
    }
351
}
392
}
Lines 1495-1501 bool GraphicsContext3D::layerComposited() const a/Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp_sec12
1495
{
1536
{
1496
    return m_layerComposited;
1537
    return m_layerComposited;
1497
}
1538
}
1498
#endif
1499
1539
1500
Extensions3D* GraphicsContext3D::getExtensions()
1540
Extensions3D* GraphicsContext3D::getExtensions()
1501
{
1541
{
Lines 1503-1508 Extensions3D* GraphicsContext3D::getExtensions() a/Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp_sec13
1503
        m_extensions = adoptPtr(new Extensions3DQt);
1543
        m_extensions = adoptPtr(new Extensions3DQt);
1504
    return m_extensions.get();
1544
    return m_extensions.get();
1505
}
1545
}
1546
#endif
1506
1547
1507
bool GraphicsContext3D::getImageData(Image* image,
1548
bool GraphicsContext3D::getImageData(Image* image,
1508
                                     GC3Denum format,
1549
                                     GC3Denum format,

Return to Bug 64879