Version 32 (modified by, 11 years ago) (diff)


Backlog of Qt and QtWebKit problems

Qt problems

DescriptionBranchCreated onLanded inLanded Date
ARM optimized qdrawhelper is only enabled for RCVT (symbian) A pure armv4/C implementation was used giving a significant improvement too. The ARMv4 memfill implementation gave about a 1fps improvement. What is left is ARM neon code for the porter duff operations
The C version comp_func_SourceOver was improved giving a 10fps improvement on the test case.arm-asm-changes09.11.2009
ARMv6 should be auto detected. Currently arm/armv6 can be passed as -embedded options. The benefit of ARMv6 in src/corelib is the use of atomic load and exchange, instead of the old "swap" extension. __ARCH_ARM_6__ should be used to detect it. The first part of ARM detection was donearm-asm-changes9.11.2009
Enabled pld (preload) in qdrawhelper for ARMv5te and upwards -- For GNU CC the arm revision is detected automatically and this gave a 1fps improvement.arm-asm-tweaks9.11.2009
Optimize scrolling of Windowsurfaces. Either optimize memcpy/memmove or consider using a tile based window surface
QImageReader deserves some optimatations. E.g. decode to the QImage provided to the decoder, do not parse every gif when trying to determine the size.image-changes
Cut down on usage of QImage::scanLine inside Qt. This was already done in the GIF and PNG decoder.image-changes 19.10.2009
Make QGifHandler::imageCount scan through the images. This can give a 5% speedup in the image_cycling reduction.
Make picking a QImageIOHandler in QImageReader faster. Currently even the TIFF plugin is asked to handle images.
Consider creating a tile based QImage to allocate image chunks from an image pool with fixed size images
Bring zero-copy to QIODevice... big one. That is good for networking and image decoding.
Consider creating a SharedBuffer that works on tiles/segments
Changes to QHttpNetworkReply to reduce memory reallocations. Reserve some bytes instead of doing QByteArray::append all them time.
Changes to QNetworkReply to remove quadratic runtime in QNetworkReplyHandler and latency fixesnetwork-changes 19.10.2009 API addition
Cut down on the usage of QUrl::toEncoded as it shows up in the profile of starting jobs.
QBENCHMARK results are hard to analyze and compare. We need a single and simple way to say if something is faster or slower. Be a bit like sunpsider, do the same math as well, mention slowest and fastest run.
The qttracereplay utility should decode a frame at a time to not run out of memory on embedded devices.
The qttracereplac utility should take a -iterations options like known from QBENCHMARK

QtWebKit problems

Loading of is triggering bad "scheduling". The loading_standalone test has been extracted but is not able to highlight the problem. This is a Qt and QtWebKit issue, it must be understood first.
TCmalloc needs to be tested. Does it make anything faster/slower? How to test memory fragmentation.
The fuzz testing will make QtWebKit go in infinite loops and stop working. This situation needs to be analyzed as this can be a serve reliabality problem.
#30211Research a better QImage -> QPixmap migration strategy. Currently we convert every QImage to a QPixmap and this is bad for times where we need to draw a scaled version of the image or will only draw this image once.
#30293Loading speed regressed due image changes?
#30301Loading bug/API bug on loading amazon in QtEmbedded Linux. Loading does not complete.
#29279Decode images to RGB16 or smaller (instead of RGB32) to conserve memory. The patch introduces new API to Qt.
Go through the Palm changes and consider adopting them. Currently candidates are: Use stack/class memory in CSSParser, use JDCT_Fast for Jpeg decoding (to be achieved with QImageReader to set quality to 49), changes to Cached* to throw away encoded data more early. Palm avoids floating point operation on premultiplied alpha in setRGBA.
#30740Using QImageReader::setQuality(49) will use JDCT_IFAST and promises to give a 5% speedup on image_cycling.
#30210Create Embedded profile that will tune for embedded usage. This can mean to save memory in favor of speed, add a speed gain by avoiding certain operations, trading image quality for speed
#29443Using WebCore's FontCache decreases memory usage. Change done by Benjamin Poulain
#31009Implement throwing away frames from big GIF animations. This requires QImageReader allow to efficently jumping to a given image.
Change CursorQt.cpp to not create QPixmap's right away but only on first load. This will be a minor memory improvement. Using DEFINE_LOCAL_STATIC had a negative impact on memory usage.
#27538Image decoder changes needs to be measured. Do they make anything faster/slower? Do they consume more or less memory?49179 49180 49181 49182 49183 49185 49186 495596.10.2009-14.10.2009
#30769Export fastMalloc, fastCalloc, fastRealloc and fastFree on GCC/Unix50204 5020528.10.2009
Misc Changes
#30209Document a feature of the m_liveDecderResources list5021328.10.2009
#27347Fix assertion in SVGRenderBase::mapLocalToContainer5020728.10.2009
#30820Custom Cursor doesn't use hotspot5020628.10.2009


An item that is strokethrough means it was completed and no further work needs to be done. An item is considered completed when the related bug report is closed, all patches has been landed to WebKit or Qt and links to the commits and the date of the landing is entered to the table.
For Qt patches the branch is pointing to a branch that needs to be merged into the Qt source tree. The branch has a specific topic and all patches of this branch are meant to be merged there. The patches are backed with performance tests and the Qt regression test suite was fully or partially executed on them.
Landed in
Landed in should point to the git commit/commits when the branch has been merged into the Qt main repository. After this has happened and no regressions are found the item is considered completed.
Commit refers to a commit into the WebKit svn repository. Only after changes have landed in the repository the change is considered to be completed.