/*****************************************************************************
$Workfile: spec.txt $
$Revision: 1 $
$Date: 9/28/00 4:44p $
$Author: Sarma $

Copyright (c) 2000 National Semiconductor Corporation Corporation.
All Rights Reserved.

This software is the confidential and proprietary information of National 
Semiconductor Corporation Corporation. ("Confidential Information").
You shall not disclose such Confidential Information and shall use it only
in accordance with the terms of the license agreement you entered into
with National Semiconductor Corporation Corporation.
This code is supplied as is.


$History: spec.txt $
 * 
 * *****************  Version 1  *****************
 * User: Sarma        Date: 9/28/00    Time: 4:44p
 * Created in $/Engineering_Releases/drivers/linux/xfree86 v336

*****************************************************************************/

XFree86 v3.3.6 graphics driver specification 

Version 0.5	09/28/2000

Table of Contents
----------------- 
  - Overview/General Description
  - Installation Instructions
  - Test Plan
  - Design


Overview/General Description
---------------------------- 

This is the National Semiconductor Linux XFree86 v3.3.6 driver. 
This version supports Pyramid and its predecessors and SC1200.
This version following features:
  1. Mode support
	640x480 8/16 Bpp @60,72,75,85Hz
	800x600 8/16 Bpp @60,72,75,85Hz
	1024x768 8/16 Bpp @60,70,75,85Hz
	1280x1024 8 Bpp @60,75,85Hz
	1280x1024 16 Bpp @60,75,85Hz - This mode is supported only on Pyramid.

  2. Hardware cursor
  3. FillRectSolid
  4. 8x8PatternColorExpand
  5. ScreenToScreenCopy
  6. BresenhamLine

Installation Instructions
------------------------- 

  Pl. refer to the release notes.

Test Plan
--------- 
The XFree86 Sample Video Driver is a set of source code files that are compiled along 
with the XFree86 source code to build a SVGA server for the X Windows graphics system. 
X Windows the major graphical windowing system for Linux. The version of XFree86 to be 
tested is 3.3.6, which is included in RedHat 6.2 as version 3.3.6-20. The latest audio 
driver should be used with the testing.
1.1	Video Modes
	To test the different resolutions, the XF86Config file must be setup for all of the modes. 

	Once the different modes have been setup, use Control-Alt-Plus (+ off the numpad) to 
	switch modes. Use Control-Alt-Function# to switch back to a text console and verify 
	that the text is not corrupted. Each mode should go through a quick run through of 
	the apps. Each refresh rate needs to be verified.
1.1.1	The Window Manager
	The standard window managers are Enlightenment or KDM. Enlightenment is the default 
	window manager (WM) for the GNOME install of RedHat 6.2, while KDM is the WM for KDE 
	install of RedHat. These programs provide the same basic functionality of controlling 
	window placement, menus, hotkeys, and virtual desktops. Use the menus, start 
	applications, iconify the applications, move the windows, change window movement 
	options, use the virtual desktop.
1.1.2	Netscape
	Use Netscape to browse the local HTML tree.
1.1.3	Quake
	Install and play quake w/ sound.
1.1.4	DOOM
	Install and play DOOM
1.1.5	xanim
	Play AVI and MPEG files with xanim. AVI codec support is limited, and MPEG audio 
	is not supported.
1.1.6	RealPlayer
	Play Real Video files. A network connection may be necessary.
1.2	Testers
	It has yet to be determined what resolution(s) this should be run at.
1.2.1	xtest (TET)
	Need to make instructions and build binaries of this.
1.3	Benchmarks
	It has yet to be determined what resolution(s) this should be run at.
1.3.1	x11perf

	Run the x11perf to calculate performance. To run this without a WM, you need to create 
	an '.xinitrc' file with the command to execute x11perf and log the results:
	.xinitrc should contain
	x11perf -v1.3 -rop GXcopy GXxor -all > datafile
	The output of this is run through Xmark:
		Xmark datafile
	The results of the Xmark should be posted.
1.4	Stability
	Run the stress script. This runs 'find' on the filesystem, a kernel build, a MPEG file, 
	and DOOM. Run this overnight and make sure the system is still running in the morning.
  

Design
------ 
The Xserver manages client connections and responds on behalf of clients
to user interface events (mouse, keyboard input) and protocol requests
(graphics).  It is divided into 4 major pieces: 

  - device independent layer (DIX): code shared among all implementations
  - OS layer: code which is different between operating systems but shared
    among all devices of an operating system
  - device dependent layer (DDX): code which is potentially different between
    operating systems and graphics devices
  - extension interface: the standard way to add features to the X server

The Driver is based on Durango. Durango is a graphics software support package 
designed to assist in the development of display drivers and embeded applications. 
The core of this package is source code that performs most of the graphics related 
functionality fot he National Semiconductor Geode family of products. Device driver 
development time is reduced by using these routines to access the hardware.

The available device driver interfaces have been implemented using Durango. The current
code has   
  1. Mode support
	640x480 8/16 Bpp @60,72,75,85Hz
	800x600 8/16 Bpp @60,72,75,85Hz
	1024x768 8/16 Bpp @60,70,75,85Hz
	1280x1024 8 Bpp @60,75,85Hz
	1280x1024 16 Bpp @60,75,85Hz - This mode is supported only on Pyramid.

  2. Hardware cursor
  3. FillRectSolid
  4. 8x8PatternColorExpand
  5. ScreenToScreenCopy
  6. BresenhamLine

The graphics mode set is acheived by putting the softvga to sleep and 
taking control of the hardware by switching to the desired mode. In Text mode
the softvga is given the cotrol back for text mode handling.
The Hardware accelerated rendring are acheived by calling appropriate Durango
API's.
