Eric Anholt ([info]anholt) wrote,
@ 2009-07-22 21:19:00
Previous Entry  Add to memories!  Tell a Friend  Next Entry
Another quarter, and another release. I think we've made big progress here. One of my favorite reports on the mailing list was that a company deploying our graphics driver was delightfully surprised that their XV tearing issues were fixed. That was a lot of work, and I was despairing of them saying it didn't work out.

A few things I was involved with that I'm happy with:
- Fixing the "memory leak" of GEM buffer objects
- Fixing quake4 and doom3 which regressed back in Mesa 7.4
- Fixing VBO performance on 915 (I don't like discouraging people from doing the right thing)
- OpenGL Performance and correctness fixes for cairo-gl
- Fixing a bunch of FBO problems, particularly on 965
- Hardware-accelerated glGenerateMipmaps and SGIS_generate_mipmap. Finally.
- Fixing many GLSL bugs on 965.
- Fixing occlusion queries (sauerbraten)
- Fixing crystalspace regression (woo supporting other open-source software developers)
- Fixing ut2004 hangs on G4x.

Already, things are looking exciting for our next release. Thanks to cairo-perf-trace, I've just landed a 10% improvement in firefox performance for UXA. We're also working towards the future with cairo-gl, which I'd started doing in my free time based off of ickle's cairo-drm work, and is now merged into cairo master. This is a major step towards maintaining one driver (OpenGL) per chipset, with the other part being doing a real X-on-GL backend so that legacy stuff not using cairo doesn't suffer too badly. Both of these are now on our plates for work activity in the next few months.

But we've got a ways to go to get there. I know we've got fixes to be made to our OpenGL before cairo-gl's going to shine, and cairo-gl needs a lot of work as well:
[ # ]  backend                         test   min(s) median(s) stddev. count
[  0]    image             firefox-20090601   92.877  108.208   6.54%   15/15
[  0]     xlib             firefox-20090601   46.609   46.832   0.28%    6/6
[  0]       gl             firefox-20090601  238.103  238.195   0.35%    5/6
(tested with master of everything on a 945GM, lower is better)


One of the things we need to figure out is what sort of shader support cairo-gl's going to be based on, and what we want to do in our driver to support it. The 915 and other hardware of that era can't do dynamic flow control, so many GLSL shaders would be unimplementable. But we as developers of software targeting GL on these chips would love to write in GLSL instead of ugly ARB_fragment_program and ARB_vertex_program, even if we know we can't use some language features. We could maybe expose the GLES GLSL extension on 915, which explicitly says that programs with dynamic flow control and other features missing on this generation of chips may not compile. We could also be sneaky and do it on desktop OpenGL GLSL and be within spec (I think, and afaik some closed vendors have done it as well), though some apps might get angry with us for doing so. This is up in the air, but I'm hoping our answer is "expose it".

(Oh, and other people are doing exciting things, like jbarnes and mjg59 making big power savings, but I'll leave blogging to them)



(8 comments) - (Post a new comment)

The Firefox test
[info]https://www.google.com/accounts/o8/id?id=AItOawkqw0MccPgJJZSh9dkTFMvjOUKvHRPoxdo
2009-07-23 09:11 am UTC (link)
Hi Eric,

Thanks for your work, especially the last couple of commits in the intel x11 driver. It fixed at least one ugly firefox performance problem on my 945GM (http://www.bug.hr/program/klipfolio-personal-dashboard-51/94572.aspx, click on the program screenshot after the page is loaded).

I'm curious to know, what is the firefox-20090601 test exactly? What does take 46 minutes to complete? I'm sorry if this has been mentioned somewhere before, but I've not been able to find it.

(Reply to this) (Thread)

Re: The Firefox test
[info]anholt
2009-07-24 02:25 am UTC (link)
I'd recommend checking cairo-perf-trace git. iirc, it was bbc world browsing.

The units are seconds, not minutes.

(Reply to this) (Parent)

The quotes around "memory leaks" sound intriguing
[info]mgedmin
2009-07-23 10:11 pm UTC (link)
Could you write a few words (or post a link to a bug) about the GEM buffer object "memory leaks"?

I've seen something very like a memory leak when I first switched to UXA on GM965: over a couple of days all my RAM would be taken over by the page cache, forcing out all applications to swap. It got fixed.

Now I'm seeing something memory-related but not leak-like: over a couple of days the RAM gets fragmented and large-order kernel memory allocations start failing. This shows up as an X crash on resume from S3 sleep (preceded by "Xorg: page allocation failure. order:4, mode:0xc0d0" and "[drm:i915_gem_object_get_page_list] *ERROR* Faled to allocate page list" in dmesg. Heh, it really does say "Faled").

(Reply to this) (Thread)

Re: The quotes around "memory leaks" sound intriguing
[info]anholt
2009-07-24 02:24 am UTC (link)
The memory wasn't leaked. We knew exactly where it was. We were actually still using it. It was just more allocation than we should have been doing for the task at hand.

(Reply to this) (Parent)

lights and shadows of a kernel
(Anonymous)
2009-07-24 01:42 am UTC (link)
i'm test drm-intel on a i915 and yes, i've noticed many progress in performance from early this year, finally seems be back to 2006 with glx! and this is the good for all; but i'm having ever an issue with the scaling governor that won't be set to ondemand! I don't think that is caused by yours improvement in the kernel, but all is possible from a git, any other testing?

(Reply to this) (Thread)

Re: lights and shadows of a kernel
[info]anholt
2009-07-24 02:23 am UTC (link)
If your scaling governor isn't set to ondemand, that's a configuration issue in your distro or system configuration, not anything I've done as far as I can imagine.

(Reply to this) (Parent)

Trouble with GEM and 945GM
(Anonymous)
2009-07-24 10:49 pm UTC (link)

Running the latest 2.8.0 release of the xf86-video-intel driver:

Unreal Tournament 2004 on high settings stutters. It's almost as if the cards memory, bus, or buffers are saturated.

Could you guys use 2004 as a reference?

Nexiuz is a free opensourced game that uses the Quake 3 engine with heavy graphic modifications. This may be a better reference.





(Reply to this) (Thread)

Re: Trouble with GEM and 945GM
[info]anholt
2009-07-27 02:08 am UTC (link)
We do use ut2004. It does stutter with 2.6.31rc (unstable code) due to a performance improvement that requires a Mesa fix to avoid the stuttering. The Mesa fix has been undergoing review.

(Reply to this) (Parent)


(8 comments) - (Post a new comment)

Create an Account
Forgot your login or password?
Login w/ OpenID
English • Español • Deutsch • Русский…