summaryrefslogtreecommitdiffstats
path: root/src/gui/opengl
Commit message (Collapse)AuthorAgeFilesLines
* EGL: undef X11 macrosGiuseppe D'Angelo2025-05-301-0/+14
| | | | | | | | | | | Including egl.h may transitively include X headers which define a bunch of macros that clash against our code. Undef these macros just after EGL is included. This was already done locally in eglfs, but the same problem appears in any code that uses qt_egl_p.h, like the Wayland platform plugin. Change-Id: I2fbd617f57de6ae7366795aabacd81c639903699 Reviewed-by: Tor Arne Vestbø <[email protected]>
* Add support for using static EGL libraries on VxWorksKarim Pinter2025-03-181-1/+1
| | | | | | | | | | | | | | | On VxWorks there is dlopen, but the feature can be turned off for static builds, so Qt can use EGL even when dlopen is not present. In qeglplatformcontext.cpp dlsym needs dlopen feature. There is no dlopen on windows neither on Integrity. Task-number: QTBUG-134671 Pick-to: 6.8 6.9 Change-Id: I7ced5f53ca21a8b0ceb25732ed4b1dc6c0bb1300 Reviewed-by: Janne Roine <[email protected]> Reviewed-by: Laszlo Agocs <[email protected]> Reviewed-by: Kimmo Ollila <[email protected]> Reviewed-by: Alexey Edelev <[email protected]>
* QQOpenGLProgramBinaryCache: split FdWrapper to fix a Coverity UNINIT warningMarc Mutz2025-03-111-12/+27
| | | | | | | | | | | | | | | | | | | | | Coverity complained that mapSize was used in ~FdWrapper uninitialized when the object was destroyed before map() had been called on it. This is a False Positive, because in that case, ptr == MAP_FAILED, and we wouldn't be reading mapSize. But be nice and split the FdWrapper class into two, by creating an object managing only the mmap() part of equation and returning it from map(). The most-natural choice for such an object would be a unique_ptr with a custom deleter, but that has built-in knowledge of nullptr (ie. doesn't call the deleter on nullptr), which, at least theoretically, is a valid return value of mmap() (the error case is (void*)-1), so write a small struct ourselves. Coverity-Id: 390668 Pick-to: 6.9 6.8 6.5 Change-Id: I43d635617bd26120cf402241bf59680fe63d071a Reviewed-by: Thiago Macieira <[email protected]> Reviewed-by: Laszlo Agocs <[email protected]>
* QCbor/JsonValue: add toStringView()Marc Mutz2025-02-201-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is like toString(), but returns a view on the underlying string data (which may be US-ASCII (= L1), UTF-8, or UTF-16, so the return value is QASV). Use it around the code a bit. Benchmark results on my machine (with -perf -iterations 1000): PASS : BenchmarkQtJson::iteratorKey() RESULT : BenchmarkQtJson::iteratorKey(): 78,268.426 nsecs per iteration (total: 78,268,427, iterations: 1000) 349,458.080 CPU cycles per iteration, 4,46 GHz (total: 349,458,080, iterations: 1000) 780,327.957 instructions per iteration, 2,233 instr/cycle (total: 780,327,957, iterations: 1000) 173,511.019 branch instructions per iteration, 2,22 G/sec (total: 173,511,020, iterations: 1000) PASS : BenchmarkQtJson::iteratorKeyValueView() RESULT : BenchmarkQtJson::iteratorKeyValueView(): 58,424.756 nsecs per iteration (total: 58,424,756, iterations: 1000) 267,176.603 CPU cycles per iteration, 4,57 GHz (total: 267,176,604, iterations: 1000) 614,805.388 instructions per iteration, 2,301 instr/cycle (total: 614,805,389, iterations: 1000) 140,681.105 branch instructions per iteration, 2,41 G/sec (total: 140,681,106, iterations: 1000) PASS : BenchmarkQtJson::iteratorKeyView() RESULT : BenchmarkQtJson::iteratorKeyView(): 44,060.925 nsecs per iteration (total: 44,060,925, iterations: 1000) 196,344.233 CPU cycles per iteration, 4,46 GHz (total: 196,344,233, iterations: 1000) 426,631.322 instructions per iteration, 2,173 instr/cycle (total: 426,631,323, iterations: 1000) 93,703.100 branch instructions per iteration, 2,13 G/sec (total: 93,703,101, iterations: 1000) PASS : BenchmarkQtJson::iteratorKeyViewValueView() RESULT : BenchmarkQtJson::iteratorKeyViewValueView(): 29,205.569 nsecs per iteration (total: 29,205,570, iterations: 1000) 131,089.040 CPU cycles per iteration, 4,49 GHz (total: 131,089,041, iterations: 1000) 258,529.469 instructions per iteration, 1,972 instr/cycle (total: 258,529,469, iterations: 1000) 60,875.631 branch instructions per iteration, 2,08 G/sec (total: 60,875,631, iterations: 1000) [ChangeLog][QtCore][QCborValue/QJsonValue] Add toStringView() method. Fixes: QTBUG-133688 Change-Id: I4200035e995426f1cce46a73a429921a0cd56c85 Reviewed-by: Thiago Macieira <[email protected]>
* Make module ready for source SBOM checkingLucie Gérard2025-01-272-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | This includes: - turning VERIFY_SOURCE_SBOM ON - adding exception to the licenseRule.json files - correcting the licensing given via REUSE.toml files - renaming license files not located in LICENSES folder. They need to be named LICENSE. to be ignored by reuse and excluded from the source SBOM. The name are updated in the corresponding qt_attribution.json A lot of files are skipped during the license test, but all are present in the source SBOM. This is why correction are needed before turning the source SBOM check on. [ChangeLog][Third-Party Code] Renaming the license files with prefix LICENSE. to have them ignored by reuse tool. Task-number: QTBUG-131434 Pick-to: 6.9 Change-Id: Iab517215bb10a17357d2d2436bba8d3af76e5cd1 Reviewed-by: Joerg Bornemann <[email protected]>
* 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-092-11/+11
| | | | | | | | 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]>
* CMake: Add PURL and CPE info to 3rd party attribution filesAlexandru Croitor2024-11-151-2/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The change adds CPE and PURL keys to all qt_attribution.json files in the repo. In case if no sensible CPE or PURL exists, a "Comment" field is added with the text "no relevant CPE or PURL found". If only one of them does not exist, it is written as such in the Comment field. This allows filtering for files that haven't had the information added yet vs those that were looked up but no relevant information was found. For sources that are not hosted on github, a generic PURL is used with a download_url fragment pointing either to the exact location where the sources can be downloaded, or to the homepage of the project. The generic package name was chosen based on the 'Id' key of the attribution entry where it was present, and is not authoritative. For PURL github packages, the 'git tag' name was specified into the 'version' part of the PURL, rather than the 'version number', because SBOM processing tooling handle that better than the version number. For example for the freetype package, we specify the string 'VER-2-13-3' rather than the tag name '2.13.3'. We might revisit this in the future. [ChangeLog][Third-Party Code] Added PURL and CPE information to the attribution files of 3rd party sources. Pick-to: 6.5 6.8 Task-number: QTBUG-122899 Task-number: QTBUG-129602 Change-Id: Iad126242cafc3ea0b678c5c36b26f857039b1dbd Reviewed-by: Alexey Edelev <[email protected]>
* Add REUSE.toml filesLucie Gérard2024-11-051-0/+7
| | | | | | | | | | | | | | | | | | | | | Those files are read by reuse to complement or override the copyright and licensing information found in file. The use of REUSE.toml files was introduced in REUSE version 3.1.0a1. This reuse version is compatible with reuse specification version 3.2 [1]. With this commit's files, * The SPDX document generated by reuse spdx conforms to SPDX 2.3, * The reuse lint command reports that the Qt project is reuse compliant. [1]: https://reuse.software/spec-3.2/ Task-number: QTBUG-124453 Task-number: QTBUG-125211 Pick-to: 6.8 Change-Id: I01023e862607777a5e710669ccd28bbf56091097 Reviewed-by: Edward Welbourne <[email protected]> Reviewed-by: Joerg Bornemann <[email protected]>
* Clear VxWorks MESA display artifacts on startupMichał Łoś2024-10-151-0/+15
| | | | | | | | | | | | | | | | | | | | | This cherry-pick is a preparatory change as eglfs is not yet enabled on Intel VxWorks. Cherry-picked commit e39f3ebba61acddea2e6dfe6e9506ce0441bfd8b Author: Cliff Bilbrey <[email protected]> Date: Fri Jun 9 13:56:14 2023 -0500 Display artifacts are sometimes seen at startup in VxWorks applications that make use of the MESA OpenGL libraries. This issue has been demonstrated in the Wind River MESA OpenGL demos, which use the same technique incorporated here to mask the problem. Cyling through the complete set of framebuffers and clearing each during the initialization process creates a clean slate that prevents the artifacts from being noticeable to the end user. Task-number: QTBUG-115777 Change-Id: Ifce9074eac687c002c215c531ddff1443a4df6a0 Reviewed-by: Laszlo Agocs <[email protected]>
* Gui: Make more logging categories staticUlf Hermann2024-06-241-1/+1
| | | | | | | Non-static, non-forward-declared logging categories are deprecated. Change-Id: I818ab0b192bed72e6a0ecdda2bb288bce1110a4c Reviewed-by: Fabian Kosmale <[email protected]>
* Logging: Introduce a macro to declare an exported Qt logging categoryUlf Hermann2024-06-071-1/+1
| | | | | | | | | | | | In a follow-up change we will hide Qt's own logging categories in a namespace. As a result the declaration for Qt's logging categories has to be different from the declaration for user logging categories. Introduce a separate macro to declare a logging category exported from Qt to user code/plugins/tools etc. Task-number: QTBUG-67692 Change-Id: Ia5ef5225cc0d01e6375e0d2fa1fd7367a5afedc2 Reviewed-by: Thiago Macieira <[email protected]>
* Don't include windows.h in the public qopengl.h headerVolker Hilsheimer2024-01-161-11/+30
| | | | | | | | | | | | | | | | | | | | All we need are the APIENTRY and WINGDIAPI macros, as those are used in the gl.h header. Define those locally for the time we need them. Use a QT_APIENTRY macro instead of hijacking APIENTRY for when we declare OpenGL functions with the stdcall calling convention. A few build fixes needed in tests that used Windows types without explicitly including windows.h first, or that (incorrectly) included one of the sub-headers of windows.h (like winuser.h). [ChangeLog][Potentially Source-Incompatible Changes][OpenGL] On Windows, the public qopengl.h header no longer includes windows.h. Pick-to: 6.7 Fixes: QTBUG-120687 Change-Id: I3770ac8eaeee5bcf4e7234e5a2539935a8aa5a7d Reviewed-by: Oliver Wolff <[email protected]>
* QOpenGLWidget: use (and prefer) InvalidateFramebufferGiuseppe D'Angelo2023-07-252-10/+22
| | | | | | | | | | | | | | | | | | | | 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-222-1/+7
| | | | | | Fixes: QTBUG-114770 Change-Id: Ibb1ced7f19d15a5116c60e95fd3e6b86ace63155 Reviewed-by: Andy Nichols <[email protected]>
* rhi: Make it a QPA-style private but semi-public APILaszlo Agocs2023-05-211-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | qrhi.h, qshader.h, qshaderdescription.h (and qshaderbaker.h from shadertools; done separately) become "RHI APIs", following the concept of QPA APIs. Mirror completely what is done for QPA headers, but using the "rhi" prefix for the headers. This involves updating syncqt to handle the new category of headers. (a note on the regex: matching everything starting with "qrhi" is not acceptable due to incorrectly matching existing and future headers, hence specifying the four header names explicitly) There is going to be one difference to QPA: the documentation for everything RHI is going to be public and part of the regular docs, not hidden with \internal. In addition to the header renaming and adding the comments and documentation notes and warnings, there is one significant change here: there is no longer a need to do API-specific includes, such as qrhid3d11[_p].h, qrhivulkan[_p].h, etc. These are simply merged into a single header that is then included from qrhi.h. This means that users within Qt, and any future applications can just do #include <rhi/qrhi.h> (or rhi/qshader.h if the QRhi stuff is not relevant), no other headers are needed. There are no changes to functionality in this patch. Only the documentation is expanded, quite a lot, to eliminate all qdoc warnings and make the generated API docs complete. An example, with a quite extensive doc page is added as well. Task-number: QTBUG-113331 Change-Id: I91c749826348f14320cb335b1c83e9d1ea2b1d8b Reviewed-by: Volker Hilsheimer <[email protected]> Reviewed-by: Qt CI Bot <[email protected]>
* Misc.: Fix some narrowing integral conversion warningsAhmad Samir2023-04-252-5/+6
| | | | | | | Drive-by change: use QByteArrayView instead of allocating a QByteArray. Change-Id: Iaf7acbbdb4efbb101b73b30061ce38dd1fa99ca3 Reviewed-by: Thiago Macieira <[email protected]>
* Default NVidia EGL to GLES2Allan Sandfeld Jensen2023-04-121-2/+6
| | | | | | | | | | | | | Found some documentation saying NVidia provided desktop GL for development purposes only, and recommmended against using it. Not sure if that applied to all NVidia drivers, or only that one embedded platform, but since we have multiple bugs about EGL not working on NVidia, default to using GLES2 like it suggested. Change-Id: If8ac8dd61c4ceb88162360f1eaa2a096acefa9c6 Pick-to: 6.5 6.2 Fixes: QTBUG-105921 Reviewed-by: Laszlo Agocs <[email protected]>
* rhi: Add support for half precision vertex atttributesBen Fletcher2023-02-272-2/+6
| | | | | | | | | | | | | | | | | | | 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]>
* Add QEGLContext::invalidateContextThomas Senyk2023-01-121-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | QEGLContext::invalidateContext will mark that egl context is invalide and trigger SceneGraph to destroy it, create a new one and re-create and re-upload all resources (e.g. textures) associated with the current state of the SceneGraph In addition this change also improves QEglFSWindow::invalidateSurface() and QEglFSContext::eglSurfaceForPlatformSurface(..) Where QEglFSWindow::invalidateSurface() will now destroy the corresponding EGLSurface via eglDestroySurface, including "unbinding" it from the current thread via eglMakeCurrent and un-setting the screen's EGLSurface in case it's the same resource. QEglFSContext::eglSurfaceForPlatformSurface(..) will now call QEglFSWindow::resetSurface() in case of getting a EGL_NO_SURFACE from the QEglFSWindow (which happens if above invalidateSurface() was called before) - therefor re-creating the resource if it was destoyed via QEglFSWindow::invalidateSurface() Pick-to: 6.5 Change-Id: I37badd1fc11e993c395fb1502e9bd27ebe18b821 Reviewed-by: Laszlo Agocs <[email protected]>
* Doc: Fix qt_attribution.json files using Path for filesKai Köhne2023-01-101-2/+2
| | | | | | | | | | Since qttools commit 39fdcb8e7a, qtattributionsscanner fails if 'Path' is not a directory. Use the 'Files' attribute instead. Pick-to: 6.4 6.5 Fixes: QTBUG-110002 Change-Id: I65fecdcb852ce9abea55f168cd939804bae9ae80 Reviewed-by: Jörg Bornemann <[email protected]>
* OpenGL: add support for Win11 detectionYuhang Zhao2022-10-301-12/+5
| | | | | | | | The current code can't distinguish between Windows 10 and Windows 11, this patch fixes that. Change-Id: I8269f0544c09205ae9845b7981f4a86c664bee09 Reviewed-by: Volker Hilsheimer <[email protected]>
* Replace usages of Q_CLANG_QDOC with Q_QDOCLuca Di Sera2022-10-211-1/+1
| | | | | | | | | | | | | | | | | | | | | | | To allow the user to customize the C++ code that QDoc sees, so as to be able to work-around some limitations on QDoc itself, QDoc defines two symbols: Q_QDOC and Q_CLANG_QDOC, both of which are "true" during an entire execution of QDoc. At a certain point in time, QDoc allowed the user the choice between a custom C++ parser and a Clang based one. The Q_QDOC symbol would always be defined while the Q_CLANG_QDOC symbol would be defined only when the Clang based parser was chosen. In more recent times, QDoc always uses a Clang based parser, such that both Q_CLANG_QDOC and Q_QDOC are always defined, making them equivalent. To avoid using different symbols, and the possible confusion and fragmentation that derives from it, all usages of Q_CLANG_QDOC are now replaced by the equivalent usages of Q_QDOC. Change-Id: I5810abb9ad1016a4c5bbea99acd03381b8514b3f Reviewed-by: Kai Koehne <[email protected]>
* OpenGL: Remove pre-Win10 leftoversYuhang Zhao2022-09-301-9/+0
| | | | | | | | | | | | Qt6's minimum supported platform is Win10 1809, and all pre-Win10 code have already been removed from QtBase long time ago. These code are trying to support Windows 7 to Windows 8.1, which nowadays become legacy code and should be removed. Pick-to: 6.4 Change-Id: I21a979d32d99977107964bccc06fdec7b38cd727 Reviewed-by: Volker Hilsheimer <[email protected]> Reviewed-by: Mårten Nordheim <[email protected]>
* qputenv: port to QByteArrayViewMarc Mutz2022-08-061-1/+1
| | | | | | | | | | | | | | | | | | | | The vast majority of in-tree users pass simple and short C string literals as the value. By porting to QByteArrayView, we document that we'll accept non-NUL-terminated data, and do the NUL-termination internally, using SSO'ed std::string, saving memory allocations in the common case of short strings. I didn't bother to check which direction std::string takes for nullptrs these days (there was a change accepted in that area for C++20 or 23), so play it safe and protect against them. Follow-up to Task-number: QTBUG-105302 Change-Id: I2369acc62f1d5cbc26135396cfe0602d8c75300c Reviewed-by: Sona Kurazyan <[email protected]> Reviewed-by: Mårten Nordheim <[email protected]> Reviewed-by: Qt CI Bot <[email protected]>
* Make EGL use Qt X connection without xcb_xlib with EGL_EXT_platform_xcbIlya Fedin2022-07-051-0/+4
| | | | | | | | This allows to create EGL context without involving Xlib. This extension was created a year ago and is present in Mesa since 21.0 Change-Id: I7cb0aece1e67b4db59d453cbcfbd317bb5d9c777 Reviewed-by: Liang Qi <[email protected]>
* Add a way to declare _exported_ logging categoriesGiuseppe D'Angelo2022-06-271-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If a library declares a logging category that needs to be used by clients (e.g. via inline methods, macros, etc.), then the logging category function generated by Q_DECLARE_LOGGING_CATEGORY has to be exported. We've seen this problem with Q_NAMESPACE, Q_GADGET, etc.: these macros also declare functions or objects that in some cases need to be exported. And precisely like Q_NAMESPACE, Q_GADGET, etc., people end up relying on the implementation details of Q_DECLARE_LOGGING_CATEGORY (specifically, what does it expand to) in order to place the export directives in the right place. Introduce a more robust solution and apply it around qtbase. Cleanup some minor code as a drive-by (remove `extern` and useless semicolons). [ChangeLog][QtCore][QLoggingCategory] Added the Q_DECLARE_EXPORTED_LOGGING_CATEGORY macro, in order to allow dynamic libraries to declare a logging category that can be then used by client code. Change-Id: I18f40cc937cfe8277b8d62ebc824c27a0773de04 Reviewed-by: Thiago Macieira <[email protected]> Reviewed-by: Qt CI Bot <[email protected]> Reviewed-by: Kai Koehne <[email protected]>
* Port QXlibEglIntegration::getCompatibleVisualId to xcbIlya Fedin2022-06-202-163/+0
| | | | | | | | | | In combination with EGL_EXT_platform_xcb support, this allows xcb_egl to be used without xlib. Without EGL_EXT_platform_xcb support, this still reduces amount of code using xlib. Pick-to: 6.4 Change-Id: I29e2b29f7ef8ea34320887f62697f84232b86fba Reviewed-by: Liang Qi <[email protected]>
* Use SPDX license identifiersLucie Gérard2022-05-1622-836/+44
| | | | | | | | | | | | | 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: replace remaining uses of QLatin1String with QLatin1StringViewSona Kurazyan2022-04-281-1/+1
| | | | | | Task-number: QTBUG-98434 Change-Id: I98c27030c783f968cbf38dc966ce486dc366b302 Reviewed-by: Edward Welbourne <[email protected]>
* QtGui: use _L1 for for creating Latin-1 string literalsSona Kurazyan2022-04-283-28/+32
| | | | | | Task-number: QTBUG-98434 Change-Id: Idcb71c1d27125333a53b6bdd3e1af0d4c66617fa Reviewed-by: Edward Welbourne <[email protected]>
* egl: Remove the disabling of surfaceless contexts for MesaLaszlo Agocs2022-04-271-9/+0
| | | | | | | | | The current check is based on the state of things in 2015, we will assume that this is no longer an issue with more modern Mesa versions. Change-Id: I60c4966eea817a6df1a1edf6064a978fbcd44cf7 Reviewed-by: Andy Nichols <[email protected]>
* QtGui: stop using QLatin1Char constructor for creating char literalsSona Kurazyan2022-04-131-1/+1
| | | | | | | | | Required for porting away from QLatin1Char/QLatin1String in scope of QTBUG-98434. Change-Id: I308d86cefcbfd126929b68f9a853d420840c965f Reviewed-by: Qt CI Bot <[email protected]> Reviewed-by: Marc Mutz <[email protected]>
* Make sure all qtbase private headers include at least one otherThiago Macieira2022-02-242-0/+2
| | | | | | | | | | See script in qtbase/util/includeprivate for the rules. Since these files are being touched anyway, I also ran the updatecopyright.pl script too. Change-Id: Ib056b47dde3341ef9a52ffff13ef677e471674b6 Reviewed-by: Marc Mutz <[email protected]>
* qopengl.h: Move C header #include(s) out of the QT_NAMESPACEPatrick Stewart2022-01-221-2/+1
| | | | | | | | | | | | | | | | The Clang backend of MSVC declares nullptr_t in namespace std there, then expects to find it under ::std::nullptr_t to define a ::nullptr_t. That breaks with a namespaced build, of course. Fix by moving the QT_BEGIN_NAMESPACE to just before the first typedef that declares a Qt-owned name. Done-with: Marc Mutz <[email protected]> Pick-to: 5.15 6.2 6.3 Fixes: QTBUG-95309 Change-Id: I56f2709c4664a7d0de84918f43b6d53cb3710612 Reviewed-by: Andrei Golubev <[email protected]> Reviewed-by: Thiago Macieira <[email protected]>
* rhi: gl: Do not just rely on GL_COMPRESSED_TEXTURE_FORMATSLaszlo Agocs2022-01-062-1/+11
| | | | | | | Pick-to: 6.3 6.2 Task-number: QTBUG-98937 Change-Id: I64f2783ae64ad3ef77a389999ded4c9ba2c46ee5 Reviewed-by: Eirik Aavitsland <[email protected]>
* Revert "Add support for EGL_EXT_platform_xcb"Paul Olav Tvete2021-11-021-4/+0
| | | | | | | | | | | This reverts commit 816c5de460439faac0745cb364c374162b7fc651. Reason for revert: Causes crash on Nvidia when Qt is configured with -opengl es2 Fixes: QTBUG-97738 Change-Id: I9fe43146b922fc770890a144fdb1bd1c564635bb Reviewed-by: Laszlo Agocs <[email protected]>
* gui: Fix typos in source code commentsJonas Kvinge2021-10-121-1/+1
| | | | | | Pick-to: 5.15 6.2 Change-Id: Ie53e5542a8f93856470982939ecd8ec90b323d69 Reviewed-by: Eirik Aavitsland <[email protected]>
* gl: Try the local CacheLocation when the shared one failsLaszlo Agocs2021-10-082-20/+45
| | | | | | | | | | | | | | | | | | | | | | We prefer the shared cache path, because there is no reason to give up benefitting from sharing the content between applications. If that path is not QFileInfo().isWritable(), we fall back to the local cache path. However, there are reportedly systems with security solutions such as AppArmor where the writable check passes and yet attempting to create a file still fails. Then there is no cache in effect, because nothing ever gets written out. Handle this better: if writing the file fails and we still use our first choice, the global cache location, fall back to the secondary choice (the app-local path) and try again. Pick-to: 6.2 6.1 5.15 Fixes: QTBUG-96789 Change-Id: Ifea32e9af0cf85aa70f3069256ed3d6a7e2fbe90 Reviewed-by: Qt CI Bot <[email protected]> Reviewed-by: Dalton Durst <[email protected]> Reviewed-by: Andy Nichols <[email protected]>
* Add support for EGL_EXT_platform_xcbIlya Fedin2021-10-061-0/+4
| | | | | | | | This allows to create EGL context without involving Xlib. This extension was created a year ago and is present in Mesa since 21.0 Change-Id: Id9bcbffe8c46cb00d9cc0a9a425c1706d1b52b28 Reviewed-by: Laszlo Agocs <[email protected]>
* Cater for upstream changes in eglplatform.hLaszlo Agocs2021-09-211-1/+5
| | | | | | | | | | | | | EGL_NO_X11 has been replaced with USE_X11, thus breaking all existing code out there, including Qt: https://github.com/KhronosGroup/EGL-Registry/pull/130 Fix this by defining USE_X11 whenever we do not define EGL_NO_X11. Fixes: QTBUG-96392 Pick-to: 6.2 Change-Id: If8b68caa8c9022477d87169ca2e2a0121a9313e0 Reviewed-by: Andy Nichols <[email protected]>
* Remove conditioning on Android embeddedEdward Welbourne2021-09-172-4/+4
| | | | | | | | It is no longer handled separately from Android. This effectively reverts commit 6d50f746fe05a7008b63818e77784dd0c99270a1 Change-Id: Ic2d75b8c5a09895810913311ab2fe3355d4d2983 Reviewed-by: Assam Boudjelthia <[email protected]>
* Expose the config and display for EGL-based QOpenGLContextsLaszlo Agocs2021-09-131-0/+2
| | | | | | | | | | | | | | | | ...in the native interface. Using OpenXR is impossible on some platforms (for example, Android) without knowing all three. The EGLContext alone is not enough, and EGL offers no way to query the EGLConfig a context was created with. https://www.khronos.org/registry/OpenXR/specs/1.0/html/xrspec.html#XR_KHR_opengl_es_enable Therefore, expose all three so libs/apps can use the new way to query these native resource without resorting to the old-style nativeResourceFor* queries. Change-Id: I7efb0a26b858150da55e711752af99426e744322 Reviewed-by: Tor Arne Vestbø <[email protected]>
* Support EGL protected content extensionElvis Lee2021-03-091-0/+11
| | | | | | | | | | | | | | | | | | | | A protected context is required to allow the GPU to operate on protected resources, including protected surfaces and protected EGLImages. For example, GPU can post-process on protected content like DRM protected content so that complex, nonlinear video effects or mapping onto textures can be used. The surface format option may be relevant for DirectX and Vulkan in the future: https://microsoft.github.io/DirectX-Specs/d3d/ProtectedResources.html https://www.khronos.org/registry/vulkan/specs/1.1-khr-extensions/html/chap12.html#memory-protected-memory Change-Id: I2d155f0e68b830276690b4833b22a2bc452cdcad Reviewed-by: Elvis Lee <[email protected]> Reviewed-by: Eskil Abrahamsen Blomfeldt <[email protected]>
* egl: Add debug option to print all EGLConfigsLaszlo Agocs2021-02-081-0/+15
| | | | | | | | | QT_QPA_EGLFS_DEBUG=1 prints the attributes for the chosen EGLContext. Make QT_QPA_EGLFS_DEBUG=2 print the same for all EGLContexts. Pick-to: 6.1 Change-Id: Id161d04789fbd015e29e5a5a89a0901000096ea3 Reviewed-by: Andy Nichols <[email protected]>
* Remove the qmake project filesJoerg Bornemann2021-01-074-62/+0
| | | | | | | | | | | | | | | | Remove the qmake project files for most of Qt. Leave the qmake project files for examples, because we still test those in the CI to ensure qmake does not regress. Also leave the qmake project files for utils and other minor parts that lack CMake project files. Task-number: QTBUG-88742 Change-Id: I6cdf059e6204816f617f9624f3ea9822703f73cc Reviewed-by: Edward Welbourne <[email protected]> Reviewed-by: Qt CI Bot <[email protected]> Reviewed-by: Kai Koehne <[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]>
* Another round of replacing 0 with nullptrAllan Sandfeld Jensen2020-10-071-1/+1
| | | | | | | | | This time based on grepping to also include documentation, tests and examples previously missed by the automatic tool. Change-Id: Ied1703f4bcc470fbc275f759ed5b7c588a5c4e9f Reviewed-by: Qt CI Bot <[email protected]> Reviewed-by: Friedemann Kleint <[email protected]>
* Rename the new platform APIs from QPlatformInterface to QNativeInterfaceTor Arne Vestbø2020-10-071-1/+1
| | | | | | | | | | | | We were already using the 'native' nomenclature when referring to these kinds of APIs, e.g. when talking about native handles, or the existing QPlatformNativeInterface on a QPA level. Using 'native' for the user facing APIs also distinguishes them from the 'platform' backend layer in QPA and elsewhere. Change-Id: I0f3273265904f0f19c0b6d62471f8820d3c3232e Reviewed-by: Friedemann Kleint <[email protected]> Reviewed-by: Lars Knoll <[email protected]>