| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Since the paint engine now transforms the prerendered glyphs instead of
rendering transformed glyphs as paths, we need to turn on texture
filtering to avoid antialiasing artifacts. In order to do this, we also
need to pad the glyphs in the glyph cache, otherwise you will get
artifacts when sampling the area around the glyph's bounding rect (where
there might be other glyphs.) This done by adding a glyphPadding()
function to the cache which returns the number of pixels to pad between
each glyph.
Updated: This also fixes a general issue where some combinations of font
sizes and transformations will cause the engine to sample neighbouring
glyphs, so this has been backported to Qt 4.6.x.
Task-number: QTBUG-9706, QTBUG-11028
Reviewed-by: Tom
Conflicts:
src/gui/painting/qtextureglyphcache.cpp
src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
|
|
|
|
|
|
|
|
|
| |
If you forward declare a shader function which takes a sampler as
argument, the shader program will fail to link on ATI cards under
Windows.
Task-number: QTBUG-10510
Reviewed-by: Trond
|
|
|
|
|
|
|
|
|
| |
In the case where a polygon or polyline that contains consequtive equal
points, we end up calculating an invalid normal vector for the joins.
This fix skips past duplicate consequtive points.
Task-number: QTBUG-9548
Reviewed-by: Kim
|
|
|
|
|
|
|
| |
The patterns all got the same cache key (e.g. 1), which caused the
patterns to be uploaded as a texture every single time they were used.
Reviewed-by: Kim
|
|
|
|
|
|
|
|
|
| |
Apparently the driver does some optimization which causes it to behave
erratically when stencil testing is enabled. Multiplying the return
value from the texture lookup by 1.0 disables the optimization.
Task-number: QTBUG-8753
Reviewed-by: Trond
|
|
|
|
|
|
|
|
|
| |
The global destructor for the clean up hooks might be called before the
global destructor for QPixmap objects. We shouldn't leave pixmaps
around that is destroyed after the QApplication destructor is called.
Task-number: QTBUG-8681
Reviewed-by: Tom Cooksey
|
|
|
|
| |
Reviewed-by: hjk
|
|
|
|
|
|
| |
Got rid of an ugly switch statement.
Reviewed-by: Tom
|
|
|
|
| |
Reviewed-by: Trond
|
|
|
|
|
|
|
|
|
|
| |
Subpixel antialiased text does not look good on translucent
surfaces, so turn it off if the surface the text is rendered on
has an alpha channel. This makes change
eb84acd899aee992f5631ee0b9c0d992c8fbbd5a redundant.
Task-number: QTBUG-7190
Reviewed-by: Gunnar
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
4.6-integration
* '4.6' of scm.dev.nokia.troll.no:qt/oslo-staging-2: (29 commits)
Compiler warning in QAbstractSlider.
Optimize QPathClipper::pathToRect.
QGraphicsScene: Use QPainter::setClipRect instead of setClipPath if possible.
QStyleSheetStyle: Fix combinaison of border-image and border-radius
Revert "QAbstractScrollArea: Wheel over a scrollarea that has only one horizontal scrollbar"
Proper Fav icon is not shown, for all the links default fav icon shown
Update changes-4.6.2.
Make DSFLIP_ONSYNC part of the default flip flags.
Fixed a failure in tst_qgl.
4.6.2 changes
Avoids a possible crash when saving the state of a main window
Implemented QGifHandler::imageCount().
Fixed compilation of the GL2 engine for OpenGL ES 2.
fix whitespace
Document that QModelIndex::child does not work for the root item
Fixed missing textures in the boxes demo.
Fix QTBUG_7714_fullUpdateDiscardingOpacityUpdate2 autotest in qws-linux
Assert failure when setting a widget focus proxy as its successor in tab order
Fixed garbled 3D Qt logo in the overpainting example.
fix crash in Phonon::DS9 backend
...
|
| |
| |
| |
| |
| |
| | |
glColor4f is not defined in OpenGL ES 2.
Reviewed-by: Trond
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The boxes demo assumed that the current GL colour was the default white,
but the GL2 paint engine set it to black. Fixed by resetting the colour
to white in resetGLState().
Task-number: QTBUG-7779
Reviewed-by: Trond
|
| |
| |
| |
| |
| |
| |
| |
| | |
Disable vertex attribute arrays in the GL2 paint engine when
calling QPainter::beginNativePainting() and QPainter::end().
Task-number: QTBUG-7781
Reviewed-by: Trond
|
|/ |
|
|
|
|
|
|
|
|
| |
Need to bind the PMV matrix's attributes to their indexes in the
simple shader, which is created in a seperate code path to all the
other shaders. This should fix the qgl autotest failures.
Reviewed-By: TrustMe
|
|
|
|
|
|
| |
This makes GLSL dumps _significantly_ easier to read.
Reviewed-By: TrustMe
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This has several advantages: First, updating an attribute value
seems to be cheaper than updating a uniform. Second, vertex atribute
values are independent of shader program, which means they persist
across changing of the shader program. This makes code simpler and
reduces GL state changes. Note: Credit goes to Samuel for finding
this little gem. :-)
For the 25920 solid QGraphicsRectItem test case, this gives 10%
improvement on desktop and 27% on the SGX.
Reviewed-By: Kim
|
|
|
|
| |
Reviewed-By: Samuel
|
|
|
|
| |
Reviewed-by: Trust Me
|
|
|
|
|
|
|
|
| |
We need to clobber the vertex attribute pointers _before_ we call
setState() to regenerate the clip, or we'll use invalid vertex
pointers when writing the clip.
Reviewed-by: Paul
|
|\
| |
| |
| |
| | |
Conflicts:
dist/changes-4.6.1
|
| |\
| | |
| | |
| | |
| | | |
Conflicts:
src/multimedia/audio/qaudioformat.cpp
|
| |\ \
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
4.6-integration
* '4.6' of scm.dev.nokia.troll.no:qt/oslo-staging-1:
QIODevice: Fix readAll()
Temporary hackiesh solution to prevent BOM in the xml data.
Fixed qxmlstream autotest when using shadow builds.
Attempt at readding the capital P headers for Phonon
Remove special Phonon processing from syncqt.
Use the lowercase/shortname.h headers for Phonon includes
Fixes a crash when setting focus on a widget with a focus proxy.
Update copyright year to 2010
doc: Clarified activeSubControls and subControls.
Remove warning "statement with no effect"
doc: Clarified that .lnk files are System files on Windows.
|
| | | |
| | | |
| | | |
| | | | |
Reviewed-by: Trust Me
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Fixed bug where drawing subpixel antialiased glyphs on a
translucent surface would cause all the pixels in the glyphs'
bounding box to become opaque.
Task-number: QTBUG-7190
Reviewed-by: Trond
|
| |_|/
|/| |
| | |
| | |
| | |
| | |
| | |
| | | |
This removes a lot of unnecessary GL state changes resulting in an
18% performance boost on desktop and 5% on SGX for the 25920 3x3
solid rectangle test case.
Reviewed-By: Samuel
|
|/ /
| |
| |
| |
| | |
Task-number: QTBUG-7203
Reviewed-by: Samuel
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
We don't add new public methods in patch releases.
This reverts commit 2b4d3391fd922dfc5ac28815bbd5f36c4041b658.
This patch also fixes the paint engine to use glUniformMatrix3fv
directly now it has been removed from 4.6. It is a 3 line change.
Reviewed-By: Samuel
|
| | |
|
| |
| |
| |
| | |
Reviewed-By: Samuel
|
| |
| |
| |
| |
| | |
Task-number: QT-2600
Reviewed-by: Samuel
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When we're rendering text, the glyphs need to be aligned to the
pixel grid otherwise we get strange artifacts. Normally text is
drawn at integer coordinates, however it is still possible to
have a transform which translates by a non-integer offset. This
patch adds a flag to the engine which can be used to snap any
translate to the pixel grid.
Task-number: QTBUG-7094
Reviewed-By: Kim
|
| |
| |
| |
| | |
Reviewed-By: Trustme
|
| |
| |
| |
| |
| | |
Merge-request: 412
Reviewed-by: Tom Cooksey <thomas.cooksey@nokia.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Fall back and use the GL 1 engine for the renderText() functions.
Getting it to work with the GL 2 engine is a futile effort.
Making it work with renderPixmap() in the GL 2 engine is not possible
at all, since software contexts in general do not support shader
programs.
Task-number: QTBUG-5002, QTBUG-6931
Reviewed-by: Kim
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Now that the shader manager takes care of enabling/disabling the
vertex attribute arrays for us, the GL2 paint engine doesn't have
to do it. This reduces GL state changes within the paint engine
and provides significant performance improvements. For a given test
case (25,000 3x3px solid rects), the improvement is 67% on desktop
(nVidia) and 9% on embedded (SGX).
Reviewed-By: Kim
|
|/
|
|
|
|
|
|
|
|
|
|
|
| |
The GL2 engine (and probably Qt/3D) needs to track which vertex
attribute arrays are currently enabled and which are disabled. As
this is per-context state, the logical place to track this is in the
context and not in the paint engine.
This patch also makes the GL2 engine's shader manager enable/disable
the appropriate attribute arrays for a given shader program when it
is used.
Reviewed-By: Kim
|
|
|
|
|
|
|
| |
This change is in response to the review for b063135, but was missed
from that patch.
Reviewed-By: Kim
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Move most of drawPixmaps to private
* Move most of stroke to private
* Remove dead code: context()
* Make optimiseForBrushTransform use xform type
* Use GLuint for uniform location
* Rename lastTexture -> lastTextureUsed
* Move qopengl2paintengine_cleanup_vectorpath to private
* Re-ordered declarations in header
* Remove dead temporaryTransform
* Rename use_system_clip -> useSystemClip
Reviewed-By: Kim
|
|
|
|
|
|
|
|
|
|
|
| |
The old code set and unset a temporary matrix for every draw command
when doing aliased rendering. Instead, we just use a flag to indicate
that updateMatrix() should add the offset. This means the offset is
added only once. When doing lots of small rendering operations on a
(non-multisampled) QGLWidget, this gives up to 72% performance boost
on the SGX.
Reviewed-By: Kim
|
|
|
|
|
|
|
|
|
|
|
| |
If you draw with a brush, then draw a pixmap, then draw with the
same brush, the GL2 engine wouldn't update the fragment shader to
use the brush. This is because it detected the brush hadn't changed
and so didn't need updating. To fix this, we now set the current
brush to noBrush when drawing an image/pixmap so the engine knows
it needs to update the GL state for the brush.
Reviewed-By: Kim
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
QGraphicsView based applications will set a new transform for every
item before it's painted. This leads to lots of updates to the PMV
matrix. So switching to a 3x3 rather than a 4x4 gives us less data
to pass to GL for each QGraphicsItem which gets rendered. It also
means the vertex shader is more efficient. However, this patch only
gives a maximum 2.5% speed improvement on the SGX, which seems to be
only due to the faster vertex shader rather than the reduced amount
of data we pass to GL.
Reviewed-By: Kim
|
|
|
|
|
|
|
| |
The shader manager will now a) not seg-fault and b) actually tell you
which shader has the error.
Reviewed-By: Kim
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In the triangulating stroker, the last point was being duplicated in
dashed paths. But because QDataBuffer::add() takes a ref to a float
rather than a float, it would resize the data buffer and then try to
fetch the values out of a pointer to the original buffer memory.
This change copies the values into temporary variables before
resizing the array.
Task-number: QTBUG-6045
Reviewed-by: Sarah Smith
|
|
|
|
|
|
|
|
| |
If the same brush is used over and over again, this gives a
huge performance boost (measured to be 25% faster on desktop
and 73% faster on SGX).
Reviewed-By: Samuel Rødal
|
|
|
|
|
|
|
|
|
| |
Do the blur in half the resolution in software and then upload the
result as a texture and smooth-scale it on the GPU. This leads to stable
and decent performance regardless of the blur radius, and simplifies the
implementation quite a bit.
Reviewed-by: Bjørn Erik Nilsen
|
|
|
|
| |
Reviewed-by: Eskil
|
|
|
|
| |
Reviewed-by: Eskil
|
|
|
|
|
| |
Reviewed-by: Trond
Reviewed-by: Tom
|