Right now, in order to create a driver, you need to combine three pieces. The pipe is the core of acceleration for a given chipset. It contains all of the code necessary to accelerate things, and exposes two generic structs in the Gallium API: pipe_screen, which is information about the current chipset and buffer/memory setup, and pipe_context, which has methods for rendering things. You probably never need to touch this unless you're adding new chipsets to Gallium.
The winsys is a series of bindings that connects a pipe to a windowing system or similar framework. It does this by exposing whatever APIs are needed. At first, DRI was the only API, but now we have a drm_api which can be used to generically and directly set up buffers and pipes for DRM-based drivers. The state tracker is just a library that internally uses a winsys, through drm_api or similar, to set up and use pipes. The external API that the state tracker exposes can be nearly anything; right now, we have state trackers for Xorg, DRI2, GLX, EGL, XvMC, and Python (SWIG). These can be mix'n'matched to come up with the actual driver binaries; for example, Xorg + radeon + r300 = Radeon r300 Xorg driver, EGL + intel + i915 = Intel i915 EGL driver, DRI2 + GLX + nouveau + nv50 = nVidia NV50 DRI2 driver. Obviously, non-DRM-based drivers will need winsys work for Syllable. I don't exactly know how Syllable's userland and kernel communicate; I assume there's some API that they use to talk to each other. You'd probably need to augment or invent winsys that can talk to Syllable's kernel. Then, you'd need a state tracker for Syllable's windowing system. You shouldn't have to touch any of the pipes. Hopefully this answers some questions. (And hopefully I don't have to get corrected by the more knowledgeable guys!) ~ C. ------------------------------------------------------------------------------ -- _______________________________________________ Dri-devel mailing list Dri-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/dri-devel