DRI Developer Frequently Asked Questions

José Fonseca

                j_r_fonseca@yahoo.co.uk
            

Revision History
Revision 0.302002-01-27Revised by: jf
Added a section about the purposes of this FAQ. Added some interesting recent posts. Several comestic changes.
Revision 0.202002-01-25Revised by: jf
Incorporated information from "Introduction to the Direct Rendering Infrastructure" by Brian Paul. Added a glossary based on the "Glossary of common 3D acronyms and terms" by Nathan Hand. Hyperlinks to the Web interface to the CVS repository in SourceForge.
Revision 0.102002-01-20Revised by: jf
Initial version based on questions posted on the dri-devel mailing list.

This is the list of Frequently Asked Questions for DRI developers, a framework for allowing direct access to graphics hardware in a safe and efficient manner. This FAQ is meant to be read in conjunction with the DRI Documentation. You can also get Postscript, PDF, HTML, and SGML versions of this document. The DRI Developer Frequently Asked Questions is distributed under the terms of the GNU Free Documentation License.


Table of Contents
1. About this FAQ
1.1. Who is the target audience of this FAQ?
1.1.1. For the users...
1.1.2. For the testers...
1.1.3. For the developers...
1.1.4. For the gurus...
1.2. What this FAQ is not?
2. Getting Started
2.1. How do I get started with development?
2.2. How do I submit a patch?
2.3. How is constituted a DRI driver?
2.4. Do I need to understand the X11 in order to help?
2.5. I want to start the development of a new driver. Which one should I took as template?
2.6. What's the DRI history?
3. DRI Architecture
3.1. Overview
3.2. Direct Rendering Module (DRM)
3.2.1. What is the DRM?
3.2.2. Where does the DRM resides?
3.2.3. In what way does the DRM supports the DRI?
3.2.4. Is it possible to make an DRI driver without a DRM driver in a piece of hardware whereby we do all accelerations in PIO mode?
3.2.5. Has the DRM driver support for or loading sub-drivers?
3.2.6. What is templated DRM code?
3.3. XFree86
3.3.1. DRI Aware DDX Driver
3.3.1.1. What is the DDX Driver?
3.3.1.2. Where does the DDX driver resides?
3.3.2. DRI Extension
3.3.2.1. What does the XFree86 DRI extension?
3.3.2.2. Where does the XFree86 DRI extension resides?
3.3.3. GLX Extension
3.3.3.1. What does the XFree86 GLX extension?
3.3.3.2. Where does the XFree86 GLX resides?
3.3.4. GLcore Extension
3.3.4.1. Where does the GLcore extension resides?
3.3.4.2. If I run a GLX enabled OpenGL program on a remote system with the display set back to my machine, will the X server itself render the GLX requests through DRI?
3.3.4.3. What's the re a difference between local clients and remote clients?
3.3.4.4. Is there a difference between using indirect DRI rendering (e.g., with LIBGL_ALWAYS_INDIRECT) and just linking against the Mesa library?
3.4. libGL
3.4.1. Where does it resides?
3.4.2. 3D Driver
3.4.2.1. Where does the 3D Driver resides?
3.4.3. Of what use is the Mesa code in the xc tree?
3.4.4. Is there any documentation about the XMesa* calls?
3.4.5. How do X modules and X applications communicate?
4. Debugging and benchmarking
4.1. How do you put a breakpoint in the dynamically loaded modules?
4.2. How do I do benchmarking with Unreal Tournament?
4.3. Is there any way for us to detect which features are implemented with hardware support for a given driver?
4.4. Which OpenGL benchmarking program can I use to test and compare various facets of the performance of graphics cards?
4.5. How should I report bugs?
5. Hardware Specific
5.1. AGP
5.1.1. What is AGP?
5.1.2. Where can I get more info about AGP?
5.1.3. Why not use the existing XFree86 AGP manipulation calls?
5.1.4. How do I use AGP?
5.1.5. How to allocate AGP memory?
5.1.6. If one has to insert pages he needs to check for -EBUSY errors and loop through the entire GTT. Wouldn't it be better if the driver fills up pg_start of agp_bind structure instead of user filling up?
5.1.7. How does the DMA transfer mechanism works?
5.2. ATI Cards
5.2.1. How to get ATI cards specification?
5.2.2. Mach64 based cards
5.2.2.1. I would like to help developing the Mach64 driver...
5.3. 3DFX
5.3.1. What's the relationship between Glide and DRI?
5.4. S3
5.4.1. Are there plans to enable the s3tc extension on any of the cards that currently support it?
6. Miscellaneous Questions
6.1. How about the main X drawing surface? Are 2 extra "window sized" buffers allocated for primary and secondary buffers in a page-flipping configuration?
6.2. Is anyone working on adding SSE support to the transform/lighting code in Mesa?
6.3. How often are checks done to see if things need clipped/redrawn/redisplayed?
6.4. What's the deal with fullscreen and DGA?
6.5. DRI without X
6.5.1. Can DRI run without X?
6.5.2. What would be the advantages of a non-X version of DRI?
6.5.3. I would like to make a X11 free acces to 3d...
6.6. DRI driver initialization process
6.7. Utah-GLX
6.7.1. How similar/diffrent are the driver arch of Utah and DRI?
6.7.2. Should one dig into the Utah source first, then go knee-deep in DIR, or the other way around?
7. Authorship and Acknowledgments
Glossary
References