From: Gareth H. <ga...@va...> - 2001-02-15 10:44:17
|
I've just committed two large chunks of work to DRI CVS. Templated DRM: -------------- The core DRM now consists of driver-customizable template files, that each driver needs to include manually. This fixes a number of problems, and makes writing new drivers significantly easier. Indeed, drivers that don't need to handle DMA are now trivial. An example is the new tdfx kernel module: tdfx.h: /* This remains constant for all DRM template files. */ #define DRM(x) tdfx_##x #define __HAVE_MTRR 1 #define __HAVE_CTX_BITMAP 1 tdfx_drv.c: #include <linux/config.h> #include "tdfx.h" #include "drmP.h" #define DRIVER_AUTHOR "VA Linux Systems Inc." #define DRIVER_NAME "tdfx" #define DRIVER_DESC "3dfx Banshee/Voodoo3+" #define DRIVER_DATE "20010215" #define DRIVER_MAJOR 1 #define DRIVER_MINOR 0 #define DRIVER_PATCHLEVEL 0 #include "drm_drv.h" #include "drm_agpsupport.h" #include "drm_auth.h" #include "drm_bufs.h" #include "drm_context.h" #include "drm_dma.h" #include "drm_drawable.h" #include "drm_fops.h" #include "drm_init.h" #include "drm_ioctl.h" #include "drm_lock.h" #include "drm_memory.h" #include "drm_proc.h" #include "drm_vm.h" #include "drm_stub.h" The new architecture also avoids symbol clashes when building multiple drivers into the kernel, and cleans up the build process as a whole. I have tested the mga, r128, radeon and tdfx drivers, and done initial work on the i810, so I encourage other authors/maintainers to move their drivers to the new architecture. New MGA driver: --------------- I have also completely rewritten two core pieces of the MGA DRI driver: the kernel module and the DRI bootstrapping code in the 2D driver. The DMA handling has been completely redone, and at its core consists of three functions that total less than 100 lines of code. The driver now no longer uses interrupts to manage DMA, and uses the primary DMA space in a ring buffer-like fashion. This is a major step forward, and will greatly improve the stability and robustness of the driver. I strongly encourage people who have tried the MGA driver and had bad experiences to try the new code out. I still need to finish the engine reset code that is used to recover from lockups and so on, but this is a small amount of work. The new code shouldn't be locking the engine anyway :-) Please let me know if you have problems with the new code. I would like to work with anyone who has problems to make sure any remaining issues get ironed out quickly. -- Gareth |