mirror of
https://gitlab.freedesktop.org/mesa/drm.git
synced 2025-12-20 14:00:11 +01:00
glide header files.
The changes include:
- Brian Paul's changes to the tdfx client-side 3D driver to make it
dlopen() the correct glide library (Voodoo3 or Voodoo5). This allows
both types of the glide library to co-exist, and allows Voodoo3/Voodoo5
cards to be mixed in multi-head configs.
- DRM kernel driver changes to allow a driver to set up multiple instances
(minor numbers), one for each card present that the driver supports.
This is currently implemented and tested only for the tdfx DRM driver.
- Add some missing missing <stdarg.h> includes.
- Some log message cleanups.
- Change the 2D tdfx driver to access VGA legacy registers via their PCI
I/O space access points rather than their legacy addresses, and fix
some problems with the way the VGA-related bits are initialised.
Status:
- With these changes, multi-head direct rendering works with multiple
Voodoo3 and/or Voodoo5 cards. This has been tested with two PCI Voodoo3
cards and an AGP Voodoo5 card, and all permutations of those.
Caveats:
- Xinerama is not supported. If Xinerama is enabled, then direct rendering
gets disabled.
- The text mode on secondary screens will show junk after the X server
exits.
- On some hardware, starting the X server on multiple 3dfx cards will
result in a hard lockup. One workaround is to enable APIC support in a
uni-processor kernel, or use an SMP kernel.
90 lines
2.8 KiB
C
90 lines
2.8 KiB
C
/* tdfx_drv.c -- tdfx driver -*- linux-c -*-
|
|
* Created: Thu Oct 7 10:38:32 1999 by faith@precisioninsight.com
|
|
*
|
|
* Copyright 1999 Precision Insight, Inc., Cedar Park, Texas.
|
|
* Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California.
|
|
* All Rights Reserved.
|
|
*
|
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
|
* copy of this software and associated documentation files (the "Software"),
|
|
* to deal in the Software without restriction, including without limitation
|
|
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
* and/or sell copies of the Software, and to permit persons to whom the
|
|
* Software is furnished to do so, subject to the following conditions:
|
|
*
|
|
* The above copyright notice and this permission notice (including the next
|
|
* paragraph) shall be included in all copies or substantial portions of the
|
|
* Software.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
* PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
|
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
|
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
* DEALINGS IN THE SOFTWARE.
|
|
*
|
|
* Authors:
|
|
* Rickard E. (Rik) Faith <faith@valinux.com>
|
|
* Daryll Strauss <daryll@valinux.com>
|
|
* Gareth Hughes <gareth@valinux.com>
|
|
*/
|
|
|
|
#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 "20010216"
|
|
|
|
#define DRIVER_MAJOR 1
|
|
#define DRIVER_MINOR 0
|
|
#define DRIVER_PATCHLEVEL 0
|
|
|
|
static u_int DRM(idlist)[] = {
|
|
0x121A0003, /* Banshee */
|
|
0x121A0005, /* Voodoo3 */
|
|
0x121A0009, /* Voodoo5 */
|
|
0
|
|
};
|
|
|
|
#define DRIVER_CARD_LIST DRM(idlist)
|
|
|
|
|
|
#include "drm_auth.h"
|
|
#include "drm_bufs.h"
|
|
#include "drm_context.h"
|
|
#include "drm_dma.h"
|
|
#include "drm_drawable.h"
|
|
#include "drm_drv.h"
|
|
|
|
#ifndef MODULE
|
|
/* DRM(options) is called by the kernel to parse command-line options
|
|
* passed via the boot-loader (e.g., LILO). It calls the insmod option
|
|
* routine, drm_parse_drm.
|
|
*/
|
|
|
|
/* JH- We have to hand expand the string ourselves because of the cpp. If
|
|
* anyone can think of a way that we can fit into the __setup macro without
|
|
* changing it, then please send the solution my way.
|
|
*/
|
|
static int __init tdfx_options( char *str )
|
|
{
|
|
DRM(parse_options)( str );
|
|
return 1;
|
|
}
|
|
|
|
__setup( DRIVER_NAME "=", tdfx_options );
|
|
#endif
|
|
|
|
#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"
|