| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
This reverts commit 5f63f95def838ce72af99dc697ecce092fe7eb69.
Fixes GL graphics system on Windows. With the patch, windows would pop
up as completely empty.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When the OpenGL graphics system is in X11GL mode, it will use the
QX11GLWindowSurface for all widgets except QGraphicsViews with the
FullViewportUpdate update mode set, where it will use the regular
QGLWindowSurface, as this is probabbly faster.
QX11GLWindowSurface differs from QGLWindowSurface because it allows
accelerated scrolling and partial updates, while still being using
opengl to do rendering.
Task-number: QT-280
Task-number: QT-2625
Reviewed-By: Trond
|
|
|
|
|
|
|
|
|
| |
If the back buffer is destroyed when swap buffers is called, we must
tell the backing store any update needs to invalidate the entire
window surface, so everything gets re-drawn.
Task-number: QTBUG-9978
Reviewed-By: Trond
|
|
|
|
| |
Reviewed-By: Samuel
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
QEgl::createSurface() on X11 will now check to see if the device's
X11 Visual is compatible with the EGLConfig passed in. If it is not
compatible, the function will re-create the QPaintDevice's native
drawable with a different Visual (one which is compatable with the
EGLConfig). This represented the bulk of the QGLWidget::setContext
method which is now much simpler.
As a consequense of this change, QWidgets with graphicssystem opengl
will behave much more like QGLWidget as most of the code is re-used.
So things like WA_TranslucentBackground should now work with opengl
graphicssystem too.
Reviewed-By: TrustMe
|
|
|
|
|
|
|
|
| |
This puts the QEgl namespace in a single file which can be used by
both qeglcontext and qeglproperties. Files which need QEglContext
should now include qeglcontext_p.h.
Reviewed-By: Aleksandar Sasha Babic
|
|
|
|
|
| |
Task-number: QTBUG-7683
Reviewed-by: Tom Cooksey
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Qt used to store the GL extensions a particular implementation supported
in a global cache, which was initialized once and never updated.
This could cause problems because different types of context might
support different kinds of extensions (e.g. the difference between
sw and hw contexts). With this patch, the GL extensions are cached
and updated within each QGLContext. It also makes the extension
initialization lazy, which saves application initialization costs for
embedded platforms.
The patch introduces a internal cross platform QGLTemporaryContext
class that is used to create a light-weight GL context without going
via QGLWidget and friends (QWS and WinCE still have QGLWidget fallbacks
for now).
Reviewed-by: Kim
Reviewed-by: Samuel
|
|
|
|
| |
Reviewed-by: Trust Me
|
|
|
|
|
|
|
| |
The format and internal_format parameters to glTexImage2D need to always
match on OpenGL ES 2.0.
Reviewed-by: Tom Cooksey
|
|
|
|
| |
Over src/ tools/ examples/ and demos/
|
|
|
|
| |
Reviewed-by: Sarah Smith
|
|\ |
|
| | |
|
|/
|
|
|
|
|
|
|
|
| |
We have some internal hidden widgets which should not come up in the
QApplication::topLevelWidgets() list. So the known ones are being
removed from the QWidgetPrivate::allWidgets set.
Task-number: QTBUG-739
Reviewed-by: Denis Dzyubenko
Reviewed-by: Bradley T. Hughes
|
|
|
|
|
| |
The new surface uses XCopyArea to post updates to the window and thus,
supports partial updates.
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Custom window surfaces, graphics systems, and Qt/Embedded screen
drivers often need to access QPaintDevice::metric(), but it is
protected. Hence the growing number of friends in QWidget and
QImage. The qt_paint_device_metric() function provides a more
future-proof approach that doesn't require lots of friends.
Reviewed-by: Gunnar
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The qt_qgl_paint_engine() function was being used by QWS, but there's
no reason why it can't be used by other platforms too. This should
also fix ES 2.0 paint engine support under QWS, which was stubbed out.
Reviewed-by: Sarah Smith
Reviewed-by: Gunnar
|
|/
|
|
|
|
|
|
|
|
| |
QGLWindowSurface::flush() assumed that updateGeometry() had been
called, but in some cases it hadn't. It would therefore dereference a
null pointer and crash. This has been fixed by returning from flush()
if updateGeometry() has not been called. This fixes the symptom rather
than the bug, so we still need to find out why it hasn't been called.
Reviewed-by: Trond
|
|
|
|
| |
Reviewed-by: Eskil
|
|
|
|
| |
Reviewed-by: trustme
|
|
|
|
|
|
|
| |
Very basic port of the graphics system - performance may not
be the best just yet.
Reviewed-by: Sarah Smith
|
|
|
|
|
|
|
| |
Need to make sure the correct context is current when painting on the
window surface FBO.
Reviewed-by: Kim
|
|
|
|
|
|
|
|
|
|
|
|
| |
The logic was a bit messy and didn't work on Mac OS X. On Linux we also had issues
with 8xxx nvidia cards which didn't render properly.
The FBO is now unbound between calls to beginPaint(), which prevents other
gl calls from messing it up, which is probably what was the error in the first place.
In addition, on Mac OS X, we also call the upatePaintDevice() as a result of
setGeometry() to force-update the dimensions of the context.
Reviewed-by: Trond
|
|
|
|
| |
Reviewed-by: Samuel
|
|
|
|
|
|
|
| |
Need to unbind the window surface FBO and re-bind it in the child
widget's context before doing a blit.
Reviewed-by: Kim
|
|
|
|
|
|
|
|
|
|
|
|
| |
There are too many platform regressions when using the FBO as a backend
for the opengl engine. We need to find whether it's possible to work
around them, but for the time being, to preserve compatibility, we
only use FBOs when using the opengl2 engine.
Example of issue: Smudged text and smudged diagonal lines on Windows XP
when running with opengl engine and latest nvidia driver.
Reviewed-by: Trond
|
|
|
|
| |
Reviewed-by: Trust Me
|
| |
|
|
|
|
|
|
|
| |
Renaming setInternalFormat() to setInternalTextureFormat() (and
similarly for the accessor) makes the API a bit more explicit.
Reviewed-by: Trond
|
|
|
|
|
|
|
|
|
|
| |
The type of GLenum was changed between 10.4 and 10.5, so to support
compiling on one and deploying on the other we need this hack. Also
get rid of the complex QGLFramebufferObjectFormat constructor in
favor of a simple default constructor and setters, which is more
Qt-ish anyway, and avoids ambiguities on mac.
Reviewed-by: Trond
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
demos/boxes/glshaders.cpp
demos/boxes/vector.h
demos/embedded/fluidlauncher/pictureflow.cpp
demos/embedded/fluidlauncher/pictureflow.h
doc/src/desktop-integration.qdoc
doc/src/distributingqt.qdoc
doc/src/examples-overview.qdoc
doc/src/examples.qdoc
doc/src/frameworks-technologies/dbus-adaptors.qdoc
doc/src/geometry.qdoc
doc/src/groups.qdoc
doc/src/objecttrees.qdoc
doc/src/platform-notes.qdoc
doc/src/plugins-howto.qdoc
doc/src/qt3support.qdoc
doc/src/qtdbus.qdoc
doc/src/qtdesigner.qdoc
doc/src/qtgui.qdoc
doc/src/qtmain.qdoc
doc/src/qtopengl.qdoc
doc/src/qtsvg.qdoc
doc/src/qtuiloader.qdoc
doc/src/qundo.qdoc
doc/src/richtext.qdoc
doc/src/topics.qdoc
src/corelib/tools/qdumper.cpp
src/gui/embedded/qkbdpc101_qws.cpp
src/gui/embedded/qkbdsl5000_qws.cpp
src/gui/embedded/qkbdusb_qws.cpp
src/gui/embedded/qkbdvr41xx_qws.cpp
src/gui/embedded/qkbdyopy_qws.cpp
src/gui/embedded/qmousebus_qws.cpp
src/gui/embedded/qmousevr41xx_qws.cpp
src/gui/embedded/qmouseyopy_qws.cpp
src/gui/painting/qpaintengine_d3d.cpp
src/gui/painting/qwindowsurface_d3d.cpp
src/opengl/gl2paintengineex/glgc_shader_source.h
src/opengl/gl2paintengineex/qglpexshadermanager.cpp
src/opengl/gl2paintengineex/qglpexshadermanager_p.h
src/opengl/gl2paintengineex/qglshader.cpp
src/opengl/gl2paintengineex/qglshader_p.h
src/opengl/util/fragmentprograms_p.h
src/plugins/kbddrivers/linuxis/linuxiskbdhandler.cpp
src/plugins/mousedrivers/linuxis/linuxismousehandler.cpp
src/script/parser/qscript.g
src/script/qscriptarray_p.h
src/script/qscriptasm_p.h
src/script/qscriptbuffer_p.h
src/script/qscriptclass.cpp
src/script/qscriptclassdata_p.h
src/script/qscriptcompiler.cpp
src/script/qscriptcompiler_p.h
src/script/qscriptcontext.cpp
src/script/qscriptcontext_p.cpp
src/script/qscriptcontext_p.h
src/script/qscriptcontextfwd_p.h
src/script/qscriptecmaarray.cpp
src/script/qscriptecmaarray_p.h
src/script/qscriptecmaboolean.cpp
src/script/qscriptecmacore.cpp
src/script/qscriptecmadate.cpp
src/script/qscriptecmadate_p.h
src/script/qscriptecmaerror.cpp
src/script/qscriptecmaerror_p.h
src/script/qscriptecmafunction.cpp
src/script/qscriptecmafunction_p.h
src/script/qscriptecmaglobal.cpp
src/script/qscriptecmaglobal_p.h
src/script/qscriptecmamath.cpp
src/script/qscriptecmamath_p.h
src/script/qscriptecmanumber.cpp
src/script/qscriptecmanumber_p.h
src/script/qscriptecmaobject.cpp
src/script/qscriptecmaobject_p.h
src/script/qscriptecmaregexp.cpp
src/script/qscriptecmaregexp_p.h
src/script/qscriptecmastring.cpp
src/script/qscriptecmastring_p.h
src/script/qscriptengine.cpp
src/script/qscriptengine_p.cpp
src/script/qscriptengine_p.h
src/script/qscriptenginefwd_p.h
src/script/qscriptextenumeration.cpp
src/script/qscriptextenumeration_p.h
src/script/qscriptextqobject.cpp
src/script/qscriptextqobject_p.h
src/script/qscriptextvariant.cpp
src/script/qscriptfunction.cpp
src/script/qscriptfunction_p.h
src/script/qscriptgc_p.h
src/script/qscriptmember_p.h
src/script/qscriptobject_p.h
src/script/qscriptprettypretty.cpp
src/script/qscriptprettypretty_p.h
src/script/qscriptvalue.cpp
src/script/qscriptvalueimpl.cpp
src/script/qscriptvalueimpl_p.h
src/script/qscriptvalueimplfwd_p.h
src/script/qscriptvalueiteratorimpl.cpp
src/script/qscriptxmlgenerator.cpp
src/script/qscriptxmlgenerator_p.h
tests/auto/linguist/lupdate/testdata/recursivescan/project.ui
tests/auto/linguist/lupdate/testdata/recursivescan/sub/finddialog.cpp
tests/auto/qkeyevent/tst_qkeyevent.cpp
tools/linguist/shared/cpp.cpp
|
| |
| |
| |
| | |
Reviewed-by: Trust Me
|
| |
| |
| |
| | |
Reviewed-by: Trust Me
|
| |
| |
| |
| | |
Reviewed-by: Trust Me
|
| |
| |
| |
| |
| |
| | |
Without this, QWindowSurface::flush() doesn't work.
Reviewed-by: Samuel
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
If creating a QGLWidget triggers the creation of a QPixmap then we might
end up in an infinite recursion due to QPixmap trying to access
qt_gl_share_widget(). This can happen via setWindowIcon for example.
Adding an initializing flag to QGLGlobalShareWidget and preventing
QGLFramebufferObject::hasOpenGLFramebufferObjects() and
::hasOpenGLFramebufferBlit() from creating a QGLWidget every time they
are called with no active GL context.
Reviewed-by: Trond
|
|\ \
| |/ |
|
| |
| |
| |
| | |
Reviewed-by: Trust Me
|
| |
| |
| |
| |
| |
| |
| | |
GL window surface and GL pixmap backend should work with old GL engine
as well, though not supported to the same degree.
Reviewed-by: Trond
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The window surface has been modified to track widget deletion to make
sure it doesn't try to access the widget's context data after deletion.
QGLPixmapData now also uses GL_RGB instead of GL_RGBA when appropriate,
and hasAlphaChannel() has been modified in view of this.
A number of other issues have been fixed in QGLPixmapData, and the
autotest has been modified to use a more lenient pixmap compare function
due to off-by-one pixel errors here and there.
Reviewed-by: Trond
|
| |
| |
| |
| | |
Reviewed-By: TrustMe
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When a buffer swap leaves the back buffer intact we don't have to use
an FBO or PB, but can render directly to the window's back buffer,
yielding higher performance and depending less on extensions such as
multisample FBOs and FBO blitting.
Reviewed-by: Trond
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Using GL 2 as default engine breaks the use cases where OpenGL commands
are inter-mixed with QPainter commands, such as when using raw OpenGL in
graphicsview.
For now we'll use the old OpenGL engine for QGLWidget, QGLPixelBuffer,
and QGLFramebufferObject on desktop, and the OpenGL 2 paint engine when
the OpenGL graphics system is used.
Reviewed-by: Trond
|
| |
| |
| |
| |
| |
| | |
At the moment, for the GL graphics system to work properly with GLES 2
without the FramebufferBlit extension swapBuffers() needs to preserve
the back buffer.
|
| |
| |
| |
| |
| |
| |
| | |
Compile both GL and GL2 paint engine on desktop, and choose between them
at run-time based on GL version flags.
Reviewed-by: Tom
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Clean up the extension naming and make things build on OpenGL ES 2.0
again. All the extensions which made it into OpenGL 2.0 spec have have
the EXT postfix removed. This also eliminates defines on ES 2.0 as the
code now refers to the in-spec names.
Reviewed-by: sroedal
|
| |
| |
| |
| |
| | |
Enable GL graphics system on ES 2.0 builds - it wont work, but now
QGLDrawable is being used it's just easier to build the graphics system.
|
|\ \
| |/
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
src/opengl/opengl.pro
src/opengl/qglextensions.cpp
src/opengl/qglextensions_p.h
src/opengl/qglshaderprogram.cpp
src/opengl/qglshaderprogram.h
|