PDA

View Full Version : 2009.1 to 2009.2 introduced a display rendering issue?



kingsqueak
24th April 2009, 22:11
I'm working on a project. http://code.google.com/p/qssdrcode/

This is the trunk that I'm talking about if anyone wants to pull it down and build it and see. You'll have to click on "CH1" to see what I mean and right-click and enable a few of the t-menu or r-menu and other options to bring up the frequency readout and other things that are affected.

http://code.google.com/p/qssdrcode/source/browse/#svn/trunk/qs-gui/qs-gui-cpp-qt/SDRMAX3

Switching from 2009.1 to 2009.2 of Qt 4.5 has introduced an issue that as best as I can describe it, causes a pixellation or distortion of fine fonts and other details in the OpenGL portion of the interface. This has been verified on Windows and multiple Ubuntu based platforms using a bunch of different hardware.

I'm far from an expert developer, I've just been hacking along on someone else's base so I'm sorry that I don't have much more detailed information, but it really doesn't appear to be a code issue, it's some sort of underlying rendering issue from what I can see.

2009.1 builds sharp as a tack, no issues, so at least I kept that around.

Anyone else seeing this?

kingsqueak
24th April 2009, 22:20
Picture is worth a thousand words.

Here is the good build using qtsdk-2009.1

http://www.kingsqueak.org/stuff/good.png

Here is the identical code tree, but built using qtsdk-2009.2

http://www.kingsqueak.org/stuff/bad.png

That isn't any image compression difference, that's how it looks.

wysota
24th April 2009, 22:33
If they both use Qt 4.5.0 then the version of the bundle should not really matter. If the second one uses Qt 4.5.1 then this might matter although to me it seems you are experiencing normal scaling artifacts, especially if you use OpenGL which is known to be not pixel-perfect. Without looking at the code I can't verify it but then this code is probably too complicated to have a short glimpse at it and see the problem. If you want us to verify it, please isolate the problem and prepare a minimal compilable example reproducing it.

kingsqueak
24th April 2009, 23:58
They are both using 4.5 recently downloaded from the main trolltech download for 4.5, one says qtsdk-2009.1. That's the one that works that I downloaded a few weeks ago. The other says qtsdk-2009.2 that I downloaded when someone pointed out that there had been a revision.

Absolutely no change in my code base at all, just building it with different patch revisions of the sdk.

Scaling if I take the one built with 2009.1 and drag it into all different shapes is no trouble at all. The one built with 2009.2 is 'corrupted' looking no matter what geometry I drag it into. This happens cross platforms and cross video hardware as well.

Both of those screen shots were built cleanly a few minutes apart from each other, just switching between the sdks to build them with of course a clean all and setting the default Qt in qtcreator to use the right default Qt for the build.

I'm not alone with this either, several other people on the project have built it on several platforms, varying linuxes, Windows and differing hardware and had the same results.

If anyone has any pointers to where to look for known syntax changes between the 2009.1 and 2009.2 revisions it would help as I really don't know a lot about the code. I figured it would just be a patch increment with such a minor revision change.

wysota
25th April 2009, 06:59
Could you run qmake -v from both of the sdk installations and present the results here?

kingsqueak
25th April 2009, 17:24
O.k. so Murphy's law struck today...the system I'm on today, it builds and works cleanly.

QMake version 2.01a
Using Qt version 4.5.0 in /opt/qtsdk-2009.01/qt/lib

QMake version 2.01a
Using Qt version 4.5.1 in /opt/qtsdk-2009.02/qt/lib

Interesting so it is indeed 4.5.1 for the 2009.2 version, odd that it isn't shown on the main trolltech download page that way.

O.k. so what I'll do when I get access to the system that is having the issue is post the NVidia driver info (it's a 169.x driver for sure, I forget the series) and an ldd output on both of the binaries that were built.

The other system has an NVidia laptop driver/chipset, this sytem I'm on today is using a 9400GT with the 180 driver.

Thank you for persisting with this.


ldd output from the system that is working today

The 4.5.0 binary

linux-gate.so.1 => (0xb7f88000)
libQtOpenGL.so.4 => /opt/qtsdk-2009.01/qt/lib/libQtOpenGL.so.4 (0xb7ee3000)
libQtGui.so.4 => /opt/qtsdk-2009.01/qt/lib/libQtGui.so.4 (0xb74dc000)
libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0xb744d000)
libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0 (0xb740f000)
libSM.so.6 => /usr/lib/libSM.so.6 (0xb7406000)
libICE.so.6 => /usr/lib/libICE.so.6 (0xb73ee000)
libXrender.so.1 => /usr/lib/libXrender.so.1 (0xb73e4000)
libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0xb73b7000)
libXext.so.6 => /usr/lib/libXext.so.6 (0xb73a7000)
libX11.so.6 => /usr/lib/libX11.so.6 (0xb72b8000)
libQtNetwork.so.4 => /opt/qtsdk-2009.01/qt/lib/libQtNetwork.so.4 (0xb719e000)
libQtCore.so.4 => /opt/qtsdk-2009.01/qt/lib/libQtCore.so.4 (0xb6f4b000)
libgthread-2.0.so.0 => /usr/lib/libgthread-2.0.so.0 (0xb6f45000)
librt.so.1 => /lib/tls/i686/cmov/librt.so.1 (0xb6f3b000)
libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0xb6e84000)
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb6e80000)
libGLU.so.1 => /usr/lib/libGLU.so.1 (0xb6e0f000)
libGL.so.1 => /usr/lib/libGL.so.1 (0xb6d55000)
libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb6d3c000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb6c4d000)
libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0xb6c27000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb6c18000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb6aba000)
libz.so.1 => /usr/lib/libz.so.1 (0xb6aa4000)
libexpat.so.1 => /usr/lib/libexpat.so.1 (0xb6a7d000)
libXau.so.6 => /usr/lib/libXau.so.6 (0xb6a79000)
libxcb-xlib.so.0 => /usr/lib/libxcb-xlib.so.0 (0xb6a76000)
libxcb.so.1 => /usr/lib/libxcb.so.1 (0xb6a5d000)
/lib/ld-linux.so.2 (0xb7f6e000)
libpcre.so.3 => /lib/libpcre.so.3 (0xb6a33000)
libGLcore.so.1 => /usr/lib/libGLcore.so.1 (0xb5bcb000)
libnvidia-tls.so.1 => /usr/lib/tls/libnvidia-tls.so.1 (0xb5bc8000)
libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0xb5bc3000)


The 4.5.1 binary

linux-gate.so.1 => (0xb8011000)
libQtOpenGL.so.4 => /opt/qtsdk-2009.02/qt/lib/libQtOpenGL.so.4 (0xb7f6c000)
libQtGui.so.4 => /opt/qtsdk-2009.02/qt/lib/libQtGui.so.4 (0xb7552000)
libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0xb74c3000)
libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0 (0xb7485000)
libSM.so.6 => /usr/lib/libSM.so.6 (0xb747c000)
libICE.so.6 => /usr/lib/libICE.so.6 (0xb7464000)
libXrender.so.1 => /usr/lib/libXrender.so.1 (0xb745a000)
libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0xb742d000)
libXext.so.6 => /usr/lib/libXext.so.6 (0xb741d000)
libX11.so.6 => /usr/lib/libX11.so.6 (0xb732e000)
libQtNetwork.so.4 => /opt/qtsdk-2009.02/qt/lib/libQtNetwork.so.4 (0xb7212000)
libQtCore.so.4 => /opt/qtsdk-2009.02/qt/lib/libQtCore.so.4 (0xb6fbf000)
libgthread-2.0.so.0 => /usr/lib/libgthread-2.0.so.0 (0xb6fb9000)
librt.so.1 => /lib/tls/i686/cmov/librt.so.1 (0xb6faf000)
libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0xb6ef8000)
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb6ef4000)
libGLU.so.1 => /usr/lib/libGLU.so.1 (0xb6e83000)
libGL.so.1 => /usr/lib/libGL.so.1 (0xb6dc9000)
libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb6db0000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb6cc1000)
libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0xb6c9b000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb6c8c000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb6b2e000)
libz.so.1 => /usr/lib/libz.so.1 (0xb6b18000)
libexpat.so.1 => /usr/lib/libexpat.so.1 (0xb6af1000)
libXau.so.6 => /usr/lib/libXau.so.6 (0xb6aed000)
libxcb-xlib.so.0 => /usr/lib/libxcb-xlib.so.0 (0xb6aea000)
libxcb.so.1 => /usr/lib/libxcb.so.1 (0xb6ad1000)
/lib/ld-linux.so.2 (0xb7ff7000)
libpcre.so.3 => /lib/libpcre.so.3 (0xb6aa7000)
libGLcore.so.1 => /usr/lib/libGLcore.so.1 (0xb5c3f000)
libnvidia-tls.so.1 => /usr/lib/tls/libnvidia-tls.so.1 (0xb5c3c000)
libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0xb5c37000)

kingsqueak
25th April 2009, 17:45
O.k. so this is _very_ strange.

It is in fact not working properly on this system afterall.

If I invoke the binary from within qtcreator using the run button, it renders fine.

If I invoke the binary from within the build directory on the commandline, it doesn't render cleanly.

If I move the binary to another directory, the same thing happens.

wysota
27th April 2009, 19:13
Interesting so it is indeed 4.5.1 for the 2009.2 version, odd that it isn't shown on the main trolltech download page that way.
4.5.1 was released just a few days ago.


O.k. so what I'll do when I get access to the system that is having the issue is post the NVidia driver info (it's a 169.x driver for sure, I forget the series) and an ldd output on both of the binaries that were built.

The other system has an NVidia laptop driver/chipset, this sytem I'm on today is using a 9400GT with the 180 driver.
NVidia has nothing to do with this.


O.k. so this is _very_ strange.

It is in fact not working properly on this system afterall.

If I invoke the binary from within qtcreator using the run button, it renders fine.

If I invoke the binary from within the build directory on the commandline, it doesn't render cleanly.

If I move the binary to another directory, the same thing happens.

You probably have two (or more) different installations of Qt and a different one is used by each of the methods.

kingsqueak
27th April 2009, 19:19
The ldd output shows where they are linked, note the two different directories depending on which Qt it was compiled against.

You see the 2009.1 and 2009.2, those are the two, 4.5.0 and 4.5.1 respectively.

From what I can see there are known issues with 4.5.1 that Nokia is going to fix so I think that pretty much sums it up. There was indeed a bug introduced.

Thanks for looking at this.

The solution for now is to simply build on 4.5.0 until another release comes out.