summaryrefslogtreecommitdiffstats
path: root/src/gui/opengl/qopenglfunctions.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Drop a limitation for R8/RG8 formats for Mesa in hasOpenGLFeatureLaszlo Agocs2025-01-231-6/+2
| | | | | | | | | The mentioned version is from 2015. Pick-to: 6.9 Change-Id: I330bd8ec08ab815a85d3e4e5afc44f314ade2ef6 Reviewed-by: Kristoffer Skau <[email protected]> Reviewed-by: Andy Nichols <[email protected]>
* Replace QPair/qMakePair with std::pair in qtbase/guiIsak Fyksen2025-01-091-10/+10
| | | | | | | | Task-number: QTBUG-115841 Pick-to: 6.9 Change-Id: Iebd96760ff7b3d7674816553312ba8dc3229c86a Reviewed-by: Marc Mutz <[email protected]> Reviewed-by: Volker Hilsheimer <[email protected]>
* doc: Fix links to OpenGL functionsDavid Boddie2024-12-031-359/+359
| | | | | | Pick-to: 6.8 Change-Id: I0192aed6b26c1b90fe7c92845212cbd4246b5892 Reviewed-by: Topi Reiniö <[email protected]>
* QOpenGLWidget: use (and prefer) InvalidateFramebufferGiuseppe D'Angelo2023-07-251-1/+21
| | | | | | | | | | | | | | | | | | | | Desktop GL does not have the GL_EXT_discard_framebuffer extension at all. Instead, it may have GL_ARB_invalidate_subdata. Furthermore, GLES >= 3.0 and GL >= 4.3 both support FBO invalidation through glInvalidateFramebuffer. Extend the semantics of OpenGLExtension::DiscardFramebuffer to mean that *any* possibility above is supported, and wrap it in a helper function that calls whatever support is present. (This is all private API anyhow.) Technically speaking glInvalidateFramebuffer supports a superset of what glDiscardFramebufferEXT supports, but we never use such superset, and the two APIs are otherwise identical. Then, make QOpenGLWidget call that wrapper. Change-Id: I64e042daf51493d3834c3ba1b53ae6e224bbc4ed Reviewed-by: Laszlo Agocs <[email protected]>
* rhi: Introduce multiview starting with OpenGL (ES)Laszlo Agocs2023-06-221-0/+4
| | | | | | Fixes: QTBUG-114770 Change-Id: Ibb1ced7f19d15a5116c60e95fd3e6b86ace63155 Reviewed-by: Andy Nichols <[email protected]>
* rhi: Add support for half precision vertex atttributesBen Fletcher2023-02-271-1/+4
| | | | | | | | | | | | | | | | | | | Runtime support is indicated via QRhi::Feature::HalfAttributes. OpenGL support is available in OpenGL 3.0+, OpenGL ES 3.0+, and in implementations that support the extension GL_ARB_half_float_vertex. Other RHI backends (Vulkan, Metal, D3D11, and D3D12) all support this feature. Note that D3D does not support the half3 type. D3D backends pass half3 as half4. tst_qrhi auto unit test included. Change-Id: Ide05d7f62f6102ad5cae1b3681fdda98d52bca31 Reviewed-by: Qt CI Bot <[email protected]> Reviewed-by: Laszlo Agocs <[email protected]>
* Use SPDX license identifiersLucie Gérard2022-05-161-38/+2
| | | | | | | | | | | | | Replace the current license disclaimer in files by a SPDX-License-Identifier. Files that have to be modified by hand are modified. License files are organized under LICENSES directory. Task-number: QTBUG-67283 Change-Id: Id880c92784c40f3bbde861c0d93f58151c18b9f1 Reviewed-by: Qt CI Bot <[email protected]> Reviewed-by: Lars Knoll <[email protected]> Reviewed-by: Jörg Bornemann <[email protected]>
* QtGui: use _L1 for for creating Latin-1 string literalsSona Kurazyan2022-04-281-3/+5
| | | | | | Task-number: QTBUG-98434 Change-Id: Idcb71c1d27125333a53b6bdd3e1af0d4c66617fa Reviewed-by: Edward Welbourne <[email protected]>
* rhi: gl: Do not just rely on GL_COMPRESSED_TEXTURE_FORMATSLaszlo Agocs2022-01-061-1/+9
| | | | | | | Pick-to: 6.3 6.2 Task-number: QTBUG-98937 Change-Id: I64f2783ae64ad3ef77a389999ded4c9ba2c46ee5 Reviewed-by: Eirik Aavitsland <[email protected]>
* Remove conditioning on Android embeddedEdward Welbourne2021-09-171-2/+2
| | | | | | | | It is no longer handled separately from Android. This effectively reverts commit 6d50f746fe05a7008b63818e77784dd0c99270a1 Change-Id: Ic2d75b8c5a09895810913311ab2fe3355d4d2983 Reviewed-by: Assam Boudjelthia <[email protected]>
* Fix links to OpenGL documentationAndreas Buhr2020-12-081-199/+199
| | | | | | | | | | | Some links were broken. Some stated to be pointing to OpenGL ES 2.0 documentation but pointed to OpenGL ES 3.2 documentation. Task-number: QTBUG-88533 Pick-to: 6.0 Change-Id: Iad25d8f709b8fa9421039d5cb51cee21093e3191 Reviewed-by: Friedemann Kleint <[email protected]> Reviewed-by: Laszlo Agocs <[email protected]>
* Remove deprecated method QOpenGLFunctions::initializeGLFunctions()Marcel Krems2020-09-081-7/+0
| | | | | Change-Id: I0c02b22630f8c9d463f48f6402a1930b60d3f818 Reviewed-by: Laszlo Agocs <[email protected]>
* Add RHI feature check for screen space derivativesEskil Abrahamsen Blomfeldt2020-06-121-1/+7
| | | | | | | | | | | | | | Fragment shader functions like fwidth() are useful for antialiasing distance field text in the case of perspective projections. In order to enable this as an alternative code path, we need to detect support. - OpenGL: Supported with GL_OES_standard_derivatives or GLES3 and up - Direct 3D: Supported for ps_2_x, so always supported on Direct3D 11 - Vulkan/Metal: Always supported Task-number: QTBUG-84695 Change-Id: I5e3fa8014c808a9a2d639305c5e90ec25d44655c Reviewed-by: Laszlo Agocs <[email protected]>
* Get rid of QT_OPENGL_ES*Eskil Abrahamsen Blomfeldt2020-04-171-3/+3
| | | | | | | | | | | The QT_OPENGL_ES* macros are leftovers from an earlier, ad hoc configuration system, which has since been replaced by QT_CONFIG. To clean things up in Qt 6, we use the new way instead. Task-number: QTBUG-83467 Change-Id: I578dc7695bff9d5ee303b22e44f60fee22fe0c28 Reviewed-by: Lars Knoll <[email protected]>
* Tidy nullptr usageAllan Sandfeld Jensen2019-12-061-3/+3
| | | | | | | | | | | Move away from using 0 as pointer literal. Done using clang-tidy. This is not complete as run-clang-tidy can't handle all of qtbase in one go. Change-Id: I1076a21f32aac0dab078af6f175f7508145eece0 Reviewed-by: Friedemann Kleint <[email protected]> Reviewed-by: Lars Knoll <[email protected]>
* Merge remote-tracking branch 'origin/5.14' into 5.15Ulf Hermann2019-12-031-2/+6
|\ | | | | | | | | | | | | Conflicts: src/corelib/serialization/qcborvalue.cpp Change-Id: I675a3029955c96e81a33ed9d98b72b55b6784b52
| * wasm: Disable TextureSwizzleFredrik Orderud2019-11-281-2/+6
| | | | | | | | | | | | | | | | | | | | | | The WebGL 2.0 specification explicitly does not support texture swizzles. Therefore, disabling it when targeting WASM. This fixes "WebGL: INVALID_ENUM: texParameter: invalid parameter name" when running in Chrome or Firefox. Change-Id: Ic7e22e0f623095245274924095cb63fd0ff7e8c2 Reference: https://www.khronos.org/registry/webgl/specs/latest/2.0/#5.19 Fixes: QTBUG-80287 Reviewed-by: Laszlo Agocs <[email protected]>
* | Deprecate constructing QFlags from a pointerAllan Sandfeld Jensen2019-11-201-2/+2
|/ | | | | | | | | This was used to support QFlags f = 0 initialization, but with 0 used as a pointer literal now considered bad form, it had been changed many places to QFlags f = nullptr, which is meaningless and confusing. Change-Id: I4bc592151c255dc5cab1a232615caecc520f02e8 Reviewed-by: Thiago Macieira <[email protected]>
* QtGui/Network/OpenGl/Widgets/Xml: use \nullptr in documentationChristian Ehrlicher2019-02-201-3/+4
| | | | | | | Replace null and '\c nullptr' with \nullptr in the documentation. Change-Id: I58934eea06943309ba895833f1991629870ab45b Reviewed-by: Friedemann Kleint <[email protected]>
* Doc: Qt GUI: Fix documentation warningsTopi Reinio2018-11-061-0/+1
| | | | | | | | | These are minor typos or documentation warnings that snuck in with new features. Task-number: QTBUG-71502 Change-Id: I03669cfecc3c3d80168ff7b1ca8bca7571e06d25 Reviewed-by: Martin Smith <[email protected]>
* Doc: Move literal code block to a separate fileCristian Maureira-Fredes2018-10-151-58/+5
| | | | | | | | | | | We need to override this snippet for the documentation we generate for Qt for Python, and it is easier to have it on a separate file. Task-number: PYSIDE-801 Task-number: PYSIDE-691 Change-Id: Ideb5b6af25024279f167137d3b65660bb9c96a7e Reviewed-by: Topi Reiniö <[email protected]>
* Move texture uploading out of QOpenGLTextureCacheAllan Sandfeld Jensen2018-07-271-1/+19
| | | | | | | | | | | This way the logic can be reused elsewhere. At the same time a standard OpenGL ES/3 way of handling BGRA is added, so we don't depend on extensions, and handling of NPOT and max size which QSGTexture will need. Change-Id: I475bc7127f44be3964fdb482c9e86a20db1fbca5 Reviewed-by: Laszlo Agocs <[email protected]>
* Merge remote-tracking branch 'origin/5.11' into devLiang Qi2018-05-241-358/+358
|\ | | | | | | | | | | | | | | | | | | Conflicts: mkspecs/features/qt_common.prf src/corelib/tools/qstring.cpp src/plugins/platforms/windows/qwindowsmousehandler.cpp src/widgets/widgets/qmainwindowlayout_p.h Change-Id: I5df613008f6336f69b257d08e49a133d033a9d65
| * Documentation: Fix URLs to GL(ES) functionsFriedemann Kleint2018-05-181-358/+358
| | | | | | | | | | | | | | | | Replace the XML pages which are typically displayed as broken by the XTHML pages. Strip some suffixes. Change-Id: Idf2b9706f169484c659582a1a2d38904d5dd81aa Reviewed-by: Laszlo Agocs <[email protected]>
* | Add support for advanced blend equations to our OpenGL QPainterAllan Sandfeld Jensen2018-03-051-5/+18
|/ | | | | | | | | Mesa and NVidia have been supporting these extensions several years now. It also means we can get rid of the dead unused code we had for advanced compositions. Change-Id: I6a2fcda13490abd977eb4cc3d8b34f186d05ca25 Reviewed-by: Laszlo Agocs <[email protected]>
* Merge remote-tracking branch 'origin/5.10' into devLiang Qi2018-01-111-44/+44
|\ | | | | | | | | | | | | | | | | Conflicts: src/3rdparty/harfbuzz-ng/src/hb-private.hh src/sql/doc/snippets/code/doc_src_sql-driver.cpp src/sql/doc/src/sql-driver.qdoc Change-Id: I38f0e82fcd37926cbf3c1915e009a731040d4598
| * Doc: Swap unresolved variables with actual function namesPaul Wicking2018-01-101-44/+44
| | | | | | | | | | | | | | | | Original documentation commit included unresolved link target names. This fix replaces them with the actual OpenGL function names. Change-Id: I36a24eb237ef35d7207f3bae0771dc96476d7b19 Reviewed-by: Topi Reiniö <[email protected]>
* | doc: Add default openGL typedefs for clangqdocMartin Smith2017-12-021-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When Q_CLANG_QDOC is defined, ensure that the following openGL types are defined: typedef int GLint; typedef int GLsizei; typedef unsigned int GLuint; typedef unsigned int GLenum; typedef unsigned int GLbitfield; typedef float GLfloat; typedef float GLclampf; typedef bool GLboolean; typedef void GLvoid; typedef char GLchar; Running clangqdoc with these on macOS fixed over 500 qdoc errors! There were also some functions that declared the parameter list as void. It was also shown as void in the \fn command for each function in the .cpp file, which is wrong. When the function is declared in the header as int func(void), it should just be \fn int classname::func() in the .cpp file. Change-Id: I6489d499f0830e5ba97c085ed5dadfad5affecb7 Reviewed-by: Topi Reiniö <[email protected]>
* | Replace Q_DECL_OVERRIDE with override where possibleKevin Funk2017-09-191-2/+2
|/ | | | | | | | | | | | | | | | Remaining uses of Q_DECL_OVERRIDE are in: src/corelib/global/qcompilerdetection.h src/corelib/global/qglobal.cpp doc/global/qt-cpp-defines.qdocconf (definition and documentation of Q_DECL_OVERRIDE) tests/manual/qcursor/qcursorhighdpi/main.cpp (a test executable compilable both under Qt4 and Qt5) Change-Id: Ib9b05d829add69e98a86238274b6a1fcb19b49ba Reviewed-by: Lars Knoll <[email protected]> Reviewed-by: Ville Voutilainen <[email protected]> Reviewed-by: Olivier Goffart (Woboq GmbH) <[email protected]>
* Fix some qdoc warnings for 5.10Friedemann Kleint2017-07-251-3/+3
| | | | | | | | | | | | | | | | src/corelib/io/qfiledevice.cpp:741: warning: Can't link to 'setFileName()' src/corelib/io/qfiledevice.cpp:772: warning: Can't link to 'setFileName()' src/corelib/io/qfiledevice.cpp:790: warning: No such parameter 'time' in QFileDevice::setFileTime() src/corelib/io/qfiledevice.cpp:790: warning: Undocumented parameter 'fileTime' in QFileDevice::setFileTime() src/corelib/io/qfileinfo.cpp:1344: warning: Can't link to 'FileTime' src/corelib/kernel/qcoreapplication.cpp:2007: warning: Can't link to 'isTranslatorInstalled()' src/gui/opengl/qopenglextrafunctions.h:468: warning: No documentation for 'QOpenGLExtraFunctions::glBlendBarrier(void )' src/gui/opengl/qopenglextrafunctions.h:494: warning: No documentation for 'QOpenGLExtraFunctions::glGetGraphicsResetStatus(void )' src/gui/opengl/qopenglextrafunctions.h:475: warning: No documentation for 'QOpenGLExtraFunctions::glPopDebugGroup(void )' src/sql/models/qsqlquerymodel.cpp:217: warning: Unknown command '\override' Change-Id: Ide0ce911f6faf964fda8f32fac433da7d2cb11de Reviewed-by: Thiago Macieira <[email protected]>
* Add support for OpenGL ES 3.2 in QOpenGLExtraFunctionsLaszlo Agocs2017-06-301-5/+577
| | | | | | | | | | | | | | | | | | | Follow the usual pattern: Add a config test and automatic include of GLES3/gl32.h if there is a GLES 3.2 capable header+lib at build time. Then, regardless of this being enabled, expose all new 3.2 API functions in QOpenGLExtraFunctions and resolve them dynamically at run time. This way 3.2 functions will be available when deployed to a 3.2 capable system (or OpenGL 3/4.x with the functions in question available) regardless of what was present in the sysroot at build time. Change-Id: Ia52551f3178591e1e56ceac8e45d89c6b13f4927 Reviewed-by: Sean Harmer <[email protected]>
* Remove unused logging category from QOpenGLFunctionsLaszlo Agocs2017-01-311-4/+0
| | | | | Change-Id: I54b533036f24ee9bd63004d1c5513f847e12065d Reviewed-by: Andy Nichols <[email protected]>
* Make sure we call glClearDepth(double) on desktop GLGunnar Sletta2017-01-191-2/+3
| | | | | | | Task-number: QTBUG-56798 Change-Id: I028510c0f75df5c7d2dce539c32ea503009467db Reviewed-by: Laszlo Agocs <[email protected]> Reviewed-by: Bruno de Oliveira Abinader <[email protected]>
* Make the eglfs and eglfs-viv detection and build work for INTEGRITY.Rolland Dudemaine2016-04-131-0/+4
| | | | | | | | | | The majority of these changes is about #ifdef-ing the Linux-specific use of /dev/fb0. The display handle is also acquired using fbGetDisplay(), which is equivalent to fbGetDisplayByIndex(0) but is also portable. Change-Id: I6f460edc9c06ae7461a6aab2a816ac6f645208c4 Reviewed-by: Andy Nichols <[email protected]>
* QtGui: use printf-style qWarning/qDebug where possible (I)Marc Mutz2016-03-041-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The printf-style version of QDebug expands to a lot less code than the std::ostream-style version. Of course, you pay in type safety (but compilers warn about it these days), you cannot stream complex Qt types and streaming QStrings is awkward, but in many cases you actually improve on readability. But the main reason is that something that's not supposed to be executed under normal operation has no business bloating executable code size. This is not an attempt at converting all qWarnings() to printf-style, only the low-hanging fruit. In this first part, replace qWarning() << "..."; with qWarning("..."); In QTransform shared warning strings. Saves 3KiB in text size on optimized GCC 5.3 AMD64 builds. Change-Id: I142a8020eaab043d78465178192f2c8c6d1cc4f9 Reviewed-by: Friedemann Kleint <[email protected]> Reviewed-by: Kai Koehne <[email protected]>
* CleanupsLars Knoll2016-03-011-39/+27
| | | | | | | | | | Remove the different flags when trying to resolve opengl functions. Rather we simply try hard to find a matching method by resolving over possible suffixes when we can't find the standard name. Change-Id: Ic73085faec3bd406f5214ed4219eb7b796651d8d Reviewed-by: Laszlo Agocs <[email protected]>
* Generate more compact code to resolve the QOpenGLExtraFunctionsLars Knoll2016-03-011-193/+9
| | | | | | | | Similar to the parent commit, this reduces binary size significantly. Change-Id: Idd6753ec5e04ec84d93bf6f86b5c71550b90ae9b Reviewed-by: Sean Harmer <[email protected]> Reviewed-by: Laszlo Agocs <[email protected]>
* Generate more compact code to resolve the QOpenGLFunctionsLars Knoll2016-03-011-232/+38
| | | | | | | | | Use a similar mechanism as in QOpenGLVersionFunctions and resolve the methods in a loop. This requires some macro magic but significantly reduces the size of the generated code. Change-Id: If5f5e5551af0d1aed4b4ce7ce82932d8988dab59 Reviewed-by: Laszlo Agocs <[email protected]>
* Remove some now unused codeLars Knoll2016-03-011-346/+2
| | | | | | | | The old Resolver class to resolve GL symbols is not being used any longer, get rid of it. Change-Id: I835860eb1c42aea05458ca32cf652659500312da Reviewed-by: Laszlo Agocs <[email protected]>
* Get rid of the gles3helper classLars Knoll2016-03-011-636/+175
| | | | | | | | | Since the backends can now resolve all possible GL functions, there's no need for the special handling for GLES that this class did anymore. Change-Id: Ib48aecc9a892f3c883d76ffc82217f346dbb3adc Reviewed-by: Laszlo Agocs <[email protected]>
* Resolve GLES3 function pointers at construction timeLars Knoll2016-03-011-1586/+363
| | | | | | | | | | | | Remove the wrapper methods resolving themselves at first run also here and instead resolve all GL entry points when the QOpenGLExtraFunctions object gets constructured. Keep the gles3helper for now until all backends are fixed to be able to resolve these methods directly. Change-Id: I194bd4465605f57d27c79808a016592c101ac04c Reviewed-by: Laszlo Agocs <[email protected]>
* Avoid repeated QByteArray creation when resolving opengl functionsLars Knoll2016-03-011-26/+29
| | | | | | | | | | Add an getProcAddress(const char *) overload to QOpenGLContext, and refactor the QPA interface to take a const char *. Like this we can avoid lots of mallocs when resoving GL methods. Change-Id: Ic45b985fbaa0da8d32ba3e3b485351173352ca6f Reviewed-by: Laszlo Agocs <[email protected]> Reviewed-by: Sean Harmer <[email protected]>
* Simplify part of the resolving code in QOpenGLFunctionsLars Knoll2016-03-011-852/+170
| | | | | | | | | | | | | Directly resolve the GL symbols in the constructor instead of wrapping them in another method that resolves on first call. Simplifies the code and reduces the the size of QtGui by around 50k. Change-Id: If1fc575d0113d3d9b48ad1918429254c827e42c7 Reviewed-by: Laszlo Agocs <[email protected]> Reviewed-by: Sean Harmer <[email protected]>
* De-inline the code resolving the GL symbolsLars Knoll2016-03-011-19/+41
| | | | | | | | Saves around 200k in QtGui.so. Change-Id: I1a020445093a5612ed64ca98bf51435580478cda Reviewed-by: Laszlo Agocs <[email protected]> Reviewed-by: Sean Harmer <[email protected]>
* Merge "Merge remote-tracking branch 'origin/5.6' into dev" into refs/staging/devLiang Qi2016-01-261-1/+1
|\
| * Merge remote-tracking branch 'origin/5.6' into devLiang Qi2016-01-211-1/+1
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/io/qiodevice_p.h src/corelib/kernel/qvariant_p.h src/corelib/tools/qsimd.cpp src/gui/kernel/qguiapplication.cpp tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp Change-Id: I742a093cbb231b282b43e463ec67173e0d29f57a
| | * Doc: add missing semi-colonThiago Macieira2016-01-151-1/+1
| | | | | | | | | | | | | | | | | | Change-Id: I408dcb81ba654c929f25ffff14291c57198e7367 Reviewed-by: Giuseppe D'Angelo <[email protected]> Reviewed-by: Topi Reiniö <[email protected]>
* | | Remove support for old/deprecated gl function namesLars Knoll2016-01-261-46/+17
|/ / | | | | | | | | | | | | These are nowadays standardized. Change-Id: I3931859bba0b4c34a9336c7f537e3093e07d9b2d Reviewed-by: Laszlo Agocs <[email protected]>
* | Updated license headersJani Heikkinen2016-01-151-14/+20
| | | | | | | | | | | | | | | | | | | | | | From Qt 5.7 -> LGPL v2.1 isn't an option anymore, see http://blog.qt.io/blog/2016/01/13/new-agreement-with-the-kde-free-qt-foundation/ Updated license headers to use new LGPL header instead of LGPL21 one (in those files which will be under LGPL v3) Change-Id: I046ec3e47b1876cd7b4b0353a576b352e3a946d9 Reviewed-by: Lars Knoll <[email protected]>
* | Use Q_UNLIKELY for every qFatal()/qCritical()Marc Mutz2015-11-291-3/+3
|/ | | | | | | | | | | | | | | | | | | | | If, after checking a condition, we issue a qFatal() or a qCritical(), by definition that check is unlikely to be true. Tell the compiler so it can move the error handling code out of the normal code path to increase the effective icache size. Moved conditional code around where possible so that we could always use Q_UNLIKELY, instead of having to revert to Q_LIKELY here and there. In some cases, simplified the expressions newly wrapped in Q_UNLIKELY as a drive-by. Change-Id: I67537d62b04bc6977d69254690c5ebbdf98bfd6d Reviewed-by: Konstantin Ritt <[email protected]> Reviewed-by: Olivier Goffart (Woboq GmbH) <[email protected]>