Bug 4988 - Accelerated indirect rendering
Summary: Accelerated indirect rendering
Alias: None
Product: xorg
Classification: Unclassified
Component: Server/Ext/GLX (show other bugs)
Version: unspecified
Hardware: x86 (IA32) Linux (All)
: high normal
Assignee: Xorg Project Team
QA Contact:
: 2994 (view as bug list)
Depends on:
Blocks: 5041
  Show dependency treegraph
Reported: 2005-11-07 19:50 UTC by Kristian Høgsberg
Modified: 2006-03-22 13:39 UTC (History)
4 users (show)

See Also:
i915 platform:
i915 features:

accelerated indirect rendering patch (110.86 KB, patch)
2005-11-07 20:48 UTC, Kristian Høgsberg
no flags Details | Splinter Review
New version of AIR patch. (120.62 KB, patch)
2005-11-15 05:46 UTC, Kristian Høgsberg
no flags Details | Splinter Review
New version of AIR patch. (122.23 KB, patch)
2005-11-23 09:10 UTC, Kristian Høgsberg
no flags Details | Splinter Review
Patch against modular x server (116.26 KB, patch)
2006-01-18 11:05 UTC, Kristian Høgsberg
no flags Details | Splinter Review

Description Kristian Høgsberg 2005-11-07 19:50:22 UTC
This is work in progress.  The attached patch is a start at implementing
accelerated indirect rendering.  It applies to the accelerated_indirect-0-0-1
branch.  There's a lot of loose end still, but with the current patch, it is
possible to run glxgears in indirect rendering mode with acceleration.  Moving
the mouse, typing on the keyboard, running a wm or other clients crashes the
server, but, well... it's work in progress.

With the patch, the glx module no longer depends on the GLcore module.  The
visual initialization process is now in glx/glxvisual.c and glx/glxloader.c
locates and dlopen()'s a DRI driver similar to how libGL works on the client side.

Updated patches to come, but feedback is welcome.
Comment 1 Kristian Høgsberg 2005-11-07 20:48:37 UTC
Created attachment 3727 [details] [review]
accelerated indirect rendering patch
Comment 2 Alan Hourihane 2005-11-08 01:30:02 UTC
While we are doing this work, I think it's about time to remove the mapping of
the front buffer from the DRI.

This mapping should be left up to the drivers just as it is for the depth, back
and other ancilliary buffers.

Obviously, this requires some driver work both in the DDX and the 3D drivers, so
this is a placeholder that this work should get done.
Comment 3 Kristian Høgsberg 2005-11-08 10:26:59 UTC
(In reply to comment #2)
> While we are doing this work, I think it's about time to remove the mapping of
> the front buffer from the DRI.

I'm not sure of the extent of the work you're proposing, but I would prefer to
finish the accelerated indirect rendering as a separate step first.  We also
need to rework the visual initialization process as described by Ians 2005 DDC
paper, but that too is something I think can be done after landing this feature.
 I'm not trying too shoot this down, I'd just like to focus on getting indirect
rendering accelerated for now.
Comment 4 Adam Jackson 2005-11-11 08:12:59 UTC
*** Bug 2994 has been marked as a duplicate of this bug. ***
Comment 5 Kristian Høgsberg 2005-11-15 05:46:24 UTC
Created attachment 3802 [details] [review]
New version of AIR patch.

Here's a new version of the accelerated indirect rendering patch.  I've fixed a
bug in my getDrawableInfo implementation so moving and resizing glx drawables
now work and I've added the missing swapContext calls to the
DRIUnlockedCallback function so this stuff doesn't crash all the time.

There is still some races/crashers left to track down, if you move a glx window
around enough, it will eventually crash.  What happens with the i915 driver is
that the drmI830IrqWait ioctl times out for the DRI driver, which causes the
server to exit.  My current theory is that the context swapping taking place in
DRILockTree interfers with the DRIUnlockedCallback.
Comment 6 Kristian Høgsberg 2005-11-23 09:10:24 UTC
Created attachment 3873 [details] [review]
New version of AIR patch.

This patch fixes the last couple of crashers I see with this stuff.  There was
a couple of bugs in the getDrawableInfo() implementation and the radeon dri
driver deadlocked during context destruction as it tried to grab the lock. 
That's fixed now, and this stuff seems pretty solid now.  I'd say it's ready to
commit to the accelerated indirect rendering branch now.
Comment 7 Kristian Høgsberg 2005-11-30 09:29:49 UTC
Mesa parts of patch split out to bug 5199.
Comment 8 Kristian Høgsberg 2006-01-18 11:05:01 UTC
Created attachment 4390 [details] [review]
Patch against modular x server

Updated version of the patch to apply to the modular x server tree.  This patch
has been committed to the accel_indirect_glx branch.
Comment 9 Kristian Høgsberg 2006-03-23 08:39:51 UTC
Closing this bug, AIGLX is merged to head.  Open bugs for specific problems as

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.