| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
| |
Several problems:
1. The demo leaked the scene contents, which caused cleanup problems.
2. The QGLContext::currentContext() could be changed behind Qt's back
under Windows (the temp contexts never reset the current context).
3. QGLFormat::openGLVersionFlags() function would return uninitialized
flags if the QGLWidget constructor happened to call
qt_gl_preferGL2Engine().
Reviewed-by: Kim
|
|
|
|
| |
Reviewed-by: trustme
|
|
|
|
|
|
|
| |
Also, move the EGL makeCurrent(), doneCurrent(), swapBuffers(),
and reset() functions into the common qgl_egl.cpp.
Reviewed-by: Sarah Smith
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The handling for the current QGLContext was looking up the same
TLS data several times per call (hasLocalData() and localData()
calls particularly).
This change also refactors the code a little so that the
setting of the QGLContext within makeCurrent() and doneCurrent()
is in one location in the code instead of six (one per platform).
Reviewed-by: Michael Brasser
Reviewed-by: Sarah Smith
|
| |
|
|
|
|
| |
Reviewed-by: Sarah Smith
|
| |
|
| |
|
|
|
|
|
|
| |
Update documentation and #ifdef out the implementation.
Reviewed-by: trustme
|
| |
|
|
|
|
|
|
|
|
|
| |
The renderText() function is only for legacy desktop systems,
so revert the previous attempts to port it to OpenGL/ES.
Documentation note added to direct users to QPainter::drawText()
for the correct way to render text onto an OpenGL paint device.
Reviewed-by: trustme
|
|
|
|
| |
Reviewed-by: Gunnar
|
|
|
|
| |
Reviewed-by: trustme
|
|
|
|
| |
Reviewed-by: trustme
|
|
|
|
| |
Reviewed-by: trustme
|
|
|
|
| |
Reviewed-by: Tom
|
|
|
|
|
|
|
|
| |
The problem was the QGLContextResource destructor which was called
when the QtOpenGL dll was unloaded. At this point in time, the gl
driver had already been unloaded so any gl calls at this point in time
would crash. It is simply wrong for the destructor to try to clean up,
so we instead output a warning if resources are leaked.
|
|
|
|
| |
Reviewed-by: trustme
|
|\ |
|
| |
| |
| |
| | |
Reviewed-by: Trust Me
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
QGLShader and QGLShaderProgram used to delete the GL object id
in the wrong context. But fixing this means we must keep track of
when contexts are destroyed so that we don't try to access a
context from a shader if it goes away. We also need to transfer
ownership from one context to another when they are shared.
This change introduces QGLSharedResourceGuard, which keeps track
of a context and a GL object identifier. When the context goes
away, ownership is passed to a shared context. When there are
no more shared contexts, the identifier automatically zeroes.
Reviewed-by: trustme
|
|
|
|
|
|
|
|
|
| |
This is the last patch in the QGLPaintDevice series. Although previous
patches have not been reviewed individually, Samuel's reviewed
QGLPaintDevice API and all the changes as the code stands with this
patch.
Reviewed-by: Samuel
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, the paint engine cleared the surface's buffers in begin.
This logic really belongs in QGLPaintDevice::beginPaint as not all paint
devices will want this behaviour (in fact most don't). This also makes
QGLPaintDevice API much simpler as the virtual getters for the clear
color, etc. can be removed. It's much cleaner this way. The only
possible problem is with the GL1 engine, which also cleared the
accumulation & depth buffers in begin. However, the engine will also
clear the depth buffer later as part of it's clipping logic. It also
doesn't use the accumulation buffer, so clearing it seems unnessisary.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch adds a new abstract base class which inherits from
QPaintDevice called QGLPaintDevice. This base class will contain
everything the GL paint engines need to know about the surface they are
drawing onto. As such, new surfaces can be targeted by the GL paint
engines without having to modify QtOpenGL. This is very useful for
plugins, specifically QGraphicsSystem plugins.
To unify things a little, the GL paint engines will use the same
QGLPaintDevice API to render into existing target surfaces (QGLWidget,
QGLPixelBuffer & QGLFrameBufferObject). Ideally we'd make QGLPaintDevice
a common ancestor for these surfaces, but obviously that wil break B/C.
This patch only implements QGLWidget using the new interface. Rendering
to other surfaces will be fixed in following patches.
|
|
|
|
|
|
|
|
|
|
|
| |
Some applications that uses a mix of OpenGL and QPainter code may
not work correctly with the new GL 2 engine (e.g. the composition demo).
The same is most likely also true for user apps, therefore we need
a way to enforce the usage of the old GL 1 engine for the sake of
compatibility.
Task-number: 260872
Reviewed-by: Samuel
|
|
|
|
|
|
|
|
|
|
|
|
| |
QImage::Format_RGB16 textures were broken on some OpenGL/ES 1.1
systems because the "format" was set to GL_RGBA and the "texture_format"
was set to GL_RGB, with a pixel type of GL_UNSIGNED_SHORT_5_6_5.
OpenGL/ES 1.1, ES 2.0, and desktop GL all require the two format
parameters to glTexImage2D() to be GL_RGB if the pixel type is
GL_UNSIGNED_SHORT_5_6_5.
Reviewed-by: Sarah Smith
|
|
|
|
|
|
|
| |
The original renderText() was using the highly unportable (to OpenGL/ES)
glGetDoublev() and glGetIntegerv() functions.
Reviewed-by: Sarah Smith
|
|
|
|
| |
Reviewed-by: trustme
|
|
|
|
|
|
|
|
|
|
|
|
| |
QGLFormat was being deep-copied many times per frame because of
code like this:
if (context()->format().doubleBuffer()) { ...
This change modifies QGLFormat to use implicit sharing to reduce
the overhead of the above type of checks.
Reviewed-by: Sarah Smith
|
|
|
|
|
|
|
| |
The documentation says "Returns true if all the options of the
two QGLFormats are equal", but that's not what it was doing.
Reviewed-by: Sarah Smith
|
|
|
|
| |
Reviewed-by: Trond
|
|
|
|
|
| |
Task-number: 260697
Reviewed-by: Trond
|
|
|
|
|
|
|
|
|
| |
Both the shaders and the engine states were shared between OpenGL
contexts, but the states should be only apply to one context, not a
group of contexts. This commit separates the shaders and the states.
Task-number: 257254
Reviewed-by: Samuel
|
|
|
|
|
|
|
|
|
|
|
|
| |
I renamed QGLContextGroupResources to QGLContextGroup because we are
using it to identify context groups. I also added a pointer to one of
the contexts in the group. Together with qgl_share_reg(), the pointer
can be used to find all contexts in a group.
I renamed QGLContextPrivate::qt_get_extension_funcs() to
QGLContextPrivate::extensionFuncs() to follow Qt's naming convention.
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
|
|\ \ |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
QGLWidget::renderText() needs to respect the current depth and scissor
tests that the user has set. Therefore we needs some special casing in
the GL 2 paint engine to handle the custom depth testing. The private
setRenderTextActive() has been added for this purpose.
Reviewed-by: Samuel
|
| | | |
|
|/ /
| |
| |
| | |
issues with flipped pixmaps on X11
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
and y-axis inversion and overall less conversion, making significantly faster
for plain usecases
Reviewed-by: Trond
|
|\ \ |
|
| | | |
|
|\ \ \
| |/ /
|/| | |
|
| | |
| | |
| | |
| | |
| | |
| | | |
It seems the winId can change during a WindowStateChange event too.
Reviewed-By: Trustme
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The PBO code path causes a crash on certain AMD graphics cards, plus
seems to perform worse than the straight forward glTexImage2D code path
on several configurations.
Task-number: 257353
Reviewed-by: Gunnar Sletta
|
|\ \ \
| |/ /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Conflicts:
doc/src/examples.qdoc
doc/src/plugins-howto.qdoc
doc/src/topics.qdoc
examples/phonon/musicplayer/mainwindow.cpp
src/3rdparty/freetype/src/base/ftobjs.c
src/corelib/global/qglobal.h
src/corelib/tools/qalgorithms.h
src/corelib/tools/qshareddata.cpp
src/corelib/tools/qsharedpointer.cpp
src/corelib/tools/tools.pri
src/corelib/xml/qxmlstream.h
src/gui/painting/painting.pri
src/gui/widgets/qdatetimeedit.cpp
tests/auto/qdesktopservices/qdesktopservices.pro
tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp
tests/auto/qtextcodec/test/test.pro
|