| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
demos/demos.pro
mkspecs/features/resources.prf
mkspecs/features/uic.prf
src/corelib/io/qurl.cpp
src/corelib/tools/qlocale_symbian.cpp
src/gui/graphicsview/qgraphicsscene.cpp
src/gui/graphicsview/qgraphicswidget_p.cpp
src/gui/graphicsview/qgraphicswidget_p.h
src/gui/util/qsystemtrayicon_win.cpp
src/multimedia/audio/qaudioinput.cpp
tests/auto/qhostinfo/qhostinfo.pro
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When drawing text using glyphs, the shader manager will select the
"MaskFragmentShader" which requires a varying called "textureCoords"
which is used to sample the glyph from the glyph texture. That's
fine, except when you try to use one of the pattern brushes or a
texture brush, because the src pixel fragment shader snippets for
those brushes also sample from a texture (the brush texture) and name
the verying they use "textureCoords" too. This led to textureCoords
being defined twice, which in turn caused a shader compile error
which then casued the seg-fault. This patch simply renames the
varying used to pass the coordinates for the brush texture so it
doesn't conflict.
Reviewed-By: Kim
Task-Number: QTBUG-9522
|
|/
|
|
|
|
|
|
|
|
| |
When drawing text, the vertex count will most likely be so high that
using a uniform-based, simpler vertex shader is faster. We implement
the ability to inform the shader manager that the geometry is considered
complex, so that it can choose the simpler vertex shader in these cases.
Task-number: QT-2887
Reviewed-by: tom
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Use ExpandToTransparentBorderPadMode since we can use GL_CLAMP_TO_EDGE
to clamp to the texture.
* Shrink the bounding rects reported by the blur
and drop shadow filters (expanding by 2 * radius isn't needed).
* Use a single-pass blur for radii <= 3 to avoid the overhead of
rendering to an FBO.
* Made the fast blur setting generate filters for only a predefined set
of radii, and then use the actual blur radius to spread the sample
points outwards.
* Optimized the generated program to rely less on temporary variables,
as those seemed to not be handled very well by certain GLSL compilers.
Reviewed-by: Gunnar Sletta
|
|
|
|
|
| |
Task-number: QTBUG-2222
Reviewed-by: Gunnar
|
|
|
|
|
|
|
|
|
| |
This is internal API.
It's possible to specify a horizontal and vertical scale, rotation,
opacity and source rectangle for each pixmap item.
Useful for particle effects.
Reviewed-by: Trond
|
|
|
|
|
|
|
| |
The antialiasing is currently not gamma corrected and is disabled on
OpenGL ES 2.0.
Reviewed-by: Samuel
|
|
|
|
| |
This reverts commit 1b34feacef7a2d3ac005449a7cfbcb08a6bbf947.
|
|
|
|
|
|
|
| |
The antialiasing is currently not gamma corrected and is disabled on
OpenGL ES 2.0.
Reviewed-by: Samuel
|
|
|
|
|
|
| |
Breaks the GL2 paint engine on X11 and OpenGL/ES 2.0.
This reverts commit b8ff02a67ebd8246253823b53cfed98eef400547.
|
|
|
|
|
|
| |
The antialiasing is currently not gamma corrected.
Reviewed-by: Samuel
|
|
|
|
|
|
|
|
|
| |
OpenGL ES does not support GL_REPEAT wrap modes for NPOT textures. So
instead, we emulate GL_REPEAT by only taking the fractional part of the
texture coords in the fragment shader.
Task-number: 260982
Reviewed-by: Samuel
|
|
|
|
| |
Reviewed-by: Trust Me
|
|
|
|
| |
Reviewed-by: Trust Me
|
|
|
|
| |
Reviewed-by: Trond
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
The precision specifiers need to be there on OpenGL ES 2.0.
Reviewed-by: Tom
|
|\
| |
| |
| |
| | |
Conflicts:
src/gui/graphicsview/qgraphicsitem_p.h
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Some GL ES 2 implementations seem to have problems with
glCopyTexSubImage2D(), so we fall back and read the old font texture
into system memory and re-upload the new font texture.
Also, the precision used for texture coordinates in the fragment
programs wasn't high enough, which could lead to rendering artifacts.
Reviewed-by: Samuel
|
|\ \
| |/ |
|
| |
| |
| |
| | |
Reviewed-by: Trust Me
|
|/
|
|
|
| |
This will make it easier to implement pixmap filters, YUV->RGB
conversions, etc in other parts of Qt.
|
|
|
|
|
|
|
|
|
|
|
| |
The gl_Position x, y, and z coordinates are always divided by the
homogenuous w coordinate to yield the final coordinates. Since we want
the depth to be constant for the whole item we need to premultiply it by
the w-coordinate. We can do this in the main() function in the vertex
programs since all the vertex programs use the depth uniform, thus
simplifying the programs a bit.
Reviewed-by: Trond
|
|
|
|
| |
Reviewed-by: Trust Me
|
|
|
|
|
|
|
|
|
| |
The pen color should be used when drawPixmap is called with a bitmap,
and the brush color should be used for texture patterns that are
bitmaps.
Task-number: 245802
Reviewed-by: Trond
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Use the stencil method to draw clip paths and regions to the Z-buffer
instead of using glClear / glScissor. Using different depth values for
the various clip parts also makes restore() very cheap when only
IntersectClip is used.
As an additional bonus this patch gives antialiased clip in the GL 2
paint engine.
Task-number: 254658
Reviewed-by: Trond
|
|
|
|
|
|
|
|
|
| |
Now there's only a copy of the texture glyph cache in graphics memory,
avoiding the system memory copy that we used earlier. In addition the
texture will use the GL_ALPHA texture format when possible, making it
consume less graphics memory as well.
Reviewed-by: Tom
|
| |
|
|
|
|
| |
I.e. After composition, not before.
|
|
|
|
|
| |
- But now it can handle non-solid-color pens, the whole reason for
the refactor in the first place.
|
|
|
|
|
|
|
|
| |
Rename inputVertex -> vertexCoordsArray to be more consistent with other
vertex attribute array naming conventions.
SimpleVertexShader has also been replaced with a combination of
MainVertexShader & PositionOnlyVertexShader, so can be killed.
|
| |
|
|
|
|
|
|
| |
- atan2 is just called atan in GLSL (which supports overloads)
- varyings can't be modified in fragment shaders
- #defines need to be on their own line
|
|
|
|
|
|
| |
If you see shocking pink in the rendering output, it's probably because
the "simple" shader is in use but color writes have somehow been
enabled. :-)
|
|
|
|
| |
Reviewed-by: Samuel Rødal
|
|
|