| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
Reviewed-by: trust me
|
|
|
|
|
| |
This is needed to implement render-to-pixmap on x11/EGL, which will also
need to create an EGL surface for pixmaps.
|
|
|
|
| |
Reviewed-by: Samuel
|
|
|
|
| |
Reviewed-by: Sarah Smith
|
|
|
|
| |
Reviewed-by: Sarah Smith
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Sometimes it isn't possible to arrange for the QGLFramebufferObject
to be destroyed before the QGLContext group in which it was created.
Especially during application shutdown or in applications with
multiple shared contexts.
This change modifies QGLFramebufferObject to use QGLSharedResourceGuard,
which ensures that when the last QGLContext in a sharing group is
destroyed, any remaining FBO's will revert to !isValid(). It is now
safe to destroy the context before the FBO, or the FBO before the context.
Unit test included.
Reviewed-by: Sarah Smith
|
|
|
|
|
|
|
|
|
|
|
| |
We need a way to control various rendering operations. For example,
whether quality is more important than performance, or the other way
around.
This change also replaces occurences of QPixmapFilter/QGraphicsEffect::BlurHint
(introduced in 1a431e850893b6b162c833f4f148f090e2427dda) with Qt::RenderHint.
Reviewed-by: Samuel
|
|
|
|
| |
Reviewed-by: Julian de Bhal
|
|
|
|
|
|
|
| |
The convolution filter was still using the old-style OpenGL1
method for interfacing to the paint engine.
Reviewed-by: trustme
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The QPF implementation of alphaMapForGlyph() was returning
color values of RGBA = (a, a, a, 255) instead of (0, 0, 0, a),
which was inconsistent with all the other font engines.
This inconsistency caused some QPF-specific workarounds in the
OpenGL and OpenVG paint engines. This change removes the workarounds
and makes QPF generate the right colors from the start. Paint
engines that ignore the color table or which don't use the
alphaMapForGlyph() function (e.g. raster) are not affected.
Reviewed-by: Paul
|
|
|
|
|
|
|
|
|
| |
The QScopedPointer changes mean that the pixmap data's reference count
is now decremented after the cleanup hooks are called. The hooks should
also only be called when the pixmap data gets deleted, so we don't
actually have to check the reference count at all.
Reviewed-by: TrustMe
|
|
|
|
|
|
|
|
|
|
|
|
| |
On systems where the GL driver is pluggable (like Mesa), we have to use
the glXGetProcAddressARB extension to resolve other function pointers as
the symbols wont be in the GL library, but rather in a plugin loaded by
the GL library.
This fix basically makes texture-from-pixmap work on Mesa drivers like
intel i915 & friends.
Reviewed-by: Trond
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
Reviewed-by: trustme
|
|
|
|
|
|
|
|
| |
Convolution filter is not compatible with OpenGL/ES 2.0 in its
current form, and we probably don't need it now that we have a
special-purpose blur filter.
Reviewed-by: trustme
|
|
|
|
|
|
|
| |
Very basic port of the graphics system - performance may not
be the best just yet.
Reviewed-by: Sarah Smith
|
| |
|
|
|
|
| |
Reviewed-by: Samuel
|
|
|
|
| |
Reviewed-by: Gunnar Sletta
|
|
|
|
|
|
|
|
| |
There were several copies of the same stubbed functions in
qgl_wince.cpp, qgl_qws.cpp, and qgl_x11egl.cpp. Move them
all to a common location for easier maintainence.
Reviewed-by: Sarah Smith
|
|
|
|
| |
Reviewed-by: Sarah Smith
|
|
|
|
|
|
|
| |
Also, move the EGL makeCurrent(), doneCurrent(), swapBuffers(),
and reset() functions into the common qgl_egl.cpp.
Reviewed-by: Sarah Smith
|
|
|
|
|
|
|
|
| |
This lets the user control whether to use a fast dynamic blur when
animating the radius of the blur for example, or to use a static high
quality blur for one-time or constant radius blurring.
Reviewed-by: Gunnar Sletta
|
|
|
|
|
|
|
| |
Need to make sure the correct context is current when painting on the
window surface FBO.
Reviewed-by: Kim
|
|
|
|
|
|
|
|
|
|
|
| |
This is useful when animating the blur radius, as you don't want to
suffer the hit of compiling / linking a new shader program for each
radius the first time the animation is played.
Also use the fast blur when the radius is 5 or below, as the quality
difference is insignificant.
Reviewed-by: Rhys Weatherley
|
|
|
|
| |
Reviewed-by: Trust Me
|
|
|
|
| |
Reviewed-by: Kim
|
|
|
|
|
|
|
|
|
|
| |
1. The mono format was not handled at all.
2. We really, really wanted to use sub-pixel hinted glyphs even
when they were not available.
3. The glyphFormat type in the FT font engine wasn't updated to
reflect the correct system glyph type.
Reviewed-by: Kim
|
|
|
|
|
|
|
| |
The antialiasing is currently not gamma corrected and is disabled on
OpenGL ES 2.0.
Reviewed-by: Samuel
|
|
|
|
| |
This reverts commit 1b34feacef7a2d3ac005449a7cfbcb08a6bbf947.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There's no reason to stop using a scissor clip when a more complex clip
is set. Instead, we can use a combination of scissoring and depth
clipping to represent the final clip. When intersecting with a new clip
path, if the clip path is a rectangle we simply intersect it against the
scissor clip, and otherwise we intersect its bounding rect against the
scissor clip and write the actual path to the depth buffer.
The patch simplifies the logic in clip() quite a bit, except in the
UniteClip case in which we don't care about performance anyways.
It also fixes a bug which could cause rendering errors if the stencil
buffer contains junk before painting.
Reviewed-by: Gunnar Sletta
|
|
|
|
|
|
|
| |
The antialiasing is currently not gamma corrected and is disabled on
OpenGL ES 2.0.
Reviewed-by: Samuel
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
| |
The original code was performing 40 floating-point multiplications,
40 additions, and 2 divisions every time the matrix was changed.
Because most of the components in the orthographic projection matrix
are trivial, we can implement the same transformation with only
6 multiplications, 6 additions, and 2 divisions.
Reviewed-by: Sarah Smith
|
|
|
|
|
|
|
| |
Since copyBackFromRenderFbo() manually changes the framebuffer object
binding, we also need to update the context's current_fbo member.
Reviewed-by: Kim
|
|\ |
|
| |\
| | |
| | |
| | |
| | | |
Conflicts:
tests/auto/qtwidgets/tst_qtwidgets.cpp
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
When you link cross-compiled applications on Linux, the linker needs to
be able to find not just the libraries the application links against
(like libQtGui.so), but the libraries' dependencies. E.g.
examples/widgets/wiggly links against QtGui. QtGui links against
libEGL.so. Therefore, when you link wiggly, the linker has to be able to
find libEGL.so, even though wiggly doesn't use EGL directly.
To facilitate this, -Wl,rpath-link=/path/to/egl needs to be added to
QMAKE_PRL_LIBS in libQtGui.prl and -Wl,rpath-link=/path/to/gl needs to
be added to QMAKE_PRL_LIBS in libQtOpenGL.prl. This only needs to be
done when the EGL/GL libs are not in the default search directories. As
the paths will also change depending on the mkspec, two new variables
have been added: QMAKE_LFLAGS_EGL & QMAKE_LFLAGS_OPENGL. These can be
set in the mkspec and will be added to the relevent prls. E.g.
QMAKE_LFLAGS_EGL += -Wl,-rpath-link=$${QMAKE_LIBDIR_EGL}
QMAKE_LFLAGS_OPENGL += -Wl,-rpath-link=$${QMAKE_LIBDIR_OPENGL}
Reviewed-by: Marius Storm-Olsen
|
| |/
|/|
| |
| | |
Reviewed-by: Samuel
|
| | |
|
|/
|
|
|
|
| |
Breaks the GL2 paint engine on X11 and OpenGL/ES 2.0.
This reverts commit b8ff02a67ebd8246253823b53cfed98eef400547.
|
|
|
|
| |
Reviewed-by: Trustme
|
|
|
|
|
|
| |
The antialiasing is currently not gamma corrected.
Reviewed-by: Samuel
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Engine-specific pixmap filters were being created, used, and destroyed
every time draw() was called on QPixmapColorizeFilter, QPixmapBlurFilter,
and so on. This had a heavy performance penalty and made it difficult
for the GL paint engine to cache shaders from one request to the next.
A generic filter can request an engine-specific filter that matches its
parameters. The engine can either create a new one or return a previously
allocated filter object.
Ownership of engine-specific pixmap filter objects is moved to the
paint engine itself.
Reviewed-by: Andrew den Exter
Reviewed-by: Michael Brasser
Reviewed-by: Michael Goddard
Reviewed-by: Sarah Smith
|
| |
| |
| |
| | |
Reviewed-by: trustme
|
| |
| |
| |
| |
| |
| | |
The code does not use QGLShader directly any more.
Reviewed-by: trustme
|
| |
| |
| |
| |
| |
| |
| | |
The defines are GL_MODELVIEW/GL_PROJECTION, not GL_MODELVIEW_MATRIX/etc.
The _MATRIX defines are for fetching the matrix, not setting it.
Reviewed-by: trustme
|