summaryrefslogtreecommitdiffstats
path: root/src/gui/opengl
Commit message (Collapse)AuthorAgeFilesLines
* Properly migrate vao helper to dynamic GLLaszlo Agocs2014-02-251-82/+67
| | | | | | | | | | Remove the forced bail out when isES() returns true. This is not necessary. Change-Id: I5ee21fe1e66163e2391bd11b647827b3c0a020c1 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Doc: Address some "No documentation for..." QDoc warningsSze Howe Koh2014-02-241-0/+2
| | | | | | | Task-number: QTBUG-36985 Change-Id: I8619fb77e7879399064281f7bbefe5f12d3849a2 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
* Introducing QOpenGLShaderProgram::create()Gunnar Sletta2014-02-222-1/+24
| | | | | | | | | | | | Needed for QOpenGLShaderProgram to be usable with GL_OES_get_program_binary and potentially other extensions. [Changelog][QtGui] The function QOpenGLShaderProgram::create() has been added. It is can be used to force immediate allocation of the program's id. Change-Id: I36b3f45b00e7a439df12c54af7dc06c0ba913587 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Expose NPOTTextureRepeat in QOpenGLFunctionsLaszlo Agocs2014-02-211-2/+4
| | | | | | | | | | | Desktop GL 2.0 and higher supports GL_REPEAT on non-power-of-two textures. GL_ARB_texture_non_power_of_two mentions this explicitly in issue #8. Change-Id: Ia7f3b412b39cca4bec8a6caec3b1281b4c29ab75 Reviewed-by: Jørgen Lind <jorgen.lind@digia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* Remove QT_OPENGLPROXY_DEBUGLaszlo Agocs2014-02-211-3/+0
| | | | | | Change-Id: Iac4c5217eca88ac14acca55d19e421d8e33cdb1d Reviewed-by: Jørgen Lind <jorgen.lind@digia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* Unify glyph format between QFontEngine and QFontEngineGlyphCacheTor Arne Vestbø2014-02-194-34/+31
| | | | | | | | | | | | Instead of the glyph cache having its own cache type that always mapped one to one to a font engine glyph format, causing confusion and needless conversions, the glyph caches now use QFontEngine's glyph format enum. This also removes the iffy use of an int for the glyphFormat in the font engines. Change-Id: I529bad5c179e004f63e152f7dcc311d298c3db98 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Fix glyph cache type logic after 97c187da3c1381bc55dd16976Tor Arne Vestbø2014-02-171-2/+2
| | | | | | | | The setting of the default format of Raster_A8 was mistakenly moved down to below the override of Raster_RGBMask. Change-Id: I52ee19180471c6f5c8d6824ee35f8d39632c9d94 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* QOpenGLTextureBlitter: fix source rect when origin is top leftJørgen Lind2014-02-161-2/+3
| | | | | | | | This fixes the issue that the blitter required sometimes the texture wrapping to be repeat Change-Id: I86150d008422facf9040873b0983b0e44be9ad24 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* QOpenGLTextureBlitter: Remove Origin location for the Target rectJørgen Lind2014-02-162-14/+12
| | | | | | | | | | | | | | | | | | | | | The Origin for Target rect was deemed a confusing concept. The current implementation would translate the target rect to the coordinate system specified. However, the order and "direction" of the vertices would always be the same. So drawing a texture in for one target rect defined in one coordinate system would paint the texture the same way as it would when a texture was drawn for a target rect drawn in the "opposite" coordinate system. The point with this was that if you wanted to "flip" the texture you would specify that with the source coordinate system. However, this approach breaks on different levels, such as QRect has functions which expects a top left coordinate system (ie. top() and bottom()). In the end Qt uses a top left coordinate system, hence QWindow specifies a top left coordinate system, and hence the api becomes easier if it is not possible to define the coordinate system of the target viewport. Change-Id: I7dd59b3718380876e87a4bff88381d7a1c7d58c1 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* Fix logging with dynamic GL on WindowsLaszlo Agocs2014-02-141-4/+3
| | | | | | | | | | category() returns a const QLoggingCategory so our code does not compile anymore. Do it differently. Fix also the Windows error string formatting a bit. Change-Id: Ie0b6b02947d94b7ccf4a4a57da487dfa8a15709d Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* OpenGL: Fix QOpenGLTexture for cubemaps with mutable storageSean Harmer2014-02-142-9/+71
| | | | | | | | | | | | The code was not creating all of the storage necessary for cubemaps as well as attempting to bind to the cubemap face targets which is invalid when using mutable storage - typically on OS X where EXT_direct_state_access is not available and immutable storage is only available at all if using an OpenGL 4.1 context. Change-Id: I4cf84f1b88c90e8359366392b3ccda65669ebfa7 Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> Reviewed-by: Pasi Keränen <pasi.keranen@digia.com>
* Dynamic GL switch on WindowsLaszlo Agocs2014-02-1419-487/+5271
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The patch introduces a new build configuration on Windows which can be requested by passing -opengl dynamic to configure. Platforms other than Windows (including WinRT) are not affected. The existing Angle and desktop configurations are not affected. These continue to function as before and Angle remains the default. In the future, when all modules have added support for the dynamic path, as described below, the default configuration could be changed to be the dynamic one. This would allow providing a single set of binaries in the official builds instead of the current two. When requesting dynamic GL, Angle is built but QT_OPENGL_ES[_2] are never defined. Instead, the code path that has traditionally been desktop GL only becomes the dynamic path that has to do runtime checks. Qt modules and applications are not linked to opengl32.dll or libegl/glesv2.dll in this case. Instead, QtGui exports all necessary egl/egl/gl functions which will, under the hood, forward all requests to a dynamically loaded EGL/WGL/GL implementation. Porting guide (better said, changes needed to prepare your code to work with dynamic GL builds when the fallback to Angle is utilized): 1. In !QT_OPENGL_ES[_2] code branches use QOpenGLFunctions::isES() to differentiate between desktop and ES where needed. Keep in mind that it is the desktop GL header (plus qopenglext.h) that is included, not the GLES one. QtGui's proxy will handle some differences, for example calling glClearDepth will route to glClearDepthf when needed. The built-in eglGetProcAddress is able to retrieve pointers for standard GLES2 functions too so code resolving OpenGL 2 functions will function in any case. 2. QT_CONFIG will contain "opengl" and "dynamicgl" in dynamic builds, but never "angle" or "opengles2". 3. The preprocessor define QT_OPENGL_DYNAMIC is also available in dynamic builds. The usage of this is strongly discouraged and should not be needed anywhere except for QtGui and the platform plugin. 4. Code in need of the library handle can use QOpenGLFunctions::platformGLHandle(). The decision on which library to load is currently based on a simple test that creates a dummy window/context and tries to resolve an OpenGL 2 function. If this fails, it goes for Angle. This seems to work well on Win7 PCs for example that do not have proper graphics drivers providing OpenGL installed but are D3D9 capable using the default drivers. Setting QT_OPENGL to desktop or angle skips the test and forces usage of the given GL. There are also two new application attributes that could be used for the same purpose. If Angle is requested but the libraries are not present, desktop is tried. If desktop is requested, or if angle is requested but nothing works, the EGL/WGL functions will still be callable but will return 0. This conveniently means that eglInitialize() and such will report a failure. Debug messages can be enabled by setting QT_OPENGLPROXY_DEBUG. This will tell which implementation is chosen. The textures example application is ported to OpenGL 2, the GL 1 code path is removed. [ChangeLog][QtGui] Qt builds on Windows can now be configured for dynamic loading of the OpenGL implementation. This can be requested by passing -opengl dynamic to configure. In this mode no modules will link to opengl32.dll or Angle's libegl/libglesv2. Instead, QtGui will dynamically choose between desktop and Angle during the first GL/EGL/WGL call. This allows deploying applications with a single set of Qt libraries with the ability of transparently falling back to Angle in case the opengl32.dll is not suitable, due to missing graphics drivers for example. Task-number: QTBUG-36483 Change-Id: I716fdebbf60b355b7d9ef57d1e069eef366b4ab9 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2014-02-121-4/+15
|\ | | | | | | | | | | | | | | | | | | Conflicts: src/gui/image/qimage.cpp src/gui/text/qtextengine.cpp src/plugins/platforms/linuxfb/qlinuxfbscreen.cpp src/printsupport/kernel/qprintengine_win.cpp Change-Id: I09ce991a57f39bc7b1ad6978d0e0d858df0cd444
| * Doc: Fix issues with QOpenGLTexture enumerationsTopi Reinio2014-02-111-4/+15
| | | | | | | | | | | | | | | | | | Use correct parameters for \enum commands, and add documentation for QOpenGLTexture::Filter enumeration. Task-number: QTBUG-35576 Change-Id: If7099da0b2b570c28e683126f0ba3a885d80f741 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | Merge "Merge remote-tracking branch 'origin/stable' into dev" into ↵Frederik Gladhorn2014-02-112-1/+30
|\ \ | | | | | | | | | refs/staging/dev
| * | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2014-02-072-1/+30
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/gui/kernel/qguiapplication.cpp src/plugins/platforms/android/androidjnimain.cpp src/plugins/platforms/android/qandroidplatformintegration.cpp src/plugins/platforms/android/qandroidplatformintegration.h src/plugins/platforms/android/qandroidplatformopenglcontext.cpp src/plugins/platforms/cocoa/qcocoawindow.h src/plugins/platforms/cocoa/qcocoawindow.mm src/plugins/platforms/xcb/qxcbconnection_xi2.cpp src/sql/doc/src/sql-driver.qdoc src/widgets/widgets/qtoolbararealayout.cpp Change-Id: Ifd7e58760c3cb6bd8a7d1dd32ef83b7ec190d41e
| | * Do not query max samples on glesLaszlo Agocs2014-02-051-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Querying GL_MAX_SAMPLES is not supported in GLES2. Avoiding the call also makes us play nice with Mesa in debug mode since it gets rid of the warnings about the failing glGetIntegerv call. Change-Id: I05e501cc11af41a54fefc34ab919c5191e4f3f0a Reviewed-by: Jørgen Lind <jorgen.lind@digia.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
| | * NPOT texture support in QOpenGLTextureCacheCedric Chedaleux2014-02-041-1/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | Enable non power of two texture support for non compatible NPOT GPU. If the context does not handle NPOTTexture feature, the image to bind is scaled to POT size. It works with OpenGL ES and Desktop version. It is actually almost the same code as the one in QGLContextPrivate::bindTexture. Change-Id: I6f0f511165c9e171a14f4ba6ba0b7a902e590cf6 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* | | Export optimized premultiply and unpremultiply methodsAllan Sandfeld Jensen2014-02-101-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch optimizes the unpremultiply method further by using a lookup table to avoid any divisions at all. The opportunity is taken to export both premultiply and unpremultiply since they are commonly used methods relevant to the exported QRgb type that can be both premultiplied and unpremultipled ARGB. [ChangeLog][QtGui][QColor] Exported highly optimized methods for premultiply and unpremultiply of QRgb values. Change-Id: I658bcf57b0bc73c34c1765b64617d43b63ae820b Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* | | QOpenGLTextureBlitterJorgen Lind2014-02-103-2/+484
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | private api, but useful for 2d gui code that suddenly finds itself needing to get a set of textures onto some fbo I didn't want to include ARB_copy_image since it looks like its from texture/renderbuffer -> texture/renderbuffer while this class implies texture -> write fbo. We could wrap ARB_copy_image in QOpenGLTexture or some other class or we can add it later. I have not added any QOpenGLTexture functions since this class opperates on the GLuint identifier. We can add overloads later. Change-Id: I3e565b33466c1c183a249a33c3e82c6786debd55 Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
* | | QOpenGLTextureHelper: explain why we use GetProcAddress on Windows / DesktopGLGiuseppe D'Angelo2014-02-071-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In the future, we might want to refactor this code to inconditionally use the common Desktop / ES2 subset (like the rest of Qt does), and then resolve only the functions actually available at runtime. For now, state why we're doing that on Windows. Change-Id: Ic21035bcd88ddc1d9274fd90a146c2824d783b25 Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | | QOpenGLTexture: fix support for 1D texturesGiuseppe D'Angelo2014-02-072-12/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | OpenGL ES 2 doesn't support 1D textures. So introduce a proper feature flag and warn if we try to allocate one there. Change-Id: I73cf58c1f257d2472564f45bff222231e39aca52 Reviewed-by: James Turner <james.turner@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | | QOpenGLTextureHelper: fix 3D texture support on ES2Giuseppe D'Angelo2014-02-071-14/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The code first tried to check for the GL_OES_texture_3D extension, and if present it resolved the pointers to the gl*Tex*3DOES functions. But then it overwrote those pointers by attempting to resolve the Desktop GL gl*Tex*3D functions, thus making them unusable. So, if the extension is found, don't overwrite the pointers. If the extension is NOT found, keep the general behavior of still trying to resolve those functions. (That is going to fail, but refactoring the general behavior belongs to a separate commit.) Change-Id: Idaba122cf9500f136e3f79284d3c82284257036d Reviewed-by: James Turner <james.turner@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | | QOpenGLTextureHelper: add a clarifying commentGiuseppe D'Angelo2014-02-071-1/+3
|/ / | | | | | | | | | | Change-Id: Ia27fd6616b2259b3fbe71ea8737b270c323a1256 Reviewed-by: James Turner <james.turner@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | QOpenGLTextureHelper: de-inline the DSA / DSA emulator wrappersGiuseppe D'Angelo2014-02-062-383/+482
| | | | | | | | | | | | | | | | | | | | | | | | There's no advantage at keeping them inline because we never call them directly: we take pointers to them. This can actually cause multiple copies of the function to be emitted, then the linker may or may not decide to discard N-1 copies. Just avoid this route and deinline them. Change-Id: I5adc704b50ec7f26498846fcbb86cb5b5d016b4b Reviewed-by: James Turner <james.turner@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | QOpenGLTexture: remove typos in the docsGiuseppe D'Angelo2014-02-031-2/+2
| | | | | | | | | | Change-Id: Ia842c7f91eadefc6b5328d7d951c4e265c2c7432 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | QOpenGLTextureHelper: fix the DSA emulationGiuseppe D'Angelo2014-02-032-217/+241
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The DSA emulator functions query which texture is currently bound to a given target, then bind the new one, perform an operation, and bind the old one back. The problem is that in order to query what's currently bound to the GL_TEXTURE_<X> target one needs to call glGetIntegerv passing GL_BINDING_TEXTURE_<X>. Since both GL_TEXTURE_X and GL_BINDING_TEXTURE_X values are completely arbitrary (not contiguous nor related in any way) we need to pass *both* them to the functions. The right GL_BINDING_TEXTURE_X was getting already chosen (and stored) at texture creation time by QOpenGLTexture, so it's just a matter of passing it around. For the "real" DSA functions, the binding target is ignored. Change-Id: Ida823abbfb142d4a22bf9f9a762b160b7e281c6d Reviewed-by: James Turner <james.turner@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | QOpenGLTexture: avoid a QImage detach when uploading texture data from itGiuseppe D'Angelo2014-01-311-1/+1
| | | | | | | | | | | | | | | | | | If the image is already in the right format, converting it to RGBA8888 will be just a refcount increment; but calling bits() will then cause an unnecessary detach. Change-Id: I3b06139cd86b74a9082bd0b401a9a14bd4992a10 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | QOpenGLTexture: Introduce const void * image upload methodsGiuseppe D'Angelo2014-01-313-12/+155
| | | | | | | | | | | | | | | | | | | | An API oversight caused the image upload methods to take a "void *", which is not necessary at all. The underlying texture uploading calls (i.e. the gl(Compressed)Tex(Sub)Image<N>D family) all take a "const void *". The methods taking a "void *" get deprecated. Change-Id: Idfda58d4d7d0af1f335e5cbad7d700f4ccad652c Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | expand tabs and related whitespace fixes in *.{cpp,h,qdoc}Oswald Buddenhagen2014-01-131-2/+2
| | | | | | | | | | | | | | | | the diff -w for this commit is empty. Started-by: Thiago Macieira <thiago.macieira@intel.com> Change-Id: I77bb84e71c63ce75e0709e5b94bee18e3ce6ab9e Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2014-01-101-7/+2
|\| | | | | | | Change-Id: I99af0bef7f1c931533a324ebcfb27c40ee871a5e
| * Fix unused function warnings in qtriangulator.cppThiago Macieira2014-01-101-7/+2
| | | | | | | | | | | | | | | | | | qIntersectionPoint with ints wasn't used, qDot was only used in debug mode. Found by Clang 3.4. Change-Id: I4b5699f75eb88331df54bf5a289133914d80b299 Reviewed-by: Robin Burchell <robin+qt@viroteck.net> Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* | Add takeTexture() to QOpenGLFramebufferObjectLaszlo Agocs2014-01-073-41/+97
|/ | | | | | | | | | | | | Add an API that allows to retrieve and detach the texture from the framebuffer object. The next bind() call will then create and attach a new texture. [ChangeLog][QtGui][QOpenGLFramebufferObject] Added takeTexture() for retrieving and detaching the texture from the framebuffer object. Task-number: QTBUG-35881 Change-Id: I2cca37f5872c1685b1238047f8b912e6534ab781 Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* Doc: suppress documentation of methods users shouldn't useThiago Macieira2013-12-211-0/+2
| | | | | Change-Id: Ib905c9c54c236831f76a5c2925e7477cd7d6184c Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Fix radial gradient shader compilation for OpenGL ES 2.0.Carsten Munk2013-12-051-2/+2
| | | | | | | | | Change highp to mediump. This qualifier is ignored on desktop, and mediump should be sufficient elsewhere. Task-number: QTBUG-35353 Change-Id: I79f0ed88717d45dada5dcb781e75b10e72db4bd0 Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
* QOpenGLTextureHelper (Windows): Don't load desktop DLL when GLES2 is usedAndrew Knight2013-11-211-1/+1
| | | | | | | | GL functions should come from the context, not the desktop GL lib, when Qt is configured for OpenGL ES 2 (e.g. ANGLE). Change-Id: I794e1d5989ac72d2e98070d20e91f9c2c4cb7183 Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* Enable QOpenGLTexture for OpenGL ES 2Jorgen Lind2013-11-145-17/+179
| | | | | Change-Id: I3ec2b7af303070c92e86c0f5ca729eb1a1731682 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QOpenGLTexture: mark (QImage) ctor explicitMarc Mutz2013-11-141-1/+1
| | | | | | | Disables implicit conversions from QImage to QOpenGLTexture. Change-Id: I09b4d236dde8eae5258e6a954f4e02b4451990bd Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QOpenGLTexture: mark (Target) ctor explicitMarc Mutz2013-11-141-1/+1
| | | | | | | Disables implicit conversions from Target to QOpenGLTexture. Change-Id: I2edd2dc4528a311577f0b7df4f6ce22696336a88 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QOpenGLPixelTransferOptions: declare as shared, add move assignment operatorMarc Mutz2013-11-141-0/+10
| | | | | | | | | | | | | | A move constructor cannot be added because the class uses a smart pointer to hold its pImpl, so the move ctor would have to be out-of-line, destroying BC between C++11 and C++98 versions of Qt. Member-swap is required for Q_DECLARED_SHARED, which in turn enables efficient use of the class in Qt containers by marking it movable. Change-Id: I1aaa5bf3343a92e621d9464d8e4352f4e5ceff1f Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Make OpenGL texture glyph cache use the right freetype glyphsGunnar Sletta2013-11-061-1/+11
| | | | | | | | | The freetype font engine would fall back to rasterizing glyphs via QPainterPath in QFontEngine::alphaMapForGlyph() which has a rather unfortunate implementation. Change-Id: Ic0b4095b6f17ab33f0602139f0a8fb441dfba0ee Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
* Doc: Fix broken linksSze Howe Koh2013-11-051-6/+6
| | | | | | | | Task-number: QTBUG-33360 Change-Id: Ic944cb2f575c35ebad64852ef5fc44a50ac03571 Reviewed-by: Jerome Pasion <jerome.pasion@digia.com> Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* Fix ARGB image glyphs on Open GL ES2 or big endianAllan Sandfeld Jensen2013-11-041-11/+16
| | | | | | | | | | | | Change Ie891665ad66e31692b69db02d34be8d303a7d631 accidentially removed the condition that would ensure ARGB glyphs would get swizzled on OpenGL ES2. This patch readds a condition to check that, and also fixes the same on big endian hosts by reusing the OpenGL ES2 code path. Change-Id: I55615c498261a43c50e5a6902a7e2e24cddc4f4b Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
* Remove now redundant argb to rgba functionAllan Sandfeld Jensen2013-11-041-20/+4
| | | | | Change-Id: I293d71e12398aef91995b68a9ea22cac984917b0 Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
* Fix major performance regression in QGLWidget on texture bindAllan Sandfeld Jensen2013-11-041-3/+5
| | | | | | | | | | | | | | Since Qt 5.1 we have not recognized the GL_EXT_bgra extension on desktop OpenGL, or the GL_EXT_texture_format_BGRA8888 extension on OpenGL ES. This patch matches the GL_EXT_bgra extension on both OpenGL and OpenGL ES and adds discovery of GL_EXT_texture_format_BGRA8888 under OpenGL ES. The old name for GL_EXT_texture_format_BGRA8888, GL_IMG_texture_format_BGRA8888 is also recognized. Change-Id: I2035bfe045aee14e86a1f407f5b8556454f8bb90 Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
* Do not byteswap RGBA8888 formatsAllan Sandfeld Jensen2013-10-252-30/+3
| | | | | | | | | | | | | The three RGBA8888 formats was introduced to make it possible to have QImages and QPixmaps in native OpenGL formats, but uploaded textures of these types are still converted to ARGB first and then swapped back. This patch detects the formats and ensures the unneeded back-and-forth conversion does not take place. It also replaces a seemingly unused private API meant for the same goal. Change-Id: Id69d6973bb9c13d1052f2a1b0c516183f63421c2 Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
* Use QByteArrayLiteral throughout in QOpenGLVertexArrayObjectSean Harmer2013-10-201-8/+8
| | | | | Change-Id: Ia362ead0ffdc077bd0db5d980c80464838c934ea Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* Support APPLE VAO extension on Mac.James Turner2013-10-161-13/+27
| | | | | | | | | | Since Mac lacks a compatibility profile, we often use the highest supported compatible version, 2.1; this lacks vertex-array-object (VAO) support in the API, but Apple provide a compatible extension. Extend the helper object to detect this case and make VAO support work. Change-Id: I75a74e048a0d188cec76bc5a4a9eafa4c9143740 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Fixed narrowing conversion compile error with SwizzleValue cast.Harri Porten2013-10-151-1/+1
| | | | | | | | | | | | | | I got the following compile error with gcc 4.7.0: error: narrowing conversion of ‘r’ from ‘QOpenGLTexture::SwizzleValue’ to ‘GLint {aka int}’ inside { } [-Werror=narrowing] The compiler must being going through the route of treating the enum as an unsigned int and thus choking on the conversion to a signed int. Change-Id: I35c15673d0371c69984bdec80622066f792527ba Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Doc: Adding mark-up to boolean default values.Jerome Pasion2013-10-0811-60/+60
| | | | | | | | | | | | | | | | | Default values should have mark-up to denote that they are code. This commit changes: -"property is true" to "property is \c true". -"Returns true" to "Returns \c true". -"property is false" to "property is \c false". -"returns true" to "returns \c true". -"returns false" to "returns \c false". src/3rdparty and non-documentation instances were ignored. Task-number: QTBUG-33360 Change-Id: Ie87eaa57af947caa1230602b61c5c46292a4cf4e Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>