Ignore:
Timestamp:
May 5, 2011, 5:36:53 AM (14 years ago)
Author:
Dmitry A. Kuminov
Message:

trunk: Merged in qt 4.7.2 sources from branches/vendor/nokia/qt.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk

  • trunk/src/opengl/qglextensions.cpp

    r651 r846  
    11/****************************************************************************
    22**
    3 ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
     3** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
    44** All rights reserved.
    55** Contact: Nokia Corporation (qt-info@nokia.com)
     
    192192bool qt_resolve_buffer_extensions(QGLContext *ctx)
    193193{
    194     if (glMapBufferARB && glUnmapBufferARB
    195 #if !defined(QT_OPENGL_ES_2)
    196         && glBindBuffer && glDeleteBuffers && glGenBuffers && glBufferData
    197 #endif
    198         )
    199         return true;
    200 
    201 #if !defined(QT_OPENGL_ES_2)
     194#if defined(QGL_RESOLVE_BUFFER_FUNCS)
     195    if (glBindBuffer && glDeleteBuffers && glGenBuffers && glBufferData
     196            && glBufferSubData && glGetBufferParameteriv)
     197        return true;
     198#endif
     199
     200#if defined(QGL_RESOLVE_BUFFER_FUNCS)
    202201    glBindBuffer = (_glBindBuffer) qt_gl_getProcAddressARB(ctx, "glBindBuffer");
    203202    glDeleteBuffers = (_glDeleteBuffers) qt_gl_getProcAddressARB(ctx, "glDeleteBuffers");
    204203    glGenBuffers = (_glGenBuffers) qt_gl_getProcAddressARB(ctx, "glGenBuffers");
    205204    glBufferData = (_glBufferData) qt_gl_getProcAddressARB(ctx, "glBufferData");
     205    glBufferSubData = (_glBufferSubData) qt_gl_getProcAddressARB(ctx, "glBufferSubData");
     206    glGetBufferSubData = (_glGetBufferSubData) qt_gl_getProcAddressARB(ctx, "glGetBufferSubData");
     207    glGetBufferParameteriv = (_glGetBufferParameteriv) qt_gl_getProcAddressARB(ctx, "glGetBufferParameteriv");
    206208#endif
    207209    glMapBufferARB = (_glMapBufferARB) qt_gl_getProcAddressARB(ctx, "glMapBuffer");
    208210    glUnmapBufferARB = (_glUnmapBufferARB) qt_gl_getProcAddressARB(ctx, "glUnmapBuffer");
    209211
    210     return glMapBufferARB
    211         && glUnmapBufferARB
    212 #if !defined(QT_OPENGL_ES_2)
    213         && glBindBuffer
     212#if defined(QGL_RESOLVE_BUFFER_FUNCS)
     213    return glBindBuffer
    214214        && glDeleteBuffers
    215215        && glGenBuffers
    216216        && glBufferData
    217 #endif
    218         ;
    219 }
     217        && glBufferSubData
     218        && glGetBufferParameteriv;
     219        // glGetBufferSubData() is optional
     220#else
     221    return true;
     222#endif
     223}
     224
     225#ifndef QT_NO_EGL
     226bool qt_resolve_eglimage_gl_extensions(QGLContext *ctx)
     227{
     228    if (glEGLImageTargetTexture2DOES || glEGLImageTargetRenderbufferStorageOES)
     229        return true;
     230    glEGLImageTargetTexture2DOES = (_glEGLImageTargetTexture2DOES) ctx->getProcAddress(QLatin1String("glEGLImageTargetTexture2DOES"));
     231    glEGLImageTargetRenderbufferStorageOES = (_glEGLImageTargetRenderbufferStorageOES) ctx->getProcAddress(QLatin1String("glEGLImageTargetRenderbufferStorageOES"));
     232    return glEGLImageTargetTexture2DOES && glEGLImageTargetRenderbufferStorageOES;
     233}
     234#endif
    220235
    221236bool qt_resolve_glsl_extensions(QGLContext *ctx)
    222237{
     238
    223239#if defined(QT_OPENGL_ES_2)
    224240    // The GLSL shader functions are always present in OpenGL/ES 2.0.
     
    233249    if (glCreateShader)
    234250        return true;
     251
     252    // Geometry shaders are optional...
     253    glProgramParameteriEXT = (_glProgramParameteriEXT) ctx->getProcAddress(QLatin1String("glProgramParameteriEXT"));
     254    glFramebufferTextureEXT = (_glFramebufferTextureEXT) ctx->getProcAddress(QLatin1String("glFramebufferTextureEXT"));
     255    glFramebufferTextureLayerEXT = (_glFramebufferTextureLayerEXT) ctx->getProcAddress(QLatin1String("glFramebufferTextureLayerEXT"));
     256    glFramebufferTextureFaceEXT = (_glFramebufferTextureFaceEXT) ctx->getProcAddress(QLatin1String("glFramebufferTextureFaceEXT"));
     257
     258    // Must at least have the FragmentShader extension to continue.
     259    if (!(QGLExtensions::glExtensions() & QGLExtensions::FragmentShader))
     260        return false;
    235261
    236262    glCreateShader = (_glCreateShader) ctx->getProcAddress(QLatin1String("glCreateShader"));
Note: See TracChangeset for help on using the changeset viewer.