4 Years Later

Nearly 4 years ago Jon Smirl, the author of the experimental Xegl server wrote a nice summary about the state of linux graphics. He did that after realizing that it take much more time than he could out into Xegl in order to fix the linux graphics, so it is a realistic summary.

The interesting thing is that in his vision he described an X server which would run without root privileges and use OpenGL for all its drawings. Number one on his todo list though was a memory manager for DRM, which would enable all the nice stuff.

Well it seems that coming with Karmic we will finally see that first step done; most of the users(Intel and AMD) should get a nice in kernel memory manager which will be visible by Kernel Mode Setting. So what can we expect next?

Linux Graphics Dependencies

This diagram shows the dependencies of the various features. (Source) Green is what we should get with Karmic. The graphics-memory manager in kernel allows moving mode setting there too, so the resolution is set only once during bootup (flicker-free). Since the graphics card is now controlled from one hand it also allows dynamic power management to be done and does not require root privileges for X, which results in better security. Memory management also allows giving 3D applications their private front buffer, so they dont conflict when rendering. (RDR, Redirected Direct Rendering) Which is basically the core of DRI2. It also allows supporting memory related OpenGL features like VBOs or FBOs(Vertex/Frame Buffer Object) which brings the compliance level of MESA up to OpenGL 1.5.

Theoretically everything up to OpenGL3 could be implemented now, but since of the old design of MESA everything would have to be implemented for each driver over and over again. That is why Gallium3D was created. It is a intermediate level API which abstracts from the hardware by just offering a  state tracking interface. On top of that it is possible to implement more sophisticated APIs like OpenGL, OpenCL or a Video Decoding API like VDPAU. These implementations can then be shared across all drivers which are built on the Gallium3D architecture.

Well it is still a way to go until we get these grey boxes, which Windows and Mac basically already had 4 years ago…

YouAmp 0.5.10

I just uploaded a new version of YouAmp to the YouAmp PPA. Note that this is the desktop version and thus will not work on the N8x0 devices. Actually there wont be any updates for the Maemo version until Frementale, since the codebase currently already depends on some of its features. (which are already available in Ubuntu 9.04)

You may wonder where the jump from 0.5.4 to 0.5.10 comes from – actually there were releases in between, but since it were only minor feature additions, I did not announce them explicitly.

So here are the new features from 0.5.4:

  • show notify-osd compatible notifications on song change
  • support multimedia keys
  • better status icon (minimise animations, tooltip)
  • gapless playback
  • Drag and Drop support (reordering, copy to from/to directory)
  • uses Tracker for Indexing

And the best news is that playlists are half way done already 🙂

Another linux jerk down

As you surley know linux is crap, cobbled together by some amateurs. Well at least many trolls on the internet know. Sounds like prejudice and intentional offense, right?

Well, you probably heard of Jörg Schilling and the desaster with cdrtools – if not you can read it up here. The problem back then was that he (the author of cdrtools) changed the license to an GPL incompatible one ignoring the objections of the users.

And here comes the next one; Debian just decided to replace glibc by eglibc, because the maintainer of glibc, Ulrich Drepper, is.. lets say very uncooperative when it comes to patches. (just read the bugzilla reports linked in the announcement)

It is intresting that this guy alone could cause that glibc had to be forked. I mean this is really the core of every linux OS.

Probably the trolls on the internet are not completely wrong after all – sometimes the GPL not only allows to create free community around a project, but allows to free the project from its “community”.

PyClutter and Garbage Collection

ever wondered why something like this wont work when using python-clutter?

import clutter

def add_effect(obj):
    tl = clutter.Timeline(fps=60, duration=1000)
    alpha = clutter.Alpha(tl, clutter.sine_inc_func)
    bhv = clutter.BehaviourOpacity(alpha=alpha, opacity_start=0, opacity_end=255)
    bhv.apply(obj)

    return tl

def main():
    re = clutter.Rectangle()
    tl = add_effect(re)
    tl.start()
    clutter.main()

The problem is that once the function add_effect finishes, the variables tl, alpha and bhv will get garbage collected by python because they get out of scope. But they are still needed by clutter, which results in the error. To solve this you have to keep a reference to the variables somewhere, like

import clutter

tl, alpha, bhv = None, None, None

def add_effect(obj):
    global tl, alpha, bhv

    tl = clutter.Timeline(fps=60, duration=1000)
    alpha = clutter.Alpha(t1, clutter.sine_inc_func)
    bhv = clutter.BehaviourOpacity(alpha=alpha, opacity_start=0, opacity_end=255)
    bhv.apply(obj)

    return tl

def main():
    re = clutter.Rectangle()
    tl = add_effect(re)
    tl.start()
    clutter.main()

of course this way you can only have one effect at a time, so using objects for encapsulating the references would is preferable.

Cut off pages with brother printer

Do you use Ubuntu Intrepid/ Jaunty and your Brother Printer cuts off some part of the pages when printing, regardless of which paper setting you chose?

Well then this command might help you.

brprintconf_<your_model> -pt A4 # brprintconf_dcp135c in my case

the problem is, that the user interface in ubuntu only changes the CUPS settings while the brother drivers are LPR, so the settings are without effect. The command above on the other hand changes the LPR settings. If you want to know all the command options, look here.

Making money out of my visitors

As you probably noticed I added google banners to my page in order to get rich. They are currently only visible on article and single-news pages and should not get in your way too much.

But if they still annoy you, they are easily blockable by AdBlock or similar – if you keep them on the other hand, this will help me pay for the server.

Sidenote: Google obviously does not support XHTML with AdSense, so I had to do some tricks in order to get it to work at all – quite a shame for a so called web company…

Thunderbird a step closer to being integrated

As of yesterdays nightly, Thunderbird has got an early version of a Gnomestripe theme. It now uses system icons for the folders and replaces the Mozilla themed icons with ones in Tango style, which make it look much more like a Gnome application.

thunderbird-tango

What is still missing though are the icons for the main toolbar and natively themed tabs, but I think we can expect these for the final release of Thunderbird3. Together with the nice interface improvements this will make Thunderbird a really great alternative to Evolution and hopefully make it also the default mail client for Karmic.

The next items on my wishlist for Thunderbird are integration with the notification/ indicator system in Ubuntu and integration with the gnome calendar,

Giving Google Earth a native look & feel

Although Google Earth is a native Linux application and even uses Qt it still looks like a Windows95 application – even in KDE. The problem is that Google Eerth ship its own Qt libraries instead of using the ones installed on the system and thus also does not respect the system settings.

But there is help! If you want to make it look native,  make

# assuming you are using the medibuntu packages
cd /usr/lib/googleearth/
sudo rm libQt*

this will fore Googleearth use the system libraries instead, which include a GTK Qt Style. So if you launch googleearth as

googleearth -style GTK+

it will look like this:

Native Googleearth

but this will only work on Jaunty, since the GTK Qt Style was just added in Qt 4.5. If you are still on Intrepid you can use

googleearth -style cleanlooks

which will look at least familiar with the default Human Theme.

Finally free voice/ video chat is there

Just 3 years after Google first released their Jingle extension for Jabber which they used in their GTalk application it is finally possible to use it on the open source desktop too. This is just 2 years after Nokia released their Linux/ Gnome based N800 internet tablet, which also supported it.

But now Jaunty got an update to the Empathy Messanger, which brought Voice/ Video support to it. So now you can finally do calls between two Empathy Clients, between Empathy and GTalk on Windows and even between Empathy and your now actually useful N800 and that regardless whether you are on 32bit or on 64bit – only requiring a Jabber account – no need for Skype any more.

and here is the proof screenshot:

Empathy and N800 chat

No fglrx for Jaunty?

Jaunty will have the new Xserver 1.6, which brings a lot of 2D acceleration improvements and bug fixes but also a API/ABI change, so that binary only graphics drivers must be updated in order to work with it. This makes all currently released fglrx drivers (Catalyst 9.2) incompatible with Jaunty.

With the release of intrepid there already was a similar situatuation, but AMD released a special version for intrepid back then. But this time AMD just announced to drop the support for chips <= R600 (HDxxxx series) from fglrx coming with Catalyt 9.3 and recommends to use the open source -ati driver for the not longer supported cards. So the question is will Catalyst 9.3 support Xserver 1.6?

It seems to be not so likely, since even the leaked Catalyst 9.4 does not yet support Xserver1.6 and the Ubuntu developers are trying to get R600/R700 support into the open source driver.

The good news is that the open source -ati driver in Jaunty will support all currently available ATI chipsets (yes this includes R600/R700), which will give you probably the fastest 2D acceleration among all linux drivers(intel just broke their driver by merging UXA) and also much better Xvideo accelereation in comparison to fglrx. (no tearing)

The back side is that there will be a regression regarding 3D acceleration. The open source 3D driver stack currently is much slower then the one in fglrx and the work to fix this will not be ready until Ubuntu 9.10 (or probably longer). This will not affect anyone just using Compiz – these will even get a major performance improvement in comparison with fglrx. But in games or more sophisticated 3D applications there will be a noticable slowdown.

And R600/ R700 chips will not have any 3D acceleration at all – not even Compiz. But for these there is still hope for Catalyst 9.5.