| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
The shader manager needs to be recreated since the context it was
created with might not be valid any more.
Reviewed-by: Kim
|
|
|
|
|
|
|
|
| |
QGraphicsView can set the system clip in order to handle clipping
of QGraphicsView children, and we have to take that into account
in the GL 2 engine, as we did in the GL 1 engine.
Reviewed-by: Samuel
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
| |
It's very likely that some of the shader objects in required program
will be null, as not all are manditory. Check to see if they exist
before de-referencing them and asking for their log string.
Reviewed-by: Trustme
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Before this patch we were only able to do 20 or so IntersectClips before
failing, this patch instead adapts to the fixed point nature of typical
depth buffer implementations and lets us do ~2^15 IntersectClip
operations before failing, which should be a reasonable limit for any
real-world application.
Using the following mapping of old floating point depths to integer
depths:
-1.0 -> 0, -0.5 -> 1,
0.0 -> 2, 0.25 -> 3,
0.5 -> 4, 0.625 -> 5,
etc..
Reviewed-by: Tom
|
|
|
|
|
|
|
| |
Blending should not be enabled when copying the font cache texture
into the fbo. It *may* cause artifacts with some drivers.
Reviewed-by: Samuel
|
|
|
|
| |
Reviewed-by: Trust Me
|
|
|
|
|
|
|
| |
QGL2PaintEngineExPrivate::drawTexture() texture coordinates have been
inverted, so they need to be inverted here too.
Reviewed-by: Kim
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The bounding box was not updated for moveTo-commands except the first
one. Therefore, the calculated bounding box could be too small for
paths with more than one subpath, and when the stencil method was used,
parts of the path would not be filled.
Task-number: 245803
Reviewed-by: Samuel
|
| |
| |
| |
| | |
Reviewed-by: Trond
|
|\ \
| | |
| | |
| | |
| | |
| | | |
Conflicts:
src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This makes mixing GL and QPainter code safer. We need to be able to
assume default GL state in begin(), and set back whatever we change to
the default state in end() in the GL 2 paint engine.
Reviewed-by: Trond
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Only use bilinear filtering when SmoothPixmapTransform render hint is
used.
Reviewed-by: Kim
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The recommended specifiers are lowp for colors / normal vectors, mediump
for texture coordinates when a limited range is sufficient, and highp
for generic texture coordinates and vertex coordinates / transformation
matrices.
We used to use mediump for texture coordinate in some places, but
since we don't control the texturing scenarios we need to handle the
worst case, which is zooming in on part of a large texture (2048x2048)
with bilinear filtering. To properly handle this case without color
banding mediump is probably not sufficient, so we'll use highp for
texture coordinates.
Reviewed-by: Tom
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Previously we were using QPaintEngine::syncState() which is not ideal
naming-wise, since it actually prepares for native painting instead of
syncing the painter's state to native state.
Reviewed-by: Trond
|
| | |
| | |
| | |
| | |
| | |
| | | |
The precision specifiers need to be there on OpenGL ES 2.0.
Reviewed-by: Tom
|
|/ /
| |
| |
| |
| |
| |
| | |
and y-axis inversion and overall less conversion, making significantly faster
for plain usecases
Reviewed-by: Trond
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
QVectorPath::hints() is not a strict bit field, and thus can not be
anded with RectangleHint. Instead, QVectorPath::shape() should be
directly compared with RectangleHint to check if the vector path is a
rectangle or not. In this case the first four points of a regular
painter path were treated as a rectangle with dire consequences.
Reviewed-by: Tom
|
| |
| |
| |
| | |
Reviewed-by: Tom
|
| |
| |
| |
| | |
Reviewed-by: Trust Me
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
QGLContextPrivate::bindTextureFromNativePixmap() needs to abort if it's
not allowed to return a y-inverted texture.
Reviewed-by: Trustme
|
|\ \
| | |
| | |
| | |
| | |
| | |
| | | |
Conflicts:
src/gui/graphicsview/qgraphicsitem.cpp
src/gui/kernel/qwidget.cpp
src/gui/kernel/qwidget_p.h
|
| |\ \
| | | |
| | | |
| | | |
| | | | |
Conflicts:
src/gui/graphicsview/graphicsview.pri
|
| |\ \ \
| | | | |
| | | | |
| | | | |
| | | | | |
Conflicts:
src/gui/graphicsview/qgraphicsitem_p.h
|
| |\ \ \ \ |
|
| |\ \ \ \ \
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Conflicts:
src/gui/graphicsview/graphicsview.pri
src/gui/graphicsview/qgraphicsitem.cpp
src/gui/graphicsview/qgraphicsitem.h
src/gui/graphicsview/qgraphicsitem_p.h
src/gui/graphicsview/qgraphicsscene.cpp
tests/auto/auto.pro
|
| | | | | | | |
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
This brings performance back up to where it was pre-merge.
|
| |\ \ \ \ \ \
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
Conflicts:
src/opengl/gl2paintengineex/qglengineshadermanager.cpp
src/opengl/gl2paintengineex/qglengineshadermanager_p.h
src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h
Merge custom shader / GL blur pixmap filter implementation from graphics
team repo with implementation from kinetic graphics-team repo.
|
| | | | | | | | |
|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
Ensures that the programs are evicted from the cache when the shaders
are destroyed.
|
| | | | | | | | |
|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
Works just like drawImage / drawPixmap but uses the given texture id.
|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
This will make it easier to implement pixmap filters, YUV->RGB
conversions, etc in other parts of Qt.
|
| | | | | | | | |
|
| | | | | | | | |
|
| | | | | | | | |
|
| | | | | | | | |
|
| | | | | | | | |
|
|\ \ \ \ \ \ \ \
| | |_|_|_|_|/ /
| |/| | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
Conflicts:
examples/painting/svgviewer/files/bubbles.svg
src/corelib/kernel/qobject.cpp
src/network/kernel/qhostinfo.cpp
tests/auto/qhostinfo/tst_qhostinfo.cpp
|
| | |_|_|_|/ /
| |/| | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
GL 2 engine on embedded.
Worked in release because we don't really use any internals in QDataBuffer
that sets the internal size correctly.
Reviewed-by: Samuel
|
|\ \ \ \ \ \ \
| |/ / / / / /
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
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
|