summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mesa/drivers/dri/fb/Doxyfile232
-rw-r--r--src/mesa/drivers/dri/fb/Makefile24
-rw-r--r--src/mesa/drivers/dri/fb/fb_dri.c792
-rw-r--r--src/mesa/drivers/dri/ffb/Makefile35
-rw-r--r--src/mesa/drivers/dri/ffb/ffb_bitmap.c158
-rw-r--r--src/mesa/drivers/dri/ffb/ffb_bitmap.h7
-rw-r--r--src/mesa/drivers/dri/ffb/ffb_clear.c335
-rw-r--r--src/mesa/drivers/dri/ffb/ffb_clear.h6
-rw-r--r--src/mesa/drivers/dri/ffb/ffb_context.h305
-rw-r--r--src/mesa/drivers/dri/ffb/ffb_dd.c115
-rw-r--r--src/mesa/drivers/dri/ffb/ffb_dd.h36
-rw-r--r--src/mesa/drivers/dri/ffb/ffb_depth.c243
-rw-r--r--src/mesa/drivers/dri/ffb/ffb_depth.h7
-rw-r--r--src/mesa/drivers/dri/ffb/ffb_fifo.h27
-rw-r--r--src/mesa/drivers/dri/ffb/ffb_fog.c73
-rw-r--r--src/mesa/drivers/dri/ffb/ffb_lines.c107
-rw-r--r--src/mesa/drivers/dri/ffb/ffb_lines.h17
-rw-r--r--src/mesa/drivers/dri/ffb/ffb_linetmp.h80
-rw-r--r--src/mesa/drivers/dri/ffb/ffb_lock.h36
-rw-r--r--src/mesa/drivers/dri/ffb/ffb_points.c91
-rw-r--r--src/mesa/drivers/dri/ffb/ffb_points.h14
-rw-r--r--src/mesa/drivers/dri/ffb/ffb_pointtmp.h54
-rw-r--r--src/mesa/drivers/dri/ffb/ffb_rendertmp.h645
-rw-r--r--src/mesa/drivers/dri/ffb/ffb_span.c127
-rw-r--r--src/mesa/drivers/dri/ffb/ffb_span.h9
-rw-r--r--src/mesa/drivers/dri/ffb/ffb_state.c1222
-rw-r--r--src/mesa/drivers/dri/ffb/ffb_state.h12
-rw-r--r--src/mesa/drivers/dri/ffb/ffb_stencil.c224
-rw-r--r--src/mesa/drivers/dri/ffb/ffb_stencil.h7
-rw-r--r--src/mesa/drivers/dri/ffb/ffb_tex.c35
-rw-r--r--src/mesa/drivers/dri/ffb/ffb_tex.h34
-rw-r--r--src/mesa/drivers/dri/ffb/ffb_tris.c945
-rw-r--r--src/mesa/drivers/dri/ffb/ffb_tris.h25
-rw-r--r--src/mesa/drivers/dri/ffb/ffb_tritmp.h238
-rw-r--r--src/mesa/drivers/dri/ffb/ffb_vb.c207
-rw-r--r--src/mesa/drivers/dri/ffb/ffb_vb.h44
-rw-r--r--src/mesa/drivers/dri/ffb/ffb_vbtmp.h150
-rw-r--r--src/mesa/drivers/dri/ffb/ffb_vtxfmt.c414
-rw-r--r--src/mesa/drivers/dri/ffb/ffb_vtxfmt.h7
-rw-r--r--src/mesa/drivers/dri/ffb/ffb_xmesa.c729
-rw-r--r--src/mesa/drivers/dri/ffb/ffb_xmesa.h25
-rw-r--r--src/mesa/drivers/dri/ffb/server/ffb_dac.h366
-rw-r--r--src/mesa/drivers/dri/ffb/server/ffb_drishare.h47
-rw-r--r--src/mesa/drivers/dri/ffb/server/ffb_regs.h508
-rw-r--r--src/mesa/drivers/dri/gamma/Makefile34
-rw-r--r--src/mesa/drivers/dri/gamma/gamma_client.h6184
-rw-r--r--src/mesa/drivers/dri/gamma/gamma_context.c229
-rw-r--r--src/mesa/drivers/dri/gamma/gamma_context.h401
-rw-r--r--src/mesa/drivers/dri/gamma/gamma_dd.c110
-rw-r--r--src/mesa/drivers/dri/gamma/gamma_inithw.c551
-rw-r--r--src/mesa/drivers/dri/gamma/gamma_lock.c60
-rw-r--r--src/mesa/drivers/dri/gamma/gamma_lock.h84
-rw-r--r--src/mesa/drivers/dri/gamma/gamma_macros.h323
-rw-r--r--src/mesa/drivers/dri/gamma/gamma_regs.h658
-rw-r--r--src/mesa/drivers/dri/gamma/gamma_render.c221
-rw-r--r--src/mesa/drivers/dri/gamma/gamma_screen.c147
-rw-r--r--src/mesa/drivers/dri/gamma/gamma_screen.h30
-rw-r--r--src/mesa/drivers/dri/gamma/gamma_span.c315
-rw-r--r--src/mesa/drivers/dri/gamma/gamma_state.c1721
-rw-r--r--src/mesa/drivers/dri/gamma/gamma_tex.c434
-rw-r--r--src/mesa/drivers/dri/gamma/gamma_texmem.c535
-rw-r--r--src/mesa/drivers/dri/gamma/gamma_texstate.c215
-rw-r--r--src/mesa/drivers/dri/gamma/gamma_tris.c660
-rw-r--r--src/mesa/drivers/dri/gamma/gamma_tris.h36
-rw-r--r--src/mesa/drivers/dri/gamma/gamma_tritmp.h496
-rw-r--r--src/mesa/drivers/dri/gamma/gamma_vb.c361
-rw-r--r--src/mesa/drivers/dri/gamma/gamma_vb.h60
-rw-r--r--src/mesa/drivers/dri/gamma/gamma_xmesa.c273
-rw-r--r--src/mesa/drivers/dri/gamma/server/glint_common.h63
-rw-r--r--src/mesa/drivers/dri/gamma/server/glint_dri.h122
70 files changed, 0 insertions, 23137 deletions
diff --git a/src/mesa/drivers/dri/fb/Doxyfile b/src/mesa/drivers/dri/fb/Doxyfile
deleted file mode 100644
index 31256db834a..00000000000
--- a/src/mesa/drivers/dri/fb/Doxyfile
+++ /dev/null
@@ -1,232 +0,0 @@
-# Doxyfile 1.3.2-Gideon
-
-#---------------------------------------------------------------------------
-# General configuration options
-#---------------------------------------------------------------------------
-PROJECT_NAME = fb
-PROJECT_NUMBER = $VERSION$
-OUTPUT_DIRECTORY =
-OUTPUT_LANGUAGE = English
-USE_WINDOWS_ENCODING = NO
-EXTRACT_ALL = NO
-EXTRACT_PRIVATE = NO
-EXTRACT_STATIC = NO
-EXTRACT_LOCAL_CLASSES = YES
-HIDE_UNDOC_MEMBERS = NO
-HIDE_UNDOC_CLASSES = NO
-HIDE_FRIEND_COMPOUNDS = NO
-HIDE_IN_BODY_DOCS = NO
-BRIEF_MEMBER_DESC = YES
-REPEAT_BRIEF = YES
-ALWAYS_DETAILED_SEC = NO
-INLINE_INHERITED_MEMB = NO
-FULL_PATH_NAMES = NO
-STRIP_FROM_PATH =
-INTERNAL_DOCS = NO
-CASE_SENSE_NAMES = YES
-SHORT_NAMES = NO
-HIDE_SCOPE_NAMES = NO
-SHOW_INCLUDE_FILES = YES
-JAVADOC_AUTOBRIEF = NO
-MULTILINE_CPP_IS_BRIEF = NO
-DETAILS_AT_TOP = NO
-INHERIT_DOCS = YES
-INLINE_INFO = YES
-SORT_MEMBER_DOCS = YES
-DISTRIBUTE_GROUP_DOC = NO
-TAB_SIZE = 8
-GENERATE_TODOLIST = YES
-GENERATE_TESTLIST = YES
-GENERATE_BUGLIST = YES
-GENERATE_DEPRECATEDLIST= YES
-ALIASES =
-ENABLED_SECTIONS =
-MAX_INITIALIZER_LINES = 30
-OPTIMIZE_OUTPUT_FOR_C = NO
-OPTIMIZE_OUTPUT_JAVA = NO
-SHOW_USED_FILES = YES
-#---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-QUIET = NO
-WARNINGS = YES
-WARN_IF_UNDOCUMENTED = YES
-WARN_IF_DOC_ERROR = YES
-WARN_FORMAT = "$file:$line: $text"
-WARN_LOGFILE =
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-INPUT = /home/temp/Mesa/src/drv/fb
-FILE_PATTERNS = *.c \
- *.cc \
- *.cxx \
- *.cpp \
- *.c++ \
- *.java \
- *.ii \
- *.ixx \
- *.ipp \
- *.i++ \
- *.inl \
- *.h \
- *.hh \
- *.hxx \
- *.hpp \
- *.h++ \
- *.idl \
- *.odl \
- *.cs \
- *.C \
- *.H \
- *.tlh \
- *.diff \
- *.patch \
- *.moc \
- *.xpm
-RECURSIVE = yes
-EXCLUDE =
-EXCLUDE_SYMLINKS = NO
-EXCLUDE_PATTERNS =
-EXAMPLE_PATH =
-EXAMPLE_PATTERNS = *
-EXAMPLE_RECURSIVE = NO
-IMAGE_PATH =
-INPUT_FILTER =
-FILTER_SOURCE_FILES = NO
-#---------------------------------------------------------------------------
-# configuration options related to source browsing
-#---------------------------------------------------------------------------
-SOURCE_BROWSER = NO
-INLINE_SOURCES = NO
-STRIP_CODE_COMMENTS = YES
-REFERENCED_BY_RELATION = YES
-REFERENCES_RELATION = YES
-VERBATIM_HEADERS = YES
-#---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-ALPHABETICAL_INDEX = NO
-COLS_IN_ALPHA_INDEX = 5
-IGNORE_PREFIX =
-#---------------------------------------------------------------------------
-# configuration options related to the HTML output
-#---------------------------------------------------------------------------
-GENERATE_HTML = YES
-HTML_OUTPUT = html
-HTML_FILE_EXTENSION = .html
-HTML_HEADER =
-HTML_FOOTER =
-HTML_STYLESHEET =
-HTML_ALIGN_MEMBERS = YES
-GENERATE_HTMLHELP = NO
-CHM_FILE =
-HHC_LOCATION =
-GENERATE_CHI = NO
-BINARY_TOC = NO
-TOC_EXPAND = NO
-DISABLE_INDEX = NO
-ENUM_VALUES_PER_LINE = 4
-GENERATE_TREEVIEW = NO
-TREEVIEW_WIDTH = 250
-#---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-GENERATE_LATEX = YES
-LATEX_OUTPUT = latex
-LATEX_CMD_NAME = latex
-MAKEINDEX_CMD_NAME = makeindex
-COMPACT_LATEX = NO
-PAPER_TYPE = a4wide
-EXTRA_PACKAGES =
-LATEX_HEADER =
-PDF_HYPERLINKS = NO
-USE_PDFLATEX = NO
-LATEX_BATCHMODE = NO
-LATEX_HIDE_INDICES = NO
-#---------------------------------------------------------------------------
-# configuration options related to the RTF output
-#---------------------------------------------------------------------------
-GENERATE_RTF = NO
-RTF_OUTPUT = rtf
-COMPACT_RTF = NO
-RTF_HYPERLINKS = NO
-RTF_STYLESHEET_FILE =
-RTF_EXTENSIONS_FILE =
-#---------------------------------------------------------------------------
-# configuration options related to the man page output
-#---------------------------------------------------------------------------
-GENERATE_MAN = NO
-MAN_OUTPUT = man
-MAN_EXTENSION = .3
-MAN_LINKS = NO
-#---------------------------------------------------------------------------
-# configuration options related to the XML output
-#---------------------------------------------------------------------------
-GENERATE_XML = yes
-XML_OUTPUT = xml
-XML_SCHEMA =
-XML_DTD =
-#---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-GENERATE_AUTOGEN_DEF = NO
-#---------------------------------------------------------------------------
-# configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-GENERATE_PERLMOD = NO
-PERLMOD_LATEX = NO
-PERLMOD_PRETTY = YES
-PERLMOD_MAKEVAR_PREFIX =
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor
-#---------------------------------------------------------------------------
-ENABLE_PREPROCESSING = YES
-MACRO_EXPANSION = NO
-EXPAND_ONLY_PREDEF = NO
-SEARCH_INCLUDES = YES
-INCLUDE_PATH =
-INCLUDE_FILE_PATTERNS =
-PREDEFINED =
-EXPAND_AS_DEFINED =
-SKIP_FUNCTION_MACROS = YES
-#---------------------------------------------------------------------------
-# Configuration::addtions related to external references
-#---------------------------------------------------------------------------
-TAGFILES =
-GENERATE_TAGFILE =
-ALLEXTERNALS = NO
-EXTERNAL_GROUPS = YES
-PERL_PATH = /usr/bin/perl
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool
-#---------------------------------------------------------------------------
-CLASS_DIAGRAMS = YES
-HIDE_UNDOC_RELATIONS = YES
-HAVE_DOT = NO
-CLASS_GRAPH = YES
-COLLABORATION_GRAPH = YES
-UML_LOOK = NO
-TEMPLATE_RELATIONS = NO
-INCLUDE_GRAPH = YES
-INCLUDED_BY_GRAPH = YES
-CALL_GRAPH = NO
-GRAPHICAL_HIERARCHY = YES
-DOT_IMAGE_FORMAT = png
-DOT_PATH =
-DOTFILE_DIRS =
-MAX_DOT_GRAPH_WIDTH = 1024
-MAX_DOT_GRAPH_HEIGHT = 1024
-MAX_DOT_GRAPH_DEPTH = 1000
-GENERATE_LEGEND = YES
-DOT_CLEANUP = YES
-#---------------------------------------------------------------------------
-# Configuration::addtions related to the search engine
-#---------------------------------------------------------------------------
-SEARCHENGINE = NO
-CGI_NAME = search.cgi
-CGI_URL =
-DOC_URL =
-DOC_ABSPATH =
-BIN_ABSPATH = /usr/local/bin/
-EXT_DOC_PATHS =
diff --git a/src/mesa/drivers/dri/fb/Makefile b/src/mesa/drivers/dri/fb/Makefile
deleted file mode 100644
index 848e2041e27..00000000000
--- a/src/mesa/drivers/dri/fb/Makefile
+++ /dev/null
@@ -1,24 +0,0 @@
-# src/mesa/drivers/dri/fb/Makefile
-
-TOP = ../../../../..
-include $(TOP)/configs/current
-
-LIBNAME = fb_dri.so
-
-
-DRIVER_SOURCES = \
- fb_dri.c \
- $(EGL_SOURCES)
-
-
-C_SOURCES = \
- $(COMMON_SOURCES) \
- $(DRIVER_SOURCES)
-
-ASM_SOURCES =
-
-# XXX not 100% sure this is right
-#WINDOW_SYSTEM = solo
-
-include ../Makefile.template
-
diff --git a/src/mesa/drivers/dri/fb/fb_dri.c b/src/mesa/drivers/dri/fb/fb_dri.c
deleted file mode 100644
index ac07e57db13..00000000000
--- a/src/mesa/drivers/dri/fb/fb_dri.c
+++ /dev/null
@@ -1,792 +0,0 @@
-/*
- * Mesa 3-D graphics library
- * Version: 6.3
- *
- * Copyright (C) 1999-2005 Brian Paul 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 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
- * BRIAN PAUL 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.
- */
-
-/* Minimal swrast-based dri loadable driver.
- *
- * Todo:
- * -- Use malloced (rather than framebuffer) memory for backbuffer
- * -- 32bpp is hardwared -- fix
- *
- * NOTES:
- * -- No mechanism for cliprects or resize notification --
- * assumes this is a fullscreen device.
- * -- No locking -- assumes this is the only driver accessing this
- * device.
- * -- Doesn't (yet) make use of any acceleration or other interfaces
- * provided by fb. Would be entirely happy working against any
- * fullscreen interface.
- * -- HOWEVER: only a small number of pixelformats are supported, and
- * the mechanism for choosing between them makes some assumptions
- * that may not be valid everywhere.
- */
-
-#include "driver.h"
-#include "drm.h"
-#include "utils.h"
-#include "drirenderbuffer.h"
-
-#include "buffers.h"
-#include "main/extensions.h"
-#include "main/framebuffer.h"
-#include "main/renderbuffer.h"
-#include "vbo/vbo.h"
-#include "swrast/swrast.h"
-#include "swrast_setup/swrast_setup.h"
-#include "tnl/tnl.h"
-#include "tnl/tcontext.h"
-#include "tnl/t_pipeline.h"
-#include "drivers/common/driverfuncs.h"
-
-void fbSetSpanFunctions(driRenderbuffer *drb, const GLvisual *vis);
-
-typedef struct {
- GLcontext *glCtx; /* Mesa context */
-
- struct {
- __DRIcontext *context;
- __DRIscreen *screen;
- __DRIdrawable *drawable; /* drawable bound to this ctx */
- } dri;
-
-} fbContext, *fbContextPtr;
-
-#define FB_CONTEXT(ctx) ((fbContextPtr)(ctx->DriverCtx))
-
-
-static const GLubyte *
-get_string(GLcontext *ctx, GLenum pname)
-{
- (void) ctx;
- switch (pname) {
- case GL_RENDERER:
- return (const GLubyte *) "Mesa dumb framebuffer";
- default:
- return NULL;
- }
-}
-
-
-static void
-update_state( GLcontext *ctx, GLuint new_state )
-{
- /* not much to do here - pass it on */
- _swrast_InvalidateState( ctx, new_state );
- _swsetup_InvalidateState( ctx, new_state );
- _vbo_InvalidateState( ctx, new_state );
- _tnl_InvalidateState( ctx, new_state );
-}
-
-
-/**
- * Called by ctx->Driver.GetBufferSize from in core Mesa to query the
- * current framebuffer size.
- */
-static void
-get_buffer_size( GLframebuffer *buffer, GLuint *width, GLuint *height )
-{
- GET_CURRENT_CONTEXT(ctx);
- fbContextPtr fbmesa = FB_CONTEXT(ctx);
-
- *width = fbmesa->dri.drawable->w;
- *height = fbmesa->dri.drawable->h;
-}
-
-
-static void
-updateFramebufferSize(GLcontext *ctx)
-{
- fbContextPtr fbmesa = FB_CONTEXT(ctx);
- struct gl_framebuffer *fb = ctx->WinSysDrawBuffer;
- if (fbmesa->dri.drawable->w != fb->Width ||
- fbmesa->dri.drawable->h != fb->Height) {
- driUpdateFramebufferSize(ctx, fbmesa->dri.drawable);
- }
-}
-
-static void
-viewport(GLcontext *ctx, GLint x, GLint y, GLsizei w, GLsizei h)
-{
- /* XXX this should be called after we acquire the DRI lock, not here */
- updateFramebufferSize(ctx);
-}
-
-
-static void
-init_core_functions( struct dd_function_table *functions )
-{
- functions->GetString = get_string;
- functions->UpdateState = update_state;
- functions->GetBufferSize = get_buffer_size;
- functions->Viewport = viewport;
-
- functions->Clear = _swrast_Clear; /* could accelerate with blits */
-}
-
-
-/*
- * Generate code for span functions.
- */
-
-/* 24-bit BGR */
-#define NAME(PREFIX) PREFIX##_B8G8R8
-#define FORMAT GL_RGBA8
-#define SPAN_VARS \
- driRenderbuffer *drb = (driRenderbuffer *) rb;
-#define INIT_PIXEL_PTR(P, X, Y) \
- GLubyte *P = (GLubyte *)drb->Base.Data + (drb->Base.Height - (Y)) * drb->pitch + (X) * 3;
-#define INC_PIXEL_PTR(P) P += 3
-#define STORE_PIXEL(DST, X, Y, VALUE) \
- DST[0] = VALUE[BCOMP]; \
- DST[1] = VALUE[GCOMP]; \
- DST[2] = VALUE[RCOMP]
-#define FETCH_PIXEL(DST, SRC) \
- DST[RCOMP] = SRC[2]; \
- DST[GCOMP] = SRC[1]; \
- DST[BCOMP] = SRC[0]; \
- DST[ACOMP] = 0xff
-
-#include "swrast/s_spantemp.h"
-
-
-/* 32-bit BGRA */
-#define NAME(PREFIX) PREFIX##_B8G8R8A8
-#define FORMAT GL_RGBA8
-#define SPAN_VARS \
- driRenderbuffer *drb = (driRenderbuffer *) rb;
-#define INIT_PIXEL_PTR(P, X, Y) \
- GLubyte *P = (GLubyte *)drb->Base.Data + (drb->Base.Height - (Y)) * drb->pitch + (X) * 4;
-#define INC_PIXEL_PTR(P) P += 4
-#define STORE_PIXEL(DST, X, Y, VALUE) \
- DST[0] = VALUE[BCOMP]; \
- DST[1] = VALUE[GCOMP]; \
- DST[2] = VALUE[RCOMP]; \
- DST[3] = VALUE[ACOMP]
-#define STORE_PIXEL_RGB(DST, X, Y, VALUE) \
- DST[0] = VALUE[BCOMP]; \
- DST[1] = VALUE[GCOMP]; \
- DST[2] = VALUE[RCOMP]; \
- DST[3] = 0xff
-#define FETCH_PIXEL(DST, SRC) \
- DST[RCOMP] = SRC[2]; \
- DST[GCOMP] = SRC[1]; \
- DST[BCOMP] = SRC[0]; \
- DST[ACOMP] = SRC[3]
-
-#include "swrast/s_spantemp.h"
-
-
-/* 16-bit BGR (XXX implement dithering someday) */
-#define NAME(PREFIX) PREFIX##_B5G6R5
-#define FORMAT GL_RGBA8
-#define SPAN_VARS \
- driRenderbuffer *drb = (driRenderbuffer *) rb;
-#define INIT_PIXEL_PTR(P, X, Y) \
- GLushort *P = (GLushort *)drb->Base.Data + (drb->Base.Height - (Y)) * drb->pitch + (X) * 2;
-#define INC_PIXEL_PTR(P) P += 1
-#define STORE_PIXEL(DST, X, Y, VALUE) \
- DST[0] = ( (((VALUE[RCOMP]) & 0xf8) << 8) | (((VALUE[GCOMP]) & 0xfc) << 3) | ((VALUE[BCOMP]) >> 3) )
-#define FETCH_PIXEL(DST, SRC) \
- DST[RCOMP] = ( (((SRC[0]) >> 8) & 0xf8) | (((SRC[0]) >> 11) & 0x7) ); \
- DST[GCOMP] = ( (((SRC[0]) >> 3) & 0xfc) | (((SRC[0]) >> 5) & 0x3) ); \
- DST[BCOMP] = ( (((SRC[0]) << 3) & 0xf8) | (((SRC[0]) ) & 0x7) ); \
- DST[ACOMP] = 0xff
-
-#include "swrast/s_spantemp.h"
-
-
-/* 15-bit BGR (XXX implement dithering someday) */
-#define NAME(PREFIX) PREFIX##_B5G5R5
-#define FORMAT GL_RGBA8
-#define SPAN_VARS \
- driRenderbuffer *drb = (driRenderbuffer *) rb;
-#define INIT_PIXEL_PTR(P, X, Y) \
- GLushort *P = (GLushort *)drb->Base.Data + (drb->Base.Height - (Y)) * drb->pitch + (X) * 2;
-#define INC_PIXEL_PTR(P) P += 1
-#define STORE_PIXEL(DST, X, Y, VALUE) \
- DST[0] = ( (((VALUE[RCOMP]) & 0xf8) << 7) | (((VALUE[GCOMP]) & 0xf8) << 2) | ((VALUE[BCOMP]) >> 3) )
-#define FETCH_PIXEL(DST, SRC) \
- DST[RCOMP] = ( (((SRC[0]) >> 7) & 0xf8) | (((SRC[0]) >> 10) & 0x7) ); \
- DST[GCOMP] = ( (((SRC[0]) >> 2) & 0xf8) | (((SRC[0]) >> 5) & 0x7) ); \
- DST[BCOMP] = ( (((SRC[0]) << 3) & 0xf8) | (((SRC[0]) ) & 0x7) ); \
- DST[ACOMP] = 0xff
-
-#include "swrast/s_spantemp.h"
-
-
-/* 8-bit color index */
-#define NAME(PREFIX) PREFIX##_CI8
-#define FORMAT GL_COLOR_INDEX8_EXT
-#define SPAN_VARS \
- driRenderbuffer *drb = (driRenderbuffer *) rb;
-#define INIT_PIXEL_PTR(P, X, Y) \
- GLubyte *P = (GLubyte *)drb->Base.Data + (drb->Base.Height - (Y)) * drb->pitch + (X);
-#define INC_PIXEL_PTR(P) P += 1
-#define STORE_PIXEL(DST, X, Y, VALUE) \
- *DST = VALUE[0]
-#define FETCH_PIXEL(DST, SRC) \
- DST = SRC[0]
-
-#include "swrast/s_spantemp.h"
-
-
-
-void
-fbSetSpanFunctions(driRenderbuffer *drb, const GLvisual *vis)
-{
- ASSERT(drb->Base.InternalFormat == GL_RGBA);
- if (drb->Base.InternalFormat == GL_RGBA) {
- if (vis->redBits == 5 && vis->greenBits == 6 && vis->blueBits == 5) {
- drb->Base.GetRow = get_row_B5G6R5;
- drb->Base.GetValues = get_values_B5G6R5;
- drb->Base.PutRow = put_row_B5G6R5;
- drb->Base.PutMonoRow = put_mono_row_B5G6R5;
- drb->Base.PutRowRGB = put_row_rgb_B5G6R5;
- drb->Base.PutValues = put_values_B5G6R5;
- drb->Base.PutMonoValues = put_mono_values_B5G6R5;
- }
- else if (vis->redBits == 5 && vis->greenBits == 5 && vis->blueBits == 5) {
- drb->Base.GetRow = get_row_B5G5R5;
- drb->Base.GetValues = get_values_B5G5R5;
- drb->Base.PutRow = put_row_B5G5R5;
- drb->Base.PutMonoRow = put_mono_row_B5G5R5;
- drb->Base.PutRowRGB = put_row_rgb_B5G5R5;
- drb->Base.PutValues = put_values_B5G5R5;
- drb->Base.PutMonoValues = put_mono_values_B5G5R5;
- }
- else if (vis->redBits == 8 && vis->greenBits == 8 && vis->blueBits == 8
- && vis->alphaBits == 8) {
- drb->Base.GetRow = get_row_B8G8R8A8;
- drb->Base.GetValues = get_values_B8G8R8A8;
- drb->Base.PutRow = put_row_B8G8R8A8;
- drb->Base.PutMonoRow = put_mono_row_B8G8R8A8;
- drb->Base.PutRowRGB = put_row_rgb_B8G8R8A8;
- drb->Base.PutValues = put_values_B8G8R8A8;
- drb->Base.PutMonoValues = put_mono_values_B8G8R8A8;
- }
- else if (vis->redBits == 8 && vis->greenBits == 8 && vis->blueBits == 8
- && vis->alphaBits == 0) {
- drb->Base.GetRow = get_row_B8G8R8;
- drb->Base.GetValues = get_values_B8G8R8;
- drb->Base.PutRow = put_row_B8G8R8;
- drb->Base.PutMonoRow = put_mono_row_B8G8R8;
- drb->Base.PutRowRGB = put_row_rgb_B8G8R8;
- drb->Base.PutValues = put_values_B8G8R8;
- drb->Base.PutMonoValues = put_mono_values_B8G8R8;
- }
- else if (vis->indexBits == 8) {
- drb->Base.GetRow = get_row_CI8;
- drb->Base.GetValues = get_values_CI8;
- drb->Base.PutRow = put_row_CI8;
- drb->Base.PutMonoRow = put_mono_row_CI8;
- drb->Base.PutValues = put_values_CI8;
- drb->Base.PutMonoValues = put_mono_values_CI8;
- }
- }
- else {
- /* hardware z/stencil/etc someday */
- }
-}
-
-
-
-/* Initialize the driver specific screen private data.
- */
-static GLboolean
-fbInitDriver( __DRIscreen *sPriv )
-{
- sPriv->private = NULL;
- return GL_TRUE;
-}
-
-static void
-fbDestroyScreen( __DRIscreen *sPriv )
-{
-}
-
-
-/* Create the device specific context.
- */
-static GLboolean
-fbCreateContext( const __GLcontextModes *glVisual,
- __DRIcontext *driContextPriv,
- void *sharedContextPrivate)
-{
- fbContextPtr fbmesa;
- GLcontext *ctx, *shareCtx;
- struct dd_function_table functions;
-
- assert(glVisual);
- assert(driContextPriv);
-
- /* Allocate the Fb context */
- fbmesa = (fbContextPtr) calloc(1, sizeof(*fbmesa) );
- if ( !fbmesa )
- return GL_FALSE;
-
- /* Init default driver functions then plug in our FBdev-specific functions
- */
- _mesa_init_driver_functions(&functions);
- init_core_functions(&functions);
-
- /* Allocate the Mesa context */
- if (sharedContextPrivate)
- shareCtx = ((fbContextPtr) sharedContextPrivate)->glCtx;
- else
- shareCtx = NULL;
-
- ctx = fbmesa->glCtx = _mesa_create_context(glVisual, shareCtx,
- &functions, (void *) fbmesa);
- if (!fbmesa->glCtx) {
- free(fbmesa);
- return GL_FALSE;
- }
- driContextPriv->driverPrivate = fbmesa;
-
- /* Create module contexts */
- _swrast_CreateContext( ctx );
- _vbo_CreateContext( ctx );
- _tnl_CreateContext( ctx );
- _swsetup_CreateContext( ctx );
- _swsetup_Wakeup( ctx );
-
-
- /* use default TCL pipeline */
- {
- TNLcontext *tnl = TNL_CONTEXT(ctx);
- tnl->Driver.RunPipeline = _tnl_run_pipeline;
- }
-
- _mesa_enable_sw_extensions(ctx);
-
- return GL_TRUE;
-}
-
-
-static void
-fbDestroyContext( __DRIcontext *driContextPriv )
-{
- GET_CURRENT_CONTEXT(ctx);
- fbContextPtr fbmesa = (fbContextPtr) driContextPriv->driverPrivate;
- fbContextPtr current = ctx ? FB_CONTEXT(ctx) : NULL;
-
- /* check if we're deleting the currently bound context */
- if (fbmesa == current) {
- _mesa_make_current(NULL, NULL, NULL);
- }
-
- /* Free fb context resources */
- if ( fbmesa ) {
- _swsetup_DestroyContext( fbmesa->glCtx );
- _tnl_DestroyContext( fbmesa->glCtx );
- _vbo_DestroyContext( fbmesa->glCtx );
- _swrast_DestroyContext( fbmesa->glCtx );
-
- /* free the Mesa context */
- fbmesa->glCtx->DriverCtx = NULL;
- _mesa_destroy_context( fbmesa->glCtx );
-
- free( fbmesa );
- }
-}
-
-
-/* Create and initialize the Mesa and driver specific pixmap buffer
- * data.
- */
-static GLboolean
-fbCreateBuffer( __DRIscreen *driScrnPriv,
- __DRIdrawable *driDrawPriv,
- const __GLcontextModes *mesaVis,
- GLboolean isPixmap )
-{
- struct gl_framebuffer *mesa_framebuffer;
-
- if (isPixmap) {
- return GL_FALSE; /* not implemented */
- }
- else {
- const GLboolean swDepth = mesaVis->depthBits > 0;
- const GLboolean swAlpha = mesaVis->alphaBits > 0;
- const GLboolean swAccum = mesaVis->accumRedBits > 0;
- const GLboolean swStencil = mesaVis->stencilBits > 0;
-
- mesa_framebuffer = _mesa_create_framebuffer(mesaVis);
- if (!mesa_framebuffer)
- return 0;
-
- /* XXX double-check these parameters (bpp vs cpp, etc) */
- {
- driRenderbuffer *drb = driNewRenderbuffer(MESA_FORMAT_ARGB8888,
- driScrnPriv->pFB,
- driScrnPriv->fbBPP / 8,
- driScrnPriv->fbOrigin,
- driScrnPriv->fbStride,
- driDrawPriv);
- fbSetSpanFunctions(drb, mesaVis);
- _mesa_add_renderbuffer(mesa_framebuffer,
- BUFFER_FRONT_LEFT, &drb->Base);
- }
- if (mesaVis->doubleBufferMode) {
- /* XXX what are the correct origin/stride values? */
- GLvoid *backBuf = malloc(driScrnPriv->fbStride
- * driScrnPriv->fbHeight);
- driRenderbuffer *drb = driNewRenderbuffer(MESA_FORMAT_ARGB8888,
- backBuf,
- driScrnPriv->fbBPP /8,
- driScrnPriv->fbOrigin,
- driScrnPriv->fbStride,
- driDrawPriv);
- fbSetSpanFunctions(drb, mesaVis);
- _mesa_add_renderbuffer(mesa_framebuffer,
- BUFFER_BACK_LEFT, &drb->Base);
- }
-
- _mesa_add_soft_renderbuffers(mesa_framebuffer,
- GL_FALSE, /* color */
- swDepth,
- swStencil,
- swAccum,
- swAlpha, /* or always zero? */
- GL_FALSE /* aux */);
-
- driDrawPriv->driverPrivate = mesa_framebuffer;
-
- return 1;
- }
-}
-
-
-static void
-fbDestroyBuffer(__DRIdrawable *driDrawPriv)
-{
- _mesa_reference_framebuffer((GLframebuffer **)(&(driDrawPriv->driverPrivate)), NULL);
-}
-
-
-
-/* If the backbuffer is on a videocard, this is extraordinarily slow!
- */
-static void
-fbSwapBuffers( __DRIdrawable *dPriv )
-{
- struct gl_framebuffer *mesa_framebuffer = (struct gl_framebuffer *)dPriv->driverPrivate;
- struct gl_renderbuffer * front_renderbuffer = mesa_framebuffer->Attachment[BUFFER_FRONT_LEFT].Renderbuffer;
- void *frontBuffer = front_renderbuffer->Data;
- int currentPitch = ((driRenderbuffer *)front_renderbuffer)->pitch;
- void *backBuffer = mesa_framebuffer->Attachment[BUFFER_BACK_LEFT].Renderbuffer->Data;
-
- if (dPriv->driContextPriv && dPriv->driContextPriv->driverPrivate) {
- fbContextPtr fbmesa = (fbContextPtr) dPriv->driContextPriv->driverPrivate;
- GLcontext *ctx = fbmesa->glCtx;
-
- if (ctx->Visual.doubleBufferMode) {
- int i;
- int offset = 0;
- char *tmp = malloc(currentPitch);
-
- _mesa_notifySwapBuffers( ctx ); /* flush pending rendering comands */
-
- ASSERT(frontBuffer);
- ASSERT(backBuffer);
-
- for (i = 0; i < dPriv->h; i++) {
- memcpy(tmp, (char *) backBuffer + offset, currentPitch);
- memcpy((char *) frontBuffer + offset, tmp, currentPitch);
- offset += currentPitch;
- }
-
- free(tmp);
- }
- }
- else {
- /* XXX this shouldn't be an error but we can't handle it for now */
- _mesa_problem(NULL, "fbSwapBuffers: drawable has no context!\n");
- }
-}
-
-
-/* Force the context `c' to be the current context and associate with it
- * buffer `b'.
- */
-static GLboolean
-fbMakeCurrent( __DRIcontext *driContextPriv,
- __DRIdrawable *driDrawPriv,
- __DRIdrawable *driReadPriv )
-{
- if ( driContextPriv ) {
- fbContextPtr newFbCtx =
- (fbContextPtr) driContextPriv->driverPrivate;
-
- newFbCtx->dri.drawable = driDrawPriv;
-
- _mesa_make_current( newFbCtx->glCtx,
- driDrawPriv->driverPrivate,
- driReadPriv->driverPrivate);
- } else {
- _mesa_make_current( NULL, NULL, NULL );
- }
-
- return GL_TRUE;
-}
-
-
-/* Force the context `c' to be unbound from its buffer.
- */
-static GLboolean
-fbUnbindContext( __DRIcontext *driContextPriv )
-{
- return GL_TRUE;
-}
-
-static struct __DriverAPIRec fbAPI = {
- .InitDriver = fbInitDriver,
- .DestroyScreen = fbDestroyScreen,
- .CreateContext = fbCreateContext,
- .DestroyContext = fbDestroyContext,
- .CreateBuffer = fbCreateBuffer,
- .DestroyBuffer = fbDestroyBuffer,
- .SwapBuffers = fbSwapBuffers,
- .MakeCurrent = fbMakeCurrent,
- .UnbindContext = fbUnbindContext,
-};
-
-
-
-static int
-__driValidateMode(const DRIDriverContext *ctx )
-{
- return 1;
-}
-
-static int
-__driInitFBDev( struct DRIDriverContextRec *ctx )
-{
- /* Note that drmOpen will try to load the kernel module, if needed. */
- /* we need a fbdev drm driver - it will only track maps */
- ctx->drmFD = drmOpen("radeon", NULL );
- if (ctx->drmFD < 0) {
- fprintf(stderr, "[drm] drmOpen failed\n");
- return 0;
- }
-
- ctx->shared.SAREASize = SAREA_MAX;
-
- if (drmAddMap( ctx->drmFD,
- 0,
- ctx->shared.SAREASize,
- DRM_SHM,
- DRM_CONTAINS_LOCK,
- &ctx->shared.hSAREA) < 0)
- {
- fprintf(stderr, "[drm] drmAddMap failed\n");
- return 0;
- }
- fprintf(stderr, "[drm] added %d byte SAREA at 0x%08lx\n",
- ctx->shared.SAREASize,
- (unsigned long) ctx->shared.hSAREA);
-
- if (drmMap( ctx->drmFD,
- ctx->shared.hSAREA,
- ctx->shared.SAREASize,
- (drmAddressPtr)(&ctx->pSAREA)) < 0)
- {
- fprintf(stderr, "[drm] drmMap failed\n");
- return 0;
- }
- memset(ctx->pSAREA, 0, ctx->shared.SAREASize);
- fprintf(stderr, "[drm] mapped SAREA 0x%08lx to %p, size %d\n",
- (unsigned long) ctx->shared.hSAREA, ctx->pSAREA,
- ctx->shared.SAREASize);
-
- /* Need to AddMap the framebuffer and mmio regions here:
- */
- if (drmAddMap( ctx->drmFD,
- (drm_handle_t)ctx->FBStart,
- ctx->FBSize,
- DRM_FRAME_BUFFER,
-#ifndef _EMBEDDED
- 0,
-#else
- DRM_READ_ONLY,
-#endif
- &ctx->shared.hFrameBuffer) < 0)
- {
- fprintf(stderr, "[drm] drmAddMap framebuffer failed\n");
- return 0;
- }
-
- fprintf(stderr, "[drm] framebuffer handle = 0x%08lx\n",
- (unsigned long) ctx->shared.hFrameBuffer);
-
- return 1;
-}
-
-static void
-__driHaltFBDev( struct DRIDriverContextRec *ctx )
-{
-}
-
-struct DRIDriverRec __driDriver = {
- __driValidateMode,
- __driValidateMode,
- __driInitFBDev,
- __driHaltFBDev
-};
-
-static __GLcontextModes *
-fbFillInModes( __DRIscreen *psp,
- unsigned pixel_bits, unsigned depth_bits,
- unsigned stencil_bits, GLboolean have_back_buffer )
-{
- __GLcontextModes * modes;
- __GLcontextModes * m;
- unsigned num_modes;
- unsigned depth_buffer_factor;
- unsigned back_buffer_factor;
- GLenum fb_format;
- GLenum fb_type;
-
- /* Right now GLX_SWAP_COPY_OML isn't supported, but it would be easy
- * enough to add support. Basically, if a context is created with an
- * fbconfig where the swap method is GLX_SWAP_COPY_OML, pageflipping
- * will never be used.
- */
- static const GLenum back_buffer_modes[] = {
- GLX_NONE, GLX_SWAP_UNDEFINED_OML /*, GLX_SWAP_COPY_OML */
- };
-
- uint8_t depth_bits_array[2];
- uint8_t stencil_bits_array[2];
-
-
- depth_bits_array[0] = depth_bits;
- depth_bits_array[1] = depth_bits;
-
- /* Just like with the accumulation buffer, always provide some modes
- * with a stencil buffer. It will be a sw fallback, but some apps won't
- * care about that.
- */
- stencil_bits_array[0] = 0;
- stencil_bits_array[1] = (stencil_bits == 0) ? 8 : stencil_bits;
-
- depth_buffer_factor = ((depth_bits != 0) || (stencil_bits != 0)) ? 2 : 1;
- back_buffer_factor = (have_back_buffer) ? 2 : 1;
-
- num_modes = depth_buffer_factor * back_buffer_factor * 4;
-
- if ( pixel_bits == 16 ) {
- fb_format = GL_RGB;
- fb_type = GL_UNSIGNED_SHORT_5_6_5;
- }
- else {
- fb_format = GL_RGBA;
- fb_type = GL_UNSIGNED_INT_8_8_8_8_REV;
- }
-
- modes = (*psp->contextModes->createContextModes)( num_modes, sizeof( __GLcontextModes ) );
- m = modes;
- if ( ! driFillInModes( & m, fb_format, fb_type,
- depth_bits_array, stencil_bits_array, depth_buffer_factor,
- back_buffer_modes, back_buffer_factor,
- GLX_TRUE_COLOR ) ) {
- fprintf( stderr, "[%s:%u] Error creating FBConfig!\n",
- __func__, __LINE__ );
- return NULL;
- }
-
- if ( ! driFillInModes( & m, fb_format, fb_type,
- depth_bits_array, stencil_bits_array, depth_buffer_factor,
- back_buffer_modes, back_buffer_factor,
- GLX_DIRECT_COLOR ) ) {
- fprintf( stderr, "[%s:%u] Error creating FBConfig!\n",
- __func__, __LINE__ );
- return NULL;
- }
-
- /* Mark the visual as slow if there are "fake" stencil bits.
- */
- for ( m = modes ; m != NULL ; m = m->next ) {
- if ( (m->stencilBits != 0) && (m->stencilBits != stencil_bits) ) {
- m->visualRating = GLX_SLOW_CONFIG;
- }
- }
-
- return modes;
-}
-
-
-/**
- * This is the bootstrap function for the driver. libGL supplies all of the
- * requisite information about the system, and the driver initializes itself.
- * This routine also fills in the linked list pointed to by \c driver_modes
- * with the \c __GLcontextModes that the driver can support for windows or
- * pbuffers.
- *
- * \return A pointer to a \c __DRIscreen on success, or \c NULL on
- * failure.
- */
-PUBLIC
-void * __driCreateNewScreen( __DRInativeDisplay *dpy, int scrn, __DRIscreen *psc,
- const __GLcontextModes * modes,
- const __DRIversion * ddx_version,
- const __DRIversion * dri_version,
- const __DRIversion * drm_version,
- const __DRIframebuffer * frame_buffer,
- drmAddress pSAREA, int fd,
- int internal_api_version,
- __GLcontextModes ** driver_modes )
-{
- __DRIscreen *psp;
- static const __DRIversion ddx_expected = { 4, 0, 0 };
- static const __DRIversion dri_expected = { 4, 0, 0 };
- static const __DRIversion drm_expected = { 1, 5, 0 };
-
-
- if ( ! driCheckDriDdxDrmVersions2( "fb",
- dri_version, & dri_expected,
- ddx_version, & ddx_expected,
- drm_version, & drm_expected ) ) {
- return NULL;
- }
-
- psp = __driUtilCreateNewScreen(dpy, scrn, psc, NULL,
- ddx_version, dri_version, drm_version,
- frame_buffer, pSAREA, fd,
- internal_api_version, &fbAPI);
- if ( psp != NULL ) {
- *driver_modes = fbFillInModes( psp, psp->fbBPP,
- (psp->fbBPP == 16) ? 16 : 24,
- (psp->fbBPP == 16) ? 0 : 8,
- 1);
- }
-
- return (void *) psp;
-}
-
-/* This is the table of extensions that the loader will dlsym() for. */
-PUBLIC const __DRIextension *__driDriverExtensions[] = {
- &driCoreExtension.base,
- &driLegacyExtension.base,
- NULL
-};
diff --git a/src/mesa/drivers/dri/ffb/Makefile b/src/mesa/drivers/dri/ffb/Makefile
deleted file mode 100644
index e9da8f9066e..00000000000
--- a/src/mesa/drivers/dri/ffb/Makefile
+++ /dev/null
@@ -1,35 +0,0 @@
-# src/mesa/drivers/dri/ffb/Makefile
-
-TOP = ../../../../..
-include $(TOP)/configs/current
-
-LIBNAME = ffb_dri.so
-
-# not yet
-# MINIGLX_SOURCES = server/ffb_dri.c
-
-DRIVER_SOURCES = \
- ffb_bitmap.c \
- ffb_clear.c \
- ffb_dd.c \
- ffb_depth.c \
- ffb_fog.c \
- ffb_lines.c \
- ffb_points.c \
- ffb_span.c \
- ffb_state.c \
- ffb_stencil.c \
- ffb_tex.c \
- ffb_tris.c \
- ffb_vb.c \
- ffb_xmesa.c
-
-C_SOURCES = \
- $(COMMON_SOURCES) \
- $(DRIVER_SOURCES)
-
-
-ASM_SOURCES =
-
-include ../Makefile.template
-
diff --git a/src/mesa/drivers/dri/ffb/ffb_bitmap.c b/src/mesa/drivers/dri/ffb/ffb_bitmap.c
deleted file mode 100644
index b71a552c9dc..00000000000
--- a/src/mesa/drivers/dri/ffb/ffb_bitmap.c
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- *
- * GLX Hardware Device Driver for Sun Creator/Creator3D
- * Copyright (C) 2001 David S. Miller
- *
- * 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 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
- * DAVID MILLER, OR ANY OTHER CONTRIBUTORS 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.
- *
- *
- * David S. Miller <[email protected]>
- */
-
-#include "ffb_context.h"
-#include "ffb_state.h"
-#include "ffb_lock.h"
-#include "ffb_bitmap.h"
-#include "swrast/swrast.h"
-#include "main/macros.h"
-
-/* Compute ceiling of integer quotient of A divided by B: */
-#define CEILING( A, B ) ( (A) % (B) == 0 ? (A)/(B) : (A)/(B)+1 )
-
-#undef FFB_BITMAP_TRACE
-
-static void
-ffb_bitmap(GLcontext *ctx, GLint px, GLint py,
- GLsizei width, GLsizei height,
- const struct gl_pixelstore_attrib *unpack,
- const GLubyte *bitmap)
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
- ffb_fbcPtr ffb = fmesa->regs;
- __DRIdrawable *dPriv = fmesa->driDrawable;
- unsigned int ppc, pixel;
- GLint row, col, row_stride;
- const GLubyte *src;
- char *buf;
-
- if (fmesa->bad_fragment_attrs != 0)
- _swrast_Bitmap(ctx, px, py, width,
- height, unpack, bitmap);
-
- pixel = (((((GLuint)(ctx->Current.RasterColor[0] * 255.0f)) & 0xff) << 0) |
- ((((GLuint)(ctx->Current.RasterColor[1] * 255.0f)) & 0xff) << 8) |
- ((((GLuint)(ctx->Current.RasterColor[2] * 255.0f)) & 0xff) << 16) |
- ((((GLuint)(ctx->Current.RasterColor[3] * 255.0f)) & 0xff) << 24));
-
-#ifdef FFB_BITMAP_TRACE
- fprintf(stderr, "ffb_bitmap: ppc(%08x) fbc(%08x) cmp(%08x) pixel(%08x)\n",
- fmesa->ppc, fmesa->fbc, fmesa->cmp, pixel);
-#endif
-
- LOCK_HARDWARE(fmesa);
- fmesa->hw_locked = 1;
-
- if (fmesa->state_dirty)
- ffbSyncHardware(fmesa);
-
- ppc = fmesa->ppc;
-
- FFBFifo(fmesa, 4);
- ffb->ppc = ((ppc &
- ~(FFB_PPC_TBE_MASK | FFB_PPC_ZS_MASK | FFB_PPC_CS_MASK | FFB_PPC_XS_MASK))
- | (FFB_PPC_TBE_TRANSPARENT | FFB_PPC_ZS_CONST | FFB_PPC_CS_CONST |
- (ctx->Color.BlendEnabled ? FFB_PPC_XS_CONST : FFB_PPC_XS_WID)));
- ffb->constz = ((GLuint) (ctx->Current.RasterPos[2] * 0x0fffffff));
- ffb->fg = pixel;
- ffb->fontinc = (0 << 16) | 32;
-
- buf = (char *)(fmesa->sfb32 + (dPriv->x << 2) + (dPriv->y << 13));
-
- row_stride = (unpack->Alignment * CEILING(width, 8 * unpack->Alignment));
- src = (const GLubyte *) (bitmap +
- (unpack->SkipRows * row_stride) +
- (unpack->SkipPixels / 8));
- if (unpack->LsbFirst == GL_TRUE) {
- for (row = 0; row < height; row++, src += row_stride) {
- const GLubyte *row_src = src;
- GLuint base_x, base_y;
-
- base_x = dPriv->x + px;
- base_y = dPriv->y + (dPriv->h - (py + row));
-
- FFBFifo(fmesa, 1);
- ffb->fontxy = (base_y << 16) | base_x;
-
- for (col = 0; col < width; col += 32, row_src += 4) {
- GLint bitnum, font_w = (width - col);
- GLuint font_data;
-
- if (font_w > 32)
- font_w = 32;
- font_data = 0;
- for (bitnum = 0; bitnum < 32; bitnum++) {
- const GLubyte val = row_src[bitnum >> 3];
-
- if (val & (1 << (bitnum & (8 - 1))))
- font_data |= (1 << (31 - bitnum));
- }
-
- FFBFifo(fmesa, 2);
- ffb->fontw = font_w;
- ffb->font = font_data;
- }
- }
- } else {
- for (row = 0; row < height; row++, src += row_stride) {
- const GLubyte *row_src = src;
- GLuint base_x, base_y;
-
- base_x = dPriv->x + px;
- base_y = dPriv->y + (dPriv->h - (py + row));
-
- FFBFifo(fmesa, 1);
- ffb->fontxy = (base_y << 16) | base_x;
-
- for (col = 0; col < width; col += 32, row_src += 4) {
- GLint font_w = (width - col);
-
- if (font_w > 32)
- font_w = 32;
- FFBFifo(fmesa, 2);
- ffb->fontw = font_w;
- ffb->font = (((unsigned int)row_src[0]) << 24 |
- ((unsigned int)row_src[1]) << 16 |
- ((unsigned int)row_src[2]) << 8 |
- ((unsigned int)row_src[3]) << 0);
- }
- }
- }
-
- FFBFifo(fmesa, 1);
- ffb->ppc = ppc;
- fmesa->ffbScreen->rp_active = 1;
-
- UNLOCK_HARDWARE(fmesa);
- fmesa->hw_locked = 0;
-}
-
-void ffbDDInitBitmapFuncs(GLcontext *ctx)
-{
- ctx->Driver.Bitmap = ffb_bitmap;
-}
diff --git a/src/mesa/drivers/dri/ffb/ffb_bitmap.h b/src/mesa/drivers/dri/ffb/ffb_bitmap.h
deleted file mode 100644
index 0ccbc57bd09..00000000000
--- a/src/mesa/drivers/dri/ffb/ffb_bitmap.h
+++ /dev/null
@@ -1,7 +0,0 @@
-
-#ifndef _FFB_BITMAP_H
-#define _FFB_BITMAP_H
-
-extern void ffbDDInitBitmapFuncs(GLcontext *);
-
-#endif /* !(_FFB_BITMAP_H) */
diff --git a/src/mesa/drivers/dri/ffb/ffb_clear.c b/src/mesa/drivers/dri/ffb/ffb_clear.c
deleted file mode 100644
index aa3fa0a86c5..00000000000
--- a/src/mesa/drivers/dri/ffb/ffb_clear.c
+++ /dev/null
@@ -1,335 +0,0 @@
-/*
- *
- * GLX Hardware Device Driver for Sun Creator/Creator3D
- * Copyright (C) 2000 David S. Miller
- *
- * 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 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
- * DAVID MILLER, OR ANY OTHER CONTRIBUTORS 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.
- *
- *
- * David S. Miller <[email protected]>
- */
-
-#include "main/mtypes.h"
-
-#include "main/mm.h"
-#include "ffb_dd.h"
-#include "ffb_span.h"
-#include "ffb_context.h"
-#include "ffb_vb.h"
-#include "ffb_clear.h"
-#include "ffb_lock.h"
-
-#undef CLEAR_TRACE
-
-#define BOX_AREA(__w, __h) ((int)(__w) * (int)(__h))
-
-/* Compute the page aligned box for a page mode fast fill.
- * In 'ework' this returns greater than zero if there are some odd
- * edges to take care of which are outside of the page aligned area.
- * It will place less than zero there if the box is too small,
- * indicating that a different method must be used to fill it.
- */
-#define CreatorPageFillParms(ffp, x, y, w, h, px, py, pw, ph, ework) \
-do { int xdiff, ydiff; \
- int pf_bh = ffp->pagefill_height; \
- int pf_bw = ffp->pagefill_width; \
- py = ((y + (pf_bh - 1)) & ~(pf_bh - 1)); \
- ydiff = py - y; \
- px = ffp->Pf_AlignTab[x + (pf_bw - 1)]; \
- xdiff = px - x; \
- ph = ((h - ydiff) & ~(pf_bh - 1)); \
- if(ph <= 0) \
- ework = -1; \
- else { \
- pw = ffp->Pf_AlignTab[w - xdiff]; \
- if(pw <= 0) { \
- ework = -1; \
- } else { \
- ework = (((xdiff > 0) || \
- (ydiff > 0) || \
- ((w - pw) > 0) || \
- ((h - ph) > 0))) ? 1 : 0; \
- } \
- } \
-} while(0);
-
-struct ff_fixups {
- int x, y, width, height;
-};
-
-/* Compute fixups of non-page aligned areas after a page fill.
- * Return the number of fixups needed.
- */
-static INLINE int
-CreatorComputePageFillFixups(struct ff_fixups *fixups,
- int x, int y, int w, int h,
- int paligned_x, int paligned_y,
- int paligned_w, int paligned_h)
-{
- int nfixups = 0;
-
- /* FastFill Left */
- if(paligned_x != x) {
- fixups[nfixups].x = x;
- fixups[nfixups].y = paligned_y;
- fixups[nfixups].width = paligned_x - x;
- fixups[nfixups].height = paligned_h;
- nfixups++;
- }
- /* FastFill Top */
- if(paligned_y != y) {
- fixups[nfixups].x = x;
- fixups[nfixups].y = y;
- fixups[nfixups].width = w;
- fixups[nfixups].height = paligned_y - y;
- nfixups++;
- }
- /* FastFill Right */
- if((x+w) != (paligned_x+paligned_w)) {
- fixups[nfixups].x = (paligned_x+paligned_w);
- fixups[nfixups].y = paligned_y;
- fixups[nfixups].width = (x+w) - fixups[nfixups].x;
- fixups[nfixups].height = paligned_h;
- nfixups++;
- }
- /* FastFill Bottom */
- if((y+h) != (paligned_y+paligned_h)) {
- fixups[nfixups].x = x;
- fixups[nfixups].y = (paligned_y+paligned_h);
- fixups[nfixups].width = w;
- fixups[nfixups].height = (y+h) - fixups[nfixups].y;
- nfixups++;
- }
- return nfixups;
-}
-
-static void
-ffb_do_clear(GLcontext *ctx, __DRIdrawable *dPriv)
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
- FFBDRIPtr gDRIPriv = (FFBDRIPtr) fmesa->driScreen->pDevPriv;
- ffb_fbcPtr ffb = fmesa->regs;
- drm_clip_rect_t *box = dPriv->pClipRects;
- int nc = dPriv->numClipRects;
- GLint cx, cy, cw, ch;
-
- /* compute region after locking: */
- cx = ctx->DrawBuffer->_Xmin;
- cy = ctx->DrawBuffer->_Ymin;
- cw = ctx->DrawBuffer->_Xmax - cx;
- ch = ctx->DrawBuffer->_Ymax - cy;
-
- cy = dPriv->h - cy - ch;
- cx += dPriv->x;
- cy += dPriv->y;
-
- while (nc--) {
- GLint x = box[nc].x1;
- GLint y = box[nc].y1;
- GLint width = box[nc].x2 - x;
- GLint height = box[nc].y2 - y;
- int paligned_y, paligned_x;
- int paligned_h, paligned_w = 0;
- int extra_work;
-
- if (BOX_AREA(width, height) < gDRIPriv->fastfill_small_area) {
- FFBFifo(fmesa, 5);
- ffb->drawop = FFB_DRAWOP_RECTANGLE;
- ffb->by = y;
- ffb->bx = x;
- ffb->bh = height;
- ffb->bw = width;
- continue;
- }
-
- FFBFifo(fmesa, 1);
- ffb->drawop = FFB_DRAWOP_FASTFILL;
-
- if (gDRIPriv->disable_pagefill ||
- (width < (gDRIPriv->pagefill_width<<1)) ||
- (height < (gDRIPriv->pagefill_height<<1)))
- goto do_fastfill;
-
- CreatorPageFillParms(gDRIPriv,
- x, y, width, height,
- paligned_x, paligned_y,
- paligned_w, paligned_h, extra_work);
-
- if (extra_work < 0 ||
- BOX_AREA(paligned_w, paligned_h) < gDRIPriv->pagefill_small_area) {
- do_fastfill:
- FFBFifo(fmesa, 10);
- ffb->by = FFB_FASTFILL_COLOR_BLK;
- ffb->dy = 0;
- ffb->dx = 0;
- ffb->bh = gDRIPriv->fastfill_height;
- ffb->bw = (gDRIPriv->fastfill_width * 4);
- ffb->by = FFB_FASTFILL_BLOCK;
- ffb->dy = y;
- ffb->dx = x;
- ffb->bh = (height + (y & (gDRIPriv->fastfill_height - 1)));
- ffb->bx = (width + (x & (gDRIPriv->fastfill_width - 1)));
- continue;
- }
-
- /* Ok, page fill is possible and worth it. */
- FFBFifo(fmesa, 15);
- ffb->by = FFB_FASTFILL_COLOR_BLK;
- ffb->dy = 0;
- ffb->dx = 0;
- ffb->bh = gDRIPriv->fastfill_height;
- ffb->bw = gDRIPriv->fastfill_width * 4;
- ffb->by = FFB_FASTFILL_BLOCK_X;
- ffb->dy = 0;
- ffb->dx = 0;
- ffb->bh = gDRIPriv->pagefill_height;
- ffb->bw = gDRIPriv->pagefill_width * 4;
- ffb->by = FFB_FASTFILL_PAGE;
- ffb->dy = paligned_y;
- ffb->dx = paligned_x;
- ffb->bh = paligned_h;
- ffb->bx = paligned_w;
-
- if (extra_work) {
- struct ff_fixups local_fixups[4];
- int nfixups;
-
- nfixups = CreatorComputePageFillFixups(local_fixups,
- x, y, width, height,
- paligned_x, paligned_y,
- paligned_w, paligned_h);
- FFBFifo(fmesa, 5 + (nfixups * 5));
- ffb->by = FFB_FASTFILL_COLOR_BLK;
- ffb->dy = 0;
- ffb->dx = 0;
- ffb->bh = gDRIPriv->fastfill_height;
- ffb->bw = gDRIPriv->fastfill_width * 4;
-
- while (--nfixups >= 0) {
- int xx, yy, ww, hh;
-
- xx = local_fixups[nfixups].x;
- yy = local_fixups[nfixups].y;
- ffb->dy = yy;
- ffb->dx = xx;
- ww = (local_fixups[nfixups].width +
- (xx & (gDRIPriv->fastfill_width - 1)));
- hh = (local_fixups[nfixups].height +
- (yy & (gDRIPriv->fastfill_height - 1)));
- if (nfixups != 0) {
- ffb->by = FFB_FASTFILL_BLOCK;
- ffb->bh = hh;
- ffb->bw = ww;
- } else {
- ffb->bh = hh;
- ffb->by = FFB_FASTFILL_BLOCK;
- ffb->bx = ww;
- }
- }
- }
- }
-}
-
-void ffbDDClear(GLcontext *ctx, GLbitfield mask)
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
- __DRIdrawable *dPriv = fmesa->driDrawable;
- unsigned int stcmask = BUFFER_BIT_STENCIL;
-
-#ifdef CLEAR_TRACE
- fprintf(stderr, "ffbDDClear: mask(%08x) \n", mask);
-#endif
- if (!(fmesa->ffb_sarea->flags & FFB_DRI_FFB2PLUS))
- stcmask = 0;
-
- if (mask & (BUFFER_BIT_FRONT_LEFT | BUFFER_BIT_BACK_LEFT | BUFFER_BIT_DEPTH | stcmask)) {
- ffb_fbcPtr ffb = fmesa->regs;
- unsigned int fbc, ppc;
-
- fbc = (FFB_FBC_XE_ON);
- ppc = (FFB_PPC_ACE_DISABLE | FFB_PPC_DCE_DISABLE |
- FFB_PPC_ABE_DISABLE | FFB_PPC_VCE_DISABLE |
- FFB_PPC_APE_DISABLE | FFB_PPC_XS_WID |
- FFB_PPC_ZS_CONST | FFB_PPC_CS_CONST);
-
- /* Y/X enables must be both on or both off. */
- if (mask & (BUFFER_BIT_DEPTH | stcmask)) {
- fbc |= (FFB_FBC_ZE_ON | FFB_FBC_YE_ON | FFB_FBC_WB_C);
- } else
- fbc |= FFB_FBC_ZE_OFF | FFB_FBC_YE_OFF;
-
- /* All RGB enables must be both on or both off. */
- if (mask & (BUFFER_BIT_FRONT_LEFT | BUFFER_BIT_BACK_LEFT)) {
- if (mask & BUFFER_BIT_FRONT_LEFT) {
- if (fmesa->back_buffer == 0)
- fbc |= FFB_FBC_WB_B;
- else
- fbc |= FFB_FBC_WB_A;
- }
- if (mask & BUFFER_BIT_BACK_LEFT) {
- if (fmesa->back_buffer == 0)
- fbc |= FFB_FBC_WB_A;
- else
- fbc |= FFB_FBC_WB_B;
- }
- fbc |= FFB_FBC_RGBE_ON;
- } else
- fbc |= FFB_FBC_RGBE_OFF;
-
- LOCK_HARDWARE(fmesa);
-
- if (dPriv->numClipRects) {
- FFBFifo(fmesa, 8);
- ffb->fbc = fbc;
- ffb->ppc = ppc;
- ffb->xclip = FFB_XCLIP_TEST_ALWAYS;
- ffb->cmp = 0x80808080;
- ffb->rop = FFB_ROP_NEW;
-
- if (mask & (BUFFER_BIT_FRONT_LEFT | BUFFER_BIT_BACK_LEFT))
- ffb->fg = fmesa->clear_pixel;
- if (mask & BUFFER_BIT_DEPTH)
- ffb->constz = fmesa->clear_depth;
- if (mask & stcmask)
- ffb->consty = fmesa->clear_stencil;
-
- ffb_do_clear(ctx, dPriv);
-
- FFBFifo(fmesa, 6);
- ffb->ppc = fmesa->ppc;
- ffb->fbc = fmesa->fbc;
- ffb->xclip = fmesa->xclip;
- ffb->cmp = fmesa->cmp;
- ffb->rop = fmesa->rop;
- ffb->drawop = fmesa->drawop;
- if (mask & stcmask)
- ffb->consty = fmesa->consty;
- fmesa->ffbScreen->rp_active = 1;
- }
-
- UNLOCK_HARDWARE(fmesa);
-
- mask &= ~(BUFFER_BIT_FRONT_LEFT | BUFFER_BIT_BACK_LEFT |
- BUFFER_BIT_DEPTH | stcmask);
- }
-
- if (mask)
- _swrast_Clear(ctx, mask);
-}
-
diff --git a/src/mesa/drivers/dri/ffb/ffb_clear.h b/src/mesa/drivers/dri/ffb/ffb_clear.h
deleted file mode 100644
index c3b8ce714b3..00000000000
--- a/src/mesa/drivers/dri/ffb/ffb_clear.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef _FFB_CLEAR_H
-#define _FFB_CLEAR_H
-
-extern void ffbDDClear(GLcontext *ctx, GLbitfield mask);
-
-#endif /* !(_FFB_CLEAR_H) */
diff --git a/src/mesa/drivers/dri/ffb/ffb_context.h b/src/mesa/drivers/dri/ffb/ffb_context.h
deleted file mode 100644
index 4d1d53ff59f..00000000000
--- a/src/mesa/drivers/dri/ffb/ffb_context.h
+++ /dev/null
@@ -1,305 +0,0 @@
-
-#ifndef _FFB_CONTEXT_H
-#define _FFB_CONTEXT_H
-
-#include "dri_util.h"
-#include "drm.h"
-
-#include "main/mtypes.h"
-
-#include "ffb_xmesa.h"
-
-typedef struct {
- GLfloat alpha;
- GLfloat red;
- GLfloat green;
- GLfloat blue;
-} ffb_color;
-
-#define FFB_GET_ALPHA(VTX) \
- FFB_COLOR_FROM_FLOAT((VTX)->color[0].alpha)
-#define FFB_GET_RED(VTX) \
- FFB_COLOR_FROM_FLOAT((VTX)->color[0].red)
-#define FFB_GET_GREEN(VTX) \
- FFB_COLOR_FROM_FLOAT((VTX)->color[0].green)
-#define FFB_GET_BLUE(VTX) \
- FFB_COLOR_FROM_FLOAT((VTX)->color[0].blue)
-
-typedef struct {
- GLfloat x, y, z;
- ffb_color color[2];
-} ffb_vertex;
-
-#define FFB_DELAYED_VIEWPORT_VARS \
- GLfloat VP_SX = fmesa->hw_viewport[MAT_SX]; \
- GLfloat VP_TX = fmesa->hw_viewport[MAT_TX]; \
- GLfloat VP_SY = fmesa->hw_viewport[MAT_SY]; \
- GLfloat VP_TY = fmesa->hw_viewport[MAT_TY]; \
- GLfloat VP_SZ = fmesa->hw_viewport[MAT_SZ]; \
- GLfloat VP_TZ = fmesa->hw_viewport[MAT_TZ]; \
- (void) VP_SX; (void) VP_SY; (void) VP_SZ; \
- (void) VP_TX; (void) VP_TY; (void) VP_TZ
-
-#define FFB_GET_Z(VTX) \
- FFB_Z_FROM_FLOAT(VP_SZ * (VTX)->z + VP_TZ)
-#define FFB_GET_Y(VTX) \
- FFB_XY_FROM_FLOAT(VP_SY * (VTX)->y + VP_TY)
-#define FFB_GET_X(VTX) \
- FFB_XY_FROM_FLOAT(VP_SX * (VTX)->x + VP_TX)
-
-typedef void (*ffb_point_func)(GLcontext *, ffb_vertex *);
-typedef void (*ffb_line_func)(GLcontext *, ffb_vertex *, ffb_vertex *);
-typedef void (*ffb_tri_func)(GLcontext *, ffb_vertex *, ffb_vertex *,
- ffb_vertex *);
-typedef void (*ffb_quad_func)(GLcontext *, ffb_vertex *, ffb_vertex *,
- ffb_vertex *, ffb_vertex *);
-
-/* Immediate mode fast-path support. */
-typedef struct {
- GLfloat obj[4];
- GLfloat normal[4];
- GLfloat clip[4];
- GLuint mask;
- GLfloat color[4];
- GLfloat win[4];
- GLfloat eye[4];
-} ffbTnlVertex, *ffbTnlVertexPtr;
-
-typedef void (*ffb_interp_func)(GLfloat t,
- ffbTnlVertex *O,
- const ffbTnlVertex *I,
- const ffbTnlVertex *J);
-
-struct ffb_current_state {
- GLfloat color[4];
- GLfloat normal[4];
- GLfloat specular[4];
-};
-
-struct ffb_light_state {
- GLfloat base_color[3];
- GLfloat base_alpha;
-};
-
-struct ffb_vertex_state {
- struct ffb_current_state current;
- struct ffb_light_state light;
-};
-
-struct ffb_imm_vertex {
- ffbTnlVertex vertices[8];
- ffbTnlVertex *v0;
- ffbTnlVertex *v1;
- ffbTnlVertex *v2;
- ffbTnlVertex *v3;
-
- void (*save_vertex)(GLcontext *ctx, ffbTnlVertex *v);
- void (*flush_vertex)(GLcontext *ctx, ffbTnlVertex *v);
-
- ffb_interp_func interp;
-
- GLuint prim, format;
-
- GLvertexformat vtxfmt;
-};
-
-typedef struct ffb_context_t {
- GLcontext *glCtx;
- GLframebuffer *glBuffer;
-
- ffb_fbcPtr regs;
- volatile char *sfb32;
-
- int hw_locked;
-
- int back_buffer; /* 0 = bufferA, 1 = bufferB */
-
- /* Viewport matrix. */
- GLfloat hw_viewport[16];
-#define SUBPIXEL_X (-0.5F)
-#define SUBPIXEL_Y (-0.5F + 0.125)
-
- /* Vertices in driver format. */
- ffb_vertex *verts;
-
- /* Rasterization functions. */
- ffb_point_func draw_point;
- ffb_line_func draw_line;
- ffb_tri_func draw_tri;
- ffb_quad_func draw_quad;
-
- GLenum raster_primitive;
- GLenum render_primitive;
-
- GLfloat backface_sign;
- GLfloat depth_scale;
-
- GLfloat ffb_2_30_fixed_scale;
- GLfloat ffb_one_over_2_30_fixed_scale;
- GLfloat ffb_16_16_fixed_scale;
- GLfloat ffb_one_over_16_16_fixed_scale;
- GLfloat ffb_ubyte_color_scale;
- GLfloat ffb_zero;
-
- /* Immediate mode state. */
- struct ffb_vertex_state vtx_state;
- struct ffb_imm_vertex imm;
-
- /* Debugging knobs. */
- GLboolean debugFallbacks;
-
- /* This records state bits when a per-fragment attribute has
- * been set which prevents us from rendering in hardware.
- *
- * As attributes change, some of these bits may clear as
- * we move back within the chips capabilities. If they
- * all clear, we return to full hw rendering.
- */
- unsigned int bad_fragment_attrs;
-#define FFB_BADATTR_FOG 0x00000001 /* Bad fog possible only when < FFB2 */
-#define FFB_BADATTR_BLENDFUNC 0x00000002 /* Any non-const func based upon dst alpha */
-#define FFB_BADATTR_BLENDROP 0x00000004 /* Blend enabled and LogicOP != GL_COPY */
-#define FFB_BADATTR_BLENDEQN 0x00000008 /* Blend equation other than ADD */
-#define FFB_BADATTR_STENCIL 0x00000010 /* Stencil enabled when < FFB2+ */
-#define FFB_BADATTR_TEXTURE 0x00000020 /* Texture enabled */
-#define FFB_BADATTR_SWONLY 0x00000040 /* Environment var set */
-
- unsigned int state_dirty;
- unsigned int state_fifo_ents;
-#define FFB_STATE_FBC 0x00000001
-#define FFB_STATE_PPC 0x00000002
-#define FFB_STATE_DRAWOP 0x00000004
-#define FFB_STATE_ROP 0x00000008
-#define FFB_STATE_LPAT 0x00000010
-#define FFB_STATE_PMASK 0x00000020
-#define FFB_STATE_XPMASK 0x00000040
-#define FFB_STATE_YPMASK 0x00000080
-#define FFB_STATE_ZPMASK 0x00000100
-#define FFB_STATE_XCLIP 0x00000200
-#define FFB_STATE_CMP 0x00000400
-#define FFB_STATE_MATCHAB 0x00000800
-#define FFB_STATE_MAGNAB 0x00001000
-#define FFB_STATE_MATCHC 0x00002000
-#define FFB_STATE_MAGNC 0x00004000
-#define FFB_STATE_DCUE 0x00008000
-#define FFB_STATE_BLEND 0x00010000
-#define FFB_STATE_CLIP 0x00020000
-#define FFB_STATE_STENCIL 0x00040000
-#define FFB_STATE_APAT 0x00080000
-#define FFB_STATE_WID 0x00100000
-#define FFB_STATE_ALL 0x001fffff
-
- unsigned int state_all_fifo_ents;
-
-#define FFB_MAKE_DIRTY(FMESA, STATE_MASK, FIFO_ENTS) \
-do { if ((STATE_MASK) & ~((FMESA)->state_dirty)) { \
- (FMESA)->state_dirty |= (STATE_MASK); \
- (FMESA)->state_fifo_ents += FIFO_ENTS; \
- } \
-} while (0)
-
- /* General hw reg state. */
- unsigned int fbc;
- unsigned int ppc;
- unsigned int drawop;
- unsigned int rop;
-
- unsigned int lpat;
-#define FFB_LPAT_BAD 0xffffffff
-
- unsigned int wid;
- unsigned int pmask;
- unsigned int xpmask;
- unsigned int ypmask;
- unsigned int zpmask;
- unsigned int xclip;
- unsigned int cmp;
- unsigned int matchab;
- unsigned int magnab;
- unsigned int matchc;
- unsigned int magnc;
-
- /* Depth cue unit hw reg state. */
- unsigned int dcss; /* All FFB */
- unsigned int dcsf; /* All FFB */
- unsigned int dcsb; /* All FFB */
- unsigned int dczf; /* All FFB */
- unsigned int dczb; /* All FFB */
- unsigned int dcss1; /* >=FFB2 only */
- unsigned int dcss2; /* >=FFB2 only */
- unsigned int dcss3; /* >=FFB2 only */
- unsigned int dcs2; /* >=FFB2 only */
- unsigned int dcs3; /* >=FFB2 only */
- unsigned int dcs4; /* >=FFB2 only */
- unsigned int dcd2; /* >=FFB2 only */
- unsigned int dcd3; /* >=FFB2 only */
- unsigned int dcd4; /* >=FFB2 only */
-
- /* Blend unit hw reg state. */
- unsigned int blendc;
- unsigned int blendc1;
- unsigned int blendc2;
-
- /* ViewPort clipping hw reg state. */
- unsigned int vclipmin;
- unsigned int vclipmax;
- unsigned int vclipzmin;
- unsigned int vclipzmax;
- struct {
- unsigned int min;
- unsigned int max;
- } aux_clips[4];
-
- /* Stencil control hw reg state. >=FFB2+ only. */
- unsigned int stencil;
- unsigned int stencilctl;
- unsigned int consty; /* Stencil Ref */
-
- /* Area pattern (used for polygon stipples). */
- unsigned int pattern[32];
-
- /* Fog state. */
- float Znear, Zfar;
-
- drm_context_t hHWContext;
- drm_hw_lock_t *driHwLock;
- int driFd;
-
- unsigned int clear_pixel;
- unsigned int clear_depth;
- unsigned int clear_stencil;
-
- unsigned int setupindex;
- unsigned int setupnewinputs;
- unsigned int new_gl_state;
-
- __DRIdrawable *driDrawable;
- __DRIscreen *driScreen;
- ffbScreenPrivate *ffbScreen;
- ffb_dri_state_t *ffb_sarea;
-} ffbContextRec, *ffbContextPtr;
-
-#define FFB_CONTEXT(ctx) ((ffbContextPtr)((ctx)->DriverCtx))
-
-/* We want the depth values written during software rendering
- * to match what the hardware is going to put there when we
- * hw render.
- *
- * The Z buffer is 28 bits deep. Smooth shaded primitives
- * specify a 2:30 signed fixed point Z value in the range 0.0
- * to 1.0 inclusive.
- *
- * So for example, when hw rendering, the largest Z value of
- * 1.0 would produce a value of 0x0fffffff in the actual Z
- * buffer, which is the maximum value.
- *
- * Mesa's depth type is a 32-bit uint, so we use the following macro
- * to convert to/from FFB hw Z values. Note we also have to clear
- * out the top bits as that is where the Y (stencil) buffer is stored
- * and during hw Z buffer reads it is always there. (During writes
- * we tell the hw to discard those top 4 bits).
- */
-#define Z_TO_MESA(VAL) ((GLuint)(((VAL) & 0x0fffffff) << (32 - 28)))
-#define Z_FROM_MESA(VAL) (((GLuint)((GLdouble)(VAL))) >> (32 - 28))
-
-#endif /* !(_FFB_CONTEXT_H) */
diff --git a/src/mesa/drivers/dri/ffb/ffb_dd.c b/src/mesa/drivers/dri/ffb/ffb_dd.c
deleted file mode 100644
index 91b6d3153af..00000000000
--- a/src/mesa/drivers/dri/ffb/ffb_dd.c
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- *
- * GLX Hardware Device Driver for Sun Creator/Creator3D
- * Copyright (C) 2000, 2001 David S. Miller
- *
- * 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 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
- * DAVID MILLER, OR ANY OTHER CONTRIBUTORS 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.
- *
- *
- * David S. Miller <[email protected]>
- */
-
-#include "main/mtypes.h"
-#include "main/mm.h"
-#include "ffb_dd.h"
-#include "ffb_span.h"
-#include "ffb_context.h"
-#include "ffb_clear.h"
-#include "ffb_lock.h"
-
-#define FFB_DATE "20021125"
-
-PUBLIC const char __driConfigOptions[] = { 0 };
-const GLuint __driNConfigOptions = 0;
-
-/* Mesa's Driver Functions */
-
-static const GLubyte *ffbDDGetString(GLcontext *ctx, GLenum name)
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
- static char buffer[128];
-
- switch (name) {
- case GL_VENDOR:
- return (GLubyte *) "David S. Miller";
-
- case GL_RENDERER:
- sprintf(buffer, "Mesa DRI FFB " FFB_DATE);
-
- if (fmesa->ffb_sarea->flags & FFB_DRI_FFB2)
- strncat(buffer, " FFB2", 5);
- if (fmesa->ffb_sarea->flags & FFB_DRI_FFB2PLUS)
- strncat(buffer, " FFB2PLUS", 9);
- if (fmesa->ffb_sarea->flags & FFB_DRI_PAC1)
- strncat(buffer, " PAC1", 5);
- if (fmesa->ffb_sarea->flags & FFB_DRI_PAC2)
- strncat(buffer, " PAC2", 5);
-
-#ifdef USE_SPARC_ASM
- strncat(buffer, " Sparc", 6);
-#endif
-
- return (GLubyte *) buffer;
-
- default:
- return NULL;
- };
-}
-
-
-static void ffbBufferSize(GLframebuffer *buffer, GLuint *width, GLuint *height)
-{
- GET_CURRENT_CONTEXT(ctx);
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
-
- LOCK_HARDWARE(fmesa);
- *width = fmesa->driDrawable->w;
- *height = fmesa->driDrawable->h;
- UNLOCK_HARDWARE(fmesa);
-}
-
-void ffbDDExtensionsInit(GLcontext *ctx)
-{
- /* Nothing for now until we start to add
- * real acceleration. -DaveM
- */
-
- /* XXX Need to turn off GL_EXT_blend_func_separate for one.
- * XXX Also BlendEquation should be turned off too, what
- * XXX EXT is that assosciated with?
- */
-}
-
-static void ffbDDFinish(GLcontext *ctx)
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
-
- LOCK_HARDWARE(fmesa);
- FFBWait(fmesa, fmesa->regs);
- UNLOCK_HARDWARE(fmesa);
-}
-
-void ffbDDInitDriverFuncs(GLcontext *ctx)
-{
- ctx->Driver.GetBufferSize = ffbBufferSize;
- ctx->Driver.GetString = ffbDDGetString;
- ctx->Driver.Clear = ffbDDClear;
-
- ctx->Driver.Finish = ffbDDFinish;
-}
diff --git a/src/mesa/drivers/dri/ffb/ffb_dd.h b/src/mesa/drivers/dri/ffb/ffb_dd.h
deleted file mode 100644
index 1198cda30a1..00000000000
--- a/src/mesa/drivers/dri/ffb/ffb_dd.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- *
- * GLX Hardware Device Driver for Sun Creator/Creator3D.
- * Copyright (C) 2000 David S. Miller
- *
- * 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 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
- * DAVID MILLER, OR ANY OTHER CONTRIBUTORS 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.
- *
- *
- * David S. Miller <[email protected]>
- */
-
-#ifndef _FFB_DD_H
-#define _FFB_DD_H
-
-#include "main/context.h"
-
-void ffbDDInitDriverFuncs(GLcontext *ctx);
-void ffbDDExtensionsInit(GLcontext *ctx);
-
-#endif /* !(_FFB_DD_H) */
diff --git a/src/mesa/drivers/dri/ffb/ffb_depth.c b/src/mesa/drivers/dri/ffb/ffb_depth.c
deleted file mode 100644
index d19385b776b..00000000000
--- a/src/mesa/drivers/dri/ffb/ffb_depth.c
+++ /dev/null
@@ -1,243 +0,0 @@
-/*
- *
- * GLX Hardware Device Driver for Sun Creator/Creator3D
- * Copyright (C) 2000 David S. Miller
- *
- * 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 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
- * DAVID MILLER, OR ANY OTHER CONTRIBUTORS 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.
- *
- *
- * David S. Miller <[email protected]>
- */
-
-#include "main/mtypes.h"
-#include "ffb_dd.h"
-#include "ffb_span.h"
-#include "ffb_context.h"
-#include "ffb_depth.h"
-#include "ffb_lock.h"
-
-
-#undef DEPTH_TRACE
-
-static void FFBWriteDepthSpan( GLcontext *ctx,
- struct gl_renderbuffer *rb,
- GLuint n, GLint x, GLint y,
- const void *values,
- const GLubyte mask[] )
-{
- const GLuint *depth = (const GLuint *) values;
-#ifdef DEPTH_TRACE
- fprintf(stderr, "FFBWriteDepthSpan: n(%d) x(%d) y(%d)\n",
- (int) n, x, y);
-#endif
- if (ctx->Depth.Mask) {
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
- __DRIdrawable *dPriv = fmesa->driDrawable;
- GLuint *zptr;
- GLuint i;
-
- if (!fmesa->hw_locked)
- LOCK_HARDWARE(fmesa);
- FFBFifo(fmesa, 2);
- fmesa->regs->fbc = (FFB_FBC_WB_C | FFB_FBC_ZE_ON |
- FFB_FBC_YE_OFF | FFB_FBC_RGBE_OFF);
- fmesa->regs->ppc = FFB_PPC_ZS_VAR;
- FFBWait(fmesa, fmesa->regs);
-
- y = (dPriv->h - y);
- zptr = (GLuint *)
- ((char *)fmesa->sfb32 +
- ((dPriv->x + x) << 2) +
- ((dPriv->y + y) << 13));
-
- for (i = 0; i < n; i++) {
- if (mask[i]) {
- *zptr = Z_FROM_MESA(depth[i]);
- }
- zptr++;
- }
-
- FFBFifo(fmesa, 2);
- fmesa->regs->fbc = fmesa->fbc;
- fmesa->regs->ppc = fmesa->ppc;
- fmesa->ffbScreen->rp_active = 1;
- if (!fmesa->hw_locked)
- UNLOCK_HARDWARE(fmesa);
- }
-}
-
-static void FFBWriteMonoDepthSpan( GLcontext *ctx,
- struct gl_renderbuffer *rb,
- GLuint n, GLint x, GLint y,
- const void *value, const GLubyte mask[] )
-{
- const GLuint depthVal = *((GLuint *) value);
- GLuint depths[MAX_WIDTH];
- GLuint i;
- for (i = 0; i < n; i++)
- depths[i] = depthVal;
- FFBWriteDepthSpan(ctx, rb, n, x, y, depths, mask);
-}
-
-static void FFBWriteDepthPixels( GLcontext *ctx,
- struct gl_renderbuffer *rb,
- GLuint n,
- const GLint x[],
- const GLint y[],
- const void *values,
- const GLubyte mask[] )
-{
- const GLuint *depth = (const GLuint *) values;
-#ifdef DEPTH_TRACE
- fprintf(stderr, "FFBWriteDepthPixels: n(%d)\n", (int) n);
-#endif
- if (ctx->Depth.Mask) {
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
- __DRIdrawable *dPriv = fmesa->driDrawable;
- char *zbase;
- GLuint i;
-
- if (!fmesa->hw_locked)
- LOCK_HARDWARE(fmesa);
- FFBFifo(fmesa, 2);
- fmesa->regs->fbc = (FFB_FBC_WB_C | FFB_FBC_ZE_ON |
- FFB_FBC_YE_OFF | FFB_FBC_RGBE_OFF);
- fmesa->regs->ppc = FFB_PPC_ZS_VAR;
- fmesa->ffbScreen->rp_active = 1;
- FFBWait(fmesa, fmesa->regs);
-
- zbase = ((char *)fmesa->sfb32 +
- (dPriv->x << 2) + (dPriv->y << 13));
-
- for (i = 0; i < n; i++) {
- GLint y1 = (dPriv->h - y[i]);
- GLint x1 = x[i];
- GLuint *zptr;
-
- zptr = (GLuint *)
- (zbase + (x1 << 2) + (y1 << 13));
- if (mask[i])
- *zptr = Z_FROM_MESA(depth[i]);
- }
-
- FFBFifo(fmesa, 2);
- fmesa->regs->fbc = fmesa->fbc;
- fmesa->regs->ppc = fmesa->ppc;
- fmesa->ffbScreen->rp_active = 1;
- if (!fmesa->hw_locked)
- UNLOCK_HARDWARE(fmesa);
- }
-}
-
-static void FFBReadDepthSpan( GLcontext *ctx,
- struct gl_renderbuffer *rb,
- GLuint n, GLint x, GLint y,
- void *values )
-{
- GLuint *depth = (GLuint *) values;
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
- __DRIdrawable *dPriv = fmesa->driDrawable;
- GLuint *zptr;
- GLuint i;
-
-#ifdef DEPTH_TRACE
- fprintf(stderr, "FFBReadDepthSpan: n(%d) x(%d) y(%d)\n",
- (int) n, x, y);
-#endif
- if (!fmesa->hw_locked)
- LOCK_HARDWARE(fmesa);
- FFBFifo(fmesa, 1);
- fmesa->regs->fbc = FFB_FBC_RB_C;
- fmesa->ffbScreen->rp_active = 1;
- FFBWait(fmesa, fmesa->regs);
-
- y = (dPriv->h - y);
- zptr = (GLuint *)
- ((char *)fmesa->sfb32 +
- ((dPriv->x + x) << 2) +
- ((dPriv->y + y) << 13));
-
- for (i = 0; i < n; i++) {
- depth[i] = Z_TO_MESA(*zptr);
- zptr++;
- }
-
- FFBFifo(fmesa, 1);
- fmesa->regs->fbc = fmesa->fbc;
- fmesa->ffbScreen->rp_active = 1;
- if (!fmesa->hw_locked)
- UNLOCK_HARDWARE(fmesa);
-}
-
-static void FFBReadDepthPixels( GLcontext *ctx,
- struct gl_renderbuffer *rb,
- GLuint n,
- const GLint x[], const GLint y[],
- void *values )
-{
- GLuint *depth = (GLuint *) values;
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
- __DRIdrawable *dPriv = fmesa->driDrawable;
- char *zbase;
- GLuint i;
-
-#ifdef DEPTH_TRACE
- fprintf(stderr, "FFBReadDepthPixels: n(%d)\n", (int) n);
-#endif
- if (!fmesa->hw_locked)
- LOCK_HARDWARE(fmesa);
- FFBFifo(fmesa, 1);
- fmesa->regs->fbc = FFB_FBC_RB_C;
- fmesa->ffbScreen->rp_active = 1;
- FFBWait(fmesa, fmesa->regs);
-
- zbase = ((char *)fmesa->sfb32 +
- (dPriv->x << 2) + (dPriv->y << 13));
-
- for (i = 0; i < n; i++) {
- GLint y1 = (dPriv->h - y[i]);
- GLint x1 = x[i];
- GLuint *zptr;
-
- zptr = (GLuint *)
- (zbase + (x1 << 2) + (y1 << 13));
- depth[i] = Z_TO_MESA(*zptr);
- }
-
- FFBFifo(fmesa, 1);
- fmesa->regs->fbc = fmesa->fbc;
- fmesa->ffbScreen->rp_active = 1;
- if (!fmesa->hw_locked)
- UNLOCK_HARDWARE(fmesa);
-}
-
-/**
- * Plug in the Get/Put routines for the given driRenderbuffer.
- */
-void
-ffbSetDepthFunctions(driRenderbuffer *drb, const GLvisual *vis)
-{
- assert(drb->Base.InternalFormat == GL_DEPTH_COMPONENT16);
- drb->Base.GetRow = FFBReadDepthSpan;
- drb->Base.GetValues = FFBReadDepthPixels;
- drb->Base.PutRow = FFBWriteDepthSpan;
- drb->Base.PutMonoRow = FFBWriteMonoDepthSpan;
- drb->Base.PutValues = FFBWriteDepthPixels;
- drb->Base.PutMonoValues = NULL;
-}
diff --git a/src/mesa/drivers/dri/ffb/ffb_depth.h b/src/mesa/drivers/dri/ffb/ffb_depth.h
deleted file mode 100644
index 8a1829ed494..00000000000
--- a/src/mesa/drivers/dri/ffb/ffb_depth.h
+++ /dev/null
@@ -1,7 +0,0 @@
-
-#ifndef _FFB_DEPTH_H
-#define _FFB_DEPTH_H
-
-void ffbSetDepthFunctions(driRenderbuffer *drb, const GLvisual *vis);
-
-#endif /* !(_FFB_DEPTH_H) */
diff --git a/src/mesa/drivers/dri/ffb/ffb_fifo.h b/src/mesa/drivers/dri/ffb/ffb_fifo.h
deleted file mode 100644
index a175f38643d..00000000000
--- a/src/mesa/drivers/dri/ffb/ffb_fifo.h
+++ /dev/null
@@ -1,27 +0,0 @@
-
-#ifndef _FFB_FIFO_H
-#define _FFB_FIFO_H
-
-#define FFBFifo(__fmesa, __n) \
-do { ffbScreenPrivate *__fScrn = (__fmesa)->ffbScreen; \
- int __cur_slots = __fScrn->fifo_cache; \
- if ((__cur_slots - (__n)) < 0) { \
- ffb_fbcPtr __ffb = __fmesa->regs; \
- do { __cur_slots = (((int)__ffb->ucsr & FFB_UCSR_FIFO_MASK) - 4); \
- } while ((__cur_slots - (__n)) < 0); \
- } (__fScrn)->fifo_cache = (__cur_slots - (__n)); \
-} while(0)
-
-#define FFBWait(__fmesa, __ffb) \
-do { ffbScreenPrivate *__fScrn = (__fmesa)->ffbScreen; \
- if (__fScrn->rp_active) { \
- unsigned int __regval = (__ffb)->ucsr; \
- while((__regval & FFB_UCSR_ALL_BUSY) != 0) { \
- __regval = (__ffb)->ucsr; \
- } \
- __fScrn->fifo_cache = ((int)(__regval & FFB_UCSR_FIFO_MASK)) - 4; \
- __fScrn->rp_active = 0; \
- } \
-} while(0)
-
-#endif /* !(_FFB_FIFO_H) */
diff --git a/src/mesa/drivers/dri/ffb/ffb_fog.c b/src/mesa/drivers/dri/ffb/ffb_fog.c
deleted file mode 100644
index e6eca2390ee..00000000000
--- a/src/mesa/drivers/dri/ffb/ffb_fog.c
+++ /dev/null
@@ -1,73 +0,0 @@
-
-/* FFB fog support:
- *
- * There are two levels of support for FOG in the Creator3D series.
- * Both involve a depth cue unit and 1 or 4 slope factors and scales
- * for varying the pixel intensity.
- *
- * Chips prior to FFB2 only have a single set of such settings, FFB2
- * and later have 4 settings.
- *
- * The basic depth cueing equation is:
- *
- * C_final = dcsf(z) * C_orig + (1 - dcsf(z)) * C_fog
- *
- * C_final -- The final color passed to blend unit or frame
- * buffer (if blending is disabled).
- *
- * C_orig -- The color we start with, which comes either from
- * the raster processor or cpu writes to the smart
- * framebuffer aperture.
- *
- * C_fog -- This is the "fog" color, ie. the desired color
- * at the deepest Z.
- *
- * dcsf(z) -- The depth cue scale as a function of Z.
- *
- * With pre-FFB2 chips there are four parameters to control the depth
- * cue scaling. Here is a diagram:
- *
- * 1.0 -------------
- * | | | |
- * | | | |
- * Sfront XXXXX---+---+
- * | |X | |
- * dcsf(z) | | X | |
- * | | X| |
- * Sback +---+---XXXXX
- * | | | |
- * 0.0 -------------
- * 0.0 Zf Zb 1.0
- *
- * z
- * Therefore:
- *
- * for Zf < z < Zb
- *
- * dcsf(z) = Sback + ((Sfront - Sback) / (Zf - Zb)) * (Zb - z)
- *
- * for z <= Zf
- *
- * dcsf(z) = Sfront
- *
- * for z >= Zb
- *
- * dcsf(z) = Sback
- *
- * With FFB2 and later, 3 more slope regions are provided, the first of
- * them starts at the end of the region defined above and ends at a
- * specified depth value, the next slop region starts there and ends
- * at the next specified depth value, and so on. Each of the 3 slope
- * regions also have scale and slope settings of their own.
- *
- * The C_fog color is programmed into the alpha blending unit color1
- * and color2 registers as follows:
- *
- * color1: -(C_fog)
- * color2: C_fog - bg
- *
- * If alpha blending is disabled, the bg factor is zero. Note that
- * the alpha blending color registers specify each of the RGB values
- * as 9 bit 1:8 signed numbers in the range -1.00 to 0.ff inclusive.
- * (ie. 0x100 == -1.00 and 0x0ff == +0.ff)
- */
diff --git a/src/mesa/drivers/dri/ffb/ffb_lines.c b/src/mesa/drivers/dri/ffb/ffb_lines.c
deleted file mode 100644
index 6dca4edd29b..00000000000
--- a/src/mesa/drivers/dri/ffb/ffb_lines.c
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- *
- * GLX Hardware Device Driver for Sun Creator/Creator3D
- * Copyright (C) 2000, 2001 David S. Miller
- *
- * 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 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
- * DAVID MILLER, OR ANY OTHER CONTRIBUTORS 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.
- *
- *
- * David S. Miller <[email protected]>
- */
-
-#include "main/mtypes.h"
-#include "main/mm.h"
-#include "ffb_dd.h"
-#include "ffb_span.h"
-#include "ffb_context.h"
-#include "ffb_vb.h"
-#include "ffb_lines.h"
-
-#undef FFB_LINE_TRACE
-
-#define FFB_LINE_FLAT_BIT 0x01
-#define FFB_LINE_ALPHA_BIT 0x02
-#define MAX_FFB_LINE_FUNCS 0x04
-
-static ffb_line_func ffb_line_tab[MAX_FFB_LINE_FUNCS];
-
-/* If the line is not wide, we can support all of the line
- * patterning and smooth shading features of OpenGL fully.
- */
-
-#define IND (0)
-#define TAG(x) x
-#include "ffb_linetmp.h"
-
-#define IND (FFB_LINE_FLAT_BIT)
-#define TAG(x) x##_flat
-#include "ffb_linetmp.h"
-
-#define IND (FFB_LINE_ALPHA_BIT)
-#define TAG(x) x##_alpha
-#include "ffb_linetmp.h"
-
-#define IND (FFB_LINE_ALPHA_BIT|FFB_LINE_FLAT_BIT)
-#define TAG(x) x##_alpha_flat
-#include "ffb_linetmp.h"
-
-void ffbDDLinefuncInit(void)
-{
- init();
- init_flat();
- init_alpha();
- init_alpha_flat();
-}
-
-static void ffb_dd_line( GLcontext *ctx, GLuint e0, GLuint e1 )
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
- ffb_vertex *v0 = &fmesa->verts[e0];
- ffb_vertex *v1 = &fmesa->verts[e1];
- fmesa->draw_line( ctx, v0, v1 );
-}
-
-void ffbChooseLineState(GLcontext *ctx)
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
- TNLcontext *tnl = TNL_CONTEXT(ctx);
- GLuint flags = ctx->_TriangleCaps;
- GLuint ind = 0;
-
- tnl->Driver.Render.Line = ffb_dd_line;
-
- if (flags & DD_FLATSHADE)
- ind |= FFB_LINE_FLAT_BIT;
-
- if ((flags & DD_LINE_STIPPLE) != 0 &&
- fmesa->lpat == FFB_LPAT_BAD) {
- fmesa->draw_line = ffb_fallback_line;
- return;
- }
-
- /* If blending or the alpha test is enabled we need to
- * provide alpha components to the chip, else we can
- * do without it and thus feed vertex data to the chip
- * more efficiently.
- */
- if (ctx->Color.BlendEnabled || ctx->Color.AlphaEnabled)
- ind |= FFB_LINE_ALPHA_BIT;
-
- fmesa->draw_line = ffb_line_tab[ind];
-}
diff --git a/src/mesa/drivers/dri/ffb/ffb_lines.h b/src/mesa/drivers/dri/ffb/ffb_lines.h
deleted file mode 100644
index ddb93656539..00000000000
--- a/src/mesa/drivers/dri/ffb/ffb_lines.h
+++ /dev/null
@@ -1,17 +0,0 @@
-
-#ifndef _FFB_LINES_H
-#define _FFB_LINES_H
-
-#include "ffb_context.h"
-
-#define _FFB_NEW_LINE (_DD_NEW_FLATSHADE | \
- _DD_NEW_LINE_WIDTH | \
- _DD_NEW_LINE_STIPPLE | \
- _DD_NEW_LINE_SMOOTH | \
- _NEW_COLOR)
-
-extern void ffbDDLinefuncInit(void);
-extern void ffbChooseLineState(GLcontext *);
-extern void ffb_fallback_line( GLcontext *ctx, ffb_vertex *v0, ffb_vertex *v1 );
-
-#endif /* !(_FFB_LINES_H) */
diff --git a/src/mesa/drivers/dri/ffb/ffb_linetmp.h b/src/mesa/drivers/dri/ffb/ffb_linetmp.h
deleted file mode 100644
index 10e1375259b..00000000000
--- a/src/mesa/drivers/dri/ffb/ffb_linetmp.h
+++ /dev/null
@@ -1,80 +0,0 @@
-
-static INLINE void TAG(ffb_line)(GLcontext *ctx, ffb_vertex *v0,
- ffb_vertex *v1 )
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
- ffb_fbcPtr ffb = fmesa->regs;
-#if (IND & FFB_LINE_FLAT_BIT)
- const GLuint const_fg = FFB_PACK_CONST_UBYTE_ARGB_COLOR( v1->color[0] );
-#endif
- FFB_DELAYED_VIEWPORT_VARS;
-
-#ifdef FFB_LINE_TRACE
- fprintf(stderr, "FFB: ffb_line ["
-#if (IND & FFB_LINE_FLAT_BIT)
- " FLAT"
-#endif
-#if (IND & FFB_LINE_ALPHA_BIT)
- " ALPHA"
-#endif
- " ]\n");
-#endif
-
-#if (IND & FFB_LINE_FLAT_BIT)
- FFBFifo(fmesa, 1);
- ffb->fg = const_fg;
-#ifdef FFB_LINE_TRACE
- fprintf(stderr, "FFB: ffb_line confg_fg[%08x]\n", const_fg);
-#endif
-#endif
-
-#if (IND & FFB_LINE_FLAT_BIT)
- /* (2 * 3) + 1 */
- FFBFifo(fmesa, 7);
-#else
-#if (IND & FFB_LINE_ALPHA_BIT)
- /* (2 * 7) + 1 */
- FFBFifo(fmesa, 15);
-#else
- /* (2 * 6) + 1 */
- FFBFifo(fmesa, 13);
-#endif
-#endif
-
- /* Using DDLINE or AALINE, init the line pattern state. */
- ffb->lpat = fmesa->lpat;
-
-#if !(IND & FFB_LINE_FLAT_BIT)
-#if (IND & FFB_LINE_ALPHA_BIT)
- ffb->alpha = FFB_GET_ALPHA(v0);
-#endif
- ffb->red = FFB_GET_RED(v0);
- ffb->green = FFB_GET_GREEN(v0);
- ffb->blue = FFB_GET_BLUE(v0);
-#endif
- ffb->z = FFB_GET_Z(v0);
- ffb->ryf = FFB_GET_Y(v0);
- ffb->rxf = FFB_GET_X(v0);
-
-#if !(IND & FFB_LINE_FLAT_BIT)
-#if (IND & FFB_LINE_ALPHA_BIT)
- ffb->alpha = FFB_GET_ALPHA(v1);
-#endif
- ffb->red = FFB_GET_RED(v1);
- ffb->green = FFB_GET_GREEN(v1);
- ffb->blue = FFB_GET_BLUE(v1);
-#endif
- ffb->z = FFB_GET_Z(v1);
- ffb->y = FFB_GET_Y(v1);
- ffb->x = FFB_GET_X(v1);
-
- fmesa->ffbScreen->rp_active = 1;
-}
-
-static void TAG(init)(void)
-{
- ffb_line_tab[IND] = TAG(ffb_line);
-}
-
-#undef IND
-#undef TAG
diff --git a/src/mesa/drivers/dri/ffb/ffb_lock.h b/src/mesa/drivers/dri/ffb/ffb_lock.h
deleted file mode 100644
index 1fd3eb55125..00000000000
--- a/src/mesa/drivers/dri/ffb/ffb_lock.h
+++ /dev/null
@@ -1,36 +0,0 @@
-
-#ifndef _FFB_LOCK_H
-#define _FFB_LOCK_H
-
-#include "ffb_context.h"
-
-extern void ffbXMesaUpdateState(ffbContextPtr fmesa);
-#define FFB_UPDATE_STATE(fmesa) ffbXMesaUpdateState(fmesa)
-
-/* Lock the hardware and validate our state. This hardware can only ever
- * exist on SPARC platforms. Don't bother building the real LOCK_HARDWARE and
- * UNLOCK_HARDWARE code on non-SPARC platforms. The only reason the driver
- * gets built on non-SPARC is to catch build breakages earlier.
- */
-#if !defined(__sparc__)
-#define LOCK_HARDWARE(fmesa)
-#define UNLOCK_HARDWARE(fmesa)
-#else
-#define LOCK_HARDWARE(fmesa) \
- do { \
- DRM_CAS_RESULT(__ret); \
- DRM_CAS(fmesa->driHwLock, fmesa->hHWContext, \
- (DRM_LOCK_HELD | fmesa->hHWContext), __ret);\
- if (__ret) { \
- drmGetLock(fmesa->driFd, fmesa->hHWContext, 0); \
- FFB_UPDATE_STATE(fmesa); \
- } \
- } while (0)
-
-
-/* Unlock the hardware. */
-#define UNLOCK_HARDWARE(fmesa) \
- DRM_UNLOCK(fmesa->driFd, fmesa->driHwLock, fmesa->hHWContext);
-#endif
-
-#endif /* !(_FFB_LOCK_H) */
diff --git a/src/mesa/drivers/dri/ffb/ffb_points.c b/src/mesa/drivers/dri/ffb/ffb_points.c
deleted file mode 100644
index 5bf4f8f0707..00000000000
--- a/src/mesa/drivers/dri/ffb/ffb_points.c
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- *
- * GLX Hardware Device Driver for Sun Creator/Creator3D
- * Copyright (C) 2000, 2001 David S. Miller
- *
- * 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 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
- * DAVID MILLER, OR ANY OTHER CONTRIBUTORS 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.
- *
- *
- * David S. Miller <[email protected]>
- */
-
-#include "main/mtypes.h"
-#include "ffb_dd.h"
-#include "ffb_context.h"
-#include "ffb_vb.h"
-#include "ffb_points.h"
-
-
-#undef FFB_POINT_TRACE
-
-#define FFB_POINT_AA_BIT 0x01
-
-static ffb_point_func ffb_point_tab[0x08];
-
-#define IND (0)
-#define TAG(x) x
-#include "ffb_pointtmp.h"
-
-#define IND (FFB_POINT_AA_BIT)
-#define TAG(x) x##_aa
-#include "ffb_pointtmp.h"
-
-void ffbDDPointfuncInit(void)
-{
- init();
- init_aa();
-}
-
-static void ffb_dd_points( GLcontext *ctx, GLuint first, GLuint last )
-{
- struct vertex_buffer *VB = &TNL_CONTEXT( ctx )->vb;
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
- ffb_vertex *fverts = fmesa->verts;
- int i;
-
- if (VB->Elts == 0) {
- for ( i = first ; i < last ; i++ ) {
- if ( VB->ClipMask[i] == 0 ) {
- fmesa->draw_point( ctx, &fverts[i] );
- }
- }
- } else {
- for ( i = first ; i < last ; i++ ) {
- GLuint e = VB->Elts[i];
- if ( VB->ClipMask[e] == 0 ) {
- fmesa->draw_point( ctx, &fverts[e] );
- }
- }
- }
-}
-
-void ffbChoosePointState(GLcontext *ctx)
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
- TNLcontext *tnl = TNL_CONTEXT(ctx);
- GLuint flags = ctx->_TriangleCaps;
- GLuint ind = 0;
-
- tnl->Driver.Render.Points = ffb_dd_points;
-
- if (flags & DD_POINT_SMOOTH)
- ind |= FFB_POINT_AA_BIT;
-
- fmesa->draw_point = ffb_point_tab[ind];
-}
diff --git a/src/mesa/drivers/dri/ffb/ffb_points.h b/src/mesa/drivers/dri/ffb/ffb_points.h
deleted file mode 100644
index a7229de7f19..00000000000
--- a/src/mesa/drivers/dri/ffb/ffb_points.h
+++ /dev/null
@@ -1,14 +0,0 @@
-
-#ifndef _FFB_POINTS_H
-#define _FFB_POINTS_H
-
-extern void ffbDDPointfuncInit(void);
-
-#define _FFB_NEW_POINT (_DD_NEW_POINT_SIZE | \
- _DD_NEW_POINT_SMOOTH | \
- _NEW_COLOR)
-
-extern void ffbChoosePointState(GLcontext *);
-extern void ffb_fallback_point( GLcontext *ctx, ffb_vertex *v0 );
-
-#endif /* !(_FFB_POINTS_H) */
diff --git a/src/mesa/drivers/dri/ffb/ffb_pointtmp.h b/src/mesa/drivers/dri/ffb/ffb_pointtmp.h
deleted file mode 100644
index 3003de70c69..00000000000
--- a/src/mesa/drivers/dri/ffb/ffb_pointtmp.h
+++ /dev/null
@@ -1,54 +0,0 @@
-
-static INLINE void TAG(ffb_draw_point)(GLcontext *ctx, ffb_vertex *tmp )
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
- ffb_fbcPtr ffb = fmesa->regs;
- FFB_DELAYED_VIEWPORT_VARS;
-
-#ifdef FFB_POINT_TRACE
- fprintf(stderr, "FFB: ffb_point ["
-#if (IND & FFB_POINT_AA_BIT)
- "AA"
-#endif
- "] X(%f) Y(%f) Z(%f)\n",
- tmp->x, tmp->y, tmp->z);
-#endif
-
-#if (IND & FFB_POINT_AA_BIT)
- FFBFifo(fmesa, 4);
-
- ffb->fg = FFB_PACK_CONST_UBYTE_ARGB_COLOR( tmp->color[0] );
- ffb->z = FFB_GET_Z(tmp);
- ffb->y = FFB_GET_Y(tmp) + 0x8000 /* FIX ME */;
- ffb->x = FFB_GET_X(tmp) + 0x8000 /* FIX ME */;
-#else
- {
- unsigned int const_fg, const_z, h, w;
-
- const_fg = FFB_PACK_CONST_UBYTE_ARGB_COLOR( tmp->color[0] );
- const_z = Z_FROM_MESA(FFB_Z_TO_FLOAT(FFB_GET_Z(tmp)));
- h = FFB_GET_Y(tmp) >> 16;
- w = FFB_GET_X(tmp) >> 16;
-#ifdef FFB_POINT_TRACE
- fprintf(stderr, "FFB: ffb_point fg(%08x) z(%08x) h(%08x) w(%08x)\n",
- const_fg, const_z, h, w);
-#endif
- FFBFifo(fmesa, 4);
- ffb->fg = const_fg;
- ffb->constz = const_z;
- ffb->bh = h;
- ffb->bw = w;
- }
-#endif
-
- fmesa->ffbScreen->rp_active = 1;
-}
-
-
-static void TAG(init)(void)
-{
- ffb_point_tab[IND] = TAG(ffb_draw_point);
-}
-
-#undef IND
-#undef TAG
diff --git a/src/mesa/drivers/dri/ffb/ffb_rendertmp.h b/src/mesa/drivers/dri/ffb/ffb_rendertmp.h
deleted file mode 100644
index 64141c2c5f6..00000000000
--- a/src/mesa/drivers/dri/ffb/ffb_rendertmp.h
+++ /dev/null
@@ -1,645 +0,0 @@
-
-#define IMPL_LOCAL_VARS \
- ffbContextPtr fmesa = FFB_CONTEXT(ctx); \
- ffb_fbcPtr ffb = fmesa->regs; \
- const GLuint * const elt = TNL_CONTEXT(ctx)->vb.Elts; \
- FFB_DELAYED_VIEWPORT_VARS; \
- (void) fmesa; (void) ffb; (void) elt
-
-#if (IND & FFB_FLAT_BIT)
-#define FFB_DECLARE_CACHED_COLOR(NAME) \
- unsigned int NAME;
-#define FFB_COMPUTE_CACHED_COLOR(NAME, VTX) \
- NAME = FFB_PACK_CONST_UBYTE_ARGB_COLOR((VTX)->color[0])
-#define FFB_CACHED_COLOR_SAME(NAME1, NAME2) \
- ((NAME1) == (NAME2))
-#define FFB_CACHED_COLOR_SET(NAME) \
- ffb->fg = (NAME)
-#define FFB_CACHED_COLOR_UPDATE(NAME1, NAME2) \
- ffb->fg = (NAME1) = (NAME2)
-#define FFB_SET_PRIM_COLOR(COLOR_VERTEX) \
- ffb->fg = FFB_PACK_CONST_UBYTE_ARGB_COLOR((COLOR_VERTEX)->color[0])
-#define FFB_PRIM_COLOR_COST 1
-#define FFB_SET_VERTEX_COLOR(VTX) /**/
-#define FFB_VERTEX_COLOR_COST 0
-#else
-#define FFB_DECLARE_CACHED_COLOR(NAME) /**/
-#define FFB_COMPUTE_CACHED_COLOR(NAME, VTX) /**/
-#define FFB_CACHED_COLOR_SAME(NAME1, NAME2) 0
-#define FFB_CACHED_COLOR_SET(NAME1) /**/
-#define FFB_CACHED_COLOR_UPDATE(NAME1, NAME2) /**/
-#define FFB_SET_PRIM_COLOR(COLOR_VERTEX) /**/
-#define FFB_PRIM_COLOR_COST 0
-#if (IND & FFB_ALPHA_BIT)
-#define FFB_SET_VERTEX_COLOR(VTX) \
- ffb->alpha = FFB_GET_ALPHA(VTX); \
- ffb->red = FFB_GET_RED(VTX); \
- ffb->green = FFB_GET_GREEN(VTX); \
- ffb->blue = FFB_GET_BLUE(VTX)
-#define FFB_VERTEX_COLOR_COST 4
-#else
-#define FFB_SET_VERTEX_COLOR(VTX) \
- ffb->red = FFB_GET_RED(VTX); \
- ffb->green = FFB_GET_GREEN(VTX); \
- ffb->blue = FFB_GET_BLUE(VTX)
-#define FFB_VERTEX_COLOR_COST 3
-#endif
-#endif
-
-#define RESET_STIPPLE ffb->lpat = fmesa->lpat;
-
-#if !(IND & (FFB_TRI_CULL_BIT))
-static void TAG(ffb_vb_points)(GLcontext *ctx, GLuint start, GLuint count, GLuint flags)
-{
- GLint i;
- IMPL_LOCAL_VARS;
-
-#ifdef FFB_RENDER_TRACE
- fprintf(stderr, "%s: start(%d) count(%d) flags(%x)\n",
- __FUNCTION__, start, count, flags);
-#endif
- ffbRenderPrimitive(ctx, GL_POINTS);
- if (ctx->_TriangleCaps & DD_POINT_SMOOTH) {
- for (i = start; i < count; i++) {
- ffb_vertex *v0 = &fmesa->verts[ELT(i)];
-
- FFBFifo(fmesa, 4);
- ffb->fg = FFB_PACK_CONST_UBYTE_ARGB_COLOR(v0->color[0]);
- ffb->z = FFB_GET_Z(v0);
- ffb->y = FFB_GET_Y(v0) + 0x8000 /* FIX ME */;
- ffb->x = FFB_GET_X(v0) + 0x8000 /* FIX ME */;
- }
- } else {
- for (i = start; i < count; i++) {
- ffb_vertex *v0 = &fmesa->verts[ELT(i)];
- FFBFifo(fmesa, 4);
- ffb->fg = FFB_PACK_CONST_UBYTE_ARGB_COLOR(v0->color[0]);
- ffb->constz = Z_FROM_MESA(FFB_Z_TO_FLOAT(FFB_GET_Z(v0)));
- ffb->bh = FFB_GET_Y(v0) >> 16;
- ffb->bw = FFB_GET_X(v0) >> 16;
- }
- }
-
- fmesa->ffbScreen->rp_active = 1;
-}
-
-static void TAG(ffb_vb_lines)(GLcontext *ctx, GLuint start, GLuint count, GLuint flags)
-{
- GLint i;
- IMPL_LOCAL_VARS;
-
-#ifdef FFB_RENDER_TRACE
- fprintf(stderr, "%s: start(%d) count(%d) flags(%x)\n",
- __FUNCTION__, start, count, flags);
-#endif
- ffbRenderPrimitive(ctx, GL_LINES);
- for (i = start + 1; i < count; i += 2) {
- ffb_vertex *v0 = &fmesa->verts[i - 1];
- ffb_vertex *v1 = &fmesa->verts[i - 0];
-
- FFBFifo(fmesa, (1 + FFB_PRIM_COLOR_COST +
- (FFB_VERTEX_COLOR_COST * 2) + 6));
-
- RESET_STIPPLE;
-
- FFB_SET_PRIM_COLOR(v1);
-
- FFB_SET_VERTEX_COLOR(v0);
- ffb->z = FFB_GET_Z(v0);
- ffb->ryf = FFB_GET_Y(v0);
- ffb->rxf = FFB_GET_X(v0);
-
- FFB_SET_VERTEX_COLOR(v1);
- ffb->z = FFB_GET_Z(v1);
- ffb->y = FFB_GET_Y(v1);
- ffb->x = FFB_GET_X(v1);
- }
-}
-
-static void TAG(ffb_vb_line_loop)(GLcontext *ctx, GLuint start, GLuint count, GLuint flags)
-{
- GLint i;
- IMPL_LOCAL_VARS;
-
-#ifdef FFB_RENDER_TRACE
- fprintf(stderr, "%s: start(%d) count(%d) flags(%x)\n",
- __FUNCTION__, start, count, flags);
-#endif
- ffbRenderPrimitive(ctx, GL_LINE_LOOP);
- if ((flags & PRIM_BEGIN) != 0) {
- ffb_vertex *v0 = &fmesa->verts[ELT(start + 0)];
- ffb_vertex *v1 = &fmesa->verts[ELT(start + 1)];
-
- FFBFifo(fmesa, (1 + FFB_PRIM_COLOR_COST +
- ((FFB_VERTEX_COLOR_COST * 2) + (3 * 2))));
-
- RESET_STIPPLE;
-
- FFB_SET_PRIM_COLOR(v1);
-
- FFB_SET_VERTEX_COLOR(v0);
- ffb->z = FFB_GET_Z(v0);
- ffb->ryf = FFB_GET_Y(v0);
- ffb->rxf = FFB_GET_X(v0);
-
- FFB_SET_VERTEX_COLOR(v1);
- ffb->z = FFB_GET_Z(v1);
- ffb->y = FFB_GET_Y(v1);
- ffb->x = FFB_GET_X(v1);
- }
- for (i = start + 2; i < count; i++) {
- ffb_vertex *v0 = &fmesa->verts[ELT(i)];
-
- FFBFifo(fmesa, (FFB_PRIM_COLOR_COST +
- (FFB_VERTEX_COLOR_COST + 3)));
-
- FFB_SET_PRIM_COLOR(v0);
-
- FFB_SET_VERTEX_COLOR(v0);
- ffb->z = FFB_GET_Z(v0);
- ffb->y = FFB_GET_Y(v0);
- ffb->x = FFB_GET_X(v0);
- }
- if ((flags & PRIM_END) != 0) {
- ffb_vertex *v0 = &fmesa->verts[ELT(start)];
-
- FFBFifo(fmesa, (FFB_PRIM_COLOR_COST +
- (FFB_VERTEX_COLOR_COST + 3)));
-
- FFB_SET_PRIM_COLOR(v0);
-
- FFB_SET_VERTEX_COLOR(v0);
- ffb->z = FFB_GET_Z(v0);
- ffb->y = FFB_GET_Y(v0);
- ffb->x = FFB_GET_X(v0);
- }
-
- fmesa->ffbScreen->rp_active = 1;
-}
-
-static void TAG(ffb_vb_line_strip)(GLcontext *ctx, GLuint start, GLuint count, GLuint flags)
-{
- GLint i;
- FFB_DECLARE_CACHED_COLOR(cached_fg)
- IMPL_LOCAL_VARS;
-
-#ifdef FFB_RENDER_TRACE
- fprintf(stderr, "%s: start(%d) count(%d) flags(%x)\n",
- __FUNCTION__, start, count, flags);
-#endif
- ffbRenderPrimitive(ctx, GL_LINE_STRIP);
- FFBFifo(fmesa, (1 + FFB_PRIM_COLOR_COST +
- ((FFB_VERTEX_COLOR_COST * 2) + (3 * 2))));
-
- RESET_STIPPLE;
-
- {
- ffb_vertex *v0 = &fmesa->verts[ELT(start + 0)];
- ffb_vertex *v1 = &fmesa->verts[ELT(start + 1)];
-
- FFB_COMPUTE_CACHED_COLOR(cached_fg, v0);
- FFB_CACHED_COLOR_SET(cached_fg);
-
- FFB_SET_VERTEX_COLOR(v0);
- ffb->z = FFB_GET_Z(v0);
- ffb->ryf = FFB_GET_Y(v0);
- ffb->rxf = FFB_GET_X(v0);
-
- FFB_SET_VERTEX_COLOR(v1);
- ffb->z = FFB_GET_Z(v1);
- ffb->y = FFB_GET_Y(v1);
- ffb->x = FFB_GET_X(v1);
- }
-
- for (i = start + 2; i < count; i++) {
- ffb_vertex *v1 = &fmesa->verts[ELT(i - 0)];
- FFB_DECLARE_CACHED_COLOR(new_fg)
-
- FFB_COMPUTE_CACHED_COLOR(new_fg, v1);
- if (FFB_CACHED_COLOR_SAME(cached_fg, new_fg)) {
- FFBFifo(fmesa, ((FFB_VERTEX_COLOR_COST * 1) + (3 * 1)));
- } else {
- FFBFifo(fmesa, (FFB_PRIM_COLOR_COST +
- (FFB_VERTEX_COLOR_COST * 1) + (3 * 1)));
- FFB_CACHED_COLOR_UPDATE(cached_fg, new_fg);
- }
-
- FFB_SET_VERTEX_COLOR(v1);
- ffb->z = FFB_GET_Z(v1);
- ffb->y = FFB_GET_Y(v1);
- ffb->x = FFB_GET_X(v1);
- }
-
- fmesa->ffbScreen->rp_active = 1;
-}
-#endif /* !(IND & (FFB_TRI_CULL_BIT)) */
-
-/* OK, now things start getting fun :-) */
-#if (IND & (FFB_TRI_CULL_BIT))
-#define FFB_AREA_DECLARE GLfloat cc, ex, ey, fx, fy;
-#define FFB_COMPUTE_AREA_TRI(V0, V1, V2) \
-{ ex = (V1)->x - (V0)->x; \
- ey = (V1)->y - (V0)->y; \
- fx = (V2)->x - (V0)->x; \
- fy = (V2)->y - (V0)->y; \
- cc = ex*fy-ey*fx; \
-}
-#define FFB_COMPUTE_AREA_QUAD(V0, V1, V2, V3) \
-{ ex = (V2)->x - (V0)->x; \
- ey = (V2)->y - (V0)->y; \
- fx = (V3)->x - (V1)->x; \
- fy = (V3)->y - (V1)->y; \
- cc = ex*fy-ey*fx; \
-}
-#else
-#define FFB_AREA_DECLARE /**/
-#define FFB_COMPUTE_AREA_TRI(V0, V1, V2) do { } while(0)
-#define FFB_COMPUTE_AREA_QUAD(V0, V1, V2, V3) do { } while(0)
-#endif
-
-#if (IND & FFB_TRI_CULL_BIT)
-#define FFB_CULL_TRI(CULL_ACTION) \
- if (cc * fmesa->backface_sign > fmesa->ffb_zero) { \
- CULL_ACTION \
- }
-#define FFB_CULL_QUAD(CULL_ACTION) \
- if (cc * fmesa->backface_sign > fmesa->ffb_zero) { \
- CULL_ACTION \
- }
-#else
-#define FFB_CULL_TRI(CULL_ACTION) do { } while (0)
-#define FFB_CULL_QUAD(CULL_ACTION) do { } while (0)
-#endif
-
-static void TAG(ffb_vb_triangles)(GLcontext *ctx, GLuint start, GLuint count, GLuint flags)
-{
- GLint i;
- IMPL_LOCAL_VARS;
-
-#ifdef FFB_RENDER_TRACE
- fprintf(stderr, "%s: start(%d) count(%d) flags(%x)\n",
- __FUNCTION__, start, count, flags);
-#endif
- ffbRenderPrimitive(ctx, GL_TRIANGLES);
- for (i = start + 2; i < count; i += 3) {
- ffb_vertex *v0 = &fmesa->verts[ELT(i - 2)];
- ffb_vertex *v1 = &fmesa->verts[ELT(i - 1)];
- ffb_vertex *v2 = &fmesa->verts[ELT(i - 0)];
- FFB_AREA_DECLARE
-
- FFB_COMPUTE_AREA_TRI(v0, v1, v2);
- FFB_CULL_TRI(continue;);
-
- FFBFifo(fmesa, (FFB_PRIM_COLOR_COST +
- (FFB_VERTEX_COLOR_COST * 3) + 9));
- FFB_SET_PRIM_COLOR(v2);
-
- FFB_SET_VERTEX_COLOR(v0);
- ffb->z = FFB_GET_Z(v0);
- ffb->ryf = FFB_GET_Y(v0);
- ffb->rxf = FFB_GET_X(v0);
-
- FFB_SET_VERTEX_COLOR(v1);
- ffb->z = FFB_GET_Z(v1);
- ffb->y = FFB_GET_Y(v1);
- ffb->x = FFB_GET_X(v1);
-
- FFB_SET_VERTEX_COLOR(v2);
- ffb->z = FFB_GET_Z(v2);
- ffb->y = FFB_GET_Y(v2);
- ffb->x = FFB_GET_X(v2);
- }
-
- fmesa->ffbScreen->rp_active = 1;
-}
-
-static void TAG(ffb_vb_tri_strip)(GLcontext *ctx, GLuint start, GLuint count, GLuint flags)
-{
- GLint i;
- GLint parity = 0;
- IMPL_LOCAL_VARS;
-
-#ifdef FFB_RENDER_TRACE
- fprintf(stderr, "%s: start(%d) count(%d) flags(%x)\n",
- __FUNCTION__, start, count, flags);
-#endif
- ffbRenderPrimitive(ctx, GL_TRIANGLE_STRIP);
-
- i = start + 2;
- goto something_clipped;
-
- something_clipped:
- for (; i < count; i++, parity ^= 1) {
- ffb_vertex *v0 = &fmesa->verts[ELT(i - 2 + parity)];
- ffb_vertex *v1 = &fmesa->verts[ELT(i - 1 - parity)];
- ffb_vertex *v2 = &fmesa->verts[ELT(i - 0)];
- FFB_AREA_DECLARE
-
- FFB_COMPUTE_AREA_TRI(v0, v1, v2);
- FFB_CULL_TRI(continue;);
-
- FFBFifo(fmesa, (FFB_PRIM_COLOR_COST +
- (FFB_VERTEX_COLOR_COST * 3) + 9));
- FFB_SET_PRIM_COLOR(v2);
-
- FFB_SET_VERTEX_COLOR(v0);
- ffb->z = FFB_GET_Z(v0);
- ffb->ryf = FFB_GET_Y(v0);
- ffb->rxf = FFB_GET_X(v0);
-
- FFB_SET_VERTEX_COLOR(v1);
- ffb->z = FFB_GET_Z(v1);
- ffb->y = FFB_GET_Y(v1);
- ffb->x = FFB_GET_X(v1);
-
- FFB_SET_VERTEX_COLOR(v2);
- ffb->z = FFB_GET_Z(v2);
- ffb->y = FFB_GET_Y(v2);
- ffb->x = FFB_GET_X(v2);
-
- i++;
- parity ^= 1;
- break;
- }
-
- for (; i < count; i++, parity ^= 1) {
- ffb_vertex *v0 = &fmesa->verts[ELT(i - 2 + parity)];
- ffb_vertex *v1 = &fmesa->verts[ELT(i - 1 - parity)];
- ffb_vertex *v2 = &fmesa->verts[ELT(i - 0)];
- FFB_AREA_DECLARE
- (void) v0; (void) v1;
-
- FFB_COMPUTE_AREA_TRI(v0, v1, v2);
- FFB_CULL_TRI(i++; parity^=1; goto something_clipped;);
-
- FFBFifo(fmesa, (FFB_PRIM_COLOR_COST +
- (FFB_VERTEX_COLOR_COST * 1) + 3));
- FFB_SET_PRIM_COLOR(v2);
-
- FFB_SET_VERTEX_COLOR(v2);
- ffb->z = FFB_GET_Z(v2);
- ffb->y = FFB_GET_Y(v2);
- ffb->x = FFB_GET_X(v2);
- }
-
- fmesa->ffbScreen->rp_active = 1;
-}
-
-static void TAG(ffb_vb_tri_fan)(GLcontext *ctx, GLuint start, GLuint count, GLuint flags)
-{
- GLint i;
- IMPL_LOCAL_VARS;
-
-#ifdef FFB_RENDER_TRACE
- fprintf(stderr, "%s: start(%d) count(%d) flags(%x)\n",
- __FUNCTION__, start, count, flags);
-#endif
- ffbRenderPrimitive(ctx, GL_TRIANGLE_FAN);
-
- i = start + 2;
- goto something_clipped;
-
- something_clipped:
- for ( ; i < count; i++) {
- ffb_vertex *v0 = &fmesa->verts[ELT(start)];
- ffb_vertex *v1 = &fmesa->verts[ELT(i - 1)];
- ffb_vertex *v2 = &fmesa->verts[ELT(i - 0)];
- FFB_AREA_DECLARE
-
- FFB_COMPUTE_AREA_TRI(v0, v1, v2);
- FFB_CULL_TRI(continue;);
-
- FFBFifo(fmesa, (FFB_PRIM_COLOR_COST +
- (FFB_VERTEX_COLOR_COST * 3) + 9));
- FFB_SET_PRIM_COLOR(v2);
-
- FFB_SET_VERTEX_COLOR(v0);
- ffb->z = FFB_GET_Z(v0);
- ffb->ryf = FFB_GET_Y(v0);
- ffb->rxf = FFB_GET_X(v0);
-
- FFB_SET_VERTEX_COLOR(v1);
- ffb->z = FFB_GET_Z(v1);
- ffb->y = FFB_GET_Y(v1);
- ffb->x = FFB_GET_X(v1);
-
- FFB_SET_VERTEX_COLOR(v2);
- ffb->z = FFB_GET_Z(v2);
- ffb->y = FFB_GET_Y(v2);
- ffb->x = FFB_GET_X(v2);
-
- i++;
- break;
- }
-
- for (; i < count; i++) {
- ffb_vertex *v0 = &fmesa->verts[ELT(start)];
- ffb_vertex *v1 = &fmesa->verts[ELT(i - 1)];
- ffb_vertex *v2 = &fmesa->verts[ELT(i - 0)];
- FFB_AREA_DECLARE
- (void) v0; (void) v1;
-
- FFB_COMPUTE_AREA_TRI(v0, v1, v2);
- FFB_CULL_TRI(i++; goto something_clipped;);
-
- FFBFifo(fmesa, (FFB_PRIM_COLOR_COST +
- (FFB_VERTEX_COLOR_COST * 1) + 3));
- FFB_SET_PRIM_COLOR(v2);
-
- FFB_SET_VERTEX_COLOR(v2);
- ffb->z = FFB_GET_Z(v2);
- ffb->dmyf = FFB_GET_Y(v2);
- ffb->dmxf = FFB_GET_X(v2);
- }
-
- fmesa->ffbScreen->rp_active = 1;
-}
-
-static void TAG(ffb_vb_poly)(GLcontext *ctx, GLuint start, GLuint count, GLuint flags)
-{
- GLint i;
- IMPL_LOCAL_VARS;
-
-#ifdef FFB_RENDER_TRACE
- fprintf(stderr, "%s: start(%d) count(%d) flags(%x)\n",
- __FUNCTION__, start, count, flags);
-#endif
- ffbRenderPrimitive(ctx, GL_POLYGON);
-
- /* XXX Optimize XXX */
- for (i = start + 2; i < count; i++) {
- ffb_vertex *v0 = &fmesa->verts[ELT(i - 1)];
- ffb_vertex *v1 = &fmesa->verts[ELT(i)];
- ffb_vertex *v2 = &fmesa->verts[ELT(start)];
- FFB_AREA_DECLARE
-
- FFB_COMPUTE_AREA_TRI(v0, v1, v2);
- FFB_CULL_TRI(continue;);
-
- FFBFifo(fmesa, (FFB_PRIM_COLOR_COST +
- (FFB_VERTEX_COLOR_COST * 3) + 9));
- FFB_SET_PRIM_COLOR(v2);
-
- FFB_SET_VERTEX_COLOR(v0);
- ffb->z = FFB_GET_Z(v0);
- ffb->ryf = FFB_GET_Y(v0);
- ffb->rxf = FFB_GET_X(v0);
-
- FFB_SET_VERTEX_COLOR(v1);
- ffb->z = FFB_GET_Z(v1);
- ffb->y = FFB_GET_Y(v1);
- ffb->x = FFB_GET_X(v1);
-
- FFB_SET_VERTEX_COLOR(v2);
- ffb->z = FFB_GET_Z(v2);
- ffb->y = FFB_GET_Y(v2);
- ffb->x = FFB_GET_X(v2);
- }
-
- fmesa->ffbScreen->rp_active = 1;
-}
-
-static void TAG(ffb_vb_quads)(GLcontext *ctx, GLuint start, GLuint count, GLuint flags)
-{
- GLint i;
- IMPL_LOCAL_VARS;
-
-#ifdef FFB_RENDER_TRACE
- fprintf(stderr, "%s: start(%d) count(%d) flags(%x)\n",
- __FUNCTION__, start, count, flags);
-#endif
- ffbRenderPrimitive(ctx, GL_QUADS);
-
- for (i = start + 3; i < count; i += 4) {
- ffb_vertex *v0 = &fmesa->verts[ELT(i - 3)];
- ffb_vertex *v1 = &fmesa->verts[ELT(i - 2)];
- ffb_vertex *v2 = &fmesa->verts[ELT(i - 1)];
- ffb_vertex *v3 = &fmesa->verts[ELT(i - 0)];
- FFB_AREA_DECLARE
-
- FFB_COMPUTE_AREA_QUAD(v0, v1, v2, v3);
- FFB_CULL_QUAD(continue;);
-
- FFBFifo(fmesa, (FFB_PRIM_COLOR_COST +
- (FFB_VERTEX_COLOR_COST * 4) + 12));
- FFB_SET_PRIM_COLOR(v3);
-
- FFB_SET_VERTEX_COLOR(v0);
- ffb->z = FFB_GET_Z(v0);
- ffb->ryf = FFB_GET_Y(v0);
- ffb->rxf = FFB_GET_X(v0);
-
- FFB_SET_VERTEX_COLOR(v1);
- ffb->z = FFB_GET_Z(v1);
- ffb->y = FFB_GET_Y(v1);
- ffb->x = FFB_GET_X(v1);
-
- FFB_SET_VERTEX_COLOR(v2);
- ffb->z = FFB_GET_Z(v2);
- ffb->y = FFB_GET_Y(v2);
- ffb->x = FFB_GET_X(v2);
-
- FFB_SET_VERTEX_COLOR(v3);
- ffb->z = FFB_GET_Z(v3);
- ffb->dmyf = FFB_GET_Y(v3);
- ffb->dmxf = FFB_GET_X(v3);
- }
-
- fmesa->ffbScreen->rp_active = 1;
-}
-
-static void TAG(ffb_vb_quad_strip)(GLcontext *ctx, GLuint start, GLuint count, GLuint flags)
-{
- GLint i;
- IMPL_LOCAL_VARS;
-
-#ifdef FFB_RENDER_TRACE
- fprintf(stderr, "%s: start(%d) count(%d) flags(%x)\n",
- __FUNCTION__, start, count, flags);
-#endif
- ffbRenderPrimitive(ctx, GL_QUAD_STRIP);
-
- /* XXX Optimize XXX */
- for (i = start + 3; i < count; i += 2) {
- ffb_vertex *v0 = &fmesa->verts[ELT(i - 1)];
- ffb_vertex *v1 = &fmesa->verts[ELT(i - 3)];
- ffb_vertex *v2 = &fmesa->verts[ELT(i - 2)];
- ffb_vertex *v3 = &fmesa->verts[ELT(i - 0)];
- FFB_AREA_DECLARE
-
- FFB_COMPUTE_AREA_QUAD(v0, v1, v2, v3);
- FFB_CULL_QUAD(continue;);
-
- FFBFifo(fmesa, (FFB_PRIM_COLOR_COST +
- (FFB_VERTEX_COLOR_COST * 4) + 12));
- FFB_SET_PRIM_COLOR(v3);
-
- FFB_DUMP_VERTEX(v0);
- FFB_SET_VERTEX_COLOR(v0);
- ffb->z = FFB_GET_Z(v0);
- ffb->ryf = FFB_GET_Y(v0);
- ffb->rxf = FFB_GET_X(v0);
-
- FFB_DUMP_VERTEX(v1);
- FFB_SET_VERTEX_COLOR(v1);
- ffb->z = FFB_GET_Z(v1);
- ffb->y = FFB_GET_Y(v1);
- ffb->x = FFB_GET_X(v1);
-
- FFB_DUMP_VERTEX(v2);
- FFB_SET_VERTEX_COLOR(v2);
- ffb->z = FFB_GET_Z(v2);
- ffb->y = FFB_GET_Y(v2);
- ffb->x = FFB_GET_X(v2);
-
- FFB_DUMP_VERTEX(v3);
- FFB_SET_VERTEX_COLOR(v3);
- ffb->z = FFB_GET_Z(v3);
- ffb->dmyf = FFB_GET_Y(v3);
- ffb->dmxf = FFB_GET_X(v3);
- }
-
- fmesa->ffbScreen->rp_active = 1;
-}
-
-static void (*TAG(render_tab)[GL_POLYGON + 2])(GLcontext *, GLuint, GLuint, GLuint) =
-{
-#if !(IND & (FFB_TRI_CULL_BIT))
- TAG(ffb_vb_points),
- TAG(ffb_vb_lines),
- TAG(ffb_vb_line_loop),
- TAG(ffb_vb_line_strip),
-#else
- NULL,
- NULL,
- NULL,
- NULL,
-#endif
- TAG(ffb_vb_triangles),
- TAG(ffb_vb_tri_strip),
- TAG(ffb_vb_tri_fan),
- TAG(ffb_vb_quads),
- TAG(ffb_vb_quad_strip),
- TAG(ffb_vb_poly),
- ffb_vb_noop,
-};
-
-#undef IND
-#undef TAG
-
-#undef IMPL_LOCAL_VARS
-#undef FFB_DECLARE_CACHED_COLOR
-#undef FFB_COMPUTE_CACHED_COLOR
-#undef FFB_CACHED_COLOR_SAME
-#undef FFB_CACHED_COLOR_SET
-#undef FFB_CACHED_COLOR_UPDATE
-#undef FFB_SET_PRIM_COLOR
-#undef FFB_PRIM_COLOR_COST
-#undef FFB_SET_VERTEX_COLOR
-#undef FFB_VERTEX_COLOR_COST
-#undef RESET_STIPPLE
-#undef FFB_AREA_DECLARE
-#undef FFB_COMPUTE_AREA_TRI
-#undef FFB_COMPUTE_AREA_QUAD
-#undef FFB_CULL_TRI
-#undef FFB_CULL_QUAD
diff --git a/src/mesa/drivers/dri/ffb/ffb_span.c b/src/mesa/drivers/dri/ffb/ffb_span.c
deleted file mode 100644
index 61901cccadd..00000000000
--- a/src/mesa/drivers/dri/ffb/ffb_span.c
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- *
- * GLX Hardware Device Driver for Sun Creator/Creator3D
- * Copyright (C) 2000 David S. Miller
- *
- * 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 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
- * DAVID MILLER, OR ANY OTHER CONTRIBUTORS 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.
- *
- *
- * David S. Miller <[email protected]>
- */
-
-#include "main/mtypes.h"
-#include "ffb_dd.h"
-#include "ffb_span.h"
-#include "ffb_context.h"
-#include "ffb_lock.h"
-
-#define DBG 0
-
-#define HW_LOCK() \
- ffbContextPtr fmesa = FFB_CONTEXT(ctx); \
- if (!fmesa->hw_locked) \
- LOCK_HARDWARE(fmesa);
-
-#define HW_UNLOCK() \
- if (!fmesa->hw_locked) \
- UNLOCK_HARDWARE(fmesa); \
-
-#define LOCAL_VARS \
- __DRIdrawable *dPriv = fmesa->driDrawable; \
- GLuint height = dPriv->h; \
- GLuint p; \
- char *buf; \
- (void) p
-
-#define INIT_MONO_PIXEL(p, color) \
- p = ((color[0] << 0) | \
- (color[1] << 8) | \
- (color[2] << 16))
-
-/* We use WID clipping, so this test always passes. */
-#define CLIPPIXEL(__x, __y) (1)
-
-/* And also, due to WID clipping, we need not do anything
- * special here.
- */
-#define CLIPSPAN(__x,__y,__n,__x1,__n1,__i) \
- __n1 = __n; \
- __x1 = __x; \
-
-#define HW_CLIPLOOP() \
-do { unsigned int fbc, ppc, cmp; \
- FFBWait(fmesa, fmesa->regs); \
- fbc = fmesa->regs->fbc; ppc = fmesa->regs->ppc; cmp = fmesa->regs->cmp; \
- fmesa->regs->fbc = ((fbc & \
- ~(FFB_FBC_WB_C | FFB_FBC_ZE_MASK | FFB_FBC_RGBE_MASK)) \
- | (FFB_FBC_ZE_OFF | FFB_FBC_RGBE_MASK)); \
- fmesa->regs->ppc = ((ppc & \
- ~(FFB_PPC_XS_MASK | FFB_PPC_ABE_MASK | FFB_PPC_DCE_MASK | \
- FFB_PPC_APE_MASK | FFB_PPC_CS_MASK)) \
- | (FFB_PPC_XS_WID | FFB_PPC_ABE_DISABLE | \
- FFB_PPC_DCE_DISABLE | FFB_PPC_APE_DISABLE | \
- FFB_PPC_CS_VAR)); \
- fmesa->regs->cmp = ((cmp & ~(0xff << 16)) | (0x80 << 16)); \
- fmesa->ffbScreen->rp_active = 1; \
- FFBWait(fmesa, fmesa->regs); \
- buf = (char *)(fmesa->sfb32 + (dPriv->x << 2) + (dPriv->y << 13));\
- if (dPriv->numClipRects) {
-
-#define HW_ENDCLIPLOOP() \
- } \
- fmesa->regs->fbc = fbc; \
- fmesa->regs->ppc = ppc; \
- fmesa->regs->cmp = cmp; \
- fmesa->ffbScreen->rp_active = 1; \
-} while(0)
-
-#define Y_FLIP(__y) (height - __y - 1)
-
-#define READ_RGBA(rgba,__x,__y) \
-do { GLuint p = *(GLuint *)(buf + ((__x)<<2) + ((__y)<<13)); \
- rgba[0] = (p >> 0) & 0xff; \
- rgba[1] = (p >> 8) & 0xff; \
- rgba[2] = (p >> 16) & 0xff; \
- rgba[3] = 0xff; \
-} while(0)
-
-#define WRITE_RGBA(__x, __y, __r, __g, __b, __a) \
- *(GLuint *)(buf + ((__x)<<2) + ((__y)<<13)) = \
- ((((__r) & 0xff) << 0) | \
- (((__g) & 0xff) << 8) | \
- (((__b) & 0xff) << 16))
-
-#define WRITE_PIXEL(__x, __y, __p) \
- *(GLuint *)(buf + ((__x)<<2) + ((__y)<<13)) = (__p)
-
-#define TAG(x) ffb##x##_888
-
-#include "spantmp.h"
-
-/**
- * Plug in the Get/Put routines for the given driRenderbuffer.
- */
-void
-ffbSetSpanFunctions(driRenderbuffer *drb, const GLvisual *vis)
-{
- assert(vis->redBits == 8);
- assert(vis->greenBits == 8);
- assert(vis->blueBits == 8);
- ffbInitPointers_888(&drb->Base);
-}
diff --git a/src/mesa/drivers/dri/ffb/ffb_span.h b/src/mesa/drivers/dri/ffb/ffb_span.h
deleted file mode 100644
index 37506cf30e6..00000000000
--- a/src/mesa/drivers/dri/ffb/ffb_span.h
+++ /dev/null
@@ -1,9 +0,0 @@
-
-#ifndef _FFB_SPAN_H
-#define _FFB_SPAN_H
-
-#include "drirenderbuffer.h"
-
-void ffbSetSpanFunctions(driRenderbuffer *drb, const GLvisual *vis);
-
-#endif /* !(_FFB_SPAN_H) */
diff --git a/src/mesa/drivers/dri/ffb/ffb_state.c b/src/mesa/drivers/dri/ffb/ffb_state.c
deleted file mode 100644
index c09d2fef838..00000000000
--- a/src/mesa/drivers/dri/ffb/ffb_state.c
+++ /dev/null
@@ -1,1222 +0,0 @@
-/*
- *
- * GLX Hardware Device Driver for Sun Creator/Creator3D
- * Copyright (C) 2000, 2001 David S. Miller
- *
- * 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 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
- * DAVID MILLER, OR ANY OTHER CONTRIBUTORS 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.
- *
- *
- * David S. Miller <[email protected]>
- */
-
-#include "main/mtypes.h"
-#include "main/colormac.h"
-#include "main/enums.h"
-
-#include "vbo/vbo.h"
-#include "tnl/tnl.h"
-#include "tnl/t_pipeline.h"
-#include "swrast/swrast.h"
-#include "swrast_setup/swrast_setup.h"
-
-#include "ffb_dd.h"
-#include "ffb_span.h"
-#include "ffb_context.h"
-#include "ffb_tris.h"
-#include "ffb_state.h"
-
-#undef STATE_TRACE
-
-static unsigned int ffbComputeAlphaFunc(GLcontext *ctx)
-{
- unsigned int xclip;
- GLubyte alphaRef;
-
-#ifdef STATE_TRACE
- fprintf(stderr, "ffbDDAlphaFunc: func(%s) ref(%02x)\n",
- _mesa_lookup_enum_by_nr(ctx->Color.AlphaFunc),
- ctx->Color.AlphaRef & 0xff);
-#endif
-
- switch (ctx->Color.AlphaFunc) {
- case GL_NEVER: xclip = FFB_XCLIP_TEST_NEVER; break;
- case GL_LESS: xclip = FFB_XCLIP_TEST_LT; break;
- case GL_EQUAL: xclip = FFB_XCLIP_TEST_EQ; break;
- case GL_LEQUAL: xclip = FFB_XCLIP_TEST_LE; break;
- case GL_GREATER: xclip = FFB_XCLIP_TEST_GT; break;
- case GL_NOTEQUAL: xclip = FFB_XCLIP_TEST_NE; break;
- case GL_GEQUAL: xclip = FFB_XCLIP_TEST_GE; break;
- case GL_ALWAYS: xclip = FFB_XCLIP_TEST_ALWAYS; break;
-
- default:
- return FFB_XCLIP_TEST_ALWAYS | 0x00;
- }
-
- CLAMPED_FLOAT_TO_UBYTE(alphaRef, ctx->Color.AlphaRef);
- xclip |= (alphaRef & 0xff);
-
- return xclip;
-}
-
-static void ffbDDAlphaFunc(GLcontext *ctx, GLenum func, GLfloat ref)
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
-
- if (ctx->Color.AlphaEnabled) {
- unsigned int xclip = ffbComputeAlphaFunc(ctx);
-
- if (fmesa->xclip != xclip) {
- fmesa->xclip = xclip;
- FFB_MAKE_DIRTY(fmesa, FFB_STATE_XCLIP, 1);
- }
- }
-}
-
-static void ffbDDBlendEquationSeparate(GLcontext *ctx,
- GLenum modeRGB, GLenum modeA)
-{
-
-#ifdef STATE_TRACE
- fprintf(stderr, "ffbDDBlendEquation: mode(%s)\n",
- _mesa_lookup_enum_by_nr(modeRGB));
-#endif
- assert( modeRGB == modeA );
- FALLBACK( ctx, (modeRGB != GL_FUNC_ADD), FFB_BADATTR_BLENDEQN);
-}
-
-static void ffbDDBlendFuncSeparate(GLcontext *ctx, GLenum sfactorRGB,
- GLenum dfactorRGB, GLenum sfactorA,
- GLenum dfactorA)
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
- unsigned int blendc = 1 << 4;
-
-#ifdef STATE_TRACE
- fprintf(stderr, "ffbDDBlendFuncSeparate: sRGB(%s) dRGB(%s) sA(%s) dA(%s)\n",
- _mesa_lookup_enum_by_nr(sfactorRGB),
- _mesa_lookup_enum_by_nr(dfactorRGB),
- _mesa_lookup_enum_by_nr(sfactorA),
- _mesa_lookup_enum_by_nr(dfactorA));
-#endif
- switch (ctx->Color.BlendSrcRGB) {
- case GL_ZERO:
- blendc |= (0 << 0);
- break;
-
- case GL_ONE:
- blendc |= (1 << 0);
- break;
-
- case GL_ONE_MINUS_SRC_ALPHA:
- blendc |= (2 << 0);
- break;
-
- case GL_SRC_ALPHA:
- blendc |= (3 << 0);
- break;
-
- default:
- if (ctx->Color.BlendEnabled)
- FALLBACK( ctx, FFB_BADATTR_BLENDFUNC, GL_TRUE );
- return;
- };
-
- switch (ctx->Color.BlendDstRGB) {
- case GL_ZERO:
- blendc |= (0 << 2);
- break;
-
- case GL_ONE:
- blendc |= (1 << 2);
- break;
-
- case GL_ONE_MINUS_SRC_ALPHA:
- blendc |= (2 << 2);
- break;
-
- case GL_SRC_ALPHA:
- blendc |= (3 << 2);
- break;
-
- default:
- if (ctx->Color.BlendEnabled)
- FALLBACK( ctx, FFB_BADATTR_BLENDFUNC, GL_TRUE );
- return;
- };
-
- if (ctx->Color.BlendEnabled &&
- ctx->Color.ColorLogicOpEnabled &&
- ctx->Color.LogicOp != GL_COPY) {
- /* We could avoid this if sfactor is GL_ONE and
- * dfactor is GL_ZERO. I do not think that is even
- * worthwhile to check because if someone is using
- * blending they use more interesting settings and
- * also it would add more state tracking to a lot
- * of the code in this file.
- */
- FALLBACK(ctx, FFB_BADATTR_BLENDROP, GL_TRUE);
- return;
- }
-
- FALLBACK( ctx, (FFB_BADATTR_BLENDFUNC|FFB_BADATTR_BLENDROP), GL_FALSE );
-
- if (blendc != fmesa->blendc) {
- fmesa->blendc = blendc;
- FFB_MAKE_DIRTY(fmesa, FFB_STATE_BLEND, 1);
- }
-}
-
-static void ffbDDDepthFunc(GLcontext *ctx, GLenum func)
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
- GLuint cmp;
-
-#ifdef STATE_TRACE
- fprintf(stderr, "ffbDDDepthFunc: func(%s)\n",
- _mesa_lookup_enum_by_nr(func));
-#endif
-
- switch (func) {
- case GL_NEVER:
- cmp = FFB_CMP_MAGN_NEVER;
- break;
- case GL_ALWAYS:
- cmp = FFB_CMP_MAGN_ALWAYS;
- break;
- case GL_LESS:
- cmp = FFB_CMP_MAGN_LT;
- break;
- case GL_LEQUAL:
- cmp = FFB_CMP_MAGN_LE;
- break;
- case GL_EQUAL:
- cmp = FFB_CMP_MAGN_EQ;
- break;
- case GL_GREATER:
- cmp = FFB_CMP_MAGN_GT;
- break;
- case GL_GEQUAL:
- cmp = FFB_CMP_MAGN_GE;
- break;
- case GL_NOTEQUAL:
- cmp = FFB_CMP_MAGN_NE;
- break;
- default:
- return;
- };
-
- if (! ctx->Depth.Test)
- cmp = FFB_CMP_MAGN_ALWAYS;
-
- cmp <<= 16;
- cmp = (fmesa->cmp & ~(0xff<<16)) | cmp;
- if (cmp != fmesa->cmp) {
- fmesa->cmp = cmp;
- FFB_MAKE_DIRTY(fmesa, FFB_STATE_CMP, 1);
- }
-}
-
-static void ffbDDDepthMask(GLcontext *ctx, GLboolean flag)
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
- GLuint fbc = fmesa->fbc;
- GLboolean enabled_now;
-
-#ifdef STATE_TRACE
- fprintf(stderr, "ffbDDDepthMask: flag(%d)\n", flag);
-#endif
-
- if ((fbc & FFB_FBC_ZE_MASK) == FFB_FBC_ZE_OFF)
- enabled_now = GL_FALSE;
- else
- enabled_now = GL_TRUE;
-
- if (flag != enabled_now) {
- fbc &= ~FFB_FBC_ZE_MASK;
- if (flag) {
- fbc |= FFB_FBC_WB_C | FFB_FBC_ZE_ON;
- } else {
- fbc |= FFB_FBC_ZE_OFF;
- fbc &= ~FFB_FBC_WB_C;
- }
- fmesa->fbc = fbc;
- FFB_MAKE_DIRTY(fmesa, FFB_STATE_FBC, 1);
- }
-}
-
-static void
-ffbDDStencilFuncSeparate(GLcontext *ctx, GLenum face, GLenum func,
- GLint ref, GLuint mask)
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
- unsigned int stencil, stencilctl, consty;
-
- /* We will properly update sw/hw state when stenciling is
- * enabled.
- */
- if (! ctx->Stencil._Enabled)
- return;
-
- stencilctl = fmesa->stencilctl;
- stencilctl &= ~(7 << 16);
-
- switch (func) {
- case GL_ALWAYS: stencilctl |= (0 << 16); break;
- case GL_GREATER: stencilctl |= (1 << 16); break;
- case GL_EQUAL: stencilctl |= (2 << 16); break;
- case GL_GEQUAL: stencilctl |= (3 << 16); break;
- case GL_NEVER: stencilctl |= (4 << 16); break;
- case GL_LEQUAL: stencilctl |= (5 << 16); break;
- case GL_NOTEQUAL: stencilctl |= (6 << 16); break;
- case GL_LESS: stencilctl |= (7 << 16); break;
-
- default:
- return;
- };
-
- consty = ref & 0xf;
-
- stencil = fmesa->stencil;
- stencil &= ~(0xf << 20);
- stencil |= (mask & 0xf) << 20;
-
- if (fmesa->stencil != stencil ||
- fmesa->stencilctl != stencilctl ||
- fmesa->consty != consty) {
- fmesa->stencil = stencil;
- fmesa->stencilctl = stencilctl;
- fmesa->consty = consty;
- FFB_MAKE_DIRTY(fmesa, FFB_STATE_STENCIL, 6);
- }
-}
-
-static void
-ffbDDStencilMaskSeparate(GLcontext *ctx, GLenum face, GLuint mask)
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
-
- mask &= 0xf;
- if (fmesa->ypmask != mask) {
- fmesa->ypmask = mask;
- FFB_MAKE_DIRTY(fmesa, FFB_STATE_YPMASK, 1);
- }
-}
-
-static void
-ffbDDStencilOpSeparate(GLcontext *ctx, GLenum face, GLenum fail,
- GLenum zfail, GLenum zpass)
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
- unsigned int stencilctl;
-
- /* We will properly update sw/hw state when stenciling is
- * enabled.
- */
- if (! ctx->Stencil._Enabled)
- return;
-
- stencilctl = fmesa->stencilctl;
- stencilctl &= ~(0xfff00000);
-
- switch (fail) {
- case GL_ZERO: stencilctl |= (0 << 28); break;
- case GL_KEEP: stencilctl |= (1 << 28); break;
- case GL_INVERT: stencilctl |= (2 << 28); break;
- case GL_REPLACE: stencilctl |= (3 << 28); break;
- case GL_INCR: stencilctl |= (4 << 28); break;
- case GL_DECR: stencilctl |= (5 << 28); break;
-
- default:
- return;
- };
-
- switch (zfail) {
- case GL_ZERO: stencilctl |= (0 << 24); break;
- case GL_KEEP: stencilctl |= (1 << 24); break;
- case GL_INVERT: stencilctl |= (2 << 24); break;
- case GL_REPLACE: stencilctl |= (3 << 24); break;
- case GL_INCR: stencilctl |= (4 << 24); break;
- case GL_DECR: stencilctl |= (5 << 24); break;
-
- default:
- return;
- };
-
- switch (zpass) {
- case GL_ZERO: stencilctl |= (0 << 20); break;
- case GL_KEEP: stencilctl |= (1 << 20); break;
- case GL_INVERT: stencilctl |= (2 << 20); break;
- case GL_REPLACE: stencilctl |= (3 << 20); break;
- case GL_INCR: stencilctl |= (4 << 20); break;
- case GL_DECR: stencilctl |= (5 << 20); break;
-
- default:
- return;
- };
-
- if (fmesa->stencilctl != stencilctl) {
- fmesa->stencilctl = stencilctl;
- FFB_MAKE_DIRTY(fmesa, FFB_STATE_STENCIL, 6);
- }
-}
-
-static void ffbCalcViewportRegs(GLcontext *ctx)
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
- __DRIdrawable *dPriv = fmesa->driDrawable;
- GLuint xmin, xmax, ymin, ymax, zmin, zmax;
- unsigned int vcmin, vcmax;
-
- xmin = ctx->Viewport.X + dPriv->x;
- xmax = xmin + ctx->Viewport.Width;
- ymax = dPriv->y + dPriv->h - ctx->Viewport.Y;
- ymin = ymax - ctx->Viewport.Height;
- if (ctx->Scissor.Enabled) {
- GLuint sc_xmin, sc_xmax, sc_ymin, sc_ymax;
-
- sc_xmin = ctx->Viewport.X + dPriv->x;
- sc_xmax = sc_xmin + ctx->Viewport.Width;
- sc_ymax = dPriv->y + dPriv->h - ctx->Viewport.Y;
- sc_ymin = sc_ymax - ctx->Viewport.Height;
- if (sc_xmin > xmin)
- xmin = sc_xmin;
- if (sc_xmax < xmax)
- xmax = sc_xmax;
- if (sc_ymin > ymin)
- ymin = sc_ymin;
- if (sc_ymax < ymax)
- ymax = sc_ymax;
- }
- zmin = ((GLdouble)ctx->Viewport.Near * 0x0fffffff);
- zmax = ((GLdouble)ctx->Viewport.Far * 0x0fffffff);
-
- vcmin = ((ymin & 0xffff) << 16) | (xmin & 0xffff);
- vcmax = ((ymax & 0xffff) << 16) | (xmax & 0xffff);
- if (fmesa->vclipmin != vcmin ||
- fmesa->vclipmax != vcmax ||
- fmesa->vclipzmin != zmin ||
- fmesa->vclipzmax != zmax) {
- fmesa->vclipmin = vcmin;
- fmesa->vclipmax = vcmax;
- fmesa->vclipzmin = zmin;
- fmesa->vclipzmax = zmax;
- FFB_MAKE_DIRTY(fmesa, FFB_STATE_CLIP, (4 + (4 * 2)));
- }
-}
-
-void ffbCalcViewport(GLcontext *ctx)
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
- const GLfloat *v = ctx->Viewport._WindowMap.m;
- GLfloat *m = fmesa->hw_viewport;
- __DRIdrawable *dPriv = fmesa->driDrawable;
-
- m[MAT_SX] = v[MAT_SX];
- m[MAT_TX] = v[MAT_TX] + dPriv->x + SUBPIXEL_X;
- m[MAT_SY] = - v[MAT_SY];
- m[MAT_TY] = - v[MAT_TY] + dPriv->h + dPriv->y + SUBPIXEL_Y;
- m[MAT_SZ] = v[MAT_SZ] * ((GLdouble)1.0 / (GLdouble)0x0fffffff);
- m[MAT_TZ] = v[MAT_TZ] * ((GLdouble)1.0 / (GLdouble)0x0fffffff);
-
- fmesa->depth_scale = ((GLdouble)1.0 / (GLdouble)0x0fffffff);
-
- ffbCalcViewportRegs(ctx);
-
- fmesa->setupnewinputs |= VERT_BIT_POS;
-}
-
-static void ffbDDViewport(GLcontext *ctx, GLint x, GLint y,
- GLsizei width, GLsizei height)
-{
- ffbCalcViewport(ctx);
-}
-
-static void ffbDDDepthRange(GLcontext *ctx, GLclampd nearval, GLclampd farval)
-{
- ffbCalcViewport(ctx);
-}
-
-static void ffbDDScissor(GLcontext *ctx, GLint cx, GLint cy,
- GLsizei cw, GLsizei ch)
-{
- ffbCalcViewport(ctx);
-}
-
-static void ffbDDDrawBuffer(GLcontext *ctx, GLenum buffer)
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
- unsigned int fbc = fmesa->fbc;
-
-#ifdef STATE_TRACE
- fprintf(stderr, "ffbDDDrawBuffer: mode(%s)\n",
- _mesa_lookup_enum_by_nr(buffer));
-#endif
- fbc &= ~(FFB_FBC_WB_AB | FFB_FBC_RB_MASK);
- switch (buffer) {
- case GL_FRONT:
- if (fmesa->back_buffer == 0)
- fbc |= FFB_FBC_WB_B | FFB_FBC_RB_B;
- else
- fbc |= FFB_FBC_WB_A | FFB_FBC_RB_A;
- break;
-
- case GL_BACK:
- if (fmesa->back_buffer == 0)
- fbc |= FFB_FBC_WB_A | FFB_FBC_RB_A;
- else
- fbc |= FFB_FBC_WB_B | FFB_FBC_RB_B;
- break;
-
- case GL_FRONT_AND_BACK:
- fbc |= FFB_FBC_WB_AB;
- break;
-
- default:
- return;
- };
-
- if (fbc != fmesa->fbc) {
- fmesa->fbc = fbc;
- FFB_MAKE_DIRTY(fmesa, FFB_STATE_FBC, 1);
- }
-}
-
-
-static void ffbDDReadBuffer(GLcontext *ctx, GLenum buffer)
-{
- /* no-op, unless you implement h/w glRead/CopyPixels */
-}
-
-
-/*
- * Specifies buffer for sw fallbacks (spans)
- */
-#if 000
-/* XXX
- * This function is obsolete. It's not clear how this really effected
- * span reading/writing above. The span functions should use the
- * incoming driRenderbuffer (gl_renderbuffer) pointer to determine how
- * to read from the specified bufer.
- */
-static void ffbDDSetBuffer(GLcontext *ctx, GLframebuffer *colorBuffer,
- GLuint bufferBit)
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
- unsigned int fbc = fmesa->fbc;
-
-#ifdef STATE_TRACE
- fprintf(stderr, "ffbDDSetReadBuffer: mode(%s)\n",
- _mesa_lookup_enum_by_nr(buffer));
-#endif
- fbc &= ~(FFB_FBC_RB_MASK);
- switch (bufferBit) {
- case BUFFER_BIT_FRONT_LEFT:
- if (fmesa->back_buffer == 0)
- fbc |= FFB_FBC_RB_B;
- else
- fbc |= FFB_FBC_RB_A;
- break;
-
- case BUFFER_BIT_BACK_LEFT:
- if (fmesa->back_buffer == 0)
- fbc |= FFB_FBC_RB_A;
- else
- fbc |= FFB_FBC_RB_B;
- break;
-
- default:
- _mesa_problem(ctx, "Unexpected buffer in ffbDDSetBuffer()");
- return;
- };
-
- if (fbc != fmesa->fbc) {
- fmesa->fbc = fbc;
- FFB_MAKE_DIRTY(fmesa, FFB_STATE_FBC, 1);
- }
-}
-#endif
-
-
-static void ffbDDClearColor(GLcontext *ctx, const GLfloat color[4])
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
- GLubyte c[4];
- CLAMPED_FLOAT_TO_UBYTE(c[0], color[0]);
- CLAMPED_FLOAT_TO_UBYTE(c[1], color[1]);
- CLAMPED_FLOAT_TO_UBYTE(c[2], color[2]);
-
- fmesa->clear_pixel = ((c[0] << 0) |
- (c[1] << 8) |
- (c[2] << 16));
-}
-
-static void ffbDDClearDepth(GLcontext *ctx, GLclampd depth)
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
-
- fmesa->clear_depth = Z_FROM_MESA(depth * 4294967295.0f);
-}
-
-static void ffbDDClearStencil(GLcontext *ctx, GLint stencil)
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
-
- fmesa->clear_stencil = stencil & 0xf;
-}
-
-/* XXX Actually, should I be using FBC controls for this? -DaveM */
-static void ffbDDColorMask(GLcontext *ctx,
- GLboolean r, GLboolean g,
- GLboolean b, GLboolean a)
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
- unsigned int new_pmask = 0x0;
-
-#ifdef STATE_TRACE
- fprintf(stderr, "ffbDDColorMask: r(%d) g(%d) b(%d) a(%d)\n",
- r, g, b, a);
-#endif
- if (r)
- new_pmask |= 0x000000ff;
- if (g)
- new_pmask |= 0x0000ff00;
- if (b)
- new_pmask |= 0x00ff0000;
- if (a)
- new_pmask |= 0xff000000;
-
- if (fmesa->pmask != new_pmask) {
- fmesa->pmask = new_pmask;
- FFB_MAKE_DIRTY(fmesa, FFB_STATE_PMASK, 1);
- }
-}
-
-static void ffbDDLogicOp(GLcontext *ctx, GLenum op)
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
- unsigned int rop;
-
-#ifdef STATE_TRACE
- fprintf(stderr, "ffbDDLogicOp: op(%s)\n",
- _mesa_lookup_enum_by_nr(op));
-#endif
- switch (op) {
- case GL_CLEAR: rop = FFB_ROP_ZERO; break;
- case GL_SET: rop = FFB_ROP_ONES; break;
- case GL_COPY: rop = FFB_ROP_NEW; break;
- case GL_AND: rop = FFB_ROP_NEW_AND_OLD; break;
- case GL_NAND: rop = FFB_ROP_NEW_AND_NOLD; break;
- case GL_OR: rop = FFB_ROP_NEW_OR_OLD; break;
- case GL_NOR: rop = FFB_ROP_NEW_OR_NOLD; break;
- case GL_XOR: rop = FFB_ROP_NEW_XOR_OLD; break;
- case GL_NOOP: rop = FFB_ROP_OLD; break;
- case GL_COPY_INVERTED: rop = FFB_ROP_NNEW; break;
- case GL_INVERT: rop = FFB_ROP_NOLD; break;
- case GL_EQUIV: rop = FFB_ROP_NNEW_XOR_NOLD; break;
- case GL_AND_REVERSE: rop = FFB_ROP_NEW_AND_NOLD; break;
- case GL_AND_INVERTED: rop = FFB_ROP_NNEW_AND_OLD; break;
- case GL_OR_REVERSE: rop = FFB_ROP_NEW_OR_NOLD; break;
- case GL_OR_INVERTED: rop = FFB_ROP_NNEW_OR_OLD; break;
-
- default:
- return;
- };
-
- rop |= fmesa->rop & ~0xff;
- if (rop != fmesa->rop) {
- fmesa->rop = rop;
- FFB_MAKE_DIRTY(fmesa, FFB_STATE_ROP, 1);
-
- if (op == GL_COPY)
- FALLBACK( ctx, FFB_BADATTR_BLENDROP, GL_FALSE );
- }
-}
-
-#if 0
-/* XXX Also need to track near/far just like 3dfx driver.
- * XXX
- * XXX Actually, that won't work, because the 3dfx chip works by
- * XXX having 1/w coordinates fed to it for each primitive, and
- * XXX it uses this to index it's 64 entry fog table.
- */
-static void ffb_fog_linear(GLcontext *ctx, ffbContextPtr fmesa)
-{
- GLfloat c = ctx->ProjectionMatrix.m[10];
- GLfloat d = ctx->ProjectionMatrix.m[14];
- GLfloat tz = ctx->Viewport.WindowMap.m[MAT_TZ];
- GLfloat szInv = 1.0F / ctx->Viewport.WindowMap.m[MAT_SZ];
- GLfloat fogEnd = ctx->Fog.End;
- GLfloat fogScale = 1.0F / (ctx->Fog.End - ctx->Fog.Start);
- GLfloat ndcz;
- GLfloat eyez;
- GLfloat Zzero, Zone;
- unsigned int zb, zf;
-
- /* Compute the Z at which f reaches 0.0, this is the full
- * saturation point.
- *
- * Thus compute Z (as seen by the chip during rendering),
- * such that:
- *
- * 0.0 = (fogEnd - eyez) * fogScale
- *
- * fogScale is usually not zero, thus we are looking for:
- *
- * fogEnd = eyez
- *
- * fogEnd = -d / (c + ((Z - tz) * szInv))
- * fogEnd * (c + ((Z - tz) * szInv)) = -d
- * (c + ((Z - tz) * szInv)) = -d / fogEnd
- * (Z - tz) * szInv = (-d / fogEnd) - c
- * (Z - tz) = ((-d / fogEnd) - c) / szInv
- * Z = (((-d / fogEnd) - c) / szInv) + tz
- */
- Zzero = (((-d / fogEnd) - c) / szInv) + tz;
-
- /* Compute the Z at which f reaches 1.0, this is where
- * the incoming frag's full intensity is shown. This
- * equation is:
- *
- * 1.0 = (fogEnd - eyez)
- *
- * We are looking for:
- *
- * 1.0 + eyez = fogEnd
- *
- * 1.0 + (-d / (c + ((Z - tz) * szInv))) = fogEnd
- * -d / (c + ((Z - tz) * szInv)) = fogEnd - 1.0
- * -d / (FogEnd - 1.0) = (c + ((Z - tz) * szInv))
- * (-d / (fogEnd - 1.0)) - c = ((Z - tz) * szInv)
- * ((-d / (fogEnd - 1.0)) - c) / szInv = (Z - tz)
- * (((-d / (fogEnd - 1.0)) - c) / szInv) + tz = Z
- */
- Zone = (((-d / (fogEnd - 1.0)) - c) / szInv) + tz;
-
- /* FFB's Zfront must be less than Zback, thus we may have
- * to invert Sf/Sb to satisfy this constraint.
- */
- if (Zzero < Zone) {
- sf = 0.0;
- sb = 1.0;
- zf = Z_FROM_MESA(Zzero);
- zb = Z_FROM_MESA(Zone);
- } else {
- sf = 1.0;
- sb = 0.0;
- zf = Z_FROM_MESA(Zone);
- zb = Z_FROM_MESA(Zzero);
- }
-}
-#endif
-
-static void ffbDDFogfv(GLcontext *ctx, GLenum pname, const GLfloat *param)
-{
-#ifdef STATE_TRACE
- fprintf(stderr, "ffbDDFogfv: pname(%s)\n", _mesa_lookup_enum_by_nr(pname));
-#endif
-}
-
-static void ffbDDLineStipple(GLcontext *ctx, GLint factor, GLushort pattern)
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
-
-#ifdef STATE_TRACE
- fprintf(stderr, "ffbDDLineStipple: factor(%d) pattern(%04x)\n",
- factor, pattern);
-#endif
- if (ctx->Line.StippleFlag) {
- factor = ctx->Line.StippleFactor;
- pattern = ctx->Line.StipplePattern;
- if ((GLuint) factor > 15) {
- fmesa->lpat = FFB_LPAT_BAD;
- } else {
- fmesa->lpat = ((factor << FFB_LPAT_SCALEVAL_SHIFT) |
- (0 << FFB_LPAT_PATLEN_SHIFT) |
- ((pattern & 0xffff) << FFB_LPAT_PATTERN_SHIFT));
- }
- } else {
- fmesa->lpat = 0;
- }
-}
-
-void ffbXformAreaPattern(ffbContextPtr fmesa, const GLubyte *mask)
-{
- __DRIdrawable *dPriv = fmesa->driDrawable;
- int i, lines, xoff;
-
- lines = 0;
- i = (dPriv->y + dPriv->h) & (32 - 1);
- xoff = dPriv->x & (32 - 1);
- while (lines++ < 32) {
- GLuint raw =
- (((GLuint)mask[0] << 24) |
- ((GLuint)mask[1] << 16) |
- ((GLuint)mask[2] << 8) |
- ((GLuint)mask[3] << 0));
-
- fmesa->pattern[i] =
- (raw << xoff) | (raw >> (32 - xoff));
- i = (i - 1) & (32 - 1);
- mask += 4;
- }
-
- FFB_MAKE_DIRTY(fmesa, FFB_STATE_APAT, 32);
-}
-
-static void ffbDDPolygonStipple(GLcontext *ctx, const GLubyte *mask)
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
-
-#ifdef STATE_TRACE
- fprintf(stderr, "ffbDDPolygonStipple: state(%d)\n",
- ctx->Polygon.StippleFlag);
-#endif
- ffbXformAreaPattern(fmesa, mask);
-}
-
-static void ffbDDEnable(GLcontext *ctx, GLenum cap, GLboolean state)
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
- unsigned int tmp;
-
-#ifdef STATE_TRACE
- fprintf(stderr, "ffbDDEnable: %s state(%d)\n",
- _mesa_lookup_enum_by_nr(cap), state);
-#endif
- switch (cap) {
- case GL_ALPHA_TEST:
- if (state)
- tmp = ffbComputeAlphaFunc(ctx);
- else
- tmp = FFB_XCLIP_TEST_ALWAYS;
-
- if (tmp != fmesa->xclip) {
- fmesa->xclip = tmp;
- FFB_MAKE_DIRTY(fmesa, FFB_STATE_XCLIP, 1);
- }
- break;
-
- case GL_BLEND:
- tmp = (fmesa->ppc & ~FFB_PPC_ABE_MASK);
- if (state) {
- tmp |= FFB_PPC_ABE_ENABLE;
- } else {
- tmp |= FFB_PPC_ABE_DISABLE;
- }
- if (fmesa->ppc != tmp) {
- fmesa->ppc = tmp;
- FFB_MAKE_DIRTY(fmesa, FFB_STATE_PPC, 1);
- ffbDDBlendFuncSeparate(ctx, 0, 0, 0, 0 );
- }
- break;
-
- case GL_DEPTH_TEST:
- if (state)
- tmp = 0x0fffffff;
- else
- tmp = 0x00000000;
- if (tmp != fmesa->magnc) {
- unsigned int fbc = fmesa->fbc;
- fbc &= ~FFB_FBC_ZE_MASK;
- if (state)
- fbc |= FFB_FBC_ZE_ON;
- else
- fbc |= FFB_FBC_ZE_OFF;
- fmesa->fbc = fbc;
- ffbDDDepthFunc(ctx, ctx->Depth.Func);
- fmesa->magnc = tmp;
- FFB_MAKE_DIRTY(fmesa, (FFB_STATE_MAGNC | FFB_STATE_FBC), 2);
- }
- break;
-
- case GL_SCISSOR_TEST:
- ffbDDScissor(ctx, ctx->Scissor.X, ctx->Scissor.Y,
- ctx->Scissor.Width, ctx->Scissor.Height);
- break;
-
- case GL_STENCIL_TEST:
- if (!(fmesa->ffb_sarea->flags & FFB_DRI_FFB2PLUS)) {
- FALLBACK( ctx, FFB_BADATTR_STENCIL, state );
- }
-
- tmp = fmesa->fbc & ~FFB_FBC_YE_MASK;
- if (state) {
- ffbDDStencilFuncSeparate(ctx, GL_FRONT,
- ctx->Stencil.Function[0],
- ctx->Stencil.Ref[0],
- ctx->Stencil.ValueMask[0]);
- ffbDDStencilMaskSeparate(ctx, GL_FRONT,
- ctx->Stencil.WriteMask[0]);
- ffbDDStencilOpSeparate(ctx, GL_FRONT,
- ctx->Stencil.FailFunc[0],
- ctx->Stencil.ZFailFunc[0],
- ctx->Stencil.ZPassFunc[0]);
- tmp |= FFB_FBC_YE_MASK;
- } else {
- fmesa->stencil = 0xf0000000;
- fmesa->stencilctl = 0x33300000;
- FFB_MAKE_DIRTY(fmesa, FFB_STATE_STENCIL, 6);
- tmp |= FFB_FBC_YE_OFF;
- }
- if (tmp != fmesa->fbc) {
- fmesa->fbc = tmp;
- FFB_MAKE_DIRTY(fmesa, FFB_STATE_FBC, 1);
- }
- break;
-
- case GL_FOG:
- /* Until I implement the fog support... */
- FALLBACK( ctx, FFB_BADATTR_FOG, state );
- break;
-
- case GL_LINE_STIPPLE:
- if (! state)
- fmesa->lpat = 0;
- else
- ffbDDLineStipple(ctx,
- ctx->Line.StippleFactor,
- ctx->Line.StipplePattern);
- break;
-
- case GL_POLYGON_STIPPLE:
- /* Do nothing, we interrogate the state during
- * reduced primitive changes. Since our caller
- * will set NEW_POLYGON in the ctx NewState this
- * will cause the driver rasterization functions
- * to be reevaluated, which will cause us to force
- * a reduced primitive change next rendering pass
- * and it all works out.
- */
- break;
-
- default:
- break;
- };
-}
-
-void ffbSyncHardware(ffbContextPtr fmesa)
-{
- ffb_fbcPtr ffb = fmesa->regs;
- unsigned int dirty;
- int i;
-
- FFBFifo(fmesa, fmesa->state_fifo_ents);
-
- dirty = fmesa->state_dirty;
- if (dirty & (FFB_STATE_FBC | FFB_STATE_PPC | FFB_STATE_DRAWOP |
- FFB_STATE_ROP | FFB_STATE_LPAT | FFB_STATE_WID)) {
- if (dirty & FFB_STATE_FBC)
- ffb->fbc = fmesa->fbc;
- if (dirty & FFB_STATE_PPC)
- ffb->ppc = fmesa->ppc;
- if (dirty & FFB_STATE_DRAWOP)
- ffb->drawop = fmesa->drawop;
- if (dirty & FFB_STATE_ROP)
- ffb->rop = fmesa->rop;
- if (dirty & FFB_STATE_LPAT)
- ffb->rop = fmesa->lpat;
- if (dirty & FFB_STATE_WID)
- ffb->wid = fmesa->wid;
- }
- if (dirty & (FFB_STATE_PMASK | FFB_STATE_XPMASK | FFB_STATE_YPMASK |
- FFB_STATE_ZPMASK | FFB_STATE_XCLIP | FFB_STATE_CMP |
- FFB_STATE_MATCHAB | FFB_STATE_MAGNAB | FFB_STATE_MATCHC |
- FFB_STATE_MAGNC)) {
- if (dirty & FFB_STATE_PMASK)
- ffb->pmask = fmesa->pmask;
- if (dirty & FFB_STATE_XPMASK)
- ffb->xpmask = fmesa->xpmask;
- if (dirty & FFB_STATE_YPMASK)
- ffb->ypmask = fmesa->ypmask;
- if (dirty & FFB_STATE_ZPMASK)
- ffb->zpmask = fmesa->zpmask;
- if (dirty & FFB_STATE_XCLIP)
- ffb->xclip = fmesa->xclip;
- if (dirty & FFB_STATE_CMP)
- ffb->cmp = fmesa->cmp;
- if (dirty & FFB_STATE_MATCHAB)
- ffb->matchab = fmesa->matchab;
- if (dirty & FFB_STATE_MAGNAB)
- ffb->magnab = fmesa->magnab;
- if (dirty & FFB_STATE_MATCHC)
- ffb->matchc = fmesa->matchc;
- if (dirty & FFB_STATE_MAGNC)
- ffb->magnc = fmesa->magnc;
- }
-
- if (dirty & FFB_STATE_DCUE) {
- ffb->dcss = fmesa->dcss;
- ffb->dcsf = fmesa->dcsf;
- ffb->dcsb = fmesa->dcsb;
- ffb->dczf = fmesa->dczf;
- ffb->dczb = fmesa->dczb;
- if (fmesa->ffb_sarea->flags & (FFB_DRI_FFB2 | FFB_DRI_FFB2PLUS)) {
- ffb->dcss1 = fmesa->dcss1;
- ffb->dcss2 = fmesa->dcss2;
- ffb->dcss3 = fmesa->dcss3;
- ffb->dcs2 = fmesa->dcs2;
- ffb->dcs3 = fmesa->dcs3;
- ffb->dcs4 = fmesa->dcs4;
- ffb->dcd2 = fmesa->dcd2;
- ffb->dcd3 = fmesa->dcd3;
- ffb->dcd4 = fmesa->dcd4;
- }
- }
-
- if (dirty & FFB_STATE_BLEND) {
- ffb->blendc = fmesa->blendc;
- ffb->blendc1 = fmesa->blendc1;
- ffb->blendc2 = fmesa->blendc2;
- }
-
- if (dirty & FFB_STATE_CLIP) {
- ffb->vclipmin = fmesa->vclipmin;
- ffb->vclipmax = fmesa->vclipmax;
- ffb->vclipzmin = fmesa->vclipzmin;
- ffb->vclipzmax = fmesa->vclipzmax;
- for (i = 0; i < 4; i++) {
- ffb->auxclip[i].min = fmesa->aux_clips[i].min;
- ffb->auxclip[i].max = fmesa->aux_clips[i].max;
- }
- }
-
- if ((dirty & FFB_STATE_STENCIL) &&
- (fmesa->ffb_sarea->flags & FFB_DRI_FFB2PLUS)) {
- ffb->stencil = fmesa->stencil;
- ffb->stencilctl = fmesa->stencilctl;
- ffb->fbc = FFB_FBC_WB_C;
- ffb->rawstencilctl = (fmesa->stencilctl | (1 << 19));
- ffb->fbc = fmesa->fbc;
- ffb->consty = fmesa->consty;
- }
-
- if (dirty & FFB_STATE_APAT) {
- for (i = 0; i < 32; i++)
- ffb->pattern[i] = fmesa->pattern[i];
- }
-
- fmesa->state_dirty = 0;
- fmesa->state_fifo_ents = 0;
- fmesa->ffbScreen->rp_active = 1;
-}
-
-static void ffbDDUpdateState(GLcontext *ctx, GLuint newstate)
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
-
- /* When we are hw rendering, changing certain kinds of
- * state does not require flushing all of our context.
- */
- if (fmesa->bad_fragment_attrs == 0 &&
- (newstate & ~_NEW_COLOR) == 0)
- return;
-
- _swrast_InvalidateState( ctx, newstate );
- _swsetup_InvalidateState( ctx, newstate );
- _vbo_InvalidateState( ctx, newstate );
- _tnl_InvalidateState( ctx, newstate );
-
- if (newstate & _NEW_TEXTURE)
- FALLBACK( ctx, FFB_BADATTR_TEXTURE,
- (ctx->Texture._EnabledUnits != 0));
-
-#ifdef STATE_TRACE
- fprintf(stderr, "ffbDDUpdateState: newstate(%08x)\n", newstate);
-#endif
-
- fmesa->new_gl_state |= newstate;
-
- /* Force a reduced primitive change next rendering
- * pass.
- */
- fmesa->raster_primitive = GL_POLYGON + 1;
-
-#if 0
- /* When the modelview matrix changes, this changes what
- * the eye coordinates will be so we have to recompute
- * the depth cueing parameters.
- *
- * XXX DD_HAVE_HARDWARE_FOG.
- */
- if (ctx->Fog.Enabled && (newstate & _NEW_MODELVIEW))
- ffb_update_fog();
-#endif
-}
-
-
-void ffbDDInitStateFuncs(GLcontext *ctx)
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
-
- ctx->Driver.UpdateState = ffbDDUpdateState;
-
- ctx->Driver.Enable = ffbDDEnable;
- ctx->Driver.AlphaFunc = ffbDDAlphaFunc;
- ctx->Driver.BlendEquationSeparate = ffbDDBlendEquationSeparate;
- ctx->Driver.BlendFuncSeparate = ffbDDBlendFuncSeparate;
- ctx->Driver.DepthFunc = ffbDDDepthFunc;
- ctx->Driver.DepthMask = ffbDDDepthMask;
- ctx->Driver.Fogfv = ffbDDFogfv;
- ctx->Driver.LineStipple = ffbDDLineStipple;
- ctx->Driver.PolygonStipple = ffbDDPolygonStipple;
- ctx->Driver.Scissor = ffbDDScissor;
- ctx->Driver.ColorMask = ffbDDColorMask;
- ctx->Driver.LogicOpcode = ffbDDLogicOp;
- ctx->Driver.Viewport = ffbDDViewport;
- ctx->Driver.DepthRange = ffbDDDepthRange;
-
- if (fmesa->ffb_sarea->flags & FFB_DRI_FFB2PLUS) {
- ctx->Driver.StencilFuncSeparate = ffbDDStencilFuncSeparate;
- ctx->Driver.StencilMaskSeparate = ffbDDStencilMaskSeparate;
- ctx->Driver.StencilOpSeparate = ffbDDStencilOpSeparate;
- }
-
- ctx->Driver.DrawBuffer = ffbDDDrawBuffer;
- ctx->Driver.ReadBuffer = ffbDDReadBuffer;
- ctx->Driver.ClearColor = ffbDDClearColor;
- ctx->Driver.ClearDepth = ffbDDClearDepth;
- ctx->Driver.ClearStencil = ffbDDClearStencil;
-
- /* We will support color index modes later... -DaveM */
- /*
- ctx->Driver.ClearIndex = 0;
- ctx->Driver.IndexMask = 0;
- */
-}
-
-void ffbDDInitContextHwState(GLcontext *ctx)
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
- int fifo_count = 0;
- int i;
-
- fmesa->hw_locked = 0;
-
- fmesa->bad_fragment_attrs = 0;
- fmesa->state_dirty = FFB_STATE_ALL;
- fmesa->new_gl_state = ~0;
-
- fifo_count = 1;
- fmesa->fbc = (FFB_FBC_WE_FORCEON | FFB_FBC_WM_COMBINED |
- FFB_FBC_SB_BOTH | FFB_FBC_ZE_MASK |
- FFB_FBC_YE_OFF | FFB_FBC_XE_OFF |
- FFB_FBC_RGBE_MASK);
- if (ctx->Visual.doubleBufferMode) {
- /* Buffer B is the initial back buffer. */
- fmesa->back_buffer = 1;
- fmesa->fbc |= FFB_FBC_WB_BC | FFB_FBC_RB_B;
- } else {
- fmesa->back_buffer = 0;
- fmesa->fbc |= FFB_FBC_WB_A | FFB_FBC_RB_A;
- }
-
- fifo_count += 1;
- fmesa->ppc = (FFB_PPC_ACE_DISABLE | FFB_PPC_DCE_DISABLE |
- FFB_PPC_ABE_DISABLE | FFB_PPC_VCE_3D |
- FFB_PPC_APE_DISABLE | FFB_PPC_TBE_OPAQUE |
- FFB_PPC_ZS_CONST | FFB_PPC_YS_CONST |
- FFB_PPC_XS_WID | FFB_PPC_CS_VAR);
-
- fifo_count += 3;
- fmesa->drawop = FFB_DRAWOP_RECTANGLE;
-
- /* GL_COPY is the default LogicOp. */
- fmesa->rop = (FFB_ROP_NEW << 16) | (FFB_ROP_NEW << 8) | FFB_ROP_NEW;
-
- /* No line patterning enabled. */
- fmesa->lpat = 0x00000000;
-
- /* We do not know the WID value until the first context switch. */
- fifo_count += 1;
- fmesa->wid = ~0;
-
- fifo_count += 5;
-
- /* ColorMask, all enabled. */
- fmesa->pmask = 0xffffffff;
-
- fmesa->xpmask = 0x000000ff;
- fmesa->ypmask = 0x0000000f;
- fmesa->zpmask = 0x0fffffff;
-
- /* AlphaFunc GL_ALWAYS, AlphaRef 0 */
- fmesa->xclip = FFB_XCLIP_TEST_ALWAYS | 0x00;
-
- /* This sets us up to use WID clipping (so the DRI clipping
- * rectangle is unneeded by us). All other match and magnitude
- * tests are set to pass.
- */
- fifo_count += 5;
- fmesa->cmp = ((FFB_CMP_MATCH_ALWAYS << 24) | /* MATCH C */
- (FFB_CMP_MAGN_ALWAYS << 16) | /* MAGN C */
- (FFB_CMP_MATCH_EQ << 8) | /* MATCH AB */
- (FFB_CMP_MAGN_ALWAYS << 0)); /* MAGN AB */
- fmesa->matchab = 0xff000000;
- fmesa->magnab = 0x00000000;
- fmesa->matchc = 0x00000000;
- fmesa->magnc = 0x00000000;
-
- /* Depth cue parameters, all zeros to start. */
- fifo_count += 14;
- fmesa->dcss = 0x00000000;
- fmesa->dcsf = 0x00000000;
- fmesa->dcsb = 0x00000000;
- fmesa->dczf = 0x00000000;
- fmesa->dczb = 0x00000000;
- fmesa->dcss1 = 0x00000000;
- fmesa->dcss2 = 0x00000000;
- fmesa->dcss3 = 0x00000000;
- fmesa->dcs2 = 0x00000000;
- fmesa->dcs3 = 0x00000000;
- fmesa->dcs4 = 0x00000000;
- fmesa->dcd2 = 0x00000000;
- fmesa->dcd3 = 0x00000000;
- fmesa->dcd4 = 0x00000000;
-
- /* Alpha blending unit state. */
- fifo_count += 3;
- fmesa->blendc = (1 << 0) | (0 << 2); /* src(GL_ONE) | dst(GL_ZERO) */
- fmesa->blendc1 = 0x00000000;
- fmesa->blendc2 = 0x00000000;
-
- /* ViewPort clip state. */
- fifo_count += 4 + (4 * 2);
- fmesa->vclipmin = 0x00000000;
- fmesa->vclipmax = 0xffffffff;
- fmesa->vclipzmin = 0x00000000;
- fmesa->vclipzmax = 0x0fffffff;
- for (i = 0; i < 4; i++) {
- fmesa->aux_clips[0].min = 0x00000000;
- fmesa->aux_clips[0].max = 0x00000000;
- }
-
- /* Stenciling state. */
- fifo_count += 6;
- fmesa->stencil = 0xf0000000; /* Stencil MASK, Y plane */
- fmesa->stencilctl = 0x33300000; /* All stencil tests disabled */
- fmesa->consty = 0x0;
-
- /* Area pattern, used for polygon stipples. */
- fifo_count += 32;
- for (i = 0; i < 32; i++)
- fmesa->pattern[i] = 0x00000000;
-
- fmesa->state_fifo_ents = fifo_count;
- fmesa->state_all_fifo_ents = fifo_count;
-}
diff --git a/src/mesa/drivers/dri/ffb/ffb_state.h b/src/mesa/drivers/dri/ffb/ffb_state.h
deleted file mode 100644
index 19e72085fd1..00000000000
--- a/src/mesa/drivers/dri/ffb/ffb_state.h
+++ /dev/null
@@ -1,12 +0,0 @@
-
-#ifndef _FFB_STATE_H
-#define _FFB_STATE_H
-
-extern void ffbDDInitStateFuncs(GLcontext *);
-extern void ffbDDInitContextHwState(GLcontext *);
-
-extern void ffbCalcViewport(GLcontext *);
-extern void ffbXformAreaPattern(ffbContextPtr, const GLubyte *);
-extern void ffbSyncHardware(ffbContextPtr fmesa);
-
-#endif /* !(_FFB_STATE_H) */
diff --git a/src/mesa/drivers/dri/ffb/ffb_stencil.c b/src/mesa/drivers/dri/ffb/ffb_stencil.c
deleted file mode 100644
index 10cdfbc616e..00000000000
--- a/src/mesa/drivers/dri/ffb/ffb_stencil.c
+++ /dev/null
@@ -1,224 +0,0 @@
-/*
- *
- * GLX Hardware Device Driver for Sun Creator/Creator3D
- * Copyright (C) 2000 David S. Miller
- *
- * 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 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
- * DAVID MILLER, OR ANY OTHER CONTRIBUTORS 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.
- *
- *
- * David S. Miller <[email protected]>
- */
-
-#include "main/mtypes.h"
-#include "ffb_dd.h"
-#include "ffb_span.h"
-#include "ffb_context.h"
-#include "ffb_stencil.h"
-#include "ffb_lock.h"
-
-#undef STENCIL_TRACE
-
-static void FFBWriteStencilSpan( GLcontext *ctx,
- struct gl_renderbuffer *rb,
- GLuint n, GLint x, GLint y,
- const void *values, const GLubyte mask[] )
-{
- const GLubyte *stencil = (const GLubyte *) values;
-#ifdef STENCIL_TRACE
- fprintf(stderr, "FFBWriteStencilSpan: n(%d) x(%d) y(%d)\n",
- (int) n, x, y);
-#endif
- if (ctx->Depth.Mask) {
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
- __DRIdrawable *dPriv = fmesa->driDrawable;
- GLuint *zptr;
- GLuint i;
-
- if (!fmesa->hw_locked)
- LOCK_HARDWARE(fmesa);
- FFBFifo(fmesa, 2);
- fmesa->regs->fbc = (FFB_FBC_WB_C | FFB_FBC_ZE_OFF |
- FFB_FBC_YE_ON | FFB_FBC_RGBE_OFF);
- fmesa->regs->ppc = FFB_PPC_YS_VAR;
- FFBWait(fmesa, fmesa->regs);
-
- y = (dPriv->h - y);
- zptr = (GLuint *)
- ((char *)fmesa->sfb32 +
- ((dPriv->x + x) << 2) +
- ((dPriv->y + y) << 13));
-
- for (i = 0; i < n; i++) {
- if (mask[i])
- *zptr = (stencil[i] & 0xf) << 28;
- zptr++;
- }
-
- FFBFifo(fmesa, 2);
- fmesa->regs->fbc = fmesa->fbc;
- fmesa->regs->ppc = fmesa->ppc;
- fmesa->ffbScreen->rp_active = 1;
- if (!fmesa->hw_locked)
- UNLOCK_HARDWARE(fmesa);
- }
-}
-
-static void FFBWriteStencilPixels( GLcontext *ctx,
- struct gl_renderbuffer *rb,
- GLuint n,
- const GLint x[], const GLint y[],
- const void *values, const GLubyte mask[] )
-{
- const GLubyte *stencil = (const GLubyte *) values;
-#ifdef STENCIL_TRACE
- fprintf(stderr, "FFBWriteStencilPixels: n(%d)\n", (int) n);
-#endif
- if (ctx->Depth.Mask) {
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
- __DRIdrawable *dPriv = fmesa->driDrawable;
- char *zbase;
- GLuint i;
-
- if (!fmesa->hw_locked)
- LOCK_HARDWARE(fmesa);
- FFBFifo(fmesa, 2);
- fmesa->regs->fbc = (FFB_FBC_WB_C | FFB_FBC_ZE_OFF |
- FFB_FBC_YE_ON | FFB_FBC_RGBE_OFF);
- fmesa->regs->ppc = FFB_PPC_YS_VAR;
- fmesa->ffbScreen->rp_active = 1;
- FFBWait(fmesa, fmesa->regs);
-
- zbase = ((char *)fmesa->sfb32 +
- (dPriv->x << 2) + (dPriv->y << 13));
-
- for (i = 0; i < n; i++) {
- GLint y1 = (dPriv->h - y[i]);
- GLint x1 = x[i];
- GLuint *zptr;
-
- zptr = (GLuint *)
- (zbase + (x1 << 2) + (y1 << 13));
- if (mask[i])
- *zptr = (stencil[i] & 0xf) << 28;
- }
-
- FFBFifo(fmesa, 2);
- fmesa->regs->fbc = fmesa->fbc;
- fmesa->regs->ppc = fmesa->ppc;
- fmesa->ffbScreen->rp_active = 1;
- if (!fmesa->hw_locked)
- UNLOCK_HARDWARE(fmesa);
- }
-}
-
-static void FFBReadStencilSpan( GLcontext *ctx,
- struct gl_renderbuffer *rb,
- GLuint n, GLint x, GLint y,
- void *values)
-{
- GLubyte *stencil = (GLubyte *) values;
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
- __DRIdrawable *dPriv = fmesa->driDrawable;
- GLuint *zptr;
- GLuint i;
-
-#ifdef STENCIL_TRACE
- fprintf(stderr, "FFBReadStencilSpan: n(%d) x(%d) y(%d)\n",
- (int) n, x, y);
-#endif
- if (!fmesa->hw_locked)
- LOCK_HARDWARE(fmesa);
- FFBFifo(fmesa, 1);
- fmesa->regs->fbc = FFB_FBC_RB_C;
- fmesa->ffbScreen->rp_active = 1;
- FFBWait(fmesa, fmesa->regs);
-
- y = (dPriv->h - y);
- zptr = (GLuint *)
- ((char *)fmesa->sfb32 +
- ((dPriv->x + x) << 2) +
- ((dPriv->y + y) << 13));
-
- for (i = 0; i < n; i++) {
- stencil[i] = (*zptr >> 28) & 0xf;
- zptr++;
- }
-
- FFBFifo(fmesa, 1);
- fmesa->regs->fbc = fmesa->fbc;
- fmesa->ffbScreen->rp_active = 1;
- if (!fmesa->hw_locked)
- UNLOCK_HARDWARE(fmesa);
-}
-
-static void FFBReadStencilPixels( GLcontext *ctx,
- struct gl_renderbuffer *rb,
- GLuint n, const GLint x[], const GLint y[],
- void *values )
-{
- GLubyte *stencil = (GLubyte *) values;
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
- __DRIdrawable *dPriv = fmesa->driDrawable;
- char *zbase;
- GLuint i;
-
-#ifdef STENCIL_TRACE
- fprintf(stderr, "FFBReadStencilPixels: n(%d)\n", (int) n);
-#endif
- if (!fmesa->hw_locked)
- LOCK_HARDWARE(fmesa);
- FFBFifo(fmesa, 1);
- fmesa->regs->fbc = FFB_FBC_RB_C;
- fmesa->ffbScreen->rp_active = 1;
- FFBWait(fmesa, fmesa->regs);
-
- zbase = ((char *)fmesa->sfb32 +
- (dPriv->x << 2) + (dPriv->y << 13));
-
- for (i = 0; i < n; i++) {
- GLint y1 = (dPriv->h - y[i]);
- GLint x1 = x[i];
- GLuint *zptr;
-
- zptr = (GLuint *)
- (zbase + (x1 << 2) + (y1 << 13));
- stencil[i] = (*zptr >> 28) & 0xf;
- }
-
- FFBFifo(fmesa, 1);
- fmesa->regs->fbc = fmesa->fbc;
- fmesa->ffbScreen->rp_active = 1;
- if (!fmesa->hw_locked)
- UNLOCK_HARDWARE(fmesa);
-}
-
-/**
- * Plug in the Get/Put routines for the given driRenderbuffer.
- */
-void
-ffbSetStencilFunctions(driRenderbuffer *drb, const GLvisual *vis)
-{
- assert(drb->Base.InternalFormat == GL_STENCIL_INDEX8_EXT);
- drb->Base.GetRow = FFBReadStencilSpan;
- drb->Base.GetValues = FFBReadStencilPixels;
- drb->Base.PutRow = FFBWriteStencilSpan;
- /*drb->Base.PutMonoRow = FFBWriteMonoStencilSpan;*/
- drb->Base.PutValues = FFBWriteStencilPixels;
- drb->Base.PutMonoValues = NULL;
-}
diff --git a/src/mesa/drivers/dri/ffb/ffb_stencil.h b/src/mesa/drivers/dri/ffb/ffb_stencil.h
deleted file mode 100644
index 2d529980d16..00000000000
--- a/src/mesa/drivers/dri/ffb/ffb_stencil.h
+++ /dev/null
@@ -1,7 +0,0 @@
-
-#ifndef _FFB_STENCIL_H
-#define _FFB_STENCIL_H
-
-void ffbSetStencilFunctions(driRenderbuffer *drb, const GLvisual *vis);
-
-#endif /* !(_FFB_STENCIL_H) */
diff --git a/src/mesa/drivers/dri/ffb/ffb_tex.c b/src/mesa/drivers/dri/ffb/ffb_tex.c
deleted file mode 100644
index 95058e9069f..00000000000
--- a/src/mesa/drivers/dri/ffb/ffb_tex.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- *
- * GLX Hardware Device Driver for Sun Creator/Creator3D
- * Copyright (C) 2001 David S. Miller
- *
- * 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 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
- * DAVID MILLER, OR ANY OTHER CONTRIBUTORS 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.
- *
- *
- * David S. Miller <[email protected]>
- */
-
-#include "main/glheader.h"
-#include "main/mtypes.h"
-#include "ffb_tex.h"
-
-/* No texture unit, all software. */
-void ffbDDInitTexFuncs(GLcontext *ctx)
-{
-}
diff --git a/src/mesa/drivers/dri/ffb/ffb_tex.h b/src/mesa/drivers/dri/ffb/ffb_tex.h
deleted file mode 100644
index 4032e73209d..00000000000
--- a/src/mesa/drivers/dri/ffb/ffb_tex.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- *
- * GLX Hardware Device Driver for Sun Creator/Creator3D.
- * Copyright (C) 2001 David S. Miller
- *
- * 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 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
- * DAVID MILLER, OR ANY OTHER CONTRIBUTORS 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.
- *
- *
- * David S. Miller <[email protected]>
- */
-
-#ifndef _FFB_TEX_H
-#define _FFB_TEX_H
-
-extern void ffbDDInitTexFuncs(GLcontext *ctx);
-
-#endif /* !(_FFB_DD_H) */
-
diff --git a/src/mesa/drivers/dri/ffb/ffb_tris.c b/src/mesa/drivers/dri/ffb/ffb_tris.c
deleted file mode 100644
index 8bf5ae498fd..00000000000
--- a/src/mesa/drivers/dri/ffb/ffb_tris.c
+++ /dev/null
@@ -1,945 +0,0 @@
-/*
- *
- * GLX Hardware Device Driver for Sun Creator/Creator3D
- * Copyright (C) 2000, 2001 David S. Miller
- *
- * 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 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
- * DAVID MILLER, OR ANY OTHER CONTRIBUTORS 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.
- *
- *
- * David S. Miller <[email protected]>
- */
-
-#include "main/glheader.h"
-#include "main/mtypes.h"
-#include "main/macros.h"
-#include "swrast/swrast.h"
-#include "swrast/s_context.h"
-#include "swrast_setup/swrast_setup.h"
-#include "tnl/t_context.h"
-#include "tnl/t_pipeline.h"
-
-#include "ffb_context.h"
-#include "ffb_tris.h"
-#include "ffb_lines.h"
-#include "ffb_lock.h"
-#include "ffb_points.h"
-#include "ffb_state.h"
-#include "ffb_vb.h"
-
-#undef TRI_DEBUG
-#undef FFB_RENDER_TRACE
-#undef STATE_TRACE
-
-#ifdef TRI_DEBUG
-static void ffb_print_vertex(const ffb_vertex *v)
-{
- fprintf(stderr, "Vertex @(%p): "
- "X[%f] Y[%f] Z[%f]\n",
- v, v->x, v->y, v->z);
- fprintf(stderr, "Vertex @(%p): "
- "A[%f] R[%f] G[%f] B[%f]\n",
- v,
- v->color[0].alpha,
- v->color[0].red,
- v->color[0].green,
- v->color[0].blue);
-}
-#define FFB_DUMP_VERTEX(V) ffb_print_vertex(V)
-#else
-#define FFB_DUMP_VERTEX(V) do { } while(0)
-#endif
-
-#define FFB_ALPHA_BIT 0x01
-#define FFB_FLAT_BIT 0x02
-#define FFB_TRI_CULL_BIT 0x04
-#define MAX_FFB_RENDER_FUNCS 0x08
-
-/***********************************************************************
- * Build low-level triangle/quad rasterize functions *
- ***********************************************************************/
-
-#define FFB_TRI_FLAT_BIT 0x01
-#define FFB_TRI_ALPHA_BIT 0x02
-/*#define FFB_TRI_CULL_BIT 0x04*/
-
-static ffb_tri_func ffb_tri_tab[0x8];
-static ffb_quad_func ffb_quad_tab[0x8];
-
-#define IND (0)
-#define TAG(x) x
-#include "ffb_tritmp.h"
-
-#define IND (FFB_TRI_FLAT_BIT)
-#define TAG(x) x##_flat
-#include "ffb_tritmp.h"
-
-#define IND (FFB_TRI_CULL_BIT)
-#define TAG(x) x##_cull
-#include "ffb_tritmp.h"
-
-#define IND (FFB_TRI_CULL_BIT|FFB_TRI_FLAT_BIT)
-#define TAG(x) x##_cull_flat
-#include "ffb_tritmp.h"
-
-#define IND (FFB_TRI_ALPHA_BIT)
-#define TAG(x) x##_alpha
-#include "ffb_tritmp.h"
-
-#define IND (FFB_TRI_ALPHA_BIT|FFB_TRI_FLAT_BIT)
-#define TAG(x) x##_alpha_flat
-#include "ffb_tritmp.h"
-
-#define IND (FFB_TRI_ALPHA_BIT|FFB_TRI_CULL_BIT)
-#define TAG(x) x##_alpha_cull
-#include "ffb_tritmp.h"
-
-#define IND (FFB_TRI_ALPHA_BIT|FFB_TRI_CULL_BIT|FFB_TRI_FLAT_BIT)
-#define TAG(x) x##_alpha_cull_flat
-#include "ffb_tritmp.h"
-
-static void init_tri_tab(void)
-{
- ffb_init();
- ffb_init_flat();
- ffb_init_cull();
- ffb_init_cull_flat();
- ffb_init_alpha();
- ffb_init_alpha_flat();
- ffb_init_alpha_cull();
- ffb_init_alpha_cull_flat();
-}
-
-/* Build a SWvertex from a hardware vertex. */
-static void ffb_translate_vertex(GLcontext *ctx, const ffb_vertex *src,
- SWvertex *dst)
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
- GLfloat *m = ctx->Viewport._WindowMap.m;
- const GLfloat sx = m[0];
- const GLfloat sy = m[5];
- const GLfloat sz = m[10];
- const GLfloat tx = m[12];
- const GLfloat ty = m[13];
- const GLfloat tz = m[14];
-
- dst->attrib[FRAG_ATTRIB_WPOS][0] = sx * src->x + tx;
- dst->attrib[FRAG_ATTRIB_WPOS][1] = sy * src->y + ty;
- dst->attrib[FRAG_ATTRIB_WPOS][2] = sz * src->z + tz;
- dst->attrib[FRAG_ATTRIB_WPOS][3] = 1.0;
-
- dst->color[0] = FFB_UBYTE_FROM_COLOR(src->color[0].red);
- dst->color[1] = FFB_UBYTE_FROM_COLOR(src->color[0].green);
- dst->color[2] = FFB_UBYTE_FROM_COLOR(src->color[0].blue);
- dst->color[3] = FFB_UBYTE_FROM_COLOR(src->color[0].alpha);
-}
-
-/***********************************************************************
- * Build fallback triangle/quad rasterize functions *
- ***********************************************************************/
-
-static void ffb_fallback_triangle(GLcontext *ctx, ffb_vertex *v0,
- ffb_vertex *v1, ffb_vertex *v2)
-{
- SWvertex v[3];
-
- ffb_translate_vertex(ctx, v0, &v[0]);
- ffb_translate_vertex(ctx, v1, &v[1]);
- ffb_translate_vertex(ctx, v2, &v[2]);
-
- _swrast_Triangle(ctx, &v[0], &v[1], &v[2]);
-}
-
-static void ffb_fallback_quad(GLcontext *ctx,
- ffb_vertex *v0, ffb_vertex *v1,
- ffb_vertex *v2, ffb_vertex *v3)
-{
- SWvertex v[4];
-
- ffb_translate_vertex(ctx, v0, &v[0]);
- ffb_translate_vertex(ctx, v1, &v[1]);
- ffb_translate_vertex(ctx, v2, &v[2]);
- ffb_translate_vertex(ctx, v3, &v[3]);
-
- _swrast_Quad(ctx, &v[0], &v[1], &v[2], &v[3]);
-}
-
-void ffb_fallback_line(GLcontext *ctx, ffb_vertex *v0, ffb_vertex *v1)
-{
- SWvertex v[2];
-
- ffb_translate_vertex(ctx, v0, &v[0]);
- ffb_translate_vertex(ctx, v1, &v[1]);
-
- _swrast_Line(ctx, &v[0], &v[1]);
-}
-
-void ffb_fallback_point(GLcontext *ctx, ffb_vertex *v0)
-{
- SWvertex v[1];
-
- ffb_translate_vertex(ctx, v0, &v[0]);
-
- _swrast_Point(ctx, &v[0]);
-}
-
-/***********************************************************************
- * Rasterization functions for culled tris/quads *
- ***********************************************************************/
-
-static void ffb_nodraw_triangle(GLcontext *ctx, ffb_vertex *v0,
- ffb_vertex *v1, ffb_vertex *v2)
-{
- (void) (ctx && v0 && v1 && v2);
-}
-
-static void ffb_nodraw_quad(GLcontext *ctx,
- ffb_vertex *v0, ffb_vertex *v1,
- ffb_vertex *v2, ffb_vertex *v3)
-{
- (void) (ctx && v0 && v1 && v2 && v3);
-}
-
-static void ffb_update_cullsign(GLcontext *ctx)
-{
- GLfloat backface_sign = 1;
-
- switch (ctx->Polygon.CullFaceMode) {
- case GL_BACK:
- if (ctx->Polygon.FrontFace==GL_CCW)
- backface_sign = -1;
- break;
-
- case GL_FRONT:
- if (ctx->Polygon.FrontFace!=GL_CCW)
- backface_sign = -1;
- break;
-
- default:
- break;
- };
-
- FFB_CONTEXT(ctx)->backface_sign = backface_sign;
-}
-
-/***********************************************************************
- * Choose triangle/quad rasterize functions *
- ***********************************************************************/
-
-void ffbChooseTriangleState(GLcontext *ctx)
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
- GLuint flags = ctx->_TriangleCaps;
- GLuint ind = 0;
-
- if (flags & DD_TRI_SMOOTH) {
- fmesa->draw_tri = ffb_fallback_triangle;
- fmesa->draw_quad = ffb_fallback_quad;
- return;
- }
-
- if (flags & DD_FLATSHADE)
- ind |= FFB_TRI_FLAT_BIT;
-
- if (ctx->Polygon.CullFlag) {
- if (ctx->Polygon.CullFaceMode == GL_FRONT_AND_BACK) {
- fmesa->draw_tri = ffb_nodraw_triangle;
- fmesa->draw_quad = ffb_nodraw_quad;
- return;
- }
-
- ind |= FFB_TRI_CULL_BIT;
- ffb_update_cullsign(ctx);
- } else
- FFB_CONTEXT(ctx)->backface_sign = 0;
-
- /* If blending or the alpha test is enabled we need to
- * provide alpha components to the chip, else we can
- * do without it and thus feed vertex data to the chip
- * more efficiently.
- */
- if (ctx->Color.BlendEnabled || ctx->Color.AlphaEnabled)
- ind |= FFB_TRI_ALPHA_BIT;
-
- fmesa->draw_tri = ffb_tri_tab[ind];
- fmesa->draw_quad = ffb_quad_tab[ind];
-}
-
-static const GLenum reduced_prim[GL_POLYGON+1] = {
- GL_POINTS,
- GL_LINES,
- GL_LINES,
- GL_LINES,
- GL_TRIANGLES,
- GL_TRIANGLES,
- GL_TRIANGLES,
- GL_TRIANGLES,
- GL_TRIANGLES,
- GL_TRIANGLES
-};
-
-static void ffbRenderPrimitive(GLcontext *ctx, GLenum prim);
-static void ffbRasterPrimitive(GLcontext *ctx, GLenum rprim);
-
-/***********************************************************************
- * Build render functions from dd templates *
- ***********************************************************************/
-
-#define FFB_OFFSET_BIT 0x01
-#define FFB_TWOSIDE_BIT 0x02
-#define FFB_UNFILLED_BIT 0x04
-#define FFB_MAX_TRIFUNC 0x08
-
-static struct {
- tnl_triangle_func triangle;
- tnl_quad_func quad;
-} rast_tab[FFB_MAX_TRIFUNC];
-
-#define DO_OFFSET (IND & FFB_OFFSET_BIT)
-#define DO_UNFILLED (IND & FFB_UNFILLED_BIT)
-#define DO_TWOSIDE (IND & FFB_TWOSIDE_BIT)
-#define DO_FLAT 0
-#define DO_QUAD 1
-#define DO_FULL_QUAD 1
-#define DO_TRI 1
-#define DO_LINE 0
-#define DO_POINTS 0
-
-#define QUAD( a, b, c, d ) fmesa->draw_quad( ctx, a, b, c, d )
-#define TRI( a, b, c ) fmesa->draw_tri( ctx, a, b, c )
-#define LINE( a, b ) fmesa->draw_line( ctx, a, b )
-#define POINT( a ) fmesa->draw_point( ctx, a )
-
-#define HAVE_BACK_COLORS 1
-#define HAVE_RGBA 1
-#define HAVE_SPEC 0
-#define HAVE_HW_FLATSHADE 1
-#define VERTEX ffb_vertex
-#define TAB rast_tab
-
-#define UNFILLED_TRI unfilled_tri
-#define UNFILLED_QUAD unfilled_quad
-#define DEPTH_SCALE (fmesa->depth_scale)
-#define VERT_X(_v) (_v->x)
-#define VERT_Y(_v) (_v->y)
-#define VERT_Z(_v) (_v->z)
-#define AREA_IS_CCW( a ) (a < fmesa->ffb_zero)
-#define GET_VERTEX(e) (&fmesa->verts[e])
-#define INSANE_VERTICES
-#define VERT_SET_Z(v,val) ((v)->z = (val))
-#define VERT_Z_ADD(v,val) ((v)->z += (val))
-
-#define VERT_COPY_RGBA1( _v ) _v->color[0] = _v->color[1]
-#define VERT_COPY_RGBA( v0, v1 ) v0->color[0] = v1->color[0]
-#define VERT_SAVE_RGBA( idx ) color[idx] = v[idx]->color[0]
-#define VERT_RESTORE_RGBA( idx ) v[idx]->color[0] = color[idx]
-
-#define LOCAL_VARS(n) \
- ffbContextPtr fmesa = FFB_CONTEXT(ctx); \
- __DRIdrawable *dPriv = fmesa->driDrawable; \
- ffb_color color[n] = { { 0 } }; \
- (void) color; (void) dPriv;
-
-/***********************************************************************
- * Helpers for rendering unfilled primitives *
- ***********************************************************************/
-
-#define RASTERIZE(x) if (fmesa->raster_primitive != reduced_prim[x]) \
- ffbRasterPrimitive( ctx, reduced_prim[x] )
-#define RENDER_PRIMITIVE fmesa->render_primitive
-#define TAG(x) x
-#include "tnl_dd/t_dd_unfilled.h"
-
-/***********************************************************************
- * Generate GL render functions *
- ***********************************************************************/
-
-#define IND (0)
-#define TAG(x) x
-#include "tnl_dd/t_dd_tritmp.h"
-
-#define IND (FFB_OFFSET_BIT)
-#define TAG(x) x##_offset
-#include "tnl_dd/t_dd_tritmp.h"
-
-#define IND (FFB_TWOSIDE_BIT)
-#define TAG(x) x##_twoside
-#include "tnl_dd/t_dd_tritmp.h"
-
-#define IND (FFB_TWOSIDE_BIT|FFB_OFFSET_BIT)
-#define TAG(x) x##_twoside_offset
-#include "tnl_dd/t_dd_tritmp.h"
-
-#define IND (FFB_UNFILLED_BIT)
-#define TAG(x) x##_unfilled
-#include "tnl_dd/t_dd_tritmp.h"
-
-#define IND (FFB_OFFSET_BIT|FFB_UNFILLED_BIT)
-#define TAG(x) x##_offset_unfilled
-#include "tnl_dd/t_dd_tritmp.h"
-
-#define IND (FFB_TWOSIDE_BIT|FFB_UNFILLED_BIT)
-#define TAG(x) x##_twoside_unfilled
-#include "tnl_dd/t_dd_tritmp.h"
-
-#define IND (FFB_TWOSIDE_BIT|FFB_OFFSET_BIT|FFB_UNFILLED_BIT)
-#define TAG(x) x##_twoside_offset_unfilled
-#include "tnl_dd/t_dd_tritmp.h"
-
-static void init_rast_tab( void )
-{
- init();
- init_offset();
- init_twoside();
- init_twoside_offset();
- init_unfilled();
- init_offset_unfilled();
- init_twoside_unfilled();
- init_twoside_offset_unfilled();
-}
-
-/**********************************************************************/
-/* Render clipped primitives */
-/**********************************************************************/
-
-static void ffbRenderClippedPolygon(GLcontext *ctx, const GLuint *elts, GLuint n)
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
- TNLcontext *tnl = TNL_CONTEXT(ctx);
- struct vertex_buffer *VB = &tnl->vb;
- GLuint prim = fmesa->render_primitive;
-
- /* Render the new vertices as an unclipped polygon. */
- {
- GLuint *tmp = VB->Elts;
- VB->Elts = (GLuint *)elts;
- tnl->Driver.Render.PrimTabElts[GL_POLYGON](ctx, 0, n, PRIM_BEGIN|PRIM_END);
- VB->Elts = tmp;
- }
-
- /* Restore the render primitive. */
- if (prim != GL_POLYGON)
- tnl->Driver.Render.PrimitiveNotify(ctx, prim);
-}
-
-static void ffbRenderClippedLine(GLcontext *ctx, GLuint ii, GLuint jj)
-{
- TNLcontext *tnl = TNL_CONTEXT(ctx);
- tnl->Driver.Render.Line(ctx, ii, jj);
-}
-
-/**********************************************************************/
-/* Render unclipped begin/end objects */
-/**********************************************************************/
-
-static void ffb_vb_noop(GLcontext *ctx, GLuint start, GLuint count, GLuint flags)
-{
- (void)(ctx && start && count && flags);
-}
-
-#define ELT(x) x
-
-#define IND 0
-#define TAG(x) x
-#include "ffb_rendertmp.h"
-
-#define IND (FFB_FLAT_BIT)
-#define TAG(x) x##_flat
-#include "ffb_rendertmp.h"
-
-#define IND (FFB_ALPHA_BIT)
-#define TAG(x) x##_alpha
-#include "ffb_rendertmp.h"
-
-#define IND (FFB_FLAT_BIT | FFB_ALPHA_BIT)
-#define TAG(x) x##_flat_alpha
-#include "ffb_rendertmp.h"
-
-#define IND (FFB_TRI_CULL_BIT)
-#define TAG(x) x##_tricull
-#include "ffb_rendertmp.h"
-
-#define IND (FFB_FLAT_BIT | FFB_TRI_CULL_BIT)
-#define TAG(x) x##_flat_tricull
-#include "ffb_rendertmp.h"
-
-#define IND (FFB_ALPHA_BIT | FFB_TRI_CULL_BIT)
-#define TAG(x) x##_alpha_tricull
-#include "ffb_rendertmp.h"
-
-#define IND (FFB_FLAT_BIT | FFB_ALPHA_BIT | FFB_TRI_CULL_BIT)
-#define TAG(x) x##_flat_alpha_tricull
-#include "ffb_rendertmp.h"
-
-#undef ELT
-#define ELT(x) elt[x]
-
-#define IND 0
-#define TAG(x) x##_elt
-#include "ffb_rendertmp.h"
-
-#define IND (FFB_FLAT_BIT)
-#define TAG(x) x##_flat_elt
-#include "ffb_rendertmp.h"
-
-#define IND (FFB_ALPHA_BIT)
-#define TAG(x) x##_alpha_elt
-#include "ffb_rendertmp.h"
-
-#define IND (FFB_FLAT_BIT | FFB_ALPHA_BIT)
-#define TAG(x) x##_flat_alpha_elt
-#include "ffb_rendertmp.h"
-
-#define IND (FFB_TRI_CULL_BIT)
-#define TAG(x) x##_tricull_elt
-#include "ffb_rendertmp.h"
-
-#define IND (FFB_FLAT_BIT | FFB_TRI_CULL_BIT)
-#define TAG(x) x##_flat_tricull_elt
-#include "ffb_rendertmp.h"
-
-#define IND (FFB_ALPHA_BIT | FFB_TRI_CULL_BIT)
-#define TAG(x) x##_alpha_tricull_elt
-#include "ffb_rendertmp.h"
-
-#define IND (FFB_FLAT_BIT | FFB_ALPHA_BIT | FFB_TRI_CULL_BIT)
-#define TAG(x) x##_flat_alpha_tricull_elt
-#include "ffb_rendertmp.h"
-
-static void *render_tabs[MAX_FFB_RENDER_FUNCS];
-static void *render_tabs_elt[MAX_FFB_RENDER_FUNCS];
-
-static void init_render_tab(void)
-{
- int i;
-
- render_tabs[0] = render_tab;
- render_tabs[FFB_FLAT_BIT] = render_tab_flat;
- render_tabs[FFB_ALPHA_BIT] = render_tab_alpha;
- render_tabs[FFB_FLAT_BIT|FFB_ALPHA_BIT] = render_tab_flat_alpha;
- render_tabs[FFB_TRI_CULL_BIT] = render_tab_tricull;
- render_tabs[FFB_FLAT_BIT|FFB_TRI_CULL_BIT] = render_tab_flat_tricull;
- render_tabs[FFB_ALPHA_BIT|FFB_TRI_CULL_BIT] = render_tab_alpha_tricull;
- render_tabs[FFB_FLAT_BIT|FFB_ALPHA_BIT|FFB_TRI_CULL_BIT] =
- render_tab_flat_alpha_tricull;
-
- render_tabs_elt[0] = render_tab_elt;
- render_tabs_elt[FFB_FLAT_BIT] = render_tab_flat_elt;
- render_tabs_elt[FFB_ALPHA_BIT] = render_tab_alpha_elt;
- render_tabs_elt[FFB_FLAT_BIT|FFB_ALPHA_BIT] = render_tab_flat_alpha_elt;
- render_tabs_elt[FFB_TRI_CULL_BIT] = render_tab_tricull_elt;
- render_tabs_elt[FFB_FLAT_BIT|FFB_TRI_CULL_BIT] = render_tab_flat_tricull_elt;
- render_tabs_elt[FFB_ALPHA_BIT|FFB_TRI_CULL_BIT] = render_tab_alpha_tricull_elt;
- render_tabs_elt[FFB_FLAT_BIT|FFB_ALPHA_BIT|FFB_TRI_CULL_BIT] =
- render_tab_flat_alpha_tricull_elt;
-
- for (i = 0; i < MAX_FFB_RENDER_FUNCS; i++) {
- tnl_render_func *rf = render_tabs[i];
- tnl_render_func *rfe = render_tabs_elt[i];
-
- if (i & FFB_TRI_CULL_BIT) {
- int from_idx = (i & ~FFB_TRI_CULL_BIT);
- tnl_render_func *rf_from = render_tabs[from_idx];
- tnl_render_func *rfe_from = render_tabs_elt[from_idx];
- int j;
-
- for (j = GL_POINTS; j < GL_TRIANGLES; j++) {
- rf[j] = rf_from[j];
- rfe[j] = rfe_from[j];
- }
- }
- }
-}
-
-/**********************************************************************/
-/* Choose render functions */
-/**********************************************************************/
-
-#ifdef FFB_RENDER_TRACE
-static void ffbPrintRenderFlags(GLuint index, GLuint render_index)
-{
- fprintf(stderr,
- "ffbChooseRenderState: "
- "index(%s%s%s) "
- "render_index(%s%s%s)\n",
- ((index & FFB_TWOSIDE_BIT) ? "twoside " : ""),
- ((index & FFB_OFFSET_BIT) ? "offset " : ""),
- ((index & FFB_UNFILLED_BIT) ? "unfilled " : ""),
- ((render_index & FFB_FLAT_BIT) ? "flat " : ""),
- ((render_index & FFB_ALPHA_BIT) ? "alpha " : ""),
- ((render_index & FFB_TRI_CULL_BIT) ? "tricull " : ""));
-}
-#endif
-
-void ffbChooseRenderState(GLcontext *ctx)
-{
- GLuint flags = ctx->_TriangleCaps;
- TNLcontext *tnl = TNL_CONTEXT(ctx);
- GLuint index = 0;
-
- /* Per-primitive fallbacks and the selection of fmesa->draw_* are
- * handled elsewhere.
- */
- if (flags & DD_TRI_LIGHT_TWOSIDE)
- index |= FFB_TWOSIDE_BIT;
-
- if (flags & DD_TRI_OFFSET)
- index |= FFB_OFFSET_BIT;
-
- if (flags & DD_TRI_UNFILLED)
- index |= FFB_UNFILLED_BIT;
-
- tnl->Driver.Render.Triangle = rast_tab[index].triangle;
- tnl->Driver.Render.Quad = rast_tab[index].quad;
-
- if (index == 0) {
- GLuint render_index = 0;
-
- if (flags & DD_FLATSHADE)
- render_index |= FFB_FLAT_BIT;
-
- if (ctx->Color.BlendEnabled || ctx->Color.AlphaEnabled)
- render_index |= FFB_ALPHA_BIT;
-
- if (ctx->Polygon.CullFlag)
- render_index |= FFB_TRI_CULL_BIT;
-
-#ifdef FFB_RENDER_TRACE
- ffbPrintRenderFlags(index, render_index);
-#endif
- tnl->Driver.Render.PrimTabVerts = render_tabs[render_index];
- tnl->Driver.Render.PrimTabElts = render_tabs_elt[render_index];
- } else {
-#ifdef FFB_RENDER_TRACE
- ffbPrintRenderFlags(index, 0);
-#endif
- tnl->Driver.Render.PrimTabVerts = _tnl_render_tab_verts;
- tnl->Driver.Render.PrimTabElts = _tnl_render_tab_elts;
- }
-
- tnl->Driver.Render.ClippedPolygon = ffbRenderClippedPolygon;
- tnl->Driver.Render.ClippedLine = ffbRenderClippedLine;
-}
-
-static void ffbRunPipeline(GLcontext *ctx)
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
-
- if (fmesa->bad_fragment_attrs == 0 &&
- fmesa->new_gl_state) {
- if (fmesa->new_gl_state & _FFB_NEW_TRIANGLE)
- ffbChooseTriangleState(ctx);
- if (fmesa->new_gl_state & _FFB_NEW_LINE)
- ffbChooseLineState(ctx);
- if (fmesa->new_gl_state & _FFB_NEW_POINT)
- ffbChoosePointState(ctx);
- if (fmesa->new_gl_state & _FFB_NEW_RENDER)
- ffbChooseRenderState(ctx);
- if (fmesa->new_gl_state & _FFB_NEW_VERTEX)
- ffbChooseVertexState(ctx);
-
- fmesa->new_gl_state = 0;
- }
-
- _tnl_run_pipeline(ctx);
-}
-
-static void ffbRenderStart(GLcontext *ctx)
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
-
- LOCK_HARDWARE(fmesa);
- fmesa->hw_locked = 1;
-
- if (fmesa->state_dirty != 0)
- ffbSyncHardware(fmesa);
-}
-
-static void ffbRenderFinish(GLcontext *ctx)
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
-
- UNLOCK_HARDWARE(fmesa);
- fmesa->hw_locked = 0;
-}
-
-/* Even when doing full software rendering we need to
- * wrap render{start,finish} so that the hardware is kept
- * in sync (because multipass rendering changes the write
- * buffer etc.)
- */
-static void ffbSWRenderStart(GLcontext *ctx)
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
-
- LOCK_HARDWARE(fmesa);
- fmesa->hw_locked = 1;
-
- if (fmesa->state_dirty != 0)
- ffbSyncHardware(fmesa);
-}
-
-static void ffbSWRenderFinish(GLcontext *ctx)
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
-
- UNLOCK_HARDWARE(fmesa);
- fmesa->hw_locked = 0;
-}
-
-static void ffbRasterPrimitive(GLcontext *ctx, GLenum rprim)
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
- GLuint drawop, fbc, ppc;
- int do_sw = 0;
-
- fmesa->raster_primitive = rprim;
-
- drawop = fmesa->drawop;
- fbc = fmesa->fbc;
- ppc = fmesa->ppc & ~(FFB_PPC_ZS_MASK | FFB_PPC_CS_MASK);
-
-#ifdef STATE_TRACE
- fprintf(stderr,
- "ffbReducedPrimitiveChange: rprim(%d) ", rprim);
-#endif
- switch(rprim) {
- case GL_POINTS:
-#ifdef STATE_TRACE
- fprintf(stderr, "GL_POINTS ");
-#endif
- if (fmesa->draw_point == ffb_fallback_point) {
- do_sw = 1;
- break;
- }
-
- if (ctx->Point.SmoothFlag) {
- ppc |= (FFB_PPC_ZS_VAR | FFB_PPC_CS_CONST);
- drawop = FFB_DRAWOP_AADOT;
- } else {
- ppc |= (FFB_PPC_ZS_CONST | FFB_PPC_CS_CONST);
- drawop = FFB_DRAWOP_DOT;
- }
- break;
-
- case GL_LINES:
-#ifdef STATE_TRACE
- fprintf(stderr, "GL_LINES ");
-#endif
- if (fmesa->draw_line == ffb_fallback_line) {
- do_sw = 1;
- break;
- }
-
- if (ctx->_TriangleCaps & DD_FLATSHADE) {
- ppc |= FFB_PPC_ZS_VAR | FFB_PPC_CS_CONST;
- } else {
- ppc |= FFB_PPC_ZS_VAR | FFB_PPC_CS_VAR;
- }
- if (ctx->Line.SmoothFlag)
- drawop = FFB_DRAWOP_AALINE;
- else
- drawop = FFB_DRAWOP_DDLINE;
- break;
-
- case GL_TRIANGLES:
-#ifdef STATE_TRACE
- fprintf(stderr, "GL_POLYGON ");
-#endif
- if (fmesa->draw_tri == ffb_fallback_triangle) {
- do_sw = 1;
- break;
- }
-
- ppc &= ~FFB_PPC_APE_MASK;
- if (ctx->Polygon.StippleFlag)
- ppc |= FFB_PPC_APE_ENABLE;
- else
- ppc |= FFB_PPC_APE_DISABLE;
-
- if (ctx->_TriangleCaps & DD_FLATSHADE) {
- ppc |= FFB_PPC_ZS_VAR | FFB_PPC_CS_CONST;
- } else {
- ppc |= FFB_PPC_ZS_VAR | FFB_PPC_CS_VAR;
- }
- drawop = FFB_DRAWOP_TRIANGLE;
- break;
-
- default:
-#ifdef STATE_TRACE
- fprintf(stderr, "unknown %d!\n", rprim);
-#endif
- return;
- };
-
-#ifdef STATE_TRACE
- fprintf(stderr, "do_sw(%d) ", do_sw);
-#endif
- if (do_sw != 0) {
- fbc &= ~(FFB_FBC_WB_C);
- fbc &= ~(FFB_FBC_ZE_MASK | FFB_FBC_RGBE_MASK);
- fbc |= FFB_FBC_ZE_OFF | FFB_FBC_RGBE_MASK;
- ppc &= ~(FFB_PPC_XS_MASK | FFB_PPC_ABE_MASK |
- FFB_PPC_DCE_MASK | FFB_PPC_APE_MASK);
- ppc |= (FFB_PPC_ZS_VAR | FFB_PPC_CS_VAR | FFB_PPC_XS_WID |
- FFB_PPC_ABE_DISABLE | FFB_PPC_DCE_DISABLE |
- FFB_PPC_APE_DISABLE);
- } else {
- fbc |= FFB_FBC_WB_C;
- fbc &= ~(FFB_FBC_RGBE_MASK);
- fbc |= FFB_FBC_RGBE_MASK;
- ppc &= ~(FFB_PPC_ABE_MASK | FFB_PPC_XS_MASK);
- if (ctx->Color.BlendEnabled) {
- if ((rprim == GL_POINTS && !ctx->Point.SmoothFlag) ||
- (rprim != GL_POINTS && ctx->_TriangleCaps & DD_FLATSHADE))
- ppc |= FFB_PPC_ABE_ENABLE | FFB_PPC_XS_CONST;
- else
- ppc |= FFB_PPC_ABE_ENABLE | FFB_PPC_XS_VAR;
- } else {
- ppc |= FFB_PPC_ABE_DISABLE | FFB_PPC_XS_WID;
- }
- }
-#ifdef STATE_TRACE
- fprintf(stderr, "fbc(%08x) ppc(%08x)\n", fbc, ppc);
-#endif
-
- FFBFifo(fmesa, 4);
- if (fmesa->drawop != drawop)
- fmesa->regs->drawop = fmesa->drawop = drawop;
- if (fmesa->fbc != fbc)
- fmesa->regs->fbc = fmesa->fbc = fbc;
- if (fmesa->ppc != ppc)
- fmesa->regs->ppc = fmesa->ppc = ppc;
- if (do_sw != 0) {
- fmesa->regs->cmp =
- (fmesa->cmp & ~(0xff<<16)) | (0x80 << 16);
- } else
- fmesa->regs->cmp = fmesa->cmp;
-}
-
-static void ffbRenderPrimitive(GLcontext *ctx, GLenum prim)
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
- GLuint rprim = reduced_prim[prim];
-
- fmesa->render_primitive = prim;
-
- if (rprim == GL_TRIANGLES && (ctx->_TriangleCaps & DD_TRI_UNFILLED))
- return;
-
- if (fmesa->raster_primitive != rprim) {
- ffbRasterPrimitive( ctx, rprim );
- }
-}
-
-
-
-
-/**********************************************************************/
-/* Transition to/from hardware rasterization. */
-/**********************************************************************/
-
-static char *fallbackStrings[] = {
- "Fog enabled",
- "Blend function",
- "Blend ROP",
- "Blend equation",
- "Stencil",
- "Texture",
- "LIBGL_SOFTWARE_RENDERING"
-};
-
-static char *getFallbackString(GLuint bit)
-{
- int i = 0;
-
- while (bit > 1) {
- i++;
- bit >>= 1;
- }
- return fallbackStrings[i];
-}
-
-void ffbFallback( GLcontext *ctx, GLuint bit, GLboolean mode )
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
- TNLcontext *tnl = TNL_CONTEXT(ctx);
- GLuint oldfallback = fmesa->bad_fragment_attrs;
-
- if (mode) {
- fmesa->bad_fragment_attrs |= bit;
- if (oldfallback == 0) {
-/* FFB_FIREVERTICES(fmesa); */
- _swsetup_Wakeup( ctx );
- if (fmesa->debugFallbacks)
- fprintf(stderr, "FFB begin software fallback: 0x%x %s\n",
- bit, getFallbackString(bit));
- }
- } else {
- fmesa->bad_fragment_attrs &= ~bit;
- if (oldfallback == bit) {
- _swrast_flush( ctx );
-
- tnl->Driver.Render.Start = ffbRenderStart;
- tnl->Driver.Render.PrimitiveNotify = ffbRenderPrimitive;
- tnl->Driver.Render.Finish = ffbRenderFinish;
- fmesa->new_gl_state = ~0;
-
- /* Just re-choose everything:
- */
- ffbChooseVertexState(ctx);
- ffbChooseRenderState(ctx);
- ffbChooseTriangleState(ctx);
- ffbChooseLineState(ctx);
- ffbChoosePointState(ctx);
-
- if (fmesa->debugFallbacks)
- fprintf(stderr, "FFB end software fallback: 0x%x %s\n",
- bit, getFallbackString(bit));
- }
- }
-}
-
-/**********************************************************************/
-/* Initialization. */
-/**********************************************************************/
-
-void ffbDDInitRenderFuncs( GLcontext *ctx )
-{
- TNLcontext *tnl = TNL_CONTEXT(ctx);
- SWcontext *swrast = SWRAST_CONTEXT(ctx);
- static int firsttime = 1;
-
- if (firsttime) {
- init_rast_tab();
- init_tri_tab();
- init_render_tab();
- firsttime = 0;
- }
-
- tnl->Driver.RunPipeline = ffbRunPipeline;
- tnl->Driver.Render.Start = ffbRenderStart;
- tnl->Driver.Render.Finish = ffbRenderFinish;
- tnl->Driver.Render.PrimitiveNotify = ffbRenderPrimitive;
- tnl->Driver.Render.ResetLineStipple = _swrast_ResetLineStipple;
- tnl->Driver.Render.PrimTabVerts = _tnl_render_tab_verts;
- tnl->Driver.Render.PrimTabElts = _tnl_render_tab_elts;
-
- swrast->Driver.SpanRenderStart = ffbSWRenderStart;
- swrast->Driver.SpanRenderFinish = ffbSWRenderFinish;
-}
diff --git a/src/mesa/drivers/dri/ffb/ffb_tris.h b/src/mesa/drivers/dri/ffb/ffb_tris.h
deleted file mode 100644
index 116b8e07f15..00000000000
--- a/src/mesa/drivers/dri/ffb/ffb_tris.h
+++ /dev/null
@@ -1,25 +0,0 @@
-
-#ifndef _FFB_TRIS_H
-#define _FFB_TRIS_H
-
-extern void ffbDDInitRenderFuncs( GLcontext *ctx );
-
-
-#define _FFB_NEW_RENDER (_DD_NEW_TRI_LIGHT_TWOSIDE | \
- _DD_NEW_TRI_OFFSET | \
- _DD_NEW_TRI_UNFILLED)
-
-extern void ffbChooseRenderState(GLcontext *ctx);
-
-
-#define _FFB_NEW_TRIANGLE (_DD_NEW_TRI_SMOOTH | \
- _DD_NEW_FLATSHADE | \
- _NEW_POLYGON | \
- _NEW_COLOR)
-
-extern void ffbChooseTriangleState(GLcontext *ctx);
-
-extern void ffbFallback( GLcontext *ctx, GLuint bit, GLboolean mode );
-#define FALLBACK( ctx, bit, mode ) ffbFallback( ctx, bit, mode )
-
-#endif /* !(_FFB_TRIS_H) */
diff --git a/src/mesa/drivers/dri/ffb/ffb_tritmp.h b/src/mesa/drivers/dri/ffb/ffb_tritmp.h
deleted file mode 100644
index 324a871ec42..00000000000
--- a/src/mesa/drivers/dri/ffb/ffb_tritmp.h
+++ /dev/null
@@ -1,238 +0,0 @@
-
-static void TAG(ffb_triangle)( GLcontext *ctx,
- ffb_vertex *v0,
- ffb_vertex *v1,
- ffb_vertex *v2 )
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
- ffb_fbcPtr ffb = fmesa->regs;
-#if (IND & FFB_TRI_FLAT_BIT)
- GLuint const_fg;
-#endif
- FFB_DELAYED_VIEWPORT_VARS;
-
-#ifdef TRI_DEBUG
- fprintf(stderr, "FFB: ffb_triangle ["
-#if (IND & FFB_TRI_CULL_BIT)
- " CULL"
-#endif
-#if (IND & FFB_TRI_FLAT_BIT)
- " FLAT"
-#endif
-#if (IND & FFB_TRI_ALPHA_BIT)
- " ALPHA"
-#endif
- " ]\n");
-#endif
-
-#if (IND & FFB_TRI_CULL_BIT)
- { /* NOTE: These are not viewport transformed yet. */
- GLfloat ex = v1->x - v0->x;
- GLfloat ey = v1->y - v0->y;
- GLfloat fx = v2->x - v0->x;
- GLfloat fy = v2->y - v0->y;
- GLfloat c = ex*fy-ey*fx;
-
- /* Culled... */
- if (c * fmesa->backface_sign > fmesa->ffb_zero)
- return;
- }
-#endif
-
-#if (IND & FFB_TRI_FLAT_BIT)
- const_fg = FFB_PACK_CONST_UBYTE_ARGB_COLOR( v2->color[0] );
-#ifdef TRI_DEBUG
- fprintf(stderr, "FFB_tri: const_fg %08x (B[%f] G[%f] R[%f])\n",
- const_fg,
- FFB_2_30_FIXED_TO_FLOAT(v2->color[0].blue),
- FFB_2_30_FIXED_TO_FLOAT(v2->color[0].green),
- FFB_2_30_FIXED_TO_FLOAT(v2->color[0].red));
-#endif
-#endif
-
-
-#if (IND & FFB_TRI_FLAT_BIT)
- FFBFifo(fmesa, 1);
- ffb->fg = const_fg;
-#endif
-
-#if (IND & FFB_TRI_FLAT_BIT)
- FFBFifo(fmesa, 9);
-#else
-#if (IND & FFB_TRI_ALPHA_BIT)
- FFBFifo(fmesa, 21);
-#else
- FFBFifo(fmesa, 18);
-#endif
-#endif
-
- FFB_DUMP_VERTEX(v0);
-#if !(IND & FFB_TRI_FLAT_BIT)
-#if (IND & FFB_TRI_ALPHA_BIT)
- ffb->alpha = FFB_GET_ALPHA(v0);
-#endif
- ffb->red = FFB_GET_RED(v0);
- ffb->green = FFB_GET_GREEN(v0);
- ffb->blue = FFB_GET_BLUE(v0);
-#endif
- ffb->z = FFB_GET_Z(v0);
- ffb->ryf = FFB_GET_Y(v0);
- ffb->rxf = FFB_GET_X(v0);
-
- FFB_DUMP_VERTEX(v1);
-#if !(IND & FFB_TRI_FLAT_BIT)
-#if (IND & FFB_TRI_ALPHA_BIT)
- ffb->alpha = FFB_GET_ALPHA(v1);
-#endif
- ffb->red = FFB_GET_RED(v1);
- ffb->green = FFB_GET_GREEN(v1);
- ffb->blue = FFB_GET_BLUE(v1);
-#endif
- ffb->z = FFB_GET_Z(v1);
- ffb->y = FFB_GET_Y(v1);
- ffb->x = FFB_GET_X(v1);
-
- FFB_DUMP_VERTEX(v2);
-#if !(IND & FFB_TRI_FLAT_BIT)
-#if (IND & FFB_TRI_ALPHA_BIT)
- ffb->alpha = FFB_GET_ALPHA(v2);
-#endif
- ffb->red = FFB_GET_RED(v2);
- ffb->green = FFB_GET_GREEN(v2);
- ffb->blue = FFB_GET_BLUE(v2);
-#endif
- ffb->z = FFB_GET_Z(v2);
- ffb->y = FFB_GET_Y(v2);
- ffb->x = FFB_GET_X(v2);
-
- fmesa->ffbScreen->rp_active = 1;
-}
-
-
-static void TAG(ffb_quad)(GLcontext *ctx,
- ffb_vertex *v0,
- ffb_vertex *v1,
- ffb_vertex *v2,
- ffb_vertex *v3 )
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
- ffb_fbcPtr ffb = fmesa->regs;
-#if (IND & FFB_TRI_FLAT_BIT)
- GLuint const_fg;
-#endif
- FFB_DELAYED_VIEWPORT_VARS;
-
-#ifdef TRI_DEBUG
- fprintf(stderr, "FFB: ffb_quad ["
-#if (IND & FFB_TRI_CULL_BIT)
- " CULL"
-#endif
-#if (IND & FFB_TRI_FLAT_BIT)
- " FLAT"
-#endif
-#if (IND & FFB_TRI_ALPHA_BIT)
- " ALPHA"
-#endif
- " ]\n");
-#endif /* TRI_DEBUG */
-
-#if (IND & FFB_TRI_CULL_BIT)
- { /* NOTE: These are not viewport transformed yet. */
- GLfloat ex = v2->x - v0->x;
- GLfloat ey = v2->y - v0->y;
- GLfloat fx = v3->x - v1->x;
- GLfloat fy = v3->y - v1->y;
- GLfloat c = ex*fy-ey*fx;
-
- /* Culled... */
- if (c * fmesa->backface_sign > fmesa->ffb_zero)
- return;
- }
-#endif
-
-#if (IND & FFB_TRI_FLAT_BIT)
- const_fg = FFB_PACK_CONST_UBYTE_ARGB_COLOR( v3->color[0] );
-#ifdef TRI_DEBUG
- fprintf(stderr, "FFB_quad: const_fg %08x (B[%f] G[%f] R[%f])\n",
- const_fg,
- FFB_2_30_FIXED_TO_FLOAT(v3->color[0].blue),
- FFB_2_30_FIXED_TO_FLOAT(v3->color[0].green),
- FFB_2_30_FIXED_TO_FLOAT(v3->color[0].red));
-#endif
-#endif
-
-
-#if (IND & FFB_TRI_FLAT_BIT)
- FFBFifo(fmesa, 13);
- ffb->fg = const_fg;
-#else
-#if (IND & FFB_TRI_ALPHA_BIT)
- FFBFifo(fmesa, 28);
-#else
- FFBFifo(fmesa, 24);
-#endif
-#endif
-
- FFB_DUMP_VERTEX(v0);
-#if !(IND & FFB_TRI_FLAT_BIT)
-#if (IND & FFB_TRI_ALPHA_BIT)
- ffb->alpha = FFB_GET_ALPHA(v0);
-#endif
- ffb->red = FFB_GET_RED(v0);
- ffb->green = FFB_GET_GREEN(v0);
- ffb->blue = FFB_GET_BLUE(v0);
-#endif
- ffb->z = FFB_GET_Z(v0);
- ffb->ryf = FFB_GET_Y(v0);
- ffb->rxf = FFB_GET_X(v0);
-
- FFB_DUMP_VERTEX(v1);
-#if !(IND & FFB_TRI_FLAT_BIT)
-#if (IND & FFB_TRI_ALPHA_BIT)
- ffb->alpha = FFB_GET_ALPHA(v1);
-#endif
- ffb->red = FFB_GET_RED(v1);
- ffb->green = FFB_GET_GREEN(v1);
- ffb->blue = FFB_GET_BLUE(v1);
-#endif
- ffb->z = FFB_GET_Z(v1);
- ffb->y = FFB_GET_Y(v1);
- ffb->x = FFB_GET_X(v1);
-
- FFB_DUMP_VERTEX(v2);
-#if !(IND & FFB_TRI_FLAT_BIT)
-#if (IND & FFB_TRI_ALPHA_BIT)
- ffb->alpha = FFB_GET_ALPHA(v2);
-#endif
- ffb->red = FFB_GET_RED(v2);
- ffb->green = FFB_GET_GREEN(v2);
- ffb->blue = FFB_GET_BLUE(v2);
-#endif
- ffb->z = FFB_GET_Z(v2);
- ffb->y = FFB_GET_Y(v2);
- ffb->x = FFB_GET_X(v2);
-
- FFB_DUMP_VERTEX(v3);
-#if !(IND & FFB_TRI_FLAT_BIT)
-#if (IND & FFB_TRI_ALPHA_BIT)
- ffb->alpha = FFB_GET_ALPHA(v3);
-#endif
- ffb->red = FFB_GET_RED(v3);
- ffb->green = FFB_GET_GREEN(v3);
- ffb->blue = FFB_GET_BLUE(v3);
-#endif
- ffb->z = FFB_GET_Z(v3);
- ffb->dmyf = FFB_GET_Y(v3);
- ffb->dmxf = FFB_GET_X(v3);
-
- fmesa->ffbScreen->rp_active = 1;
-}
-
-static void TAG(ffb_init)(void)
-{
- ffb_tri_tab[IND] = TAG(ffb_triangle);
- ffb_quad_tab[IND] = TAG(ffb_quad);
-}
-
-#undef IND
-#undef TAG
diff --git a/src/mesa/drivers/dri/ffb/ffb_vb.c b/src/mesa/drivers/dri/ffb/ffb_vb.c
deleted file mode 100644
index a53e7c74319..00000000000
--- a/src/mesa/drivers/dri/ffb/ffb_vb.c
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
- *
- * GLX Hardware Device Driver for Sun Creator/Creator3D
- * Copyright (C) 2000, 2001 David S. Miller
- *
- * 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 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
- * DAVID MILLER, OR ANY OTHER CONTRIBUTORS 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.
- *
- *
- * David S. Miller <[email protected]>
- */
-
-#include "ffb_xmesa.h"
-#include "ffb_context.h"
-#include "ffb_vb.h"
-#include "main/imports.h"
-#include "tnl/t_context.h"
-
-#undef VB_DEBUG
-
-static void ffb_copy_pv_oneside(GLcontext *ctx, GLuint edst, GLuint esrc)
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
- ffb_vertex *dst = &fmesa->verts[edst];
- ffb_vertex *src = &fmesa->verts[esrc];
-
-#ifdef VB_DEBUG
- fprintf(stderr, "ffb_copy_pv_oneside: edst(%d) esrc(%d)\n", edst, esrc);
-#endif
- dst->color[0].alpha = src->color[0].alpha;
- dst->color[0].red = src->color[0].red;
- dst->color[0].green = src->color[0].green;
- dst->color[0].blue = src->color[0].blue;
-}
-
-static void ffb_copy_pv_twoside(GLcontext *ctx, GLuint edst, GLuint esrc)
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
- ffb_vertex *dst = &fmesa->verts[edst];
- ffb_vertex *src = &fmesa->verts[esrc];
-
-#ifdef VB_DEBUG
- fprintf(stderr, "ffb_copy_pv_twoside: edst(%d) esrc(%d)\n", edst, esrc);
-#endif
- dst->color[0].alpha = src->color[0].alpha;
- dst->color[0].red = src->color[0].red;
- dst->color[0].green = src->color[0].green;
- dst->color[0].blue = src->color[0].blue;
- dst->color[1].alpha = src->color[1].alpha;
- dst->color[1].red = src->color[1].red;
- dst->color[1].green = src->color[1].green;
- dst->color[1].blue = src->color[1].blue;
-}
-
-#define FFB_VB_RGBA_BIT 0x01
-#define FFB_VB_XYZ_BIT 0x02
-#define FFB_VB_TWOSIDE_BIT 0x04
-#define FFB_VB_MAX 0x08
-
-typedef void (*ffb_emit_func)(GLcontext *, GLuint, GLuint);
-
-static struct {
- ffb_emit_func emit;
- tnl_interp_func interp;
-} setup_tab[FFB_VB_MAX];
-
-
-#define IND (FFB_VB_XYZ_BIT)
-#define TAG(x) x##_w
-#include "ffb_vbtmp.h"
-
-#define IND (FFB_VB_RGBA_BIT)
-#define TAG(x) x##_g
-#include "ffb_vbtmp.h"
-
-#define IND (FFB_VB_XYZ_BIT | FFB_VB_RGBA_BIT)
-#define TAG(x) x##_wg
-#include "ffb_vbtmp.h"
-
-#define IND (FFB_VB_TWOSIDE_BIT)
-#define TAG(x) x##_t
-#include "ffb_vbtmp.h"
-
-#define IND (FFB_VB_XYZ_BIT | FFB_VB_TWOSIDE_BIT)
-#define TAG(x) x##_wt
-#include "ffb_vbtmp.h"
-
-#define IND (FFB_VB_RGBA_BIT | FFB_VB_TWOSIDE_BIT)
-#define TAG(x) x##_gt
-#include "ffb_vbtmp.h"
-
-#define IND (FFB_VB_XYZ_BIT | FFB_VB_RGBA_BIT | FFB_VB_TWOSIDE_BIT)
-#define TAG(x) x##_wgt
-#include "ffb_vbtmp.h"
-
-static void init_setup_tab( void )
-{
- init_w();
- init_g();
- init_wg();
- init_t();
- init_wt();
- init_gt();
- init_wgt();
-}
-
-#ifdef VB_DEBUG
-static void ffbPrintSetupFlags(char *msg, GLuint flags)
-{
- fprintf(stderr, "%s(%x): %s%s%s\n",
- msg,
- (int)flags,
- (flags & FFB_VB_XYZ_BIT) ? " xyz," : "",
- (flags & FFB_VB_RGBA_BIT) ? " rgba," : "",
- (flags & FFB_VB_TWOSIDE_BIT) ? " twoside," : "");
-}
-#endif
-
-static void ffbDDBuildVertices(GLcontext *ctx, GLuint start, GLuint count,
- GLuint newinputs)
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
-
- newinputs |= fmesa->setupnewinputs;
- fmesa->setupnewinputs = 0;
-
- if (!newinputs)
- return;
-
- if (newinputs & VERT_BIT_POS) {
- setup_tab[fmesa->setupindex].emit(ctx, start, count);
- } else {
- GLuint ind = 0;
-
- if (newinputs & VERT_BIT_COLOR0)
- ind |= (FFB_VB_RGBA_BIT | FFB_VB_TWOSIDE_BIT);
-
- ind &= fmesa->setupindex;
-
- if (ind)
- setup_tab[ind].emit(ctx, start, count);
- }
-}
-
-void ffbChooseVertexState( GLcontext *ctx )
-{
- TNLcontext *tnl = TNL_CONTEXT(ctx);
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
- int ind = FFB_VB_XYZ_BIT | FFB_VB_RGBA_BIT;
-
- if (ctx->_TriangleCaps & DD_TRI_LIGHT_TWOSIDE)
- ind |= FFB_VB_TWOSIDE_BIT;
-
-#ifdef VB_DEBUG
- ffbPrintSetupFlags("ffb: full setup function", ind);
-#endif
-
- fmesa->setupindex = ind;
-
- tnl->Driver.Render.BuildVertices = ffbDDBuildVertices;
- tnl->Driver.Render.Interp = setup_tab[ind].interp;
- if (ind & FFB_VB_TWOSIDE_BIT)
- tnl->Driver.Render.CopyPV = ffb_copy_pv_twoside;
- else
- tnl->Driver.Render.CopyPV = ffb_copy_pv_oneside;
-}
-
-void ffbInitVB( GLcontext *ctx )
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
- GLuint size = TNL_CONTEXT(ctx)->vb.Size;
-
- fmesa->verts = (ffb_vertex *)_mesa_align_malloc(size * sizeof(ffb_vertex), 32);
-
- {
- static int firsttime = 1;
- if (firsttime) {
- init_setup_tab();
- firsttime = 0;
- }
- }
-}
-
-
-void ffbFreeVB( GLcontext *ctx )
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
- if (fmesa->verts) {
- _mesa_align_free(fmesa->verts);
- fmesa->verts = 0;
- }
-}
diff --git a/src/mesa/drivers/dri/ffb/ffb_vb.h b/src/mesa/drivers/dri/ffb/ffb_vb.h
deleted file mode 100644
index 238b9940bfa..00000000000
--- a/src/mesa/drivers/dri/ffb/ffb_vb.h
+++ /dev/null
@@ -1,44 +0,0 @@
-
-#ifndef _FFB_VB_H
-#define _FFB_VB_H
-
-#include "main/mtypes.h"
-#include "main/macros.h"
-#include "tnl/t_context.h"
-#include "swrast/swrast.h"
-
-#define __FFB_2_30_FIXED_SCALE 1073741824.0f
-#define FFB_2_30_FLOAT_TO_FIXED(X) \
- (IROUND((X) * fmesa->ffb_2_30_fixed_scale))
-#define FFB_2_30_FIXED_TO_FLOAT(X) \
- (((GLfloat)(X)) * fmesa->ffb_one_over_2_30_fixed_scale)
-
-#define __FFB_16_16_FIXED_SCALE 65536.0f
-#define FFB_16_16_FLOAT_TO_FIXED(X) \
- (IROUND((X) * fmesa->ffb_16_16_fixed_scale))
-#define FFB_16_16_FIXED_TO_FLOAT(X) \
- (((GLfloat)(X)) * fmesa->ffb_one_over_16_16_fixed_scale)
-
-#define FFB_Z_FROM_FLOAT(VAL) FFB_2_30_FLOAT_TO_FIXED(VAL)
-#define FFB_Z_TO_FLOAT(VAL) FFB_2_30_FIXED_TO_FLOAT(VAL)
-#define FFB_XY_FROM_FLOAT(VAL) FFB_16_16_FLOAT_TO_FIXED(VAL)
-#define FFB_XY_TO_FLOAT(VAL) FFB_16_16_FIXED_TO_FLOAT(VAL)
-
-#define FFB_UBYTE_FROM_COLOR(VAL) ((IROUND((VAL) * fmesa->ffb_ubyte_color_scale)))
-
-#define FFB_PACK_CONST_UBYTE_ARGB_COLOR(C) \
- ((FFB_UBYTE_FROM_COLOR(C.alpha) << 24) | \
- (FFB_UBYTE_FROM_COLOR(C.blue) << 16) | \
- (FFB_UBYTE_FROM_COLOR(C.green) << 8) | \
- (FFB_UBYTE_FROM_COLOR(C.red) << 0))
-
-#define FFB_COLOR_FROM_FLOAT(VAL) FFB_2_30_FLOAT_TO_FIXED(VAL)
-
-#define _FFB_NEW_VERTEX (_DD_NEW_TRI_LIGHT_TWOSIDE)
-
-extern void ffbDDSetupInit(void);
-extern void ffbChooseVertexState(GLcontext *);
-extern void ffbInitVB( GLcontext *ctx );
-extern void ffbFreeVB( GLcontext *ctx );
-
-#endif /* !(_FFB_VB_H) */
diff --git a/src/mesa/drivers/dri/ffb/ffb_vbtmp.h b/src/mesa/drivers/dri/ffb/ffb_vbtmp.h
deleted file mode 100644
index c548ef3ad58..00000000000
--- a/src/mesa/drivers/dri/ffb/ffb_vbtmp.h
+++ /dev/null
@@ -1,150 +0,0 @@
-
-static void TAG(emit)(GLcontext *ctx, GLuint start, GLuint end)
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
-#if defined(VB_DEBUG) || (IND & (FFB_VB_XYZ_BIT | FFB_VB_RGBA_BIT))
- struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
-#endif
-#if (IND & (FFB_VB_RGBA_BIT))
- GLfloat (*col0)[4];
- GLuint col0_stride;
-#if (IND & (FFB_VB_TWOSIDE_BIT))
- GLfloat (*col1)[4];
- GLuint col1_stride;
-#endif
-#endif
-#if (IND & FFB_VB_XYZ_BIT)
- GLfloat (*proj)[4] = VB->NdcPtr->data;
- GLuint proj_stride = VB->NdcPtr->stride;
- const GLubyte *mask = VB->ClipMask;
-#endif
- ffb_vertex *v = &fmesa->verts[start];
- int i;
-
-#ifdef VB_DEBUG
- fprintf(stderr, "FFB: ffb_emit ["
-#if (IND & (FFB_VB_XYZ_BIT))
- " XYZ"
-#endif
-#if (IND & (FFB_VB_RGBA_BIT))
- " RGBA"
-#endif
-#if (IND & (FFB_VB_TWOSIDE_BIT))
- " TWOSIDE"
-#endif
- "] start(%d) end(%d) import(%d)\n",
- start, end,
- VB->importable_data);
-#endif
-
-#if (IND & (FFB_VB_RGBA_BIT))
- col0 = VB->AttribPtr[_TNL_ATTRIB_COLOR0]->data;
- col0_stride = VB->AttribPtr[_TNL_ATTRIB_COLOR0]->stride;
-#if (IND & (FFB_VB_TWOSIDE_BIT))
- col1 = VB->BackfaceColorPtr->data;
- col1_stride = VB->BackfaceColorPtr->stride;
-#endif
-#endif
-
- {
- if (start) {
-#if (IND & (FFB_VB_XYZ_BIT))
- proj = (GLfloat (*)[4])((GLubyte *)proj + start * proj_stride);
-#endif
-#if (IND & (FFB_VB_RGBA_BIT))
- col0 = (GLfloat (*)[4])((GLubyte *)col0 + start * col0_stride);
-#if (IND & (FFB_VB_TWOSIDE_BIT))
- col1 = (GLfloat (*)[4])((GLubyte *)col1 + start * col1_stride);
-#endif
-#endif
- }
- for (i = start; i < end; i++, v++) {
-#if (IND & (FFB_VB_XYZ_BIT))
- if (mask[i] == 0) {
- v->x = proj[0][0];
- v->y = proj[0][1];
- v->z = proj[0][2];
- }
- proj = (GLfloat (*)[4])((GLubyte *)proj + proj_stride);
-#endif
-#if (IND & (FFB_VB_RGBA_BIT))
- v->color[0].alpha = CLAMP(col0[0][3], 0.0f, 1.0f);
- v->color[0].red = CLAMP(col0[0][0], 0.0f, 1.0f);
- v->color[0].green = CLAMP(col0[0][1], 0.0f, 1.0f);
- v->color[0].blue = CLAMP(col0[0][2], 0.0f, 1.0f);
- col0 = (GLfloat (*)[4])((GLubyte *)col0 + col0_stride);
-#if (IND & (FFB_VB_TWOSIDE_BIT))
- v->color[1].alpha = CLAMP(col1[0][3], 0.0f, 1.0f);
- v->color[1].red = CLAMP(col1[0][0], 0.0f, 1.0f);
- v->color[1].green = CLAMP(col1[0][1], 0.0f, 1.0f);
- v->color[1].blue = CLAMP(col1[0][2], 0.0f, 1.0f);
- col1 = (GLfloat (*)[4])((GLubyte *)col1 + col1_stride);
-#endif
-#endif
- }
- }
-}
-
-static void TAG(interp)(GLcontext *ctx, GLfloat t,
- GLuint edst, GLuint eout, GLuint ein,
- GLboolean force_boundary)
-{
-#if (IND & (FFB_VB_XYZ_BIT | FFB_VB_RGBA_BIT))
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
-#endif
-#if (IND & (FFB_VB_XYZ_BIT))
- struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
- const GLfloat *dstclip = VB->ClipPtr->data[edst];
- GLfloat oow = 1.0 / dstclip[3];
-#endif
-#if (IND & (FFB_VB_XYZ_BIT | FFB_VB_RGBA_BIT))
- ffb_vertex *dst = &fmesa->verts[edst];
-#endif
-#if (IND & (FFB_VB_RGBA_BIT))
- ffb_vertex *in = &fmesa->verts[eout];
- ffb_vertex *out = &fmesa->verts[ein];
-#endif
-
-#ifdef VB_DEBUG
- fprintf(stderr, "FFB: ffb_interp ["
-#if (IND & (FFB_VB_XYZ_BIT))
- " XYZ"
-#endif
-#if (IND & (FFB_VB_RGBA_BIT))
- " RGBA"
-#endif
-#if (IND & (FFB_VB_TWOSIDE_BIT))
- " TWOSIDE"
-#endif
- "] edst(%d) eout(%d) ein(%d)\n",
- edst, eout, ein);
-#endif
-
-#if (IND & (FFB_VB_XYZ_BIT))
- dst->x = dstclip[0] * oow;
- dst->y = dstclip[1] * oow;
- dst->z = dstclip[2] * oow;
-#endif
-
-#if (IND & (FFB_VB_RGBA_BIT))
- INTERP_F(t, dst->color[0].alpha, out->color[0].alpha, in->color[0].alpha);
- INTERP_F(t, dst->color[0].red, out->color[0].red, in->color[0].red);
- INTERP_F(t, dst->color[0].green, out->color[0].green, in->color[0].green);
- INTERP_F(t, dst->color[0].blue, out->color[0].blue, in->color[0].blue);
-#if (IND & (FFB_VB_TWOSIDE_BIT))
- INTERP_F(t, dst->color[1].alpha, out->color[1].alpha, in->color[1].alpha);
- INTERP_F(t, dst->color[1].red, out->color[1].red, in->color[1].red);
- INTERP_F(t, dst->color[1].green, out->color[1].green, in->color[1].green);
- INTERP_F(t, dst->color[1].blue, out->color[1].blue, in->color[1].blue);
-#endif
-#endif
-}
-
-static void TAG(init)(void)
-{
- setup_tab[IND].emit = TAG(emit);
- setup_tab[IND].interp = TAG(interp);
-}
-
-#undef IND
-#undef TAG
diff --git a/src/mesa/drivers/dri/ffb/ffb_vtxfmt.c b/src/mesa/drivers/dri/ffb/ffb_vtxfmt.c
deleted file mode 100644
index 90f44b0e911..00000000000
--- a/src/mesa/drivers/dri/ffb/ffb_vtxfmt.c
+++ /dev/null
@@ -1,414 +0,0 @@
-/*
- *
- * GLX Hardware Device Driver for Sun Creator/Creator3D
- * Copyright (C) 2001 David S. Miller
- *
- * 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 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
- * DAVID MILLER, OR ANY OTHER CONTRIBUTORS 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.
- *
- *
- * David S. Miller <[email protected]>
- */
-
-#include "main/glheader.h"
-#include "api_noop.h"
-#include "main/context.h"
-#include "light.h"
-#include "main/macros.h"
-#include "main/imports.h"
-#include "main/mtypes.h"
-#include "main/simple_list.h"
-#include "vtxfmt.h"
-#include "ffb_xmesa.h"
-#include "ffb_context.h"
-#include "ffb_vb.h"
-#include "tnl/tnl.h"
-#include "tnl/tcontext.h"
-
-#include "ffb_vtxfmt.h"
-
-#define TNL_VERTEX ffbTnlVertex
-
-#define INTERP_RGBA(t, out, a, b) \
-do { \
- GLint i; \
- for ( i = 0 ; i < 4 ; i++ ) { \
- GLfloat fa = a[i]; \
- GLfloat fb = b[i]; \
- out[i] = LINTERP( t, fa, fb ); \
- } \
-} while (0)
-
-/* Color functions: */
-
-static INLINE void ffb_recalc_base_color(GLcontext *ctx)
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
- struct gl_light *light;
-
- COPY_3V(fmesa->vtx_state.light.base_color, ctx->Light._BaseColor[0]);
- foreach (light, &ctx->Light.EnabledList) {
- ACC_3V(fmesa->vtx_state.light.base_color,
- light->_MatAmbient[0]);
- }
-
- fmesa->vtx_state.light.base_alpha = ctx->Light._BaseAlpha[0];
-}
-
-#define GET_CURRENT \
- GET_CURRENT_CONTEXT(ctx); \
- ffbContextPtr fmesa = FFB_CONTEXT(ctx)
-
-#define CURRENT_COLOR(COMP) fmesa->vtx_state.current.color[COMP]
-#define CURRENT_SPECULAR(COMP) fmesa->vtx_state.current.specular[COMP]
-#define COLOR_IS_FLOAT
-#define RECALC_BASE_COLOR(ctx) ffb_recalc_base_color(ctx)
-
-#define TAG(x) ffb_##x
-#include "tnl_dd/t_dd_imm_capi.h"
-
-/* Normal functions: */
-
-struct ffb_norm_tab {
- void (*normal3f_multi)(GLfloat x, GLfloat y, GLfloat z);
- void (*normal3fv_multi)(const GLfloat *v);
- void (*normal3f_single)(GLfloat x, GLfloat y, GLfloat z);
- void (*normal3fv_single)(const GLfloat *v);
-};
-
-static struct ffb_norm_tab norm_tab[0x4];
-
-#define HAVE_HW_LIGHTING 0
-#define GET_CURRENT_VERTEX \
- GET_CURRENT_CONTEXT(ctx); \
- ffbContextPtr fmesa = FFB_CONTEXT(ctx); \
- ffbTnlVertexPtr v = fmesa->imm.v0
-
-#define CURRENT_NORMAL fmesa->vtx_state.current.normal
-#define BASE_COLOR fmesa->vtx_state.light.base_color
-#define BASE_ALPHA fmesa->vtx_state.light.base_alpha
-#define VERT_COLOR( COMP ) v->color[COMP]
-#define VERT_COLOR_IS_FLOAT
-
-#define IND (0)
-#define TAG(x) ffb_##x
-#define PRESERVE_NORMAL_DEFS
-#include "tnl_dd/t_dd_imm_napi.h"
-
-#define IND (NORM_RESCALE)
-#define TAG(x) ffb_##x##_rescale
-#define PRESERVE_NORMAL_DEFS
-#include "tnl_dd/t_dd_imm_napi.h"
-
-#define IND (NORM_NORMALIZE)
-#define TAG(x) ffb_##x##_normalize
-#include "tnl_dd/t_dd_imm_napi.h"
-
-static void ffb_init_norm_funcs(void)
-{
- ffb_init_norm();
- ffb_init_norm_rescale();
- ffb_init_norm_normalize();
-}
-
-static void choose_normals(void)
-{
- GET_CURRENT_CONTEXT(ctx);
- GLuint index;
-
- if (ctx->Light.Enabled) {
- if (ctx->Transform.Normalize) {
- index = NORM_NORMALIZE;
- } else if (!ctx->Transform.RescaleNormals &&
- ctx->_ModelViewInvScale != 1.0) {
- index = NORM_RESCALE;
- } else {
- index = 0;
- }
-
- if (ctx->Light.EnabledList.next == ctx->Light.EnabledList.prev) {
- SET_Normal3f(ctx->Exec, norm_tab[index].normal3f_single);
- SET_Normal3fv(ctx->Exec, norm_tab[index].normal3fv_single);
- } else {
- SET_Normal3f(ctx->Exec, norm_tab[index].normal3f_multi);
- SET_Normal3fv(ctx->Exec, norm_tab[index].normal3fv_multi);
- }
- } else {
- SET_Normal3f(ctx->Exec, _mesa_noop_Normal3f);
- SET_Normal3fv(ctx->Exec, _mesa_noop_Normal3fv);
- }
-}
-
-static void ffb_choose_Normal3f(GLfloat x, GLfloat y, GLfloat z)
-{
- choose_normals();
- CALL_Normal3f(GET_DISPATCH(), (x, y, z));
-}
-
-static void ffb_choose_Normal3fv(const GLfloat *v)
-{
- choose_normals();
- CALL_Normal3fv(GET_DISPATCH(), (v));
-}
-
-/* Vertex functions: */
-
-#define GET_CURRENT_VERTEX \
- GET_CURRENT_CONTEXT(ctx); \
- ffbContextPtr fmesa = FFB_CONTEXT(ctx); \
- ffbTnlVertexPtr v = fmesa->imm.v0
-
-#define CURRENT_VERTEX v->obj
-#define SAVE_VERTEX fmesa->imm.save_vertex(ctx, v)
-
-#define TAG(x) ffb_##x
-#include "tnl_dd/t_dd_imm_vapi.h"
-
-struct ffb_vert_tab {
- void (*save_vertex)(GLcontext *ctx, ffbTnlVertexPtr v);
- void (*interpolate_vertex)(GLfloat t,
- ffbTnlVertex *O,
- const ffbTnlVertex *I,
- const ffbTnlVertex *J);
-};
-
-static struct ffb_vert_tab vert_tab[0xf];
-
-#define VTX_NORMAL 0x0
-#define VTX_RGBA 0x1
-
-#define LOCAL_VARS \
- ffbContextPtr fmesa = FFB_CONTEXT(ctx)
-
-#define CURRENT_COLOR fmesa->vtx_state.current.color
-#define COLOR_IS_FLOAT
-#define FLUSH_VERTEX fmesa->imm.flush_vertex( ctx, v );
-
-#define IND (VTX_NORMAL)
-#define TAG(x) ffb_##x##_NORMAL
-#define PRESERVE_VERTEX_DEFS
-#include "tnl_dd/t_dd_imm_vertex.h"
-
-#define IND (VTX_RGBA)
-#define TAG(x) ffb_##x##_RGBA
-#include "tnl_dd/t_dd_imm_vertex.h"
-
-static void ffb_init_vert_funcs( void )
-{
- ffb_init_vert_NORMAL();
- ffb_init_vert_RGBA();
-}
-
-#define LOCAL_VARS \
- ffbContextPtr fmesa = FFB_CONTEXT(ctx)
-
-#define GET_INTERP_FUNC \
- ffb_interp_func interp = fmesa->imm.interp
-
-#define FLUSH_VERTEX fmesa->imm.flush_vertex
-#define IMM_VERTEX( V ) fmesa->imm.V
-#define IMM_VERTICES( n ) fmesa->imm.vertices[n]
-
-#define EMIT_VERTEX_USES_HWREGS
-
-/* XXX Implement me XXX */
-#define EMIT_VERTEX_TRI(VTX0, VTX1, VTX2) \
- do { } while (0)
-#define EMIT_VERTEX_LINE(VTX0, VTX1) \
- do { } while (0)
-#define EMIT_VERTEX_POINT(VTX0) \
- do { } while (0)
-
-#define TAG(x) ffb_##x
-#include "tnl_dd/t_dd_imm_primtmp.h"
-
-/* Bzzt: Material changes are lost on fallback. */
-static void ffb_Materialfv(GLenum face, GLenum pname,
- const GLfloat *params)
-{
- GET_CURRENT_CONTEXT(ctx);
-
- _mesa_noop_Materialfv( face, pname, params );
- ffb_recalc_base_color( ctx );
-}
-
-/* Fallback functions: */
-
-static void ffb_do_fallback(GLcontext *ctx)
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
- struct ffb_current_state *current = &fmesa->vtx_state.current;
-
- /* Tell tnl to restore its exec vtxfmt, rehook its driver callbacks
- * and revive internal state that depended on those callbacks:
- */
- _tnl_wakeup_exec(ctx);
-
- /* Replay enough vertices that the current primitive is continued
- * correctly:
- */
- if (fmesa->imm.prim != PRIM_OUTSIDE_BEGIN_END )
- CALL_Begin(GET_DISPATCH(), (fmesa->imm.prim));
-
- if (ctx->Light.Enabled) {
- /* Catch ColorMaterial */
- CALL_Color4fv(GET_DISPATCH(), (ctx->Current.Color));
- CALL_Normal3fv(GET_DISPATCH(), (current->normal));
- } else {
- CALL_Color4fv(GET_DISPATCH(), (current->color));
- }
-}
-
-#define PRE_LOOPBACK( FUNC ) do { \
- GET_CURRENT_CONTEXT(ctx); \
- ffb_do_fallback( ctx ); \
-} while (0)
-
-#define TAG(x) ffb_fallback_##x
-#include "vtxfmt_tmp.h"
-
-static void ffb_Begin(GLenum prim)
-{
- GET_CURRENT_CONTEXT(ctx);
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
-
- if (prim > GL_POLYGON) {
- _mesa_error( ctx, GL_INVALID_ENUM, "glBegin" );
- return;
- }
-
- if (fmesa->imm.prim != PRIM_OUTSIDE_BEGIN_END) {
- _mesa_error( ctx, GL_INVALID_OPERATION, "glBegin" );
- return;
- }
-
- ctx->Driver.NeedFlush |= (FLUSH_STORED_VERTICES |
- FLUSH_UPDATE_CURRENT);
-
- fmesa->imm.prim = prim;
- fmesa->imm.v0 = &fmesa->imm.vertices[0];
- fmesa->imm.save_vertex = ffb_save_vertex_RGBA;
- fmesa->imm.flush_vertex = ffb_flush_tab[prim];
-
- /* XXX Lock hardware, update FBC, PPC, DRAWOP, etc. XXX */
-}
-
-static void ffb_End(void)
-{
- GET_CURRENT_CONTEXT(ctx);
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
-
- if (fmesa->imm.prim == PRIM_OUTSIDE_BEGIN_END) {
- _mesa_error( ctx, GL_INVALID_OPERATION, "glEnd" );
- return;
- }
-
- fmesa->imm.prim = PRIM_OUTSIDE_BEGIN_END;
-
- ctx->Driver.NeedFlush &= ~(FLUSH_STORED_VERTICES |
- FLUSH_UPDATE_CURRENT);
-
- /* XXX Unlock hardware, etc. */
-}
-
-void ffbInitTnlModule(GLcontext *ctx)
-{
- ffbContextPtr fmesa = FFB_CONTEXT(ctx);
- GLvertexformat *vfmt = &(fmesa->imm.vtxfmt);
-
- /* Work in progress... */
- return;
-
- ffb_init_norm_funcs();
- ffb_init_vert_funcs();
-
- /* start by initializing to no-op functions */
- _mesa_noop_vtxfmt_init(vfmt);
-
- /* Handled fully in supported states: */
- vfmt->ArrayElement = NULL; /* FIXME: ... */
- vfmt->Color3f = ffb_choose_Color3f;
- vfmt->Color3fv = ffb_choose_Color3fv;
- vfmt->Color3ub = ffb_choose_Color3ub;
- vfmt->Color3ubv = ffb_choose_Color3ubv;
- vfmt->Color4f = ffb_choose_Color4f;
- vfmt->Color4fv = ffb_choose_Color4fv;
- vfmt->Color4ub = ffb_choose_Color4ub;
- vfmt->Color4ubv = ffb_choose_Color4ubv;
- vfmt->FogCoordfvEXT = ffb_FogCoordfvEXT;
- vfmt->FogCoordfEXT = ffb_FogCoordfEXT;
- vfmt->Materialfv = ffb_Materialfv;
- vfmt->MultiTexCoord1fARB = ffb_fallback_MultiTexCoord1fARB;
- vfmt->MultiTexCoord1fvARB = ffb_fallback_MultiTexCoord1fvARB;
- vfmt->MultiTexCoord2fARB = ffb_fallback_MultiTexCoord2fARB;
- vfmt->MultiTexCoord2fvARB = ffb_fallback_MultiTexCoord2fvARB;
- vfmt->MultiTexCoord3fARB = ffb_fallback_MultiTexCoord3fARB;
- vfmt->MultiTexCoord3fvARB = ffb_fallback_MultiTexCoord3fvARB;
- vfmt->MultiTexCoord4fARB = ffb_fallback_MultiTexCoord4fARB;
- vfmt->MultiTexCoord4fvARB = ffb_fallback_MultiTexCoord4fvARB;
- vfmt->Normal3f = ffb_choose_Normal3f;
- vfmt->Normal3fv = ffb_choose_Normal3fv;
- vfmt->SecondaryColor3ubEXT = ffb_SecondaryColor3ubEXT;
- vfmt->SecondaryColor3ubvEXT = ffb_SecondaryColor3ubvEXT;
- vfmt->SecondaryColor3fEXT = ffb_SecondaryColor3fEXT;
- vfmt->SecondaryColor3fvEXT = ffb_SecondaryColor3fvEXT;
- vfmt->TexCoord1f = ffb_fallback_TexCoord1f;
- vfmt->TexCoord1fv = ffb_fallback_TexCoord1fv;
- vfmt->TexCoord2f = ffb_fallback_TexCoord2f;
- vfmt->TexCoord2fv = ffb_fallback_TexCoord2fv;
- vfmt->TexCoord3f = ffb_fallback_TexCoord3f;
- vfmt->TexCoord3fv = ffb_fallback_TexCoord3fv;
- vfmt->TexCoord4f = ffb_fallback_TexCoord4f;
- vfmt->TexCoord4fv = ffb_fallback_TexCoord4fv;
-
- vfmt->Vertex2f = ffb_Vertex2f;
- vfmt->Vertex2fv = ffb_Vertex2fv;
- vfmt->Vertex3f = ffb_Vertex3f;
- vfmt->Vertex3fv = ffb_Vertex3fv;
- vfmt->Vertex4f = ffb_Vertex4f;
- vfmt->Vertex4fv = ffb_Vertex4fv;
-
- vfmt->Begin = ffb_Begin;
- vfmt->End = ffb_End;
-
- vfmt->DrawArrays = NULL;
- vfmt->DrawElements = NULL;
-
- /* Active but unsupported -- fallback if we receive these:
- *
- * All of these fallbacks can be fixed with additional code, except
- * CallList, unless we build a play_immediate_noop() command which
- * turns an immediate back into glBegin/glEnd commands...
- */
- vfmt->CallList = ffb_fallback_CallList;
- vfmt->EvalCoord1f = ffb_fallback_EvalCoord1f;
- vfmt->EvalCoord1fv = ffb_fallback_EvalCoord1fv;
- vfmt->EvalCoord2f = ffb_fallback_EvalCoord2f;
- vfmt->EvalCoord2fv = ffb_fallback_EvalCoord2fv;
- vfmt->EvalMesh1 = ffb_fallback_EvalMesh1;
- vfmt->EvalMesh2 = ffb_fallback_EvalMesh2;
- vfmt->EvalPoint1 = ffb_fallback_EvalPoint1;
- vfmt->EvalPoint2 = ffb_fallback_EvalPoint2;
-
- vfmt->prefer_float_colors = GL_TRUE;
-
- fmesa->imm.prim = PRIM_OUTSIDE_BEGIN_END;
-
- /* THIS IS A HACK! */
- _mesa_install_exec_vtxfmt( ctx, vfmt );
-}
diff --git a/src/mesa/drivers/dri/ffb/ffb_vtxfmt.h b/src/mesa/drivers/dri/ffb/ffb_vtxfmt.h
deleted file mode 100644
index 4d9125cd156..00000000000
--- a/src/mesa/drivers/dri/ffb/ffb_vtxfmt.h
+++ /dev/null
@@ -1,7 +0,0 @@
-
-#ifndef _FFB_VTXFMT_H
-#define _FFB_VTXFMT_H
-
-extern void ffbInitTnlModule(GLcontext *);
-
-#endif /* !(_FFB_VTXFMT_H) */
diff --git a/src/mesa/drivers/dri/ffb/ffb_xmesa.c b/src/mesa/drivers/dri/ffb/ffb_xmesa.c
deleted file mode 100644
index bd1044a2bff..00000000000
--- a/src/mesa/drivers/dri/ffb/ffb_xmesa.c
+++ /dev/null
@@ -1,729 +0,0 @@
-/*
- *
- * GLX Hardware Device Driver for Sun Creator/Creator3D
- * Copyright (C) 2000, 2001 David S. Miller
- *
- * 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 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
- * DAVID MILLER, OR ANY OTHER CONTRIBUTORS 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.
- *
- *
- * David S. Miller <[email protected]>
- */
-
-#include "ffb_xmesa.h"
-#include "main/context.h"
-#include "main/framebuffer.h"
-#include "main/renderbuffer.h"
-#include "main/simple_list.h"
-#include "main/imports.h"
-#include "utils.h"
-
-#include "swrast/swrast.h"
-#include "swrast_setup/swrast_setup.h"
-#include "tnl/tnl.h"
-#include "tnl/t_pipeline.h"
-#include "vbo/vbo.h"
-#include "drivers/common/driverfuncs.h"
-
-#include "ffb_context.h"
-#include "ffb_dd.h"
-#include "ffb_span.h"
-#include "ffb_depth.h"
-#include "ffb_stencil.h"
-#include "ffb_clear.h"
-#include "ffb_vb.h"
-#include "ffb_tris.h"
-#include "ffb_lines.h"
-#include "ffb_points.h"
-#include "ffb_state.h"
-#include "ffb_lock.h"
-#include "ffb_vtxfmt.h"
-#include "ffb_bitmap.h"
-
-#include "drm_sarea.h"
-
-#include "drirenderbuffer.h"
-
-static GLboolean
-ffbInitDriver(__DRIscreen *sPriv)
-{
- ffbScreenPrivate *ffbScreen;
- FFBDRIPtr gDRIPriv = (FFBDRIPtr) sPriv->pDevPriv;
- drmAddress map;
-
- if (getenv("LIBGL_FORCE_XSERVER"))
- return GL_FALSE;
-
-
- if (sPriv->devPrivSize != sizeof(FFBDRIRec)) {
- fprintf(stderr,"\nERROR! sizeof(FFBDRIRec) does not match passed size from device driver\n");
- return GL_FALSE;
- }
-
- /* Allocate the private area. */
- ffbScreen = (ffbScreenPrivate *) MALLOC(sizeof(ffbScreenPrivate));
- if (!ffbScreen)
- return GL_FALSE;
-
- /* Map FBC registers. */
- if (drmMap(sPriv->fd,
- gDRIPriv->hFbcRegs,
- gDRIPriv->sFbcRegs,
- &map)) {
- FREE(ffbScreen);
- return GL_FALSE;
- }
- ffbScreen->regs = (ffb_fbcPtr) map;
-
- /* Map ramdac registers. */
- if (drmMap(sPriv->fd,
- gDRIPriv->hDacRegs,
- gDRIPriv->sDacRegs,
- &map)) {
- drmUnmap((drmAddress)ffbScreen->regs, gDRIPriv->sFbcRegs);
- FREE(ffbScreen);
- return GL_FALSE;
- }
- ffbScreen->dac = (ffb_dacPtr) map;
-
- /* Map "Smart" framebuffer views. */
- if (drmMap(sPriv->fd,
- gDRIPriv->hSfb8r,
- gDRIPriv->sSfb8r,
- &map)) {
- drmUnmap((drmAddress)ffbScreen->regs, gDRIPriv->sFbcRegs);
- drmUnmap((drmAddress)ffbScreen->dac, gDRIPriv->sDacRegs);
- FREE(ffbScreen);
- return GL_FALSE;
- }
- ffbScreen->sfb8r = (volatile char *) map;
-
- if (drmMap(sPriv->fd,
- gDRIPriv->hSfb32,
- gDRIPriv->sSfb32,
- &map)) {
- drmUnmap((drmAddress)ffbScreen->regs, gDRIPriv->sFbcRegs);
- drmUnmap((drmAddress)ffbScreen->dac, gDRIPriv->sDacRegs);
- drmUnmap((drmAddress)ffbScreen->sfb8r, gDRIPriv->sSfb8r);
- FREE(ffbScreen);
- return GL_FALSE;
- }
- ffbScreen->sfb32 = (volatile char *) map;
-
- if (drmMap(sPriv->fd,
- gDRIPriv->hSfb64,
- gDRIPriv->sSfb64,
- &map)) {
- drmUnmap((drmAddress)ffbScreen->regs, gDRIPriv->sFbcRegs);
- drmUnmap((drmAddress)ffbScreen->dac, gDRIPriv->sDacRegs);
- drmUnmap((drmAddress)ffbScreen->sfb8r, gDRIPriv->sSfb8r);
- drmUnmap((drmAddress)ffbScreen->sfb32, gDRIPriv->sSfb32);
- FREE(ffbScreen);
- return GL_FALSE;
- }
- ffbScreen->sfb64 = (volatile char *) map;
-
- ffbScreen->fifo_cache = 0;
- ffbScreen->rp_active = 0;
-
- ffbScreen->sPriv = sPriv;
- sPriv->private = (void *) ffbScreen;
-
- ffbDDLinefuncInit();
- ffbDDPointfuncInit();
-
- return GL_TRUE;
-}
-
-
-static void
-ffbDestroyScreen(__DRIscreen *sPriv)
-{
- ffbScreenPrivate *ffbScreen = sPriv->private;
- FFBDRIPtr gDRIPriv = (FFBDRIPtr) sPriv->pDevPriv;
-
- drmUnmap((drmAddress)ffbScreen->regs, gDRIPriv->sFbcRegs);
- drmUnmap((drmAddress)ffbScreen->dac, gDRIPriv->sDacRegs);
- drmUnmap((drmAddress)ffbScreen->sfb8r, gDRIPriv->sSfb8r);
- drmUnmap((drmAddress)ffbScreen->sfb32, gDRIPriv->sSfb32);
- drmUnmap((drmAddress)ffbScreen->sfb64, gDRIPriv->sSfb64);
-
- FREE(ffbScreen);
-}
-
-static const struct tnl_pipeline_stage *ffb_pipeline[] = {
- &_tnl_vertex_transform_stage,
- &_tnl_normal_transform_stage,
- &_tnl_lighting_stage,
- /* REMOVE: fog coord stage */
- &_tnl_texgen_stage,
- &_tnl_texture_transform_stage,
- /* REMOVE: point attenuation stage */
- &_tnl_render_stage,
- 0,
-};
-
-/* Create and initialize the Mesa and driver specific context data */
-static GLboolean
-ffbCreateContext(const __GLcontextModes *mesaVis,
- __DRIcontext *driContextPriv,
- void *sharedContextPrivate)
-{
- ffbContextPtr fmesa;
- GLcontext *ctx, *shareCtx;
- __DRIscreen *sPriv;
- ffbScreenPrivate *ffbScreen;
- char *debug;
- struct dd_function_table functions;
-
- /* Allocate ffb context */
- fmesa = (ffbContextPtr) CALLOC(sizeof(ffbContextRec));
- if (!fmesa)
- return GL_FALSE;
-
- _mesa_init_driver_functions(&functions);
-
- /* Allocate Mesa context */
- if (sharedContextPrivate)
- shareCtx = ((ffbContextPtr) sharedContextPrivate)->glCtx;
- else
- shareCtx = NULL;
- fmesa->glCtx = _mesa_create_context(mesaVis, shareCtx,
- &functions, fmesa);
- if (!fmesa->glCtx) {
- FREE(fmesa);
- return GL_FALSE;
- }
- driContextPriv->driverPrivate = fmesa;
- ctx = fmesa->glCtx;
-
- sPriv = driContextPriv->driScreenPriv;
- ffbScreen = (ffbScreenPrivate *) sPriv->private;
-
- /* Dri stuff. */
- fmesa->hHWContext = driContextPriv->hHWContext;
- fmesa->driFd = sPriv->fd;
- fmesa->driHwLock = &sPriv->pSAREA->lock;
-
- fmesa->ffbScreen = ffbScreen;
- fmesa->driScreen = sPriv;
- fmesa->ffb_sarea = FFB_DRISHARE(sPriv->pSAREA);
-
- /* Register and framebuffer pointers. */
- fmesa->regs = ffbScreen->regs;
- fmesa->sfb32 = ffbScreen->sfb32;
-
- ffbDDInitContextHwState(ctx);
-
- /* Default clear and depth colors. */
- {
- GLubyte r = (GLint) (ctx->Color.ClearColor[0] * 255.0F);
- GLubyte g = (GLint) (ctx->Color.ClearColor[1] * 255.0F);
- GLubyte b = (GLint) (ctx->Color.ClearColor[2] * 255.0F);
-
- fmesa->clear_pixel = ((r << 0) |
- (g << 8) |
- (b << 16));
- }
- fmesa->clear_depth = Z_FROM_MESA(ctx->Depth.Clear * 4294967295.0f);
- fmesa->clear_stencil = ctx->Stencil.Clear & 0xf;
-
- /* No wide points. */
- ctx->Const.MinPointSize = 1.0;
- ctx->Const.MinPointSizeAA = 1.0;
- ctx->Const.MaxPointSize = 1.0;
- ctx->Const.MaxPointSizeAA = 1.0;
-
- /* Disable wide lines as we can't antialias them correctly in
- * hardware.
- */
- ctx->Const.MinLineWidth = 1.0;
- ctx->Const.MinLineWidthAA = 1.0;
- ctx->Const.MaxLineWidth = 1.0;
- ctx->Const.MaxLineWidthAA = 1.0;
- ctx->Const.LineWidthGranularity = 1.0;
-
- ctx->Const.MaxDrawBuffers = 1;
-
- /* Instead of having GCC emit these constants a zillion times
- * everywhere in the driver, put them here.
- */
- fmesa->ffb_2_30_fixed_scale = __FFB_2_30_FIXED_SCALE;
- fmesa->ffb_one_over_2_30_fixed_scale = (1.0 / __FFB_2_30_FIXED_SCALE);
- fmesa->ffb_16_16_fixed_scale = __FFB_16_16_FIXED_SCALE;
- fmesa->ffb_one_over_16_16_fixed_scale = (1.0 / __FFB_16_16_FIXED_SCALE);
- fmesa->ffb_ubyte_color_scale = 255.0f;
- fmesa->ffb_zero = 0.0f;
-
- fmesa->debugFallbacks = GL_FALSE;
- debug = getenv("LIBGL_DEBUG");
- if (debug && strstr(debug, "fallbacks"))
- fmesa->debugFallbacks = GL_TRUE;
-
- /* Initialize the software rasterizer and helper modules. */
- _swrast_CreateContext( ctx );
- _vbo_CreateContext( ctx );
- _tnl_CreateContext( ctx );
- _swsetup_CreateContext( ctx );
-
- /* All of this need only be done once for a new context. */
- /* XXX these should be moved right after the
- * _mesa_init_driver_functions() call above.
- */
- ffbDDExtensionsInit(ctx);
- ffbDDInitDriverFuncs(ctx);
- ffbDDInitStateFuncs(ctx);
- ffbDDInitRenderFuncs(ctx);
- /*ffbDDInitTexFuncs(ctx); not needed */
- ffbDDInitBitmapFuncs(ctx);
- ffbInitVB(ctx);
-
-#if 0
- ffbInitTnlModule(ctx);
-#endif
-
- _tnl_destroy_pipeline(ctx);
- _tnl_install_pipeline(ctx, ffb_pipeline);
-
- return GL_TRUE;
-}
-
-static void
-ffbDestroyContext(__DRIcontext *driContextPriv)
-{
- ffbContextPtr fmesa = (ffbContextPtr) driContextPriv->driverPrivate;
-
- if (fmesa) {
- ffbFreeVB(fmesa->glCtx);
-
- _swsetup_DestroyContext( fmesa->glCtx );
- _tnl_DestroyContext( fmesa->glCtx );
- _vbo_DestroyContext( fmesa->glCtx );
- _swrast_DestroyContext( fmesa->glCtx );
-
- /* free the Mesa context */
- fmesa->glCtx->DriverCtx = NULL;
- _mesa_destroy_context(fmesa->glCtx);
-
- FREE(fmesa);
- }
-}
-
-/* Create and initialize the Mesa and driver specific pixmap buffer data */
-static GLboolean
-ffbCreateBuffer(__DRIscreen *driScrnPriv,
- __DRIdrawable *driDrawPriv,
- const __GLcontextModes *mesaVis,
- GLboolean isPixmap )
-{
- /* Mesa checks for pitch > 0, but ffb doesn't use pitches */
- int bogusPitch = 1;
- int bpp = 4; /* we've always got a 32bpp framebuffer */
- int offset = 0; /* always at 0 for offset */
-
- if (isPixmap) {
- return GL_FALSE; /* not implemented */
- } else {
- GLboolean swStencil = (mesaVis->stencilBits > 0 &&
- mesaVis->depthBits != 24);
- struct gl_framebuffer *fb = _mesa_create_framebuffer(mesaVis);
-
- {
- driRenderbuffer *frontRb
- = driNewRenderbuffer(MESA_FORMAT_ARGB8888, NULL, bpp, offset, bogusPitch,
- driDrawPriv);
- ffbSetSpanFunctions(frontRb, mesaVis);
- _mesa_add_renderbuffer(fb, BUFFER_FRONT_LEFT, &frontRb->Base);
- }
-
- if (mesaVis->doubleBufferMode) {
- driRenderbuffer *backRb
- = driNewRenderbuffer(MESA_FORMAT_ARGB8888, NULL, bpp, offset, bogusPitch,
- driDrawPriv);
- ffbSetSpanFunctions(backRb, mesaVis);
- _mesa_add_renderbuffer(fb, BUFFER_BACK_LEFT, &backRb->Base);
- }
-
- if (mesaVis->depthBits == 16) {
- driRenderbuffer *depthRb
- = driNewRenderbuffer(MESA_FORMAT_Z16, NULL, bpp, offset,
- bogusPitch, driDrawPriv);
- ffbSetDepthFunctions(depthRb, mesaVis);
- _mesa_add_renderbuffer(fb, BUFFER_DEPTH, &depthRb->Base);
- }
-
- if (mesaVis->stencilBits > 0 && !swStencil) {
- driRenderbuffer *stencilRb
- = driNewRenderbuffer(MESA_FORMAT_S8, NULL, bpp, offset,
- bogusPitch, driDrawPriv);
- ffbSetStencilFunctions(stencilRb, mesaVis);
- _mesa_add_renderbuffer(fb, BUFFER_STENCIL, &stencilRb->Base);
- }
-
- _mesa_add_soft_renderbuffers(fb,
- GL_FALSE, /* color */
- GL_FALSE, /* depth */
- swStencil,
- mesaVis->accumRedBits > 0,
- GL_FALSE, /* alpha */
- GL_FALSE /* aux */);
- driDrawPriv->driverPrivate = (void *) fb;
-
- return (driDrawPriv->driverPrivate != NULL);
- }
-}
-
-
-static void
-ffbDestroyBuffer(__DRIdrawable *driDrawPriv)
-{
- _mesa_reference_framebuffer((GLframebuffer **)(&(driDrawPriv->driverPrivate)), NULL);
-}
-
-
-#define USE_FAST_SWAP
-
-static void
-ffbSwapBuffers( __DRIdrawable *dPriv )
-{
- ffbContextPtr fmesa = (ffbContextPtr) dPriv->driContextPriv->driverPrivate;
- unsigned int fbc, wid, wid_reg_val, dac_db_bit;
- unsigned int shadow_dac_addr, active_dac_addr;
- ffb_fbcPtr ffb;
- ffb_dacPtr dac;
-
- if (fmesa == NULL ||
- fmesa->glCtx->Visual.doubleBufferMode == 0)
- return;
-
- /* Flush pending rendering commands */
- _mesa_notifySwapBuffers(fmesa->glCtx);
-
- ffb = fmesa->regs;
- dac = fmesa->ffbScreen->dac;
-
- fbc = fmesa->fbc;
- wid = fmesa->wid;
-
- /* Swap the buffer we render into and read pixels from. */
- fmesa->back_buffer ^= 1;
-
- /* If we are writing into both buffers, don't mess with
- * the WB setting.
- */
- if ((fbc & FFB_FBC_WB_AB) != FFB_FBC_WB_AB) {
- if ((fbc & FFB_FBC_WB_A) != 0)
- fbc = (fbc & ~FFB_FBC_WB_A) | FFB_FBC_WB_B;
- else
- fbc = (fbc & ~FFB_FBC_WB_B) | FFB_FBC_WB_A;
- }
-
- /* But either way, we must flip the read buffer setting. */
- if ((fbc & FFB_FBC_RB_A) != 0)
- fbc = (fbc & ~FFB_FBC_RB_A) | FFB_FBC_RB_B;
- else
- fbc = (fbc & ~FFB_FBC_RB_B) | FFB_FBC_RB_A;
-
- LOCK_HARDWARE(fmesa);
-
- if (fmesa->fbc != fbc) {
- FFBFifo(fmesa, 1);
- ffb->fbc = fmesa->fbc = fbc;
- fmesa->ffbScreen->rp_active = 1;
- }
-
- /* And swap the buffer displayed in the WID. */
- if (fmesa->ffb_sarea->flags & FFB_DRI_PAC1) {
- shadow_dac_addr = FFBDAC_PAC1_SPWLUT(wid);
- active_dac_addr = FFBDAC_PAC1_APWLUT(wid);
- dac_db_bit = FFBDAC_PAC1_WLUT_DB;
- } else {
- shadow_dac_addr = FFBDAC_PAC2_SPWLUT(wid);
- active_dac_addr = FFBDAC_PAC2_APWLUT(wid);
- dac_db_bit = FFBDAC_PAC2_WLUT_DB;
- }
-
- FFBWait(fmesa, ffb);
-
- wid_reg_val = DACCFG_READ(dac, active_dac_addr);
- if (fmesa->back_buffer == 0)
- wid_reg_val |= dac_db_bit;
- else
- wid_reg_val &= ~dac_db_bit;
-#ifdef USE_FAST_SWAP
- DACCFG_WRITE(dac, active_dac_addr, wid_reg_val);
-#else
- DACCFG_WRITE(dac, shadow_dac_addr, wid_reg_val);
-
- /* Schedule the window transfer. */
- DACCFG_WRITE(dac, FFBDAC_CFG_WTCTRL,
- (FFBDAC_CFG_WTCTRL_TCMD | FFBDAC_CFG_WTCTRL_TE));
-
- {
- int limit = 1000000;
- while (limit--) {
- unsigned int wtctrl = DACCFG_READ(dac, FFBDAC_CFG_WTCTRL);
-
- if ((wtctrl & FFBDAC_CFG_WTCTRL_DS) == 0)
- break;
- }
- }
-#endif
-
- UNLOCK_HARDWARE(fmesa);
-}
-
-static void ffb_init_wid(ffbContextPtr fmesa, unsigned int wid)
-{
- ffb_dacPtr dac = fmesa->ffbScreen->dac;
- unsigned int wid_reg_val, dac_db_bit, active_dac_addr;
- unsigned int shadow_dac_addr;
-
- if (fmesa->ffb_sarea->flags & FFB_DRI_PAC1) {
- shadow_dac_addr = FFBDAC_PAC1_SPWLUT(wid);
- active_dac_addr = FFBDAC_PAC1_APWLUT(wid);
- dac_db_bit = FFBDAC_PAC1_WLUT_DB;
- } else {
- shadow_dac_addr = FFBDAC_PAC2_SPWLUT(wid);
- active_dac_addr = FFBDAC_PAC2_APWLUT(wid);
- dac_db_bit = FFBDAC_PAC2_WLUT_DB;
- }
-
- wid_reg_val = DACCFG_READ(dac, active_dac_addr);
- wid_reg_val &= ~dac_db_bit;
-#ifdef USE_FAST_SWAP
- DACCFG_WRITE(dac, active_dac_addr, wid_reg_val);
-#else
- DACCFG_WRITE(dac, shadow_dac_addr, wid_reg_val);
-
- /* Schedule the window transfer. */
- DACCFG_WRITE(dac, FFBDAC_CFG_WTCTRL,
- (FFBDAC_CFG_WTCTRL_TCMD | FFBDAC_CFG_WTCTRL_TE));
-
- {
- int limit = 1000000;
- while (limit--) {
- unsigned int wtctrl = DACCFG_READ(dac, FFBDAC_CFG_WTCTRL);
-
- if ((wtctrl & FFBDAC_CFG_WTCTRL_DS) == 0)
- break;
- }
- }
-#endif
-}
-
-/* Force the context `c' to be the current context and associate with it
- buffer `b' */
-static GLboolean
-ffbMakeCurrent(__DRIcontext *driContextPriv,
- __DRIdrawable *driDrawPriv,
- __DRIdrawable *driReadPriv)
-{
- if (driContextPriv) {
- ffbContextPtr fmesa = (ffbContextPtr) driContextPriv->driverPrivate;
- int first_time;
-
- fmesa->driDrawable = driDrawPriv;
-
- _mesa_make_current(fmesa->glCtx,
- (GLframebuffer *) driDrawPriv->driverPrivate,
- (GLframebuffer *) driReadPriv->driverPrivate);
-
- first_time = 0;
- if (fmesa->wid == ~0) {
- first_time = 1;
- if (getenv("LIBGL_SOFTWARE_RENDERING"))
- FALLBACK( fmesa->glCtx, FFB_BADATTR_SWONLY, GL_TRUE );
- }
-
- LOCK_HARDWARE(fmesa);
- if (first_time) {
- fmesa->wid = fmesa->ffb_sarea->wid_table[driDrawPriv->index];
- ffb_init_wid(fmesa, fmesa->wid);
- }
-
- fmesa->state_dirty |= FFB_STATE_ALL;
- fmesa->state_fifo_ents = fmesa->state_all_fifo_ents;
- ffbSyncHardware(fmesa);
- UNLOCK_HARDWARE(fmesa);
-
- if (first_time) {
- /* Also, at the first switch to a new context,
- * we need to clear all the hw buffers.
- */
- ffbDDClear(fmesa->glCtx,
- (BUFFER_BIT_FRONT_LEFT | BUFFER_BIT_BACK_LEFT |
- BUFFER_BIT_DEPTH | BUFFER_BIT_STENCIL));
- }
- } else {
- _mesa_make_current(NULL, NULL, NULL);
- }
-
- return GL_TRUE;
-}
-
-/* Force the context `c' to be unbound from its buffer */
-static GLboolean
-ffbUnbindContext(__DRIcontext *driContextPriv)
-{
- return GL_TRUE;
-}
-
-void ffbXMesaUpdateState(ffbContextPtr fmesa)
-{
- __DRIdrawable *dPriv = fmesa->driDrawable;
- __DRIscreen *sPriv = fmesa->driScreen;
- int stamp = dPriv->lastStamp;
-
- DRI_VALIDATE_DRAWABLE_INFO(sPriv, dPriv);
-
- if (dPriv->lastStamp != stamp) {
- GLcontext *ctx = fmesa->glCtx;
-
- ffbCalcViewport(ctx);
- driUpdateFramebufferSize(ctx, dPriv);
- if (ctx->Polygon.StippleFlag) {
- ffbXformAreaPattern(fmesa,
- (const GLubyte *)ctx->PolygonStipple);
- }
- }
-}
-
-static const __DRIconfig **
-ffbFillInModes( __DRIscreen *psp,
- unsigned pixel_bits, unsigned depth_bits,
- unsigned stencil_bits, GLboolean have_back_buffer )
-{
- __DRIconfig **configs;
- __GLcontextModes *m;
- unsigned depth_buffer_factor;
- unsigned back_buffer_factor;
- GLenum fb_format;
- GLenum fb_type;
- int i;
-
- /* GLX_SWAP_COPY_OML is only supported because the FFB driver doesn't
- * support pageflipping at all.
- */
- static const GLenum back_buffer_modes[] = {
- GLX_NONE, GLX_SWAP_UNDEFINED_OML, GLX_SWAP_COPY_OML
- };
-
- uint8_t depth_bits_array[3];
- uint8_t stencil_bits_array[3];
- uint8_t msaa_samples_array[1];
-
- depth_bits_array[0] = 0;
- depth_bits_array[1] = depth_bits;
- depth_bits_array[2] = depth_bits;
-
- /* Just like with the accumulation buffer, always provide some modes
- * with a stencil buffer. It will be a sw fallback, but some apps won't
- * care about that.
- */
- stencil_bits_array[0] = 0;
- stencil_bits_array[1] = 0;
- stencil_bits_array[2] = (stencil_bits == 0) ? 8 : stencil_bits;
-
- msaa_samples_array[0] = 0;
-
- depth_buffer_factor = ((depth_bits != 0) || (stencil_bits != 0)) ? 3 : 1;
- back_buffer_factor = (have_back_buffer) ? 3 : 1;
-
- if ( pixel_bits == 16 ) {
- fb_format = GL_RGB;
- fb_type = GL_UNSIGNED_SHORT_5_6_5;
- }
- else {
- fb_format = GL_BGRA;
- fb_type = GL_UNSIGNED_INT_8_8_8_8_REV;
- }
-
- configs = driCreateConfigs(fb_format, fb_type,
- depth_bits_array, stencil_bits_array,
- depth_buffer_factor, back_buffer_modes,
- back_buffer_factor,
- msaa_samples_array, 1, GL_TRUE);
- if (configs == NULL) {
- fprintf(stderr, "[%s:%u] Error creating FBConfig!\n", __func__,
- __LINE__);
- return NULL;
- }
-
- /* Mark the visual as slow if there are "fake" stencil bits.
- */
- for (i = 0; configs[i]; i++) {
- m = &configs[i]->modes;
- if ((m->stencilBits != 0) && (m->stencilBits != stencil_bits)) {
- m->visualRating = GLX_SLOW_CONFIG;
- }
- }
-
- return (const __DRIconfig **) configs;
-}
-
-
-/**
- * This is the driver specific part of the createNewScreen entry point.
- *
- * \todo maybe fold this into intelInitDriver
- *
- * \return the __GLcontextModes supported by this driver
- */
-static const __DRIconfig **
-ffbInitScreen(__DRIscreen *psp)
-{
- static const __DRIversion ddx_expected = { 0, 1, 1 };
- static const __DRIversion dri_expected = { 4, 0, 0 };
- static const __DRIversion drm_expected = { 0, 0, 1 };
-
- if ( ! driCheckDriDdxDrmVersions2( "ffb",
- &psp->dri_version, & dri_expected,
- &psp->ddx_version, & ddx_expected,
- &psp->drm_version, & drm_expected ) )
- return NULL;
-
- if (!ffbInitDriver(psp))
- return NULL;
-
- return ffbFillInModes( psp, 32, 16, 0, GL_TRUE );
-}
-
-const struct __DriverAPIRec driDriverAPI = {
- .InitScreen = ffbInitScreen,
- .DestroyScreen = ffbDestroyScreen,
- .CreateContext = ffbCreateContext,
- .DestroyContext = ffbDestroyContext,
- .CreateBuffer = ffbCreateBuffer,
- .DestroyBuffer = ffbDestroyBuffer,
- .SwapBuffers = ffbSwapBuffers,
- .MakeCurrent = ffbMakeCurrent,
- .UnbindContext = ffbUnbindContext,
- .GetSwapInfo = NULL,
- .GetDrawableMSC = NULL,
- .WaitForMSC = NULL,
- .WaitForSBC = NULL,
- .SwapBuffersMSC = NULL
-};
-
-/* This is the table of extensions that the loader will dlsym() for. */
-PUBLIC const __DRIextension *__driDriverExtensions[] = {
- &driCoreExtension.base,
- &driLegacyExtension.base,
- NULL
-};
diff --git a/src/mesa/drivers/dri/ffb/ffb_xmesa.h b/src/mesa/drivers/dri/ffb/ffb_xmesa.h
deleted file mode 100644
index 2b1740d2219..00000000000
--- a/src/mesa/drivers/dri/ffb/ffb_xmesa.h
+++ /dev/null
@@ -1,25 +0,0 @@
-
-#ifndef _FFB_XMESA_H_
-#define _FFB_XMESA_H_
-
-#include <sys/time.h>
-#include "dri_util.h"
-#include "main/mtypes.h"
-#include "ffb_drishare.h"
-#include "ffb_regs.h"
-#include "ffb_dac.h"
-#include "ffb_fifo.h"
-
-typedef struct {
- __DRIscreen *sPriv;
- ffb_fbcPtr regs;
- ffb_dacPtr dac;
- volatile char *sfb8r;
- volatile char *sfb32;
- volatile char *sfb64;
-
- int fifo_cache;
- int rp_active;
-} ffbScreenPrivate;
-
-#endif /* !(_FFB_XMESA_H) */
diff --git a/src/mesa/drivers/dri/ffb/server/ffb_dac.h b/src/mesa/drivers/dri/ffb/server/ffb_dac.h
deleted file mode 100644
index ac4a75b4598..00000000000
--- a/src/mesa/drivers/dri/ffb/server/ffb_dac.h
+++ /dev/null
@@ -1,366 +0,0 @@
-/*
- * Acceleration for the Creator and Creator3D framebuffer - DAC register layout.
- *
- * Copyright (C) 2000 David S. Miller ([email protected])
- *
- * 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 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
- * DAVID MILLER 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.
- *
- */
-
-#ifndef _FFB_DAC_H
-#define _FFB_DAC_H
-
-#define Bool int
-
-/* FFB utilizes two different ramdac chips:
- *
- * 1) BT9068 "Pacifica1", used in all FFB1 and
- * FFB2 boards.
- *
- * 2) BT498(a) "Pacifica2", used in FFB2+ and
- * AFB boards.
- *
- * They are mostly equivalent, except in a few key areas:
- *
- * 1) WID register layout
- * 2) Number of CLUT tables
- * 3) Presence of Window Address Mask register
- * 4) Method of GAMMA correction support
- */
-
-/* NOTE: All addresses described in this file are DAC
- * indirect addresses.
- */
-
-/* DAC color values are in the following format. */
-#define FFBDAC_COLOR_BLUE 0x00ff0000
-#define FFBDAC_COLOR_BLUE_SHFT 16
-#define FFBDAC_COLOR_GREEN 0x0000ff00
-#define FFBDAC_COLOR_GREEN_SHFT 8
-#define FFBDAC_COLOR_RED 0x000000ff
-#define FFBDAC_COLOR_RED_SHFT 0
-
-/* Cursor DAC register addresses. */
-#define FFBDAC_CUR_BITMAP_P0 0x000 /* Plane 0 cursor bitmap */
-#define FFBDAC_CUR_BITMAP_P1 0x080 /* Plane 1 cursor bitmap */
-#define FFBDAC_CUR_CTRL 0x100 /* Cursor control */
-#define FFBDAC_CUR_COLOR0 0x101 /* Cursor Color 0 */
-#define FFBDAC_CUR_COLOR1 0x102 /* Cursor Color 1 (bg) */
-#define FFBDAC_CUR_COLOR2 0x103 /* Cursor Color 2 (fg) */
-#define FFBDAC_CUR_POS 0x104 /* Active cursor position */
-
-/* Cursor control register.
- * WARNING: Be careful, reverse logic on these bits.
- */
-#define FFBDAC_CUR_CTRL_P0 0x00000001 /* Plane0 display disable */
-#define FFBDAC_CUR_CTRL_P1 0x00000002 /* Plane1 display disable */
-
-/* Active cursor position register */
-#define FFBDAC_CUR_POS_Y_SIGN 0x80000000 /* Sign of Y position */
-#define FFBDAC_CUR_POS_Y 0x0fff0000 /* Y position */
-#define FFBDAC_CUR_POS_X_SIGN 0x00008000 /* Sign of X position */
-#define FFBDAC_CUR_POS_X 0x00000fff /* X position */
-
-/* Configuration and Palette DAC register addresses. */
-#define FFBDAC_CFG_PPLLCTRL 0x0000 /* Pixel PLL Control */
-#define FFBDAC_CFG_GPLLCTRL 0x0001 /* General Purpose PLL Control */
-#define FFBDAC_CFG_PFCTRL 0x1000 /* Pixel Format Control */
-#define FFBDAC_CFG_UCTRL 0x1001 /* User Control */
-#define FFBDAC_CFG_CLUP_BASE 0x2000 /* Color Lookup Palette */
-#define FFBDAC_CFG_CLUP(entry) (FFBDAC_CFG_CLUP_BASE + ((entry) * 0x100))
-#define FFBDAC_PAC2_SOVWLUT0 0x3100 /* Shadow Overlay Window Lookup 0*/
-#define FFBDAC_PAC2_SOVWLUT1 0x3101 /* Shadow Overlay Window Lookup 1*/
-#define FFBDAC_PAC2_SOVWLUT2 0x3102 /* Shadow Overlay Window Lookup 2*/
-#define FFBDAC_PAC2_SOVWLUT3 0x3103 /* Shadow Overlay Window Lookup 3*/
-#define FFBDAC_PAC2_AOVWLUT0 0x3210 /* Active Overlay Window Lookup 0*/
-#define FFBDAC_PAC2_AOVWLUT1 0x3211 /* Active Overlay Window Lookup 1*/
-#define FFBDAC_PAC2_AOVWLUT2 0x3212 /* Active Overlay Window Lookup 2*/
-#define FFBDAC_PAC2_AOVWLUT3 0x3213 /* Active Overlay Window Lookup 3*/
-#define FFBDAC_CFG_WTCTRL 0x3150 /* Window Transfer Control */
-#define FFBDAC_CFG_TMCTRL 0x3151 /* Transparent Mask Control */
-#define FFBDAC_CFG_TCOLORKEY 0x3152 /* Transparent Color Key */
-#define FFBDAC_CFG_WAMASK 0x3153 /* Window Address Mask (PAC2 only) */
-#define FFBDAC_PAC1_SPWLUT_BASE 0x3100 /* Shadow Primary Window Lookups */
-#define FFBDAC_PAC1_SPWLUT(entry) (FFBDAC_PAC1_SPWLUT_BASE + (entry))
-#define FFBDAC_PAC1_APWLUT_BASE 0x3120 /* Active Primary Window Lookups */
-#define FFBDAC_PAC1_APWLUT(entry) (FFBDAC_PAC1_APWLUT_BASE + (entry))
-#define FFBDAC_PAC2_SPWLUT_BASE 0x3200 /* Shadow Primary Window Lookups */
-#define FFBDAC_PAC2_SPWLUT(entry) (FFBDAC_PAC2_SPWLUT_BASE + (entry))
-#define FFBDAC_PAC2_APWLUT_BASE 0x3240 /* Active Primary Window Lookups */
-#define FFBDAC_PAC2_APWLUT(entry) (FFBDAC_PAC2_APWLUT_BASE + (entry))
-#define FFBDAC_CFG_SANAL 0x5000 /* Signature Analysis Control */
-#define FFBDAC_CFG_DACCTRL 0x5001 /* DAC Control */
-#define FFBDAC_CFG_TGEN 0x6000 /* Timing Generator Control */
-#define FFBDAC_CFG_VBNP 0x6001 /* Vertical Blank Negation Point */
-#define FFBDAC_CFG_VBAP 0x6002 /* Vertical Blank Assertion Point*/
-#define FFBDAC_CFG_VSNP 0x6003 /* Vertical Sync Negation Point */
-#define FFBDAC_CFG_VSAP 0x6004 /* Vertical Sync Assertion Point */
-#define FFBDAC_CFG_HSNP 0x6005 /* Horz Serration Negation Point */
-#define FFBDAC_CFG_HBNP 0x6006 /* Horz Blank Negation Point */
-#define FFBDAC_CFG_HBAP 0x6007 /* Horz Blank Assertion Point */
-#define FFBDAC_CFG_HSYNCNP 0x6008 /* Horz Sync Negation Point */
-#define FFBDAC_CFG_HSYNCAP 0x6009 /* Horz Sync Assertion Point */
-#define FFBDAC_CFG_HSCENNP 0x600A /* Horz SCEN Negation Point */
-#define FFBDAC_CFG_HSCENAP 0x600B /* Horz SCEN Assertion Point */
-#define FFBDAC_CFG_EPNP 0x600C /* Eql'zing Pulse Negation Point */
-#define FFBDAC_CFG_EINP 0x600D /* Eql'zing Intvl Negation Point */
-#define FFBDAC_CFG_EIAP 0x600E /* Eql'zing Intvl Assertion Point*/
-#define FFBDAC_CFG_TGVC 0x600F /* Timing Generator Vert Counter */
-#define FFBDAC_CFG_TGHC 0x6010 /* Timing Generator Horz Counter */
-#define FFBDAC_CFG_DID 0x8000 /* Device Identification */
-#define FFBDAC_CFG_MPDATA 0x8001 /* Monitor Port Data */
-#define FFBDAC_CFG_MPSENSE 0x8002 /* Monitor Port Sense */
-
-/* Pixel PLL Control Register */
-#define FFBDAC_CFG_PPLLCTRL_M 0x0000007f /* PLL VCO Multiplicand */
-#define FFBDAC_CFG_PPLLCTRL_D 0x00000780 /* PLL VCO Divisor */
-#define FFBDAC_CFG_PPLLCTRL_PFD 0x00001800 /* Post VCO Frequency Divider */
-#define FFBDAC_CFG_PPLLCTRL_EN 0x00004000 /* Enable PLL as pixel clock src */
-
-/* General Purpose PLL Control Register */
-#define FFBDAC_CFG_GPLLCTRL_M 0x0000007f /* PLL VCO Multiplicand */
-#define FFBDAC_CFG_GPLLCTRL_D 0x00000780 /* PLL VCO Divisor */
-#define FFBDAC_CFG_GPLLCTRL_PFD 0x00001800 /* Post VCO Frequency Divider */
-#define FFBDAC_CFG_GPLLCTRL_EN 0x00004000 /* Enable PLL as Gen. Purpose clk*/
-
-/* Pixel Format Control Register */
-#define FFBDAC_CFG_PFCTRL_2_1 0x00000000 /* 2:1 pixel interleave format */
-#define FFBDAC_CFG_PFCTRL_4_1 0x00000001 /* 4:1 pixel interleave format */
-#define FFBDAC_CFG_PFCTRL_42_1 0x00000002 /* 4/2:1 pixel interleave format */
-#define FFBDAC_CFG_PFCTRL_82_1 0x00000003 /* 8/2:1 pixel interleave format */
-
-/* User Control Register */
-#define FFBDAC_UCTRL_IPDISAB 0x00000001 /* Disable input pullup resistors*/
-#define FFBDAC_UCTRL_ABLANK 0x00000002 /* Asynchronous Blank */
-#define FFBDAC_UCTRL_DBENAB 0x00000004 /* Double-Buffer Enable */
-#define FFBDAC_UCTRL_OVENAB 0x00000008 /* Overlay Enable */
-#define FFBDAC_UCTRL_WMODE 0x00000030 /* Window Mode */
-#define FFBDAC_UCTRL_WM_COMB 0x00000000 /* Window Mode = Combined */
-#define FFBDAC_UCTRL_WM_S4 0x00000010 /* Window Mode = Seperate_4 */
-#define FFBDAC_UCTRL_WM_S8 0x00000020 /* Window Mode = Seperate_8 */
-#define FFBDAC_UCTRL_WM_RESV 0x00000030 /* Window Mode = reserved */
-#define FFBDAC_UCTRL_MANREV 0x00000f00 /* 4-bit Manufacturing Revision */
-
-/* Overlay Window Lookup Registers (PAC2 only) */
-#define FFBDAC_CFG_OVWLUT_PSEL 0x0000000f /* Palette Section, Seperate_4 */
-#define FFBDAC_CFG_OVWLUT_PTBL 0x00000030 /* Palette Table */
-#define FFBDAC_CFG_OVWLUT_LKUP 0x00000100 /* 1 = Use palette, 0 = Bypass */
-#define FFBDAC_CFG_OVWLUT_OTYP 0x00000c00 /* Overlay Type */
-#define FFBDAC_CFG_OVWLUT_O_N 0x00000000 /* Overlay Type - None */
-#define FFBDAC_CFG_OVWLUT_O_T 0x00000400 /* Overlay Type - Transparent */
-#define FFBDAC_CFG_OVWLUT_O_O 0x00000800 /* Overlay Type - Opaque */
-#define FFBDAC_CFG_OVWLUT_O_R 0x00000c00 /* Overlay Type - Reserved */
-#define FFBDAC_CFG_OVWLUT_PCS 0x00003000 /* Psuedocolor Src */
-#define FFBDAC_CFG_OVWLUT_P_XO 0x00000000 /* Psuedocolor Src - XO[7:0] */
-#define FFBDAC_CFG_OVWLUT_P_R 0x00001000 /* Psuedocolor Src - R[7:0] */
-#define FFBDAC_CFG_OVWLUT_P_G 0x00002000 /* Psuedocolor Src - G[7:0] */
-#define FFBDAC_CFG_OVWLUT_P_B 0x00003000 /* Psuedocolor Src - B[7:0] */
-
-/* Window Transfer Control Register */
-#define FFBDAC_CFG_WTCTRL_DS 0x00000001 /* Device Status, 1 = Busy */
-#define FFBDAC_CFG_WTCTRL_TCMD 0x00000002 /* Transfer Command
- * 1 = Transfer, 0 = No Action
- */
-#define FFBDAC_CFG_WTCTRL_TE 0x00000004 /* Transfer Event
- * 1 = Next Frame, 0 = Next Field
- */
-#define FFBDAC_CFG_WTCTRL_DRD 0x00000008 /* Drawing Data
- * 1 = Local Drawing Active
- * 0 = Local Drawing Idle
- */
-#define FFBDAC_CFG_WTCTRL_DRS 0x00000010 /* Drawing Status
- * 1 = Network Drawing Active
- * 0 = Network Drawing Idle
- */
-
-/* Transparent Mask Control Register */
-#define FFBDAC_CFG_TMCTRL_OMSK 0x000000ff /* Overlay Mask */
-
-/* Transparent Color Key Register */
-#define FFBDAC_CFG_TCOLORKEY_K 0x000000ff /* Overlay Color Key */
-
-/* Window Address Mask Register (PAC2 only) */
-#define FFBDAC_CFG_WAMASK_PMSK 0x0000003f /* PWLUT select PMASK */
-#define FFBDAC_CFG_WAMASK_OMSK 0x00000300 /* OWLUT control OMASK */
-
-/* (non-Overlay) Window Lookup Table Registers, PAC1 format */
-#define FFBDAC_PAC1_WLUT_DB 0x00000020 /* 0 = Buffer A, 1 = Buffer B */
-#define FFBDAC_PAC1_WLUT_C 0x0000001c /* C: Color Model Selection */
-#define FFBDAC_PAC1_WLUT_C_8P 0x00000000 /* C: 8bpp Pseudocolor */
-#define FFBDAC_PAC1_WLUT_C_8LG 0x00000004 /* C: 8bpp Linear Grey */
-#define FFBDAC_PAC1_WLUT_C_8NG 0x00000008 /* C: 8bpp Non-Linear Grey */
-#define FFBDAC_PAC1_WLUT_C_24D 0x00000010 /* C: 24bpp Directcolor */
-#define FFBDAC_PAC1_WLUT_C_24LT 0x00000014 /* C: 24bpp Linear Truecolor */
-#define FFBDAC_PAC1_WLUT_C_24NT 0x00000018 /* C: 24bpp Non-Linear Truecolor */
-#define FFBDAC_PAC1_WLUT_PCS 0x00000003 /* Pseudocolor Src */
-#define FFBDAC_PAC1_WLUT_P_XO 0x00000000 /* Pseudocolor Src - XO[7:0] */
-#define FFBDAC_PAC1_WLUT_P_R 0x00000001 /* Pseudocolor Src - R[7:0] */
-#define FFBDAC_PAC1_WLUT_P_G 0x00000002 /* Pseudocolor Src - G[7:0] */
-#define FFBDAC_PAC1_WLUT_P_B 0x00000003 /* Pseudocolor Src - B[7:0] */
-
-/* (non-Overlay) Window Lookup Table Registers, PAC2 format */
-#define FFBDAC_PAC2_WLUT_PTBL 0x00000030 /* Palette Table Entry */
-#define FFBDAC_PAC2_WLUT_LKUP 0x00000100 /* 1 = Use palette, 0 = Bypass */
-#define FFBDAC_PAC2_WLUT_PCS 0x00003000 /* Pseudocolor Src */
-#define FFBDAC_PAC2_WLUT_P_XO 0x00000000 /* Pseudocolor Src - XO[7:0] */
-#define FFBDAC_PAC2_WLUT_P_R 0x00001000 /* Pseudocolor Src - R[7:0] */
-#define FFBDAC_PAC2_WLUT_P_G 0x00002000 /* Pseudocolor Src - G[7:0] */
-#define FFBDAC_PAC2_WLUT_P_B 0x00003000 /* Pseudocolor Src - B[7:0] */
-#define FFBDAC_PAC2_WLUT_DEPTH 0x00004000 /* 0 = Pseudocolor, 1 = Truecolor*/
-#define FFBDAC_PAC2_WLUT_DB 0x00008000 /* 0 = Buffer A, 1 = Buffer B */
-
-/* Signature Analysis Control Register */
-#define FFBDAC_CFG_SANAL_SRR 0x000000ff /* DAC Seed/Result for Red */
-#define FFBDAC_CFG_SANAL_SRG 0x0000ff00 /* DAC Seed/Result for Green */
-#define FFBDAC_CFG_SANAL_SRB 0x00ff0000 /* DAC Seed/Result for Blue */
-#define FFBDAC_CFG_SANAL_RQST 0x01000000 /* Signature Capture Request */
-#define FFBDAC_CFG_SANAL_BSY 0x02000000 /* Signature Analysis Busy */
-#define FFBDAC_CFG_SANAL_DSM 0x04000000 /* Data Strobe Mode
- * 0 = Signature Analysis Mode
- * 1 = Data Strobe Mode
- */
-
-/* DAC Control Register */
-#define FFBDAC_CFG_DACCTRL_O2 0x00000003 /* Operand 2 Select
- * 00 = Normal Operation
- * 01 = Select 145mv Reference
- * 10 = Select Blue DAC Output
- * 11 = Reserved
- */
-#define FFBDAC_CFG_DACCTRL_O1 0x0000000c /* Operand 1 Select
- * 00 = Normal Operation
- * 01 = Select Green DAC Output
- * 10 = Select Red DAC Output
- * 11 = Reserved
- */
-#define FFBDAC_CFG_DACCTRL_CR 0x00000010 /* Comparator Result
- * 0 = operand1 < operand2
- * 1 = operand1 > operand2
- */
-#define FFBDAC_CFG_DACCTRL_SGE 0x00000020 /* Sync-on-Green Enable */
-#define FFBDAC_CFG_DACCTRL_PE 0x00000040 /* Pedestal Enable */
-#define FFBDAC_CFG_DACCTRL_VPD 0x00000080 /* VSYNC* Pin Disable */
-#define FFBDAC_CFG_DACCTRL_SPB 0x00000100 /* Sync Polarity Bit
- * 0 = VSYNC* and CSYNC* active low
- * 1 = VSYNC* and CSYNC* active high
- */
-
-/* Timing Generator Control Register */
-#define FFBDAC_CFG_TGEN_VIDE 0x00000001 /* Video Enable */
-#define FFBDAC_CFG_TGEN_TGE 0x00000002 /* Timing Generator Enable */
-#define FFBDAC_CFG_TGEN_HSD 0x00000004 /* HSYNC* Disabled */
-#define FFBDAC_CFG_TGEN_VSD 0x00000008 /* VSYNC* Disabled */
-#define FFBDAC_CFG_TGEN_EQD 0x00000010 /* Equalization Disabled */
-#define FFBDAC_CFG_TGEN_MM 0x00000020 /* 0 = Slave, 1 = Master */
-#define FFBDAC_CFG_TGEN_IM 0x00000040 /* 1 = Interlaced Mode */
-
-/* Device Identification Register, should be 0xA236E1AD for FFB bt497/bt498 */
-#define FFBDAC_CFG_DID_ONE 0x00000001 /* Always set */
-#define FFBDAC_CFG_DID_MANUF 0x00000ffe /* Manufacturer ID */
-#define FFBDAC_CFG_DID_PNUM 0x0ffff000 /* Device Part Number */
-#define FFBDAC_CFG_DID_REV 0xf0000000 /* Device Revision */
-
-/* Monitor Port Data Register */
-#define FFBDAC_CFG_MPDATA_SCL 0x00000001 /* SCL Data */
-#define FFBDAC_CFG_MPDATA_SDA 0x00000002 /* SDA Data */
-
-/* Monitor Port Sense Register */
-#define FFBDAC_CFG_MPSENSE_SCL 0x00000001 /* SCL Sense */
-#define FFBDAC_CFG_MPSENSE_SDA 0x00000002 /* SDA Sense */
-
-/* DAC register access shorthands. */
-#define DACCUR_READ(DAC, ADDR) ((DAC)->cur = (ADDR), (DAC)->curdata)
-#define DACCUR_WRITE(DAC, ADDR, VAL) ((DAC)->cur = (ADDR), (DAC)->curdata = (VAL))
-#define DACCFG_READ(DAC, ADDR) ((DAC)->cfg = (ADDR), (DAC)->cfgdata)
-#define DACCFG_WRITE(DAC, ADDR, VAL) ((DAC)->cfg = (ADDR), (DAC)->cfgdata = (VAL))
-
-typedef struct ffb_dac_hwstate {
- unsigned int ppllctrl;
- unsigned int gpllctrl;
- unsigned int pfctrl;
- unsigned int uctrl;
- unsigned int clut[256 * 4]; /* One 256 entry clut on PAC1, 4 on PAC2 */
- unsigned int ovluts[4]; /* Overlay WLUTS, PAC2 only */
- unsigned int wtctrl;
- unsigned int tmctrl;
- unsigned int tcolorkey;
- unsigned int wamask;
- unsigned int pwluts[64];
- unsigned int dacctrl;
- unsigned int tgen;
- unsigned int vbnp;
- unsigned int vbap;
- unsigned int vsnp;
- unsigned int vsap;
- unsigned int hsnp;
- unsigned int hbnp;
- unsigned int hbap;
- unsigned int hsyncnp;
- unsigned int hsyncap;
- unsigned int hscennp;
- unsigned int hscenap;
- unsigned int epnp;
- unsigned int einp;
- unsigned int eiap;
-} ffb_dac_hwstate_t;
-
-typedef struct {
- Bool InUse;
-
- /* The following fields are undefined unless InUse is TRUE. */
- int refcount;
- Bool canshare;
- unsigned int wlut_regval;
- int buffer; /* 0 = Buffer A, 1 = Buffer B */
- int depth; /* 8 or 32 bpp */
- int greyscale; /* 1 = greyscale, 0 = color */
- int linear; /* 1 = linear, 0 = non-linear */
- int direct; /* 1 = 24bpp directcolor */
- int channel; /* 0 = X, 1 = R, 2 = G, 3 = B */
- int palette; /* Only PAC2 has multiple CLUTs */
-} ffb_wid_info_t;
-
-#define FFB_MAX_PWIDS 64
-typedef struct {
- int num_wids;
- int wid_shift; /* To get X channel value */
- ffb_wid_info_t wid_pool[FFB_MAX_PWIDS];
-} ffb_wid_pool_t;
-
-typedef struct ffb_dac_info {
- unsigned int flags;
-#define FFB_DAC_PAC1 0x00000001 /* Pacifica1 DAC, BT9068 */
-#define FFB_DAC_PAC2 0x00000002 /* Pacifica2 DAC, BT498 */
-#define FFB_DAC_ICURCTL 0x00000004 /* Inverted CUR_CTRL bits */
-
- unsigned int kernel_wid;
-
- /* These registers need to be modified when changing DAC
- * timing state, so at init time we capture their values.
- */
- unsigned int ffbcfg0;
- unsigned int ffbcfg2;
- unsigned int ffb_passin_ctrl; /* FFB2+/AFB only */
-
- ffb_dac_hwstate_t kern_dac_state;
- ffb_dac_hwstate_t x_dac_state;
-
- ffb_wid_pool_t wid_table;
-} ffb_dac_info_t;
-
-#endif /* _FFB_DAC_H */
diff --git a/src/mesa/drivers/dri/ffb/server/ffb_drishare.h b/src/mesa/drivers/dri/ffb/server/ffb_drishare.h
deleted file mode 100644
index 69fefa3f0a1..00000000000
--- a/src/mesa/drivers/dri/ffb/server/ffb_drishare.h
+++ /dev/null
@@ -1,47 +0,0 @@
-
-#ifndef _FFB_DRISHARE_H
-#define _FFB_DRISHARE_H
-
-typedef struct ffb_dri_state {
- int flags;
-#define FFB_DRI_FFB2 0x00000001
-#define FFB_DRI_FFB2PLUS 0x00000002
-#define FFB_DRI_PAC1 0x00000004
-#define FFB_DRI_PAC2 0x00000008
-
- /* Indexed by DRI drawable id. */
-#define FFB_DRI_NWIDS 64
- unsigned int wid_table[FFB_DRI_NWIDS];
-} ffb_dri_state_t;
-
-#define FFB_DRISHARE(SAREA) \
- ((ffb_dri_state_t *) (((char *)(SAREA)) + sizeof(drm_sarea_t)))
-
-typedef struct {
- drm_handle_t hFbcRegs;
- drmSize sFbcRegs;
-
- drm_handle_t hDacRegs;
- drmSize sDacRegs;
-
- drm_handle_t hSfb8r;
- drmSize sSfb8r;
-
- drm_handle_t hSfb32;
- drmSize sSfb32;
-
- drm_handle_t hSfb64;
- drmSize sSfb64;
-
- /* Fastfill/Pagefill parameters. */
- unsigned char disable_pagefill;
- int fastfill_small_area;
- int pagefill_small_area;
- int fastfill_height;
- int fastfill_width;
- int pagefill_height;
- int pagefill_width;
- short Pf_AlignTab[0x800];
-} FFBDRIRec, *FFBDRIPtr;
-
-#endif /* !(_FFB_DRISHARE_H) */
diff --git a/src/mesa/drivers/dri/ffb/server/ffb_regs.h b/src/mesa/drivers/dri/ffb/server/ffb_regs.h
deleted file mode 100644
index bda5840d609..00000000000
--- a/src/mesa/drivers/dri/ffb/server/ffb_regs.h
+++ /dev/null
@@ -1,508 +0,0 @@
-/*
- * Acceleration for the Creator and Creator3D framebuffer - register layout.
- *
- * Copyright (C) 1998,1999,2000 Jakub Jelinek ([email protected])
- * Copyright (C) 1998 Michal Rehacek ([email protected])
- * Copyright (C) 1999 David S. Miller ([email protected])
- *
- * 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 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
- * JAKUB JELINEK, MICHAL REHACEK, OR DAVID MILLER 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.
- *
- */
-
-#ifndef FFBREGS_H
-#define FFBREGS_H
-
-/* Auxilliary clips. */
-typedef struct {
- volatile unsigned int min;
- volatile unsigned int max;
-} ffb_auxclip, *ffb_auxclipPtr;
-
-/* FFB register set. */
-typedef struct _ffb_fbc {
- /* Next vertex registers, on the right we list which drawops
- * use said register and the logical name the register has in
- * that context.
- */ /* DESCRIPTION DRAWOP(NAME) */
-/*0x00*/unsigned int pad1[3]; /* Reserved */
-/*0x0c*/volatile unsigned int alpha; /* ALPHA Transparency */
-/*0x10*/volatile unsigned int red; /* RED */
-/*0x14*/volatile unsigned int green; /* GREEN */
-/*0x18*/volatile unsigned int blue; /* BLUE */
-/*0x1c*/volatile unsigned int z; /* DEPTH */
-/*0x20*/volatile unsigned int y; /* Y triangle(DOYF) */
- /* aadot(DYF) */
- /* ddline(DYF) */
- /* aaline(DYF) */
-/*0x24*/volatile unsigned int x; /* X triangle(DOXF) */
- /* aadot(DXF) */
- /* ddline(DXF) */
- /* aaline(DXF) */
-/*0x28*/unsigned int pad2[2]; /* Reserved */
-/*0x30*/volatile unsigned int ryf; /* Y (alias to DOYF) ddline(RYF) */
- /* aaline(RYF) */
- /* triangle(RYF) */
-/*0x34*/volatile unsigned int rxf; /* X ddline(RXF) */
- /* aaline(RXF) */
- /* triangle(RXF) */
-/*0x38*/unsigned int pad3[2]; /* Reserved */
-/*0x40*/volatile unsigned int dmyf; /* Y (alias to DOYF) triangle(DMYF) */
-/*0x44*/volatile unsigned int dmxf; /* X triangle(DMXF) */
-/*0x48*/unsigned int pad4[2]; /* Reserved */
-/*0x50*/volatile unsigned int ebyi; /* Y (alias to RYI) polygon(EBYI) */
-/*0x54*/volatile unsigned int ebxi; /* X polygon(EBXI) */
-/*0x58*/unsigned int pad5[2]; /* Reserved */
-/*0x60*/volatile unsigned int by; /* Y brline(RYI) */
- /* fastfill(OP) */
- /* polygon(YI) */
- /* rectangle(YI) */
- /* bcopy(SRCY) */
- /* vscroll(SRCY) */
-/*0x64*/volatile unsigned int bx; /* X brline(RXI) */
- /* polygon(XI) */
- /* rectangle(XI) */
- /* bcopy(SRCX) */
- /* vscroll(SRCX) */
- /* fastfill(GO) */
-/*0x68*/volatile unsigned int dy; /* destination Y fastfill(DSTY) */
- /* bcopy(DSRY) */
- /* vscroll(DSRY) */
-/*0x6c*/volatile unsigned int dx; /* destination X fastfill(DSTX) */
- /* bcopy(DSTX) */
- /* vscroll(DSTX) */
-/*0x70*/volatile unsigned int bh; /* Y (alias to RYI) brline(DYI) */
- /* dot(DYI) */
- /* polygon(ETYI) */
- /* Height fastfill(H) */
- /* bcopy(H) */
- /* vscroll(H) */
- /* Y count fastfill(NY) */
-/*0x74*/volatile unsigned int bw; /* X dot(DXI) */
- /* brline(DXI) */
- /* polygon(ETXI) */
- /* fastfill(W) */
- /* bcopy(W) */
- /* vscroll(W) */
- /* fastfill(NX) */
-/*0x78*/unsigned int pad6[2]; /* Reserved */
-/*0x80*/unsigned int pad7[32]; /* Reserved */
-
- /* Setup Unit's vertex state register */
-/*100*/ volatile unsigned int suvtx;
-/*104*/ unsigned int pad8[63]; /* Reserved */
-
- /* Frame Buffer Control Registers */
-/*200*/ volatile unsigned int ppc; /* Pixel Processor Control */
-/*204*/ volatile unsigned int wid; /* Current WID */
-/*208*/ volatile unsigned int fg; /* FG data */
-/*20c*/ volatile unsigned int bg; /* BG data */
-/*210*/ volatile unsigned int consty; /* Constant Y */
-/*214*/ volatile unsigned int constz; /* Constant Z */
-/*218*/ volatile unsigned int xclip; /* X Clip */
-/*21c*/ volatile unsigned int dcss; /* Depth Cue Scale Slope */
-/*220*/ volatile unsigned int vclipmin; /* Viewclip XY Min Bounds */
-/*224*/ volatile unsigned int vclipmax; /* Viewclip XY Max Bounds */
-/*228*/ volatile unsigned int vclipzmin; /* Viewclip Z Min Bounds */
-/*22c*/ volatile unsigned int vclipzmax; /* Viewclip Z Max Bounds */
-/*230*/ volatile unsigned int dcsf; /* Depth Cue Scale Front Bound */
-/*234*/ volatile unsigned int dcsb; /* Depth Cue Scale Back Bound */
-/*238*/ volatile unsigned int dczf; /* Depth Cue Z Front */
-/*23c*/ volatile unsigned int dczb; /* Depth Cue Z Back */
-/*240*/ unsigned int pad9; /* Reserved */
-/*244*/ volatile unsigned int blendc; /* Alpha Blend Control */
-/*248*/ volatile unsigned int blendc1; /* Alpha Blend Color 1 */
-/*24c*/ volatile unsigned int blendc2; /* Alpha Blend Color 2 */
-/*250*/ volatile unsigned int fbramitc; /* FB RAM Interleave Test Control */
-/*254*/ volatile unsigned int fbc; /* Frame Buffer Control */
-/*258*/ volatile unsigned int rop; /* Raster OPeration */
-/*25c*/ volatile unsigned int cmp; /* Frame Buffer Compare */
-/*260*/ volatile unsigned int matchab; /* Buffer AB Match Mask */
-/*264*/ volatile unsigned int matchc; /* Buffer C(YZ) Match Mask */
-/*268*/ volatile unsigned int magnab; /* Buffer AB Magnitude Mask */
-/*26c*/ volatile unsigned int magnc; /* Buffer C(YZ) Magnitude Mask */
-/*270*/ volatile unsigned int fbcfg0; /* Frame Buffer Config 0 */
-/*274*/ volatile unsigned int fbcfg1; /* Frame Buffer Config 1 */
-/*278*/ volatile unsigned int fbcfg2; /* Frame Buffer Config 2 */
-/*27c*/ volatile unsigned int fbcfg3; /* Frame Buffer Config 3 */
-/*280*/ volatile unsigned int ppcfg; /* Pixel Processor Config */
-/*284*/ volatile unsigned int pick; /* Picking Control */
-/*288*/ volatile unsigned int fillmode; /* FillMode */
-/*28c*/ volatile unsigned int fbramwac; /* FB RAM Write Address Control */
-/*290*/ volatile unsigned int pmask; /* RGB PlaneMask */
-/*294*/ volatile unsigned int xpmask; /* X PlaneMask */
-/*298*/ volatile unsigned int ypmask; /* Y PlaneMask */
-/*29c*/ volatile unsigned int zpmask; /* Z PlaneMask */
-/*2a0*/ ffb_auxclip auxclip[4]; /* Auxilliary Viewport Clip */
-
- /* New 3dRAM III support regs */
-/*2c0*/ volatile unsigned int rawblend2;
-/*2c4*/ volatile unsigned int rawpreblend;
-/*2c8*/ volatile unsigned int rawstencil;
-/*2cc*/ volatile unsigned int rawstencilctl;
-/*2d0*/ volatile unsigned int threedram1;
-/*2d4*/ volatile unsigned int threedram2;
-/*2d8*/ volatile unsigned int passin;
-/*2dc*/ volatile unsigned int rawclrdepth;
-/*2e0*/ volatile unsigned int rawpmask;
-/*2e4*/ volatile unsigned int rawcsrc;
-/*2e8*/ volatile unsigned int rawmatch;
-/*2ec*/ volatile unsigned int rawmagn;
-/*2f0*/ volatile unsigned int rawropblend;
-/*2f4*/ volatile unsigned int rawcmp;
-/*2f8*/ volatile unsigned int rawwac;
-/*2fc*/ volatile unsigned int fbramid;
-
-/*300*/ volatile unsigned int drawop; /* Draw OPeration */
-/*304*/ unsigned int pad10[2]; /* Reserved */
-/*30c*/ volatile unsigned int lpat; /* Line Pattern control */
-/*310*/ unsigned int pad11; /* Reserved */
-/*314*/ volatile unsigned int fontxy; /* XY Font coordinate */
-/*318*/ volatile unsigned int fontw; /* Font Width */
-/*31c*/ volatile unsigned int fontinc; /* Font Increment */
-/*320*/ volatile unsigned int font; /* Font bits */
-/*324*/ unsigned int pad12[3]; /* Reserved */
-/*330*/ volatile unsigned int blend2;
-/*334*/ volatile unsigned int preblend;
-/*338*/ volatile unsigned int stencil;
-/*33c*/ volatile unsigned int stencilctl;
-
-/*340*/ unsigned int pad13[4]; /* Reserved */
-/*350*/ volatile unsigned int dcss1; /* Depth Cue Scale Slope 1 */
-/*354*/ volatile unsigned int dcss2; /* Depth Cue Scale Slope 2 */
-/*358*/ volatile unsigned int dcss3; /* Depth Cue Scale Slope 3 */
-/*35c*/ volatile unsigned int widpmask;
-/*360*/ volatile unsigned int dcs2;
-/*364*/ volatile unsigned int dcs3;
-/*368*/ volatile unsigned int dcs4;
-/*36c*/ unsigned int pad14; /* Reserved */
-/*370*/ volatile unsigned int dcd2;
-/*374*/ volatile unsigned int dcd3;
-/*378*/ volatile unsigned int dcd4;
-/*37c*/ unsigned int pad15; /* Reserved */
-/*380*/ volatile unsigned int pattern[32]; /* area Pattern */
-/*400*/ unsigned int pad16[8]; /* Reserved */
-/*420*/ volatile unsigned int reset; /* chip RESET */
-/*424*/ unsigned int pad17[247]; /* Reserved */
-/*800*/ volatile unsigned int devid; /* Device ID */
-/*804*/ unsigned int pad18[63]; /* Reserved */
-/*900*/ volatile unsigned int ucsr; /* User Control & Status Register */
-/*904*/ unsigned int pad19[31]; /* Reserved */
-/*980*/ volatile unsigned int mer; /* Mode Enable Register */
-/*984*/ unsigned int pad20[1439]; /* Reserved */
-} ffb_fbc, *ffb_fbcPtr;
-
-/* Draw operations */
-#define FFB_DRAWOP_DOT 0x00
-#define FFB_DRAWOP_AADOT 0x01
-#define FFB_DRAWOP_BRLINECAP 0x02
-#define FFB_DRAWOP_BRLINEOPEN 0x03
-#define FFB_DRAWOP_DDLINE 0x04
-#define FFB_DRAWOP_AALINE 0x05
-#define FFB_DRAWOP_TRIANGLE 0x06
-#define FFB_DRAWOP_POLYGON 0x07
-#define FFB_DRAWOP_RECTANGLE 0x08
-#define FFB_DRAWOP_FASTFILL 0x09
-#define FFB_DRAWOP_BCOPY 0x0a /* Not implemented in any FFB, VIS is faster */
-#define FFB_DRAWOP_VSCROLL 0x0b /* Up to 12x faster than BCOPY, 3-4x faster than VIS */
-
-/* FastFill operation codes. */
-#define FFB_FASTFILL_PAGE 0x01
-#define FFB_FASTFILL_BLOCK 0x02
-#define FFB_FASTFILL_COLOR_BLK 0x03
-#define FFB_FASTFILL_BLOCK_X 0x04
-
-/* Spanfill Unit Line Pattern */
-#define FFB_LPAT_SCALEPTR 0xf0000000
-#define FFB_LPAT_SCALEPTR_SHIFT 28
-#define FFB_LPAT_PATPTR 0x0f000000
-#define FFB_LPAT_PATPTR_SHIFT 24
-#define FFB_LPAT_SCALEVAL 0x00f00000
-#define FFB_LPAT_SCALEVAL_SHIFT 20
-#define FFB_LPAT_PATLEN 0x000f0000
-#define FFB_LPAT_PATLEN_SHIFT 16
-#define FFB_LPAT_PATTERN 0x0000ffff
-#define FFB_LPAT_PATTERN_SHIFT 0
-
-/* Pixel processor control */
-/* Force WID */
-#define FFB_PPC_FW_DISABLE 0x800000
-#define FFB_PPC_FW_ENABLE 0xc00000
-#define FFB_PPC_FW_MASK 0xc00000
-/* Auxiliary clip */
-#define FFB_PPC_ACE_DISABLE 0x040000
-#define FFB_PPC_ACE_AUX_SUB 0x080000
-#define FFB_PPC_ACE_AUX_ADD 0x0c0000
-#define FFB_PPC_ACE_MASK 0x0c0000
-/* Depth cue */
-#define FFB_PPC_DCE_DISABLE 0x020000
-#define FFB_PPC_DCE_ENABLE 0x030000
-#define FFB_PPC_DCE_MASK 0x030000
-/* Alpha blend */
-#define FFB_PPC_ABE_DISABLE 0x008000
-#define FFB_PPC_ABE_ENABLE 0x00c000
-#define FFB_PPC_ABE_MASK 0x00c000
-/* View clip */
-#define FFB_PPC_VCE_DISABLE 0x001000
-#define FFB_PPC_VCE_2D 0x002000
-#define FFB_PPC_VCE_3D 0x003000
-#define FFB_PPC_VCE_MASK 0x003000
-/* Area pattern */
-#define FFB_PPC_APE_DISABLE 0x000800
-#define FFB_PPC_APE_ENABLE 0x000c00
-#define FFB_PPC_APE_MASK 0x000c00
-/* Transparent background */
-#define FFB_PPC_TBE_OPAQUE 0x000200
-#define FFB_PPC_TBE_TRANSPARENT 0x000300
-#define FFB_PPC_TBE_MASK 0x000300
-/* Z source */
-#define FFB_PPC_ZS_VAR 0x000080
-#define FFB_PPC_ZS_CONST 0x0000c0
-#define FFB_PPC_ZS_MASK 0x0000c0
-/* Y source */
-#define FFB_PPC_YS_VAR 0x000020
-#define FFB_PPC_YS_CONST 0x000030
-#define FFB_PPC_YS_MASK 0x000030
-/* X source */
-#define FFB_PPC_XS_WID 0x000004
-#define FFB_PPC_XS_VAR 0x000008
-#define FFB_PPC_XS_CONST 0x00000c
-#define FFB_PPC_XS_MASK 0x00000c
-/* Color (BGR) source */
-#define FFB_PPC_CS_VAR 0x000002
-#define FFB_PPC_CS_CONST 0x000003
-#define FFB_PPC_CS_MASK 0x000003
-
-/* X Clip */
-#define FFB_XCLIP_XREF 0x000000ff
-#define FFB_XCLIP_TEST_MASK 0x00070000
-#define FFB_XCLIP_TEST_ALWAYS 0x00000000
-#define FFB_XCLIP_TEST_GT 0x00010000
-#define FFB_XCLIP_TEST_EQ 0x00020000
-#define FFB_XCLIP_TEST_GE 0x00030000
-#define FFB_XCLIP_TEST_NEVER 0x00040000
-#define FFB_XCLIP_TEST_LE 0x00050000
-#define FFB_XCLIP_TEST_NE 0x00060000
-#define FFB_XCLIP_TEST_LT 0x00070000
-
-/* FB Control register */
-/* Write buffer dest */
-#define FFB_FBC_WB_A 0x20000000
-#define FFB_FBC_WB_B 0x40000000
-#define FFB_FBC_WB_AB 0x60000000
-#define FFB_FBC_WB_C 0x80000000
-#define FFB_FBC_WB_AC 0xa0000000
-#define FFB_FBC_WB_BC 0xc0000000
-#define FFB_FBC_WB_ABC 0xe0000000
-#define FFB_FBC_WB_MASK 0xe0000000
-/* Write enable */
-#define FFB_FBC_WE_FORCEOFF 0x00100000
-#define FFB_FBC_WE_FORCEON 0x00200000
-#define FFB_FBC_WE_USE_WMASK 0x00300000
-#define FFB_FBC_WE_MASK 0x00300000
-/* Write group mode */
-#define FFB_FBC_WM_RSVD 0x00040000
-#define FFB_FBC_WM_COMBINED 0x00080000
-#define FFB_FBC_WM_SEPARATE 0x000c0000
-#define FFB_FBC_WM_MASK 0x000c0000
-/* Read buffer src */
-#define FFB_FBC_RB_A 0x00004000
-#define FFB_FBC_RB_B 0x00008000
-#define FFB_FBC_RB_C 0x0000c000
-#define FFB_FBC_RB_MASK 0x0000c000
-/* Stereo buf dest */
-#define FFB_FBC_SB_LEFT 0x00001000
-#define FFB_FBC_SB_RIGHT 0x00002000
-#define FFB_FBC_SB_BOTH 0x00003000
-#define FFB_FBC_SB_MASK 0x00003000
-/* Z plane group enable */
-#define FFB_FBC_ZE_OFF 0x00000400
-#define FFB_FBC_ZE_ON 0x00000800
-#define FFB_FBC_ZE_MASK 0x00000c00
-/* Y plane group enable */
-#define FFB_FBC_YE_OFF 0x00000100
-#define FFB_FBC_YE_ON 0x00000200
-#define FFB_FBC_YE_MASK 0x00000300
-/* X plane group enable */
-#define FFB_FBC_XE_OFF 0x00000040
-#define FFB_FBC_XE_ON 0x00000080
-#define FFB_FBC_XE_MASK 0x000000c0
-/* B plane group enable */
-#define FFB_FBC_BE_OFF 0x00000010
-#define FFB_FBC_BE_ON 0x00000020
-#define FFB_FBC_BE_MASK 0x00000030
-/* G plane group enable */
-#define FFB_FBC_GE_OFF 0x00000004
-#define FFB_FBC_GE_ON 0x00000008
-#define FFB_FBC_GE_MASK 0x0000000c
-/* R plane group enable */
-#define FFB_FBC_RE_OFF 0x00000001
-#define FFB_FBC_RE_ON 0x00000002
-#define FFB_FBC_RE_MASK 0x00000003
-/* Combined */
-#define FFB_FBC_RGBE_OFF 0x00000015
-#define FFB_FBC_RGBE_ON 0x0000002a
-#define FFB_FBC_RGBE_MASK 0x0000003f
-
-/* Raster OP */
-#define FFB_ROP_YZ_MASK 0x008f0000
-#define FFB_ROP_X_MASK 0x00008f00
-#define FFB_ROP_RGB_MASK 0x0000008f
-
-/* Now the rops themselves which get shifted into the
- * above fields.
- */
-#define FFB_ROP_EDIT_BIT 0x80
-#define FFB_ROP_ZERO 0x80
-#define FFB_ROP_NEW_AND_OLD 0x81
-#define FFB_ROP_NEW_AND_NOLD 0x82
-#define FFB_ROP_NEW 0x83
-#define FFB_ROP_NNEW_AND_OLD 0x84
-#define FFB_ROP_OLD 0x85
-#define FFB_ROP_NEW_XOR_OLD 0x86
-#define FFB_ROP_NEW_OR_OLD 0x87
-#define FFB_ROP_NNEW_AND_NOLD 0x88
-#define FFB_ROP_NNEW_XOR_NOLD 0x89
-#define FFB_ROP_NOLD 0x8a
-#define FFB_ROP_NEW_OR_NOLD 0x8b
-#define FFB_ROP_NNEW 0x8c
-#define FFB_ROP_NNEW_OR_OLD 0x8d
-#define FFB_ROP_NNEW_OR_NOLD 0x8e
-#define FFB_ROP_ONES 0x8f
-
-/* FB Compare */
-#define FFB_CMP_MATCHC_MASK 0x8f000000
-#define FFB_CMP_MAGNC_MASK 0x00870000
-#define FFB_CMP_MATCHAB_MASK 0x0000ff00
-#define FFB_CMP_MAGNAB_MASK 0x000000ff
-
-/* Compare Match codes */
-#define FFB_CMP_MATCH_EDIT_BIT 0x80
-#define FFB_CMP_MATCH_ALWAYS 0x80
-#define FFB_CMP_MATCH_NEVER 0x81
-#define FFB_CMP_MATCH_EQ 0x82
-#define FFB_CMP_MATCH_NE 0x83
-#define FFB_CMP_MATCH_A_ALWAYS 0xc0
-#define FFB_CMP_MATCH_B_ALWAYS 0xa0
-
-/* Compare Magnitude codes */
-#define FFB_CMP_MAGN_EDIT_BIT 0x80
-#define FFB_CMP_MAGN_ALWAYS 0x80
-#define FFB_CMP_MAGN_GT 0x81
-#define FFB_CMP_MAGN_EQ 0x82
-#define FFB_CMP_MAGN_GE 0x83
-#define FFB_CMP_MAGN_NEVER 0x84
-#define FFB_CMP_MAGN_LE 0x85
-#define FFB_CMP_MAGN_NE 0x86
-#define FFB_CMP_MAGN_LT 0x87
-#define FFB_CMP_MAGN_A_ALWAYS 0xc0
-#define FFB_CMP_MAGN_B_ALWAYS 0xa0
-
-/* User Control and Status */
-#define FFB_UCSR_FIFO_MASK 0x00000fff
-#define FFB_UCSR_PICK_NO_HIT 0x00020000
-#define FFB_UCSR_PICK_HIT 0x00030000
-#define FFB_UCSR_PICK_DISABLE 0x00080000
-#define FFB_UCSR_PICK_ENABLE 0x000c0000
-#define FFB_UCSR_FB_BUSY 0x01000000
-#define FFB_UCSR_RP_BUSY 0x02000000
-#define FFB_UCSR_ALL_BUSY (FFB_UCSR_RP_BUSY|FFB_UCSR_FB_BUSY)
-#define FFB_UCSR_READ_ERR 0x40000000
-#define FFB_UCSR_FIFO_OVFL 0x80000000
-#define FFB_UCSR_ALL_ERRORS (FFB_UCSR_READ_ERR|FFB_UCSR_FIFO_OVFL)
-
-/* Mode Enable Register */
-#define FFB_MER_EIRA 0x00000080 /* Enable read-ahead, increasing */
-#define FFB_MER_EDRA 0x000000c0 /* Enable read-ahead, decreasing */
-#define FFB_MER_DRA 0x00000040 /* No read-ahead */
-
-/* FBram Config 0 */
-#define FFB_FBCFG0_RFTIME 0xff800000
-#define FFB_FBCFG0_XMAX 0x007c0000
-#define FFB_FBCFG0_YMAX 0x0003ffc0
-#define FFB_FBCFG0_RES_MASK 0x00000030
-#define FFB_FBCFG0_RES_HIGH 0x00000030 /* 1920x1360 */
-#define FFB_FBCFG0_RES_STD 0x00000020 /* 1280x1024 */
-#define FFB_FBCFG0_RES_STEREO 0x00000010 /* 960x580 */
-#define FFB_FBCFG0_RES_PRTRAIT 0x00000000 /* 1280x2048 */
-#define FFB_FBCFG0_ITRLACE 0x00000000
-#define FFB_FBCFG0_SEQUENTIAL 0x00000008
-#define FFB_FBCFG0_DRENA 0x00000004
-#define FFB_FBCFG0_BPMODE 0x00000002
-#define FFB_FBCFG0_RFRSH_RST 0x00000001
-
-typedef struct _ffb_dac {
- volatile unsigned int cfg;
- volatile unsigned int cfgdata;
- volatile unsigned int cur;
- volatile unsigned int curdata;
-} ffb_dac, *ffb_dacPtr;
-
-/* Writing 2 32-bit registers at a time using 64-bit stores. -DaveM */
-#if defined(__GNUC__) && defined(USE_VIS)
-/* 64-bit register writing support.
- * Note: "lo" means "low address".
- */
-#define FFB_WRITE64_COMMON(__regp, __lo32, __hi32, REG0, REG1) \
-do { __extension__ register unsigned int __r0 __asm__(""#REG0); \
- __extension__ register unsigned int __r1 __asm__(""#REG1); \
- __r0 = (__lo32); \
- __r1 = (__hi32); \
- __asm__ __volatile__ ("sllx\t%0, 32, %%g1\n\t" \
- "srl\t%1, 0, %1\n\t" \
- "or\t%%g1, %1, %%g1\n\t" \
- "stx\t%%g1, %2" \
- : : "r" (__r0), "r" (__r1), "m" (*(__regp)) : "g1"); \
-} while(0)
-
-#define FFB_WRITE64P(__regp, __srcp) \
-do { __asm__ __volatile__ ("ldx\t%0, %%g2;" \
- "stx\t%%g2, %1" \
- : : "m" (*(__srcp)), "m" (*(__regp)) \
- : "g2"); \
-} while(0)
-
-#define FFB_WRITE64(__regp, __lo32, __hi32) \
- FFB_WRITE64_COMMON(__regp, __lo32, __hi32, g2, g3)
-#define FFB_WRITE64_2(__regp, __lo32, __hi32) \
- FFB_WRITE64_COMMON(__regp, __lo32, __hi32, g4, g5)
-#define FFB_WRITE64_3(__regp, __lo32, __hi32) \
- FFB_WRITE64_COMMON(__regp, __lo32, __hi32, o4, o5)
-
-#else /* Do not use 64-bit writes. */
-
-#define FFB_WRITE64(__regp, __lo32, __hi32) \
-do { volatile unsigned int *__p = (__regp); \
- *__p = (__lo32); \
- *(__p + 1) = (__hi32); \
-} while(0)
-
-#define FFB_WRITE64P(__regp, __srcp) \
-do { volatile unsigned int *__p = (__regp); \
- unsigned int *__q = (__srcp); \
- *__p = *__q; \
- *(__p + 1) = *(__q + 1); \
-} while(0)
-
-#define FFB_WRITE64_2(__regp, __lo32, __hi32) \
- FFB_WRITE64(__regp, __lo32, __hi32)
-#define FFB_WRITE64_3(__regp, __lo32, __hi32) \
- FFB_WRITE64(__regp, __lo32, __hi32)
-#endif
-
-#endif /* FFBREGS_H */
diff --git a/src/mesa/drivers/dri/gamma/Makefile b/src/mesa/drivers/dri/gamma/Makefile
deleted file mode 100644
index 09df1578fc7..00000000000
--- a/src/mesa/drivers/dri/gamma/Makefile
+++ /dev/null
@@ -1,34 +0,0 @@
-# src/mesa/drivers/dri/gamma/Makefile
-
-TOP = ../../../../..
-include $(TOP)/configs/current
-
-LIBNAME = gamma_dri.so
-
-# Not yet
-# MINIGLX_SOURCES = server/gamma_dri.c
-
-DRIVER_SOURCES = \
- gamma_context.c \
- gamma_dd.c \
- gamma_inithw.c \
- gamma_lock.c \
- gamma_render.c \
- gamma_screen.c \
- gamma_span.c \
- gamma_state.c \
- gamma_tex.c \
- gamma_texmem.c \
- gamma_texstate.c \
- gamma_tris.c \
- gamma_vb.c \
- gamma_xmesa.c
-
-C_SOURCES = \
- $(COMMON_SOURCES) \
- $(DRIVER_SOURCES)
-
-ASM_SOURCES =
-
-include ../Makefile.template
-
diff --git a/src/mesa/drivers/dri/gamma/gamma_client.h b/src/mesa/drivers/dri/gamma/gamma_client.h
deleted file mode 100644
index 6dcf2e9438b..00000000000
--- a/src/mesa/drivers/dri/gamma/gamma_client.h
+++ /dev/null
@@ -1,6184 +0,0 @@
-/* Automaticallly generated -- do not edit */
-#ifndef _GLINT_CLIENT_H_
-#define _GLINT_CLIENT_H_
-/* **********************************************************************/
-/* START OF glint_extra.h INCLUSION */
-/* **********************************************************************/
-
-/* glint_extra.h
- * Created: Fri Apr 2 23:32:05 1999 by [email protected]
- * Revised: Fri Apr 2 23:33:00 1999 by [email protected]
- *
- * Copyright 1999 Precision Insight, Inc., Cedar Park, Texas.
- * 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.
- *
- *
- */
-
-#define AreaStippleEnable 0x00001
-#define LineStippleEnable 0x00002
-#define GResetLineStipple 0x00004
-#define FastFillEnable 0x00008
-#define PrimitiveLine 0x00000
-#define PrimitiveTrapezoid 0x00040
-#define PrimitivePoint 0x00080
-#define PrimitiveRectangle 0x000C0
-#define AntialiasEnable 0x00100
-#define AntialiasingQuality 0x00200
-#define UsePointTable 0x00400
-#define SyncOnBitMask 0x00800
-#define SyncOnHostData 0x01000
-#define TextureEnable 0x02000
-#define FogEnable 0x04000
-#define CoverageEnable 0x08000
-#define SubPixelCorrectionEnable 0x10000
-#define SpanOperation 0x40000
-
-
-/* **********************************************************************/
-/* END OF glint_extra.h INCLUSION */
-/* **********************************************************************/
-
-
-#define GlintResetStatus 0x0000
-#define GlintResetStatusReg 0
-#define GlintResetStatusOff 0x0000
-#define GlintResetStatusSec 0x0000
-#define GlintResetStatusSecReg 2
-#define GlintResetStatusSecOff 0x0000
-
-#define GlintIntEnable 0x0008
-#define GlintIntEnableReg 0
-#define GlintIntEnableOff 0x0008
-#define GlintIntEnableSec 0x0008
-#define GlintIntEnableSecReg 2
-#define GlintIntEnableSecOff 0x0008
-
-#define GlintIntFlags 0x0010
-#define GlintIntFlagsReg 0
-#define GlintIntFlagsOff 0x0010
-#define GlintIntFlagsSec 0x0010
-#define GlintIntFlagsSecReg 2
-#define GlintIntFlagsSecOff 0x0010
-
-#define GlintInFIFOSpace 0x0018
-#define GlintInFIFOSpaceReg 0
-#define GlintInFIFOSpaceOff 0x0018
-#define GlintInFIFOSpaceSec 0x0018
-#define GlintInFIFOSpaceSecReg 2
-#define GlintInFIFOSpaceSecOff 0x0018
-
-#define GlintOutFIFOWords 0x0020
-#define GlintOutFIFOWordsReg 0
-#define GlintOutFIFOWordsOff 0x0020
-#define GlintOutFIFOWordsSec 0x0020
-#define GlintOutFIFOWordsSecReg 2
-#define GlintOutFIFOWordsSecOff 0x0020
-
-#define GlintDMAAddress 0x0028
-#define GlintDMAAddressReg 0
-#define GlintDMAAddressOff 0x0028
-#define GlintDMAAddressSec 0x0028
-#define GlintDMAAddressSecReg 2
-#define GlintDMAAddressSecOff 0x0028
-
-#define GlintDMACount 0x0030
-#define GlintDMACountReg 0
-#define GlintDMACountOff 0x0030
-#define GlintDMACountSec 0x0030
-#define GlintDMACountSecReg 2
-#define GlintDMACountSecOff 0x0030
-
-#define GlintErrorFlags 0x0038
-#define GlintErrorFlagsReg 0
-#define GlintErrorFlagsOff 0x0038
-#define GlintErrorFlagsSec 0x0038
-#define GlintErrorFlagsSecReg 2
-#define GlintErrorFlagsSecOff 0x0038
-
-#define GlintVClkCtl 0x0040
-#define GlintVClkCtlReg 0
-#define GlintVClkCtlOff 0x0040
-#define GlintVClkCtlSec 0x0040
-#define GlintVClkCtlSecReg 2
-#define GlintVClkCtlSecOff 0x0040
-
-#define GlintTestRegister 0x0048
-#define GlintTestRegisterReg 0
-#define GlintTestRegisterOff 0x0048
-#define GlintTestRegisterSec 0x0048
-#define GlintTestRegisterSecReg 2
-#define GlintTestRegisterSecOff 0x0048
-
-#define GlintAperture0 0x0050
-#define GlintAperture0Reg 0
-#define GlintAperture0Off 0x0050
-#define GlintAperture0Sec 0x0050
-#define GlintAperture0SecReg 2
-#define GlintAperture0SecOff 0x0050
-
-#define GlintAperture1 0x0058
-#define GlintAperture1Reg 0
-#define GlintAperture1Off 0x0058
-#define GlintAperture1Sec 0x0058
-#define GlintAperture1SecReg 2
-#define GlintAperture1SecOff 0x0058
-
-#define GlintDMAControl 0x0060
-#define GlintDMAControlReg 0
-#define GlintDMAControlOff 0x0060
-#define GlintDMAControlSec 0x0060
-#define GlintDMAControlSecReg 2
-#define GlintDMAControlSecOff 0x0060
-
-#define GlintFIFODis 0x0068
-#define GlintFIFODisReg 0
-#define GlintFIFODisOff 0x0068
-#define GlintFIFODisSec 0x0068
-#define GlintFIFODisSecReg 2
-#define GlintFIFODisSecOff 0x0068
-
-#define GlintLBMemoryCtl 0x1000
-#define GlintLBMemoryCtlReg 1
-#define GlintLBMemoryCtlOff 0x0000
-#define GlintLBMemoryCtlSec 0x1000
-#define GlintLBMemoryCtlSecReg 3
-#define GlintLBMemoryCtlSecOff 0x0000
-
-#define GlintLBMemoryEDO 0x1008
-#define GlintLBMemoryEDOReg 1
-#define GlintLBMemoryEDOOff 0x0008
-#define GlintLBMemoryEDOSec 0x1008
-#define GlintLBMemoryEDOSecReg 3
-#define GlintLBMemoryEDOSecOff 0x0008
-
-#define GlintFBMemoryCtl 0x1800
-#define GlintFBMemoryCtlReg 1
-#define GlintFBMemoryCtlOff 0x0800
-#define GlintFBMemoryCtlSec 0x1800
-#define GlintFBMemoryCtlSecReg 3
-#define GlintFBMemoryCtlSecOff 0x0800
-
-#define GlintFBModeSel 0x1808
-#define GlintFBModeSelReg 1
-#define GlintFBModeSelOff 0x0808
-#define GlintFBModeSelSec 0x1808
-#define GlintFBModeSelSecReg 3
-#define GlintFBModeSelSecOff 0x0808
-
-#define GlintFBGCWrMask 0x1810
-#define GlintFBGCWrMaskReg 1
-#define GlintFBGCWrMaskOff 0x0810
-#define GlintFBGCWrMaskSec 0x1810
-#define GlintFBGCWrMaskSecReg 3
-#define GlintFBGCWrMaskSecOff 0x0810
-
-#define GlintFBGCColorLower 0x1818
-#define GlintFBGCColorLowerReg 1
-#define GlintFBGCColorLowerOff 0x0818
-#define GlintFBGCColorLowerSec 0x1818
-#define GlintFBGCColorLowerSecReg 3
-#define GlintFBGCColorLowerSecOff 0x0818
-
-#define GlintFBTXMemCtl 0x1820
-#define GlintFBTXMemCtlReg 1
-#define GlintFBTXMemCtlOff 0x0820
-#define GlintFBTXMemCtlSec 0x1820
-#define GlintFBTXMemCtlSecReg 3
-#define GlintFBTXMemCtlSecOff 0x0820
-
-#define GlintFBWrMask 0x1830
-#define GlintFBWrMaskReg 1
-#define GlintFBWrMaskOff 0x0830
-#define GlintFBWrMaskSec 0x1830
-#define GlintFBWrMaskSecReg 3
-#define GlintFBWrMaskSecOff 0x0830
-
-#define GlintFBGCColorUpper 0x1838
-#define GlintFBGCColorUpperReg 1
-#define GlintFBGCColorUpperOff 0x0838
-#define GlintFBGCColorUpperSec 0x1838
-#define GlintFBGCColorUpperSecReg 3
-#define GlintFBGCColorUpperSecOff 0x0838
-
-#define GlintVTGHLimit 0x3000
-#define GlintVTGHLimitReg 1
-#define GlintVTGHLimitOff 0x2000
-#define GlintVTGHLimitSec 0x3000
-#define GlintVTGHLimitSecReg 3
-#define GlintVTGHLimitSecOff 0x2000
-
-#define GlintVTGHSyncStart 0x3008
-#define GlintVTGHSyncStartReg 1
-#define GlintVTGHSyncStartOff 0x2008
-#define GlintVTGHSyncStartSec 0x3008
-#define GlintVTGHSyncStartSecReg 3
-#define GlintVTGHSyncStartSecOff 0x2008
-
-#define GlintVTGHSyncEnd 0x3010
-#define GlintVTGHSyncEndReg 1
-#define GlintVTGHSyncEndOff 0x2010
-#define GlintVTGHSyncEndSec 0x3010
-#define GlintVTGHSyncEndSecReg 3
-#define GlintVTGHSyncEndSecOff 0x2010
-
-#define GlintVTGHBlankEnd 0x3018
-#define GlintVTGHBlankEndReg 1
-#define GlintVTGHBlankEndOff 0x2018
-#define GlintVTGHBlankEndSec 0x3018
-#define GlintVTGHBlankEndSecReg 3
-#define GlintVTGHBlankEndSecOff 0x2018
-
-#define GlintVTGVLimit 0x3020
-#define GlintVTGVLimitReg 1
-#define GlintVTGVLimitOff 0x2020
-#define GlintVTGVLimitSec 0x3020
-#define GlintVTGVLimitSecReg 3
-#define GlintVTGVLimitSecOff 0x2020
-
-#define GlintVTGVSyncStart 0x3028
-#define GlintVTGVSyncStartReg 1
-#define GlintVTGVSyncStartOff 0x2028
-#define GlintVTGVSyncStartSec 0x3028
-#define GlintVTGVSyncStartSecReg 3
-#define GlintVTGVSyncStartSecOff 0x2028
-
-#define GlintVTGVSyncEnd 0x3030
-#define GlintVTGVSyncEndReg 1
-#define GlintVTGVSyncEndOff 0x2030
-#define GlintVTGVSyncEndSec 0x3030
-#define GlintVTGVSyncEndSecReg 3
-#define GlintVTGVSyncEndSecOff 0x2030
-
-#define GlintVTGVBlankEnd 0x3038
-#define GlintVTGVBlankEndReg 1
-#define GlintVTGVBlankEndOff 0x2038
-#define GlintVTGVBlankEndSec 0x3038
-#define GlintVTGVBlankEndSecReg 3
-#define GlintVTGVBlankEndSecOff 0x2038
-
-#define GlintVTGHGateStart 0x3040
-#define GlintVTGHGateStartReg 1
-#define GlintVTGHGateStartOff 0x2040
-#define GlintVTGHGateStartSec 0x3040
-#define GlintVTGHGateStartSecReg 3
-#define GlintVTGHGateStartSecOff 0x2040
-
-#define GlintVTGHGateEnd 0x3048
-#define GlintVTGHGateEndReg 1
-#define GlintVTGHGateEndOff 0x2048
-#define GlintVTGHGateEndSec 0x3048
-#define GlintVTGHGateEndSecReg 3
-#define GlintVTGHGateEndSecOff 0x2048
-
-#define GlintVTGVGateStart 0x3050
-#define GlintVTGVGateStartReg 1
-#define GlintVTGVGateStartOff 0x2050
-#define GlintVTGVGateStartSec 0x3050
-#define GlintVTGVGateStartSecReg 3
-#define GlintVTGVGateStartSecOff 0x2050
-
-#define GlintVTGVGateEnd 0x3058
-#define GlintVTGVGateEndReg 1
-#define GlintVTGVGateEndOff 0x2058
-#define GlintVTGVGateEndSec 0x3058
-#define GlintVTGVGateEndSecReg 3
-#define GlintVTGVGateEndSecOff 0x2058
-
-#define GlintVTGPolarity 0x3060
-#define GlintVTGPolarityReg 1
-#define GlintVTGPolarityOff 0x2060
-#define GlintVTGPolaritySec 0x3060
-#define GlintVTGPolaritySecReg 3
-#define GlintVTGPolaritySecOff 0x2060
-
-#define GlintVTGFrameRowAddr 0x3068
-#define GlintVTGFrameRowAddrReg 1
-#define GlintVTGFrameRowAddrOff 0x2068
-#define GlintVTGFrameRowAddrSec 0x3068
-#define GlintVTGFrameRowAddrSecReg 3
-#define GlintVTGFrameRowAddrSecOff 0x2068
-
-#define GlintVTGVLineNumber 0x3070
-#define GlintVTGVLineNumberReg 1
-#define GlintVTGVLineNumberOff 0x2070
-#define GlintVTGVLineNumberSec 0x3070
-#define GlintVTGVLineNumberSecReg 3
-#define GlintVTGVLineNumberSecOff 0x2070
-
-#define GlintVTGSerialClk 0x3078
-#define GlintVTGSerialClkReg 1
-#define GlintVTGSerialClkOff 0x2078
-#define GlintVTGSerialClkSec 0x3078
-#define GlintVTGSerialClkSecReg 3
-#define GlintVTGSerialClkSecOff 0x2078
-
-#define GlintVTGModeCtl 0x3080
-#define GlintVTGModeCtlReg 1
-#define GlintVTGModeCtlOff 0x2080
-#define GlintVTGModeCtlSec 0x3080
-#define GlintVTGModeCtlSecReg 3
-#define GlintVTGModeCtlSecOff 0x2080
-
-#define GlintOutputFIFO 0x2000
-#define GlintOutputFIFOReg 1
-#define GlintOutputFIFOOff 0x1000
-#define GlintOutputFIFOSec 0x2000
-#define GlintOutputFIFOSecReg 3
-#define GlintOutputFIFOSecOff 0x1000
-
-#define GlintGInFIFOSpace 0x0018
-#define GlintGInFIFOSpaceReg 0
-#define GlintGInFIFOSpaceOff 0x0018
-
-#define GlintGDMAAddress 0x0028
-#define GlintGDMAAddressReg 0
-#define GlintGDMAAddressOff 0x0028
-
-#define GlintGDMACount 0x0030
-#define GlintGDMACountReg 0
-#define GlintGDMACountOff 0x0030
-
-#define GlintGDMAControl 0x0060
-#define GlintGDMAControlReg 0
-#define GlintGDMAControlOff 0x0060
-
-#define GlintGOutDMA 0x0080
-#define GlintGOutDMAReg 0
-#define GlintGOutDMAOff 0x0080
-
-#define GlintGOutDMACount 0x0088
-#define GlintGOutDMACountReg 0
-#define GlintGOutDMACountOff 0x0088
-
-#define GlintGResetStatus 0x0800
-#define GlintGResetStatusReg 0
-#define GlintGResetStatusOff 0x0800
-
-#define GlintGIntEnable 0x0808
-#define GlintGIntEnableReg 0
-#define GlintGIntEnableOff 0x0808
-
-#define GlintGIntFlags 0x0810
-#define GlintGIntFlagsReg 0
-#define GlintGIntFlagsOff 0x0810
-
-#define GlintGErrorFlags 0x0838
-#define GlintGErrorFlagsReg 0
-#define GlintGErrorFlagsOff 0x0838
-
-#define GlintGTestRegister 0x0848
-#define GlintGTestRegisterReg 0
-#define GlintGTestRegisterOff 0x0848
-
-#define GlintGFIFODis 0x0868
-#define GlintGFIFODisReg 0
-#define GlintGFIFODisOff 0x0868
-
-#define GlintGChipConfig 0x0870
-#define GlintGChipConfigReg 0
-#define GlintGChipConfigOff 0x0870
-
-#define GlintGCSRAperture 0x0878
-#define GlintGCSRApertureReg 0
-#define GlintGCSRApertureOff 0x0878
-
-#define GlintGPageTableAddr 0x0c00
-#define GlintGPageTableAddrReg 0
-#define GlintGPageTableAddrOff 0x0c00
-
-#define GlintGPageTableLength 0x0c08
-#define GlintGPageTableLengthReg 0
-#define GlintGPageTableLengthOff 0x0c08
-
-#define GlintGDelayTimer 0x0c38
-#define GlintGDelayTimerReg 0
-#define GlintGDelayTimerOff 0x0c38
-
-#define GlintGCommandMode 0x0c40
-#define GlintGCommandModeReg 0
-#define GlintGCommandModeOff 0x0c40
-
-#define GlintGCommandIntEnable 0x0c48
-#define GlintGCommandIntEnableReg 0
-#define GlintGCommandIntEnableOff 0x0c48
-
-#define GlintGCommandIntFlags 0x0c50
-#define GlintGCommandIntFlagsReg 0
-#define GlintGCommandIntFlagsOff 0x0c50
-
-#define GlintGCommandErrorFlags 0x0c58
-#define GlintGCommandErrorFlagsReg 0
-#define GlintGCommandErrorFlagsOff 0x0c58
-
-#define GlintGCommandStatus 0x0c60
-#define GlintGCommandStatusReg 0
-#define GlintGCommandStatusOff 0x0c60
-
-#define GlintGCommandFaultingAddr 0x0c68
-#define GlintGCommandFaultingAddrReg 0
-#define GlintGCommandFaultingAddrOff 0x0c68
-
-#define GlintGVertexFaultingAddr 0x0c70
-#define GlintGVertexFaultingAddrReg 0
-#define GlintGVertexFaultingAddrOff 0x0c70
-
-#define GlintGWriteFaultingAddr 0x0c88
-#define GlintGWriteFaultingAddrReg 0
-#define GlintGWriteFaultingAddrOff 0x0c88
-
-#define GlintGFeedbackSelectCount 0x0c98
-#define GlintGFeedbackSelectCountReg 0
-#define GlintGFeedbackSelectCountOff 0x0c98
-
-#define GlintGGammaProcessorMode 0x0cb8
-#define GlintGGammaProcessorModeReg 0
-#define GlintGGammaProcessorModeOff 0x0cb8
-
-#define GlintGVGAShadow 0x0d00
-#define GlintGVGAShadowReg 0
-#define GlintGVGAShadowOff 0x0d00
-
-#define GlintGMultGLINTAperture 0x0d08
-#define GlintGMultGLINTApertureReg 0
-#define GlintGMultGLINTApertureOff 0x0d08
-
-#define GlintGMultGLINT1 0x0d10
-#define GlintGMultGLINT1Reg 0
-#define GlintGMultGLINT1Off 0x0d10
-
-#define GlintGMultGLINT2 0x0d18
-#define GlintGMultGLINT2Reg 0
-#define GlintGMultGLINT2Off 0x0d18
-
-#define GlintStartXDom 0x8000
-#define GlintStartXDomTag 0x0000
-#define GlintStartXDomReg 1
-#define GlintStartXDomOff 0x7000
-#define GlintStartXDomSec 0x8000
-#define GlintStartXDomSecReg 3
-#define GlintStartXDomSecOff 0x7000
-
-#define GlintdXDom 0x8008
-#define GlintdXDomTag 0x0001
-#define GlintdXDomReg 1
-#define GlintdXDomOff 0x7008
-#define GlintdXDomSec 0x8008
-#define GlintdXDomSecReg 3
-#define GlintdXDomSecOff 0x7008
-
-#define GlintStartXSub 0x8010
-#define GlintStartXSubTag 0x0002
-#define GlintStartXSubReg 1
-#define GlintStartXSubOff 0x7010
-#define GlintStartXSubSec 0x8010
-#define GlintStartXSubSecReg 3
-#define GlintStartXSubSecOff 0x7010
-
-#define GlintdXSub 0x8018
-#define GlintdXSubTag 0x0003
-#define GlintdXSubReg 1
-#define GlintdXSubOff 0x7018
-#define GlintdXSubSec 0x8018
-#define GlintdXSubSecReg 3
-#define GlintdXSubSecOff 0x7018
-
-#define GlintStartY 0x8020
-#define GlintStartYTag 0x0004
-#define GlintStartYReg 1
-#define GlintStartYOff 0x7020
-#define GlintStartYSec 0x8020
-#define GlintStartYSecReg 3
-#define GlintStartYSecOff 0x7020
-
-#define GlintdY 0x8028
-#define GlintdYTag 0x0005
-#define GlintdYReg 1
-#define GlintdYOff 0x7028
-#define GlintdYSec 0x8028
-#define GlintdYSecReg 3
-#define GlintdYSecOff 0x7028
-
-#define GlintGLINTCount 0x8030
-#define GlintGLINTCountTag 0x0006
-#define GlintGLINTCountReg 1
-#define GlintGLINTCountOff 0x7030
-#define GlintGLINTCountSec 0x8030
-#define GlintGLINTCountSecReg 3
-#define GlintGLINTCountSecOff 0x7030
-
-#define GlintRender 0x8038
-#define GlintRenderTag 0x0007
-#define GlintRenderReg 1
-#define GlintRenderOff 0x7038
-#define GlintRenderSec 0x8038
-#define GlintRenderSecReg 3
-#define GlintRenderSecOff 0x7038
-
-#define GlintContinueNewLine 0x8040
-#define GlintContinueNewLineTag 0x0008
-#define GlintContinueNewLineReg 1
-#define GlintContinueNewLineOff 0x7040
-#define GlintContinueNewLineSec 0x8040
-#define GlintContinueNewLineSecReg 3
-#define GlintContinueNewLineSecOff 0x7040
-
-#define GlintContinueNewDom 0x8048
-#define GlintContinueNewDomTag 0x0009
-#define GlintContinueNewDomReg 1
-#define GlintContinueNewDomOff 0x7048
-#define GlintContinueNewDomSec 0x8048
-#define GlintContinueNewDomSecReg 3
-#define GlintContinueNewDomSecOff 0x7048
-
-#define GlintContinueNewSub 0x8050
-#define GlintContinueNewSubTag 0x000a
-#define GlintContinueNewSubReg 1
-#define GlintContinueNewSubOff 0x7050
-#define GlintContinueNewSubSec 0x8050
-#define GlintContinueNewSubSecReg 3
-#define GlintContinueNewSubSecOff 0x7050
-
-#define GlintContinue 0x8058
-#define GlintContinueTag 0x000b
-#define GlintContinueReg 1
-#define GlintContinueOff 0x7058
-#define GlintContinueSec 0x8058
-#define GlintContinueSecReg 3
-#define GlintContinueSecOff 0x7058
-
-#define GlintFlushSpan 0x8060
-#define GlintFlushSpanTag 0x000c
-#define GlintFlushSpanReg 1
-#define GlintFlushSpanOff 0x7060
-#define GlintFlushSpanSec 0x8060
-#define GlintFlushSpanSecReg 3
-#define GlintFlushSpanSecOff 0x7060
-
-#define GlintBitMaskPattern 0x8068
-#define GlintBitMaskPatternTag 0x000d
-#define GlintBitMaskPatternReg 1
-#define GlintBitMaskPatternOff 0x7068
-#define GlintBitMaskPatternSec 0x8068
-#define GlintBitMaskPatternSecReg 3
-#define GlintBitMaskPatternSecOff 0x7068
-
-#define GlintPointTable0 0x8080
-#define GlintPointTable0Tag 0x0010
-#define GlintPointTable0Reg 1
-#define GlintPointTable0Off 0x7080
-#define GlintPointTable0Sec 0x8080
-#define GlintPointTable0SecReg 3
-#define GlintPointTable0SecOff 0x7080
-
-#define GlintPointTable1 0x8088
-#define GlintPointTable1Tag 0x0011
-#define GlintPointTable1Reg 1
-#define GlintPointTable1Off 0x7088
-#define GlintPointTable1Sec 0x8088
-#define GlintPointTable1SecReg 3
-#define GlintPointTable1SecOff 0x7088
-
-#define GlintPointTable2 0x8090
-#define GlintPointTable2Tag 0x0012
-#define GlintPointTable2Reg 1
-#define GlintPointTable2Off 0x7090
-#define GlintPointTable2Sec 0x8090
-#define GlintPointTable2SecReg 3
-#define GlintPointTable2SecOff 0x7090
-
-#define GlintPointTable3 0x8098
-#define GlintPointTable3Tag 0x0013
-#define GlintPointTable3Reg 1
-#define GlintPointTable3Off 0x7098
-#define GlintPointTable3Sec 0x8098
-#define GlintPointTable3SecReg 3
-#define GlintPointTable3SecOff 0x7098
-
-#define GlintRasterizerMode 0x80a0
-#define GlintRasterizerModeTag 0x0014
-#define GlintRasterizerModeReg 1
-#define GlintRasterizerModeOff 0x70a0
-#define GlintRasterizerModeSec 0x80a0
-#define GlintRasterizerModeSecReg 3
-#define GlintRasterizerModeSecOff 0x70a0
-
-#define GlintYLimits 0x80a8
-#define GlintYLimitsTag 0x0015
-#define GlintYLimitsReg 1
-#define GlintYLimitsOff 0x70a8
-#define GlintYLimitsSec 0x80a8
-#define GlintYLimitsSecReg 3
-#define GlintYLimitsSecOff 0x70a8
-
-#define GlintScanLineOwnership 0x80b0
-#define GlintScanLineOwnershipTag 0x0016
-#define GlintScanLineOwnershipReg 1
-#define GlintScanLineOwnershipOff 0x70b0
-#define GlintScanLineOwnershipSec 0x80b0
-#define GlintScanLineOwnershipSecReg 3
-#define GlintScanLineOwnershipSecOff 0x70b0
-
-#define GlintWaitForCompletion 0x80b8
-#define GlintWaitForCompletionTag 0x0017
-#define GlintWaitForCompletionReg 1
-#define GlintWaitForCompletionOff 0x70b8
-#define GlintWaitForCompletionSec 0x80b8
-#define GlintWaitForCompletionSecReg 3
-#define GlintWaitForCompletionSecOff 0x70b8
-
-#define GlintPixelSize 0x80c0
-#define GlintPixelSizeTag 0x0018
-#define GlintPixelSizeReg 1
-#define GlintPixelSizeOff 0x70c0
-#define GlintPixelSizeSec 0x80c0
-#define GlintPixelSizeSecReg 3
-#define GlintPixelSizeSecOff 0x70c0
-
-#define GlintScissorMode 0x8180
-#define GlintScissorModeTag 0x0030
-#define GlintScissorModeReg 1
-#define GlintScissorModeOff 0x7180
-#define GlintScissorModeSec 0x8180
-#define GlintScissorModeSecReg 3
-#define GlintScissorModeSecOff 0x7180
-
-#define GlintScissorMinXY 0x8188
-#define GlintScissorMinXYTag 0x0031
-#define GlintScissorMinXYReg 1
-#define GlintScissorMinXYOff 0x7188
-#define GlintScissorMinXYSec 0x8188
-#define GlintScissorMinXYSecReg 3
-#define GlintScissorMinXYSecOff 0x7188
-
-#define GlintScissorMaxXY 0x8190
-#define GlintScissorMaxXYTag 0x0032
-#define GlintScissorMaxXYReg 1
-#define GlintScissorMaxXYOff 0x7190
-#define GlintScissorMaxXYSec 0x8190
-#define GlintScissorMaxXYSecReg 3
-#define GlintScissorMaxXYSecOff 0x7190
-
-#define GlintScreenSize 0x8198
-#define GlintScreenSizeTag 0x0033
-#define GlintScreenSizeReg 1
-#define GlintScreenSizeOff 0x7198
-#define GlintScreenSizeSec 0x8198
-#define GlintScreenSizeSecReg 3
-#define GlintScreenSizeSecOff 0x7198
-
-#define GlintAreaStippleMode 0x81a0
-#define GlintAreaStippleModeTag 0x0034
-#define GlintAreaStippleModeReg 1
-#define GlintAreaStippleModeOff 0x71a0
-#define GlintAreaStippleModeSec 0x81a0
-#define GlintAreaStippleModeSecReg 3
-#define GlintAreaStippleModeSecOff 0x71a0
-
-#define GlintLineStippleMode 0x81a8
-#define GlintLineStippleModeTag 0x0035
-#define GlintLineStippleModeReg 1
-#define GlintLineStippleModeOff 0x71a8
-#define GlintLineStippleModeSec 0x81a8
-#define GlintLineStippleModeSecReg 3
-#define GlintLineStippleModeSecOff 0x71a8
-
-#define GlintLoadLineStippleCounters 0x81b0
-#define GlintLoadLineStippleCountersTag 0x0036
-#define GlintLoadLineStippleCountersReg 1
-#define GlintLoadLineStippleCountersOff 0x71b0
-#define GlintLoadLineStippleCountersSec 0x81b0
-#define GlintLoadLineStippleCountersSecReg 3
-#define GlintLoadLineStippleCountersSecOff 0x71b0
-
-#define GlintUpdateLineStippleCounters 0x81b8
-#define GlintUpdateLineStippleCountersTag 0x0037
-#define GlintUpdateLineStippleCountersReg 1
-#define GlintUpdateLineStippleCountersOff 0x71b8
-#define GlintUpdateLineStippleCountersSec 0x81b8
-#define GlintUpdateLineStippleCountersSecReg 3
-#define GlintUpdateLineStippleCountersSecOff 0x71b8
-
-#define GlintSaveLineStippleState 0x81c0
-#define GlintSaveLineStippleStateTag 0x0038
-#define GlintSaveLineStippleStateReg 1
-#define GlintSaveLineStippleStateOff 0x71c0
-#define GlintSaveLineStippleStateSec 0x81c0
-#define GlintSaveLineStippleStateSecReg 3
-#define GlintSaveLineStippleStateSecOff 0x71c0
-
-#define GlintWindowOrigin 0x81c8
-#define GlintWindowOriginTag 0x0039
-#define GlintWindowOriginReg 1
-#define GlintWindowOriginOff 0x71c8
-#define GlintWindowOriginSec 0x81c8
-#define GlintWindowOriginSecReg 3
-#define GlintWindowOriginSecOff 0x71c8
-
-#define GlintAreaStipplePattern0 0x8200
-#define GlintAreaStipplePattern0Tag 0x0040
-#define GlintAreaStipplePattern0Reg 1
-#define GlintAreaStipplePattern0Off 0x7200
-#define GlintAreaStipplePattern0Sec 0x8200
-#define GlintAreaStipplePattern0SecReg 3
-#define GlintAreaStipplePattern0SecOff 0x7200
-
-#define GlintAreaStipplePattern1 0x8208
-#define GlintAreaStipplePattern1Tag 0x0041
-#define GlintAreaStipplePattern1Reg 1
-#define GlintAreaStipplePattern1Off 0x7208
-#define GlintAreaStipplePattern1Sec 0x8208
-#define GlintAreaStipplePattern1SecReg 3
-#define GlintAreaStipplePattern1SecOff 0x7208
-
-#define GlintAreaStipplePattern2 0x8210
-#define GlintAreaStipplePattern2Tag 0x0042
-#define GlintAreaStipplePattern2Reg 1
-#define GlintAreaStipplePattern2Off 0x7210
-#define GlintAreaStipplePattern2Sec 0x8210
-#define GlintAreaStipplePattern2SecReg 3
-#define GlintAreaStipplePattern2SecOff 0x7210
-
-#define GlintAreaStipplePattern3 0x8218
-#define GlintAreaStipplePattern3Tag 0x0043
-#define GlintAreaStipplePattern3Reg 1
-#define GlintAreaStipplePattern3Off 0x7218
-#define GlintAreaStipplePattern3Sec 0x8218
-#define GlintAreaStipplePattern3SecReg 3
-#define GlintAreaStipplePattern3SecOff 0x7218
-
-#define GlintAreaStipplePattern4 0x8220
-#define GlintAreaStipplePattern4Tag 0x0044
-#define GlintAreaStipplePattern4Reg 1
-#define GlintAreaStipplePattern4Off 0x7220
-#define GlintAreaStipplePattern4Sec 0x8220
-#define GlintAreaStipplePattern4SecReg 3
-#define GlintAreaStipplePattern4SecOff 0x7220
-
-#define GlintAreaStipplePattern5 0x8228
-#define GlintAreaStipplePattern5Tag 0x0045
-#define GlintAreaStipplePattern5Reg 1
-#define GlintAreaStipplePattern5Off 0x7228
-#define GlintAreaStipplePattern5Sec 0x8228
-#define GlintAreaStipplePattern5SecReg 3
-#define GlintAreaStipplePattern5SecOff 0x7228
-
-#define GlintAreaStipplePattern6 0x8230
-#define GlintAreaStipplePattern6Tag 0x0046
-#define GlintAreaStipplePattern6Reg 1
-#define GlintAreaStipplePattern6Off 0x7230
-#define GlintAreaStipplePattern6Sec 0x8230
-#define GlintAreaStipplePattern6SecReg 3
-#define GlintAreaStipplePattern6SecOff 0x7230
-
-#define GlintAreaStipplePattern7 0x8238
-#define GlintAreaStipplePattern7Tag 0x0047
-#define GlintAreaStipplePattern7Reg 1
-#define GlintAreaStipplePattern7Off 0x7238
-#define GlintAreaStipplePattern7Sec 0x8238
-#define GlintAreaStipplePattern7SecReg 3
-#define GlintAreaStipplePattern7SecOff 0x7238
-
-#define GlintAreaStipplePattern8 0x8240
-#define GlintAreaStipplePattern8Tag 0x0048
-#define GlintAreaStipplePattern8Reg 1
-#define GlintAreaStipplePattern8Off 0x7240
-#define GlintAreaStipplePattern8Sec 0x8240
-#define GlintAreaStipplePattern8SecReg 3
-#define GlintAreaStipplePattern8SecOff 0x7240
-
-#define GlintAreaStipplePattern9 0x8248
-#define GlintAreaStipplePattern9Tag 0x0049
-#define GlintAreaStipplePattern9Reg 1
-#define GlintAreaStipplePattern9Off 0x7248
-#define GlintAreaStipplePattern9Sec 0x8248
-#define GlintAreaStipplePattern9SecReg 3
-#define GlintAreaStipplePattern9SecOff 0x7248
-
-#define GlintAreaStipplePattern10 0x8250
-#define GlintAreaStipplePattern10Tag 0x004a
-#define GlintAreaStipplePattern10Reg 1
-#define GlintAreaStipplePattern10Off 0x7250
-#define GlintAreaStipplePattern10Sec 0x8250
-#define GlintAreaStipplePattern10SecReg 3
-#define GlintAreaStipplePattern10SecOff 0x7250
-
-#define GlintAreaStipplePattern11 0x8258
-#define GlintAreaStipplePattern11Tag 0x004b
-#define GlintAreaStipplePattern11Reg 1
-#define GlintAreaStipplePattern11Off 0x7258
-#define GlintAreaStipplePattern11Sec 0x8258
-#define GlintAreaStipplePattern11SecReg 3
-#define GlintAreaStipplePattern11SecOff 0x7258
-
-#define GlintAreaStipplePattern12 0x8260
-#define GlintAreaStipplePattern12Tag 0x004c
-#define GlintAreaStipplePattern12Reg 1
-#define GlintAreaStipplePattern12Off 0x7260
-#define GlintAreaStipplePattern12Sec 0x8260
-#define GlintAreaStipplePattern12SecReg 3
-#define GlintAreaStipplePattern12SecOff 0x7260
-
-#define GlintAreaStipplePattern13 0x8268
-#define GlintAreaStipplePattern13Tag 0x004d
-#define GlintAreaStipplePattern13Reg 1
-#define GlintAreaStipplePattern13Off 0x7268
-#define GlintAreaStipplePattern13Sec 0x8268
-#define GlintAreaStipplePattern13SecReg 3
-#define GlintAreaStipplePattern13SecOff 0x7268
-
-#define GlintAreaStipplePattern14 0x8270
-#define GlintAreaStipplePattern14Tag 0x004e
-#define GlintAreaStipplePattern14Reg 1
-#define GlintAreaStipplePattern14Off 0x7270
-#define GlintAreaStipplePattern14Sec 0x8270
-#define GlintAreaStipplePattern14SecReg 3
-#define GlintAreaStipplePattern14SecOff 0x7270
-
-#define GlintAreaStipplePattern15 0x8278
-#define GlintAreaStipplePattern15Tag 0x004f
-#define GlintAreaStipplePattern15Reg 1
-#define GlintAreaStipplePattern15Off 0x7278
-#define GlintAreaStipplePattern15Sec 0x8278
-#define GlintAreaStipplePattern15SecReg 3
-#define GlintAreaStipplePattern15SecOff 0x7278
-
-#define GlintAreaStipplePattern16 0x8280
-#define GlintAreaStipplePattern16Tag 0x0050
-#define GlintAreaStipplePattern16Reg 1
-#define GlintAreaStipplePattern16Off 0x7280
-#define GlintAreaStipplePattern16Sec 0x8280
-#define GlintAreaStipplePattern16SecReg 3
-#define GlintAreaStipplePattern16SecOff 0x7280
-
-#define GlintAreaStipplePattern17 0x8288
-#define GlintAreaStipplePattern17Tag 0x0051
-#define GlintAreaStipplePattern17Reg 1
-#define GlintAreaStipplePattern17Off 0x7288
-#define GlintAreaStipplePattern17Sec 0x8288
-#define GlintAreaStipplePattern17SecReg 3
-#define GlintAreaStipplePattern17SecOff 0x7288
-
-#define GlintAreaStipplePattern18 0x8290
-#define GlintAreaStipplePattern18Tag 0x0052
-#define GlintAreaStipplePattern18Reg 1
-#define GlintAreaStipplePattern18Off 0x7290
-#define GlintAreaStipplePattern18Sec 0x8290
-#define GlintAreaStipplePattern18SecReg 3
-#define GlintAreaStipplePattern18SecOff 0x7290
-
-#define GlintAreaStipplePattern19 0x8298
-#define GlintAreaStipplePattern19Tag 0x0053
-#define GlintAreaStipplePattern19Reg 1
-#define GlintAreaStipplePattern19Off 0x7298
-#define GlintAreaStipplePattern19Sec 0x8298
-#define GlintAreaStipplePattern19SecReg 3
-#define GlintAreaStipplePattern19SecOff 0x7298
-
-#define GlintAreaStipplePattern20 0x82a0
-#define GlintAreaStipplePattern20Tag 0x0054
-#define GlintAreaStipplePattern20Reg 1
-#define GlintAreaStipplePattern20Off 0x72a0
-#define GlintAreaStipplePattern20Sec 0x82a0
-#define GlintAreaStipplePattern20SecReg 3
-#define GlintAreaStipplePattern20SecOff 0x72a0
-
-#define GlintAreaStipplePattern21 0x82a8
-#define GlintAreaStipplePattern21Tag 0x0055
-#define GlintAreaStipplePattern21Reg 1
-#define GlintAreaStipplePattern21Off 0x72a8
-#define GlintAreaStipplePattern21Sec 0x82a8
-#define GlintAreaStipplePattern21SecReg 3
-#define GlintAreaStipplePattern21SecOff 0x72a8
-
-#define GlintAreaStipplePattern22 0x82b0
-#define GlintAreaStipplePattern22Tag 0x0056
-#define GlintAreaStipplePattern22Reg 1
-#define GlintAreaStipplePattern22Off 0x72b0
-#define GlintAreaStipplePattern22Sec 0x82b0
-#define GlintAreaStipplePattern22SecReg 3
-#define GlintAreaStipplePattern22SecOff 0x72b0
-
-#define GlintAreaStipplePattern23 0x82b8
-#define GlintAreaStipplePattern23Tag 0x0057
-#define GlintAreaStipplePattern23Reg 1
-#define GlintAreaStipplePattern23Off 0x72b8
-#define GlintAreaStipplePattern23Sec 0x82b8
-#define GlintAreaStipplePattern23SecReg 3
-#define GlintAreaStipplePattern23SecOff 0x72b8
-
-#define GlintAreaStipplePattern24 0x82c0
-#define GlintAreaStipplePattern24Tag 0x0058
-#define GlintAreaStipplePattern24Reg 1
-#define GlintAreaStipplePattern24Off 0x72c0
-#define GlintAreaStipplePattern24Sec 0x82c0
-#define GlintAreaStipplePattern24SecReg 3
-#define GlintAreaStipplePattern24SecOff 0x72c0
-
-#define GlintAreaStipplePattern25 0x82c8
-#define GlintAreaStipplePattern25Tag 0x0059
-#define GlintAreaStipplePattern25Reg 1
-#define GlintAreaStipplePattern25Off 0x72c8
-#define GlintAreaStipplePattern25Sec 0x82c8
-#define GlintAreaStipplePattern25SecReg 3
-#define GlintAreaStipplePattern25SecOff 0x72c8
-
-#define GlintAreaStipplePattern26 0x82d0
-#define GlintAreaStipplePattern26Tag 0x005a
-#define GlintAreaStipplePattern26Reg 1
-#define GlintAreaStipplePattern26Off 0x72d0
-#define GlintAreaStipplePattern26Sec 0x82d0
-#define GlintAreaStipplePattern26SecReg 3
-#define GlintAreaStipplePattern26SecOff 0x72d0
-
-#define GlintAreaStipplePattern27 0x82d8
-#define GlintAreaStipplePattern27Tag 0x005b
-#define GlintAreaStipplePattern27Reg 1
-#define GlintAreaStipplePattern27Off 0x72d8
-#define GlintAreaStipplePattern27Sec 0x82d8
-#define GlintAreaStipplePattern27SecReg 3
-#define GlintAreaStipplePattern27SecOff 0x72d8
-
-#define GlintAreaStipplePattern28 0x82e0
-#define GlintAreaStipplePattern28Tag 0x005c
-#define GlintAreaStipplePattern28Reg 1
-#define GlintAreaStipplePattern28Off 0x72e0
-#define GlintAreaStipplePattern28Sec 0x82e0
-#define GlintAreaStipplePattern28SecReg 3
-#define GlintAreaStipplePattern28SecOff 0x72e0
-
-#define GlintAreaStipplePattern29 0x82e8
-#define GlintAreaStipplePattern29Tag 0x005d
-#define GlintAreaStipplePattern29Reg 1
-#define GlintAreaStipplePattern29Off 0x72e8
-#define GlintAreaStipplePattern29Sec 0x82e8
-#define GlintAreaStipplePattern29SecReg 3
-#define GlintAreaStipplePattern29SecOff 0x72e8
-
-#define GlintAreaStipplePattern30 0x82f0
-#define GlintAreaStipplePattern30Tag 0x005e
-#define GlintAreaStipplePattern30Reg 1
-#define GlintAreaStipplePattern30Off 0x72f0
-#define GlintAreaStipplePattern30Sec 0x82f0
-#define GlintAreaStipplePattern30SecReg 3
-#define GlintAreaStipplePattern30SecOff 0x72f0
-
-#define GlintAreaStipplePattern31 0x82f8
-#define GlintAreaStipplePattern31Tag 0x005f
-#define GlintAreaStipplePattern31Reg 1
-#define GlintAreaStipplePattern31Off 0x72f8
-#define GlintAreaStipplePattern31Sec 0x82f8
-#define GlintAreaStipplePattern31SecReg 3
-#define GlintAreaStipplePattern31SecOff 0x72f8
-
-#define GlintRouterMode 0x8840
-#define GlintRouterModeTag 0x0108
-#define GlintRouterModeReg 1
-#define GlintRouterModeOff 0x7840
-#define GlintRouterModeSec 0x8840
-#define GlintRouterModeSecReg 3
-#define GlintRouterModeSecOff 0x7840
-
-#define GlintTextureAddressMode 0x8380
-#define GlintTextureAddressModeTag 0x0070
-#define GlintTextureAddressModeReg 1
-#define GlintTextureAddressModeOff 0x7380
-#define GlintTextureAddressModeSec 0x8380
-#define GlintTextureAddressModeSecReg 3
-#define GlintTextureAddressModeSecOff 0x7380
-
-#define GlintSStart 0x8388
-#define GlintSStartTag 0x0071
-#define GlintSStartReg 1
-#define GlintSStartOff 0x7388
-#define GlintSStartSec 0x8388
-#define GlintSStartSecReg 3
-#define GlintSStartSecOff 0x7388
-
-#define GlintdSdx 0x8390
-#define GlintdSdxTag 0x0072
-#define GlintdSdxReg 1
-#define GlintdSdxOff 0x7390
-#define GlintdSdxSec 0x8390
-#define GlintdSdxSecReg 3
-#define GlintdSdxSecOff 0x7390
-
-#define GlintdSdyDom 0x8398
-#define GlintdSdyDomTag 0x0073
-#define GlintdSdyDomReg 1
-#define GlintdSdyDomOff 0x7398
-#define GlintdSdyDomSec 0x8398
-#define GlintdSdyDomSecReg 3
-#define GlintdSdyDomSecOff 0x7398
-
-#define GlintTStart 0x83a0
-#define GlintTStartTag 0x0074
-#define GlintTStartReg 1
-#define GlintTStartOff 0x73a0
-#define GlintTStartSec 0x83a0
-#define GlintTStartSecReg 3
-#define GlintTStartSecOff 0x73a0
-
-#define GlintdTdx 0x83a8
-#define GlintdTdxTag 0x0075
-#define GlintdTdxReg 1
-#define GlintdTdxOff 0x73a8
-#define GlintdTdxSec 0x83a8
-#define GlintdTdxSecReg 3
-#define GlintdTdxSecOff 0x73a8
-
-#define GlintdTdyDom 0x83b0
-#define GlintdTdyDomTag 0x0076
-#define GlintdTdyDomReg 1
-#define GlintdTdyDomOff 0x73b0
-#define GlintdTdyDomSec 0x83b0
-#define GlintdTdyDomSecReg 3
-#define GlintdTdyDomSecOff 0x73b0
-
-#define GlintQStart 0x83b8
-#define GlintQStartTag 0x0077
-#define GlintQStartReg 1
-#define GlintQStartOff 0x73b8
-#define GlintQStartSec 0x83b8
-#define GlintQStartSecReg 3
-#define GlintQStartSecOff 0x73b8
-
-#define GlintdQdx 0x83c0
-#define GlintdQdxTag 0x0078
-#define GlintdQdxReg 1
-#define GlintdQdxOff 0x73c0
-#define GlintdQdxSec 0x83c0
-#define GlintdQdxSecReg 3
-#define GlintdQdxSecOff 0x73c0
-
-#define GlintdQdyDom 0x83c8
-#define GlintdQdyDomTag 0x0079
-#define GlintdQdyDomReg 1
-#define GlintdQdyDomOff 0x73c8
-#define GlintdQdyDomSec 0x83c8
-#define GlintdQdyDomSecReg 3
-#define GlintdQdyDomSecOff 0x73c8
-
-#define GlintLOD 0x83d0
-#define GlintLODTag 0x007a
-#define GlintLODReg 1
-#define GlintLODOff 0x73d0
-#define GlintLODSec 0x83d0
-#define GlintLODSecReg 3
-#define GlintLODSecOff 0x73d0
-
-#define GlintdSdy 0x83d8
-#define GlintdSdyTag 0x007b
-#define GlintdSdyReg 1
-#define GlintdSdyOff 0x73d8
-#define GlintdSdySec 0x83d8
-#define GlintdSdySecReg 3
-#define GlintdSdySecOff 0x73d8
-
-#define GlintdTdy 0x83e0
-#define GlintdTdyTag 0x007c
-#define GlintdTdyReg 1
-#define GlintdTdyOff 0x73e0
-#define GlintdTdySec 0x83e0
-#define GlintdTdySecReg 3
-#define GlintdTdySecOff 0x73e0
-
-#define GlintdQdy 0x83e8
-#define GlintdQdyTag 0x007d
-#define GlintdQdyReg 1
-#define GlintdQdyOff 0x73e8
-#define GlintdQdySec 0x83e8
-#define GlintdQdySecReg 3
-#define GlintdQdySecOff 0x73e8
-
-#define GlintTextureReadMode 0x8480
-#define GlintTextureReadModeTag 0x0090
-#define GlintTextureReadModeReg 1
-#define GlintTextureReadModeOff 0x7480
-#define GlintTextureReadModeSec 0x8480
-#define GlintTextureReadModeSecReg 3
-#define GlintTextureReadModeSecOff 0x7480
-
-#define GlintTextureFormat 0x8488
-#define GlintTextureFormatTag 0x0091
-#define GlintTextureFormatReg 1
-#define GlintTextureFormatOff 0x7488
-#define GlintTextureFormatSec 0x8488
-#define GlintTextureFormatSecReg 3
-#define GlintTextureFormatSecOff 0x7488
-
-#define GlintTextureCacheControl 0x8490
-#define GlintTextureCacheControlTag 0x0092
-#define GlintTextureCacheControlReg 1
-#define GlintTextureCacheControlOff 0x7490
-#define GlintTextureCacheControlSec 0x8490
-#define GlintTextureCacheControlSecReg 3
-#define GlintTextureCacheControlSecOff 0x7490
-
-#define GlintGLINTBorderColor 0x84a8
-#define GlintGLINTBorderColorTag 0x0095
-#define GlintGLINTBorderColorReg 1
-#define GlintGLINTBorderColorOff 0x74a8
-#define GlintGLINTBorderColorSec 0x84a8
-#define GlintGLINTBorderColorSecReg 3
-#define GlintGLINTBorderColorSecOff 0x74a8
-
-#define GlintTexelLUTIndex 0x84c0
-#define GlintTexelLUTIndexTag 0x0098
-#define GlintTexelLUTIndexReg 1
-#define GlintTexelLUTIndexOff 0x74c0
-#define GlintTexelLUTIndexSec 0x84c0
-#define GlintTexelLUTIndexSecReg 3
-#define GlintTexelLUTIndexSecOff 0x74c0
-
-#define GlintTexelLUTData 0x84c8
-#define GlintTexelLUTDataTag 0x0099
-#define GlintTexelLUTDataReg 1
-#define GlintTexelLUTDataOff 0x74c8
-#define GlintTexelLUTDataSec 0x84c8
-#define GlintTexelLUTDataSecReg 3
-#define GlintTexelLUTDataSecOff 0x74c8
-
-#define GlintTexelLUTAddress 0x84d0
-#define GlintTexelLUTAddressTag 0x009a
-#define GlintTexelLUTAddressReg 1
-#define GlintTexelLUTAddressOff 0x74d0
-#define GlintTexelLUTAddressSec 0x84d0
-#define GlintTexelLUTAddressSecReg 3
-#define GlintTexelLUTAddressSecOff 0x74d0
-
-#define GlintTexelLUTTransfer 0x84d8
-#define GlintTexelLUTTransferTag 0x009b
-#define GlintTexelLUTTransferReg 1
-#define GlintTexelLUTTransferOff 0x74d8
-#define GlintTexelLUTTransferSec 0x84d8
-#define GlintTexelLUTTransferSecReg 3
-#define GlintTexelLUTTransferSecOff 0x74d8
-
-#define GlintTextureFilterMode 0x84e0
-#define GlintTextureFilterModeTag 0x009c
-#define GlintTextureFilterModeReg 1
-#define GlintTextureFilterModeOff 0x74e0
-#define GlintTextureFilterModeSec 0x84e0
-#define GlintTextureFilterModeSecReg 3
-#define GlintTextureFilterModeSecOff 0x74e0
-
-#define GlintTextureChromaUpper 0x84e8
-#define GlintTextureChromaUpperTag 0x009d
-#define GlintTextureChromaUpperReg 1
-#define GlintTextureChromaUpperOff 0x74e8
-#define GlintTextureChromaUpperSec 0x84e8
-#define GlintTextureChromaUpperSecReg 3
-#define GlintTextureChromaUpperSecOff 0x74e8
-
-#define GlintTextureChromaLower 0x84f0
-#define GlintTextureChromaLowerTag 0x009e
-#define GlintTextureChromaLowerReg 1
-#define GlintTextureChromaLowerOff 0x74f0
-#define GlintTextureChromaLowerSec 0x84f0
-#define GlintTextureChromaLowerSecReg 3
-#define GlintTextureChromaLowerSecOff 0x74f0
-
-#define GlintTxBaseAddr0 0x8500
-#define GlintTxBaseAddr0Tag 0x00a0
-#define GlintTxBaseAddr0Reg 1
-#define GlintTxBaseAddr0Off 0x7500
-#define GlintTxBaseAddr0Sec 0x8500
-#define GlintTxBaseAddr0SecReg 3
-#define GlintTxBaseAddr0SecOff 0x7500
-
-#define GlintTxBaseAddr1 0x8508
-#define GlintTxBaseAddr1Tag 0x00a1
-#define GlintTxBaseAddr1Reg 1
-#define GlintTxBaseAddr1Off 0x7508
-#define GlintTxBaseAddr1Sec 0x8508
-#define GlintTxBaseAddr1SecReg 3
-#define GlintTxBaseAddr1SecOff 0x7508
-
-#define GlintTxBaseAddr2 0x8510
-#define GlintTxBaseAddr2Tag 0x00a2
-#define GlintTxBaseAddr2Reg 1
-#define GlintTxBaseAddr2Off 0x7510
-#define GlintTxBaseAddr2Sec 0x8510
-#define GlintTxBaseAddr2SecReg 3
-#define GlintTxBaseAddr2SecOff 0x7510
-
-#define GlintTxBaseAddr3 0x8518
-#define GlintTxBaseAddr3Tag 0x00a3
-#define GlintTxBaseAddr3Reg 1
-#define GlintTxBaseAddr3Off 0x7518
-#define GlintTxBaseAddr3Sec 0x8518
-#define GlintTxBaseAddr3SecReg 3
-#define GlintTxBaseAddr3SecOff 0x7518
-
-#define GlintTxBaseAddr4 0x8520
-#define GlintTxBaseAddr4Tag 0x00a4
-#define GlintTxBaseAddr4Reg 1
-#define GlintTxBaseAddr4Off 0x7520
-#define GlintTxBaseAddr4Sec 0x8520
-#define GlintTxBaseAddr4SecReg 3
-#define GlintTxBaseAddr4SecOff 0x7520
-
-#define GlintTxBaseAddr5 0x8528
-#define GlintTxBaseAddr5Tag 0x00a5
-#define GlintTxBaseAddr5Reg 1
-#define GlintTxBaseAddr5Off 0x7528
-#define GlintTxBaseAddr5Sec 0x8528
-#define GlintTxBaseAddr5SecReg 3
-#define GlintTxBaseAddr5SecOff 0x7528
-
-#define GlintTxBaseAddr6 0x8530
-#define GlintTxBaseAddr6Tag 0x00a6
-#define GlintTxBaseAddr6Reg 1
-#define GlintTxBaseAddr6Off 0x7530
-#define GlintTxBaseAddr6Sec 0x8530
-#define GlintTxBaseAddr6SecReg 3
-#define GlintTxBaseAddr6SecOff 0x7530
-
-#define GlintTxBaseAddr7 0x8538
-#define GlintTxBaseAddr7Tag 0x00a7
-#define GlintTxBaseAddr7Reg 1
-#define GlintTxBaseAddr7Off 0x7538
-#define GlintTxBaseAddr7Sec 0x8538
-#define GlintTxBaseAddr7SecReg 3
-#define GlintTxBaseAddr7SecOff 0x7538
-
-#define GlintTxBaseAddr8 0x8540
-#define GlintTxBaseAddr8Tag 0x00a8
-#define GlintTxBaseAddr8Reg 1
-#define GlintTxBaseAddr8Off 0x7540
-#define GlintTxBaseAddr8Sec 0x8540
-#define GlintTxBaseAddr8SecReg 3
-#define GlintTxBaseAddr8SecOff 0x7540
-
-#define GlintTxBaseAddr9 0x8548
-#define GlintTxBaseAddr9Tag 0x00a9
-#define GlintTxBaseAddr9Reg 1
-#define GlintTxBaseAddr9Off 0x7548
-#define GlintTxBaseAddr9Sec 0x8548
-#define GlintTxBaseAddr9SecReg 3
-#define GlintTxBaseAddr9SecOff 0x7548
-
-#define GlintTxBaseAddr10 0x8550
-#define GlintTxBaseAddr10Tag 0x00aa
-#define GlintTxBaseAddr10Reg 1
-#define GlintTxBaseAddr10Off 0x7550
-#define GlintTxBaseAddr10Sec 0x8550
-#define GlintTxBaseAddr10SecReg 3
-#define GlintTxBaseAddr10SecOff 0x7550
-
-#define GlintTxBaseAddr11 0x8558
-#define GlintTxBaseAddr11Tag 0x00ab
-#define GlintTxBaseAddr11Reg 1
-#define GlintTxBaseAddr11Off 0x7558
-#define GlintTxBaseAddr11Sec 0x8558
-#define GlintTxBaseAddr11SecReg 3
-#define GlintTxBaseAddr11SecOff 0x7558
-
-#define GlintTxBaseAddr12 0x8560
-#define GlintTxBaseAddr12Tag 0x00ac
-#define GlintTxBaseAddr12Reg 1
-#define GlintTxBaseAddr12Off 0x7560
-#define GlintTxBaseAddr12Sec 0x8560
-#define GlintTxBaseAddr12SecReg 3
-#define GlintTxBaseAddr12SecOff 0x7560
-
-#define GlintTexelLUT0 0x8e80
-#define GlintTexelLUT0Tag 0x01d0
-#define GlintTexelLUT0Reg 1
-#define GlintTexelLUT0Off 0x7e80
-#define GlintTexelLUT0Sec 0x8e80
-#define GlintTexelLUT0SecReg 3
-#define GlintTexelLUT0SecOff 0x7e80
-
-#define GlintTexelLUT1 0x8e88
-#define GlintTexelLUT1Tag 0x01d1
-#define GlintTexelLUT1Reg 1
-#define GlintTexelLUT1Off 0x7e88
-#define GlintTexelLUT1Sec 0x8e88
-#define GlintTexelLUT1SecReg 3
-#define GlintTexelLUT1SecOff 0x7e88
-
-#define GlintTexelLUT2 0x8e90
-#define GlintTexelLUT2Tag 0x01d2
-#define GlintTexelLUT2Reg 1
-#define GlintTexelLUT2Off 0x7e90
-#define GlintTexelLUT2Sec 0x8e90
-#define GlintTexelLUT2SecReg 3
-#define GlintTexelLUT2SecOff 0x7e90
-
-#define GlintTexelLUT3 0x8e98
-#define GlintTexelLUT3Tag 0x01d3
-#define GlintTexelLUT3Reg 1
-#define GlintTexelLUT3Off 0x7e98
-#define GlintTexelLUT3Sec 0x8e98
-#define GlintTexelLUT3SecReg 3
-#define GlintTexelLUT3SecOff 0x7e98
-
-#define GlintTexelLUT4 0x8ea0
-#define GlintTexelLUT4Tag 0x01d4
-#define GlintTexelLUT4Reg 1
-#define GlintTexelLUT4Off 0x7ea0
-#define GlintTexelLUT4Sec 0x8ea0
-#define GlintTexelLUT4SecReg 3
-#define GlintTexelLUT4SecOff 0x7ea0
-
-#define GlintTexelLUT5 0x8ea8
-#define GlintTexelLUT5Tag 0x01d5
-#define GlintTexelLUT5Reg 1
-#define GlintTexelLUT5Off 0x7ea8
-#define GlintTexelLUT5Sec 0x8ea8
-#define GlintTexelLUT5SecReg 3
-#define GlintTexelLUT5SecOff 0x7ea8
-
-#define GlintTexelLUT6 0x8eb0
-#define GlintTexelLUT6Tag 0x01d6
-#define GlintTexelLUT6Reg 1
-#define GlintTexelLUT6Off 0x7eb0
-#define GlintTexelLUT6Sec 0x8eb0
-#define GlintTexelLUT6SecReg 3
-#define GlintTexelLUT6SecOff 0x7eb0
-
-#define GlintTexelLUT7 0x8eb8
-#define GlintTexelLUT7Tag 0x01d7
-#define GlintTexelLUT7Reg 1
-#define GlintTexelLUT7Off 0x7eb8
-#define GlintTexelLUT7Sec 0x8eb8
-#define GlintTexelLUT7SecReg 3
-#define GlintTexelLUT7SecOff 0x7eb8
-
-#define GlintTexelLUT8 0x8ec0
-#define GlintTexelLUT8Tag 0x01d8
-#define GlintTexelLUT8Reg 1
-#define GlintTexelLUT8Off 0x7ec0
-#define GlintTexelLUT8Sec 0x8ec0
-#define GlintTexelLUT8SecReg 3
-#define GlintTexelLUT8SecOff 0x7ec0
-
-#define GlintTexelLUT9 0x8ec8
-#define GlintTexelLUT9Tag 0x01d9
-#define GlintTexelLUT9Reg 1
-#define GlintTexelLUT9Off 0x7ec8
-#define GlintTexelLUT9Sec 0x8ec8
-#define GlintTexelLUT9SecReg 3
-#define GlintTexelLUT9SecOff 0x7ec8
-
-#define GlintTexelLUT10 0x8ed0
-#define GlintTexelLUT10Tag 0x01da
-#define GlintTexelLUT10Reg 1
-#define GlintTexelLUT10Off 0x7ed0
-#define GlintTexelLUT10Sec 0x8ed0
-#define GlintTexelLUT10SecReg 3
-#define GlintTexelLUT10SecOff 0x7ed0
-
-#define GlintTexelLUT11 0x8ed8
-#define GlintTexelLUT11Tag 0x01db
-#define GlintTexelLUT11Reg 1
-#define GlintTexelLUT11Off 0x7ed8
-#define GlintTexelLUT11Sec 0x8ed8
-#define GlintTexelLUT11SecReg 3
-#define GlintTexelLUT11SecOff 0x7ed8
-
-#define GlintTexelLUT12 0x8ee0
-#define GlintTexelLUT12Tag 0x01dc
-#define GlintTexelLUT12Reg 1
-#define GlintTexelLUT12Off 0x7ee0
-#define GlintTexelLUT12Sec 0x8ee0
-#define GlintTexelLUT12SecReg 3
-#define GlintTexelLUT12SecOff 0x7ee0
-
-#define GlintTexelLUT13 0x8ee8
-#define GlintTexelLUT13Tag 0x01dd
-#define GlintTexelLUT13Reg 1
-#define GlintTexelLUT13Off 0x7ee8
-#define GlintTexelLUT13Sec 0x8ee8
-#define GlintTexelLUT13SecReg 3
-#define GlintTexelLUT13SecOff 0x7ee8
-
-#define GlintTexelLUT14 0x8ef0
-#define GlintTexelLUT14Tag 0x01de
-#define GlintTexelLUT14Reg 1
-#define GlintTexelLUT14Off 0x7ef0
-#define GlintTexelLUT14Sec 0x8ef0
-#define GlintTexelLUT14SecReg 3
-#define GlintTexelLUT14SecOff 0x7ef0
-
-#define GlintTexelLUT15 0x8ef8
-#define GlintTexelLUT15Tag 0x01df
-#define GlintTexelLUT15Reg 1
-#define GlintTexelLUT15Off 0x7ef8
-#define GlintTexelLUT15Sec 0x8ef8
-#define GlintTexelLUT15SecReg 3
-#define GlintTexelLUT15SecOff 0x7ef8
-
-#define GlintTexel0 0x8600
-#define GlintTexel0Tag 0x00c0
-#define GlintTexel0Reg 1
-#define GlintTexel0Off 0x7600
-#define GlintTexel0Sec 0x8600
-#define GlintTexel0SecReg 3
-#define GlintTexel0SecOff 0x7600
-
-#define GlintTexel1 0x8608
-#define GlintTexel1Tag 0x00c1
-#define GlintTexel1Reg 1
-#define GlintTexel1Off 0x7608
-#define GlintTexel1Sec 0x8608
-#define GlintTexel1SecReg 3
-#define GlintTexel1SecOff 0x7608
-
-#define GlintTexel2 0x8610
-#define GlintTexel2Tag 0x00c2
-#define GlintTexel2Reg 1
-#define GlintTexel2Off 0x7610
-#define GlintTexel2Sec 0x8610
-#define GlintTexel2SecReg 3
-#define GlintTexel2SecOff 0x7610
-
-#define GlintTexel3 0x8618
-#define GlintTexel3Tag 0x00c3
-#define GlintTexel3Reg 1
-#define GlintTexel3Off 0x7618
-#define GlintTexel3Sec 0x8618
-#define GlintTexel3SecReg 3
-#define GlintTexel3SecOff 0x7618
-
-#define GlintTexel4 0x8620
-#define GlintTexel4Tag 0x00c4
-#define GlintTexel4Reg 1
-#define GlintTexel4Off 0x7620
-#define GlintTexel4Sec 0x8620
-#define GlintTexel4SecReg 3
-#define GlintTexel4SecOff 0x7620
-
-#define GlintTexel5 0x8628
-#define GlintTexel5Tag 0x00c5
-#define GlintTexel5Reg 1
-#define GlintTexel5Off 0x7628
-#define GlintTexel5Sec 0x8628
-#define GlintTexel5SecReg 3
-#define GlintTexel5SecOff 0x7628
-
-#define GlintTexel6 0x8630
-#define GlintTexel6Tag 0x00c6
-#define GlintTexel6Reg 1
-#define GlintTexel6Off 0x7630
-#define GlintTexel6Sec 0x8630
-#define GlintTexel6SecReg 3
-#define GlintTexel6SecOff 0x7630
-
-#define GlintTexel7 0x8638
-#define GlintTexel7Tag 0x00c7
-#define GlintTexel7Reg 1
-#define GlintTexel7Off 0x7638
-#define GlintTexel7Sec 0x8638
-#define GlintTexel7SecReg 3
-#define GlintTexel7SecOff 0x7638
-
-#define GlintInterp0 0x8640
-#define GlintInterp0Tag 0x00c8
-#define GlintInterp0Reg 1
-#define GlintInterp0Off 0x7640
-#define GlintInterp0Sec 0x8640
-#define GlintInterp0SecReg 3
-#define GlintInterp0SecOff 0x7640
-
-#define GlintInterp1 0x8648
-#define GlintInterp1Tag 0x00c9
-#define GlintInterp1Reg 1
-#define GlintInterp1Off 0x7648
-#define GlintInterp1Sec 0x8648
-#define GlintInterp1SecReg 3
-#define GlintInterp1SecOff 0x7648
-
-#define GlintInterp2 0x8650
-#define GlintInterp2Tag 0x00ca
-#define GlintInterp2Reg 1
-#define GlintInterp2Off 0x7650
-#define GlintInterp2Sec 0x8650
-#define GlintInterp2SecReg 3
-#define GlintInterp2SecOff 0x7650
-
-#define GlintInterp3 0x8658
-#define GlintInterp3Tag 0x00cb
-#define GlintInterp3Reg 1
-#define GlintInterp3Off 0x7658
-#define GlintInterp3Sec 0x8658
-#define GlintInterp3SecReg 3
-#define GlintInterp3SecOff 0x7658
-
-#define GlintInterp4 0x8660
-#define GlintInterp4Tag 0x00cc
-#define GlintInterp4Reg 1
-#define GlintInterp4Off 0x7660
-#define GlintInterp4Sec 0x8660
-#define GlintInterp4SecReg 3
-#define GlintInterp4SecOff 0x7660
-
-#define GlintTextureFilter 0x8668
-#define GlintTextureFilterTag 0x00cd
-#define GlintTextureFilterReg 1
-#define GlintTextureFilterOff 0x7668
-#define GlintTextureFilterSec 0x8668
-#define GlintTextureFilterSecReg 3
-#define GlintTextureFilterSecOff 0x7668
-
-#define GlintTextureColorMode 0x8680
-#define GlintTextureColorModeTag 0x00d0
-#define GlintTextureColorModeReg 1
-#define GlintTextureColorModeOff 0x7680
-#define GlintTextureColorModeSec 0x8680
-#define GlintTextureColorModeSecReg 3
-#define GlintTextureColorModeSecOff 0x7680
-
-#define GlintTextureEnvColor 0x8688
-#define GlintTextureEnvColorTag 0x00d1
-#define GlintTextureEnvColorReg 1
-#define GlintTextureEnvColorOff 0x7688
-#define GlintTextureEnvColorSec 0x8688
-#define GlintTextureEnvColorSecReg 3
-#define GlintTextureEnvColorSecOff 0x7688
-
-#define GlintFogMode 0x8690
-#define GlintFogModeTag 0x00d2
-#define GlintFogModeReg 1
-#define GlintFogModeOff 0x7690
-#define GlintFogModeSec 0x8690
-#define GlintFogModeSecReg 3
-#define GlintFogModeSecOff 0x7690
-
-#define GlintFogColor 0x8698
-#define GlintFogColorTag 0x00d3
-#define GlintFogColorReg 1
-#define GlintFogColorOff 0x7698
-#define GlintFogColorSec 0x8698
-#define GlintFogColorSecReg 3
-#define GlintFogColorSecOff 0x7698
-
-#define GlintFStart 0x86a0
-#define GlintFStartTag 0x00d4
-#define GlintFStartReg 1
-#define GlintFStartOff 0x76a0
-#define GlintFStartSec 0x86a0
-#define GlintFStartSecReg 3
-#define GlintFStartSecOff 0x76a0
-
-#define GlintdFdx 0x86a8
-#define GlintdFdxTag 0x00d5
-#define GlintdFdxReg 1
-#define GlintdFdxOff 0x76a8
-#define GlintdFdxSec 0x86a8
-#define GlintdFdxSecReg 3
-#define GlintdFdxSecOff 0x76a8
-
-#define GlintdFdyDom 0x86b0
-#define GlintdFdyDomTag 0x00d6
-#define GlintdFdyDomReg 1
-#define GlintdFdyDomOff 0x76b0
-#define GlintdFdyDomSec 0x86b0
-#define GlintdFdyDomSecReg 3
-#define GlintdFdyDomSecOff 0x76b0
-
-#define GlintKsStart 0x86c8
-#define GlintKsStartTag 0x00d9
-#define GlintKsStartReg 1
-#define GlintKsStartOff 0x76c8
-#define GlintKsStartSec 0x86c8
-#define GlintKsStartSecReg 3
-#define GlintKsStartSecOff 0x76c8
-
-#define GlintdKsdx 0x86d0
-#define GlintdKsdxTag 0x00da
-#define GlintdKsdxReg 1
-#define GlintdKsdxOff 0x76d0
-#define GlintdKsdxSec 0x86d0
-#define GlintdKsdxSecReg 3
-#define GlintdKsdxSecOff 0x76d0
-
-#define GlintdKsdyDom 0x86d8
-#define GlintdKsdyDomTag 0x00db
-#define GlintdKsdyDomReg 1
-#define GlintdKsdyDomOff 0x76d8
-#define GlintdKsdyDomSec 0x86d8
-#define GlintdKsdyDomSecReg 3
-#define GlintdKsdyDomSecOff 0x76d8
-
-#define GlintKdStart 0x86e0
-#define GlintKdStartTag 0x00dc
-#define GlintKdStartReg 1
-#define GlintKdStartOff 0x76e0
-#define GlintKdStartSec 0x86e0
-#define GlintKdStartSecReg 3
-#define GlintKdStartSecOff 0x76e0
-
-#define GlintdKdStart 0x86e8
-#define GlintdKdStartTag 0x00dd
-#define GlintdKdStartReg 1
-#define GlintdKdStartOff 0x76e8
-#define GlintdKdStartSec 0x86e8
-#define GlintdKdStartSecReg 3
-#define GlintdKdStartSecOff 0x76e8
-
-#define GlintdKddyDom 0x86f0
-#define GlintdKddyDomTag 0x00de
-#define GlintdKddyDomReg 1
-#define GlintdKddyDomOff 0x76f0
-#define GlintdKddyDomSec 0x86f0
-#define GlintdKddyDomSecReg 3
-#define GlintdKddyDomSecOff 0x76f0
-
-#define GlintRStart 0x8780
-#define GlintRStartTag 0x00f0
-#define GlintRStartReg 1
-#define GlintRStartOff 0x7780
-#define GlintRStartSec 0x8780
-#define GlintRStartSecReg 3
-#define GlintRStartSecOff 0x7780
-
-#define GlintdRdx 0x8788
-#define GlintdRdxTag 0x00f1
-#define GlintdRdxReg 1
-#define GlintdRdxOff 0x7788
-#define GlintdRdxSec 0x8788
-#define GlintdRdxSecReg 3
-#define GlintdRdxSecOff 0x7788
-
-#define GlintdRdyDom 0x8790
-#define GlintdRdyDomTag 0x00f2
-#define GlintdRdyDomReg 1
-#define GlintdRdyDomOff 0x7790
-#define GlintdRdyDomSec 0x8790
-#define GlintdRdyDomSecReg 3
-#define GlintdRdyDomSecOff 0x7790
-
-#define GlintGStart 0x8798
-#define GlintGStartTag 0x00f3
-#define GlintGStartReg 1
-#define GlintGStartOff 0x7798
-#define GlintGStartSec 0x8798
-#define GlintGStartSecReg 3
-#define GlintGStartSecOff 0x7798
-
-#define GlintdGdx 0x87a0
-#define GlintdGdxTag 0x00f4
-#define GlintdGdxReg 1
-#define GlintdGdxOff 0x77a0
-#define GlintdGdxSec 0x87a0
-#define GlintdGdxSecReg 3
-#define GlintdGdxSecOff 0x77a0
-
-#define GlintdGdyDom 0x87a8
-#define GlintdGdyDomTag 0x00f5
-#define GlintdGdyDomReg 1
-#define GlintdGdyDomOff 0x77a8
-#define GlintdGdyDomSec 0x87a8
-#define GlintdGdyDomSecReg 3
-#define GlintdGdyDomSecOff 0x77a8
-
-#define GlintBStart 0x87b0
-#define GlintBStartTag 0x00f6
-#define GlintBStartReg 1
-#define GlintBStartOff 0x77b0
-#define GlintBStartSec 0x87b0
-#define GlintBStartSecReg 3
-#define GlintBStartSecOff 0x77b0
-
-#define GlintdBdx 0x87b8
-#define GlintdBdxTag 0x00f7
-#define GlintdBdxReg 1
-#define GlintdBdxOff 0x77b8
-#define GlintdBdxSec 0x87b8
-#define GlintdBdxSecReg 3
-#define GlintdBdxSecOff 0x77b8
-
-#define GlintdBdyDom 0x87c0
-#define GlintdBdyDomTag 0x00f8
-#define GlintdBdyDomReg 1
-#define GlintdBdyDomOff 0x77c0
-#define GlintdBdyDomSec 0x87c0
-#define GlintdBdyDomSecReg 3
-#define GlintdBdyDomSecOff 0x77c0
-
-#define GlintAStart 0x87c8
-#define GlintAStartTag 0x00f9
-#define GlintAStartReg 1
-#define GlintAStartOff 0x77c8
-#define GlintAStartSec 0x87c8
-#define GlintAStartSecReg 3
-#define GlintAStartSecOff 0x77c8
-
-#define GlintdAdx 0x87d0
-#define GlintdAdxTag 0x00fa
-#define GlintdAdxReg 1
-#define GlintdAdxOff 0x77d0
-#define GlintdAdxSec 0x87d0
-#define GlintdAdxSecReg 3
-#define GlintdAdxSecOff 0x77d0
-
-#define GlintdAdyDom 0x87d8
-#define GlintdAdyDomTag 0x00fb
-#define GlintdAdyDomReg 1
-#define GlintdAdyDomOff 0x77d8
-#define GlintdAdyDomSec 0x87d8
-#define GlintdAdyDomSecReg 3
-#define GlintdAdyDomSecOff 0x77d8
-
-#define GlintColorDDAMode 0x87e0
-#define GlintColorDDAModeTag 0x00fc
-#define GlintColorDDAModeReg 1
-#define GlintColorDDAModeOff 0x77e0
-#define GlintColorDDAModeSec 0x87e0
-#define GlintColorDDAModeSecReg 3
-#define GlintColorDDAModeSecOff 0x77e0
-
-#define GlintConstantColor 0x87e8
-#define GlintConstantColorTag 0x00fd
-#define GlintConstantColorReg 1
-#define GlintConstantColorOff 0x77e8
-#define GlintConstantColorSec 0x87e8
-#define GlintConstantColorSecReg 3
-#define GlintConstantColorSecOff 0x77e8
-
-#define GlintGLINTColor 0x87f0
-#define GlintGLINTColorTag 0x00fe
-#define GlintGLINTColorReg 1
-#define GlintGLINTColorOff 0x77f0
-#define GlintGLINTColorSec 0x87f0
-#define GlintGLINTColorSecReg 3
-#define GlintGLINTColorSecOff 0x77f0
-
-#define GlintAlphaTestMode 0x8800
-#define GlintAlphaTestModeTag 0x0100
-#define GlintAlphaTestModeReg 1
-#define GlintAlphaTestModeOff 0x7800
-#define GlintAlphaTestModeSec 0x8800
-#define GlintAlphaTestModeSecReg 3
-#define GlintAlphaTestModeSecOff 0x7800
-
-#define GlintAntialiasMode 0x8808
-#define GlintAntialiasModeTag 0x0101
-#define GlintAntialiasModeReg 1
-#define GlintAntialiasModeOff 0x7808
-#define GlintAntialiasModeSec 0x8808
-#define GlintAntialiasModeSecReg 3
-#define GlintAntialiasModeSecOff 0x7808
-
-#define GlintAlphaBlendMode 0x8810
-#define GlintAlphaBlendModeTag 0x0102
-#define GlintAlphaBlendModeReg 1
-#define GlintAlphaBlendModeOff 0x7810
-#define GlintAlphaBlendModeSec 0x8810
-#define GlintAlphaBlendModeSecReg 3
-#define GlintAlphaBlendModeSecOff 0x7810
-
-#define GlintChromaUpper 0x8f08
-#define GlintChromaUpperTag 0x01e1
-#define GlintChromaUpperReg 1
-#define GlintChromaUpperOff 0x7f08
-#define GlintChromaUpperSec 0x8f08
-#define GlintChromaUpperSecReg 3
-#define GlintChromaUpperSecOff 0x7f08
-
-#define GlintChromaLower 0x8f10
-#define GlintChromaLowerTag 0x01e2
-#define GlintChromaLowerReg 1
-#define GlintChromaLowerOff 0x7f10
-#define GlintChromaLowerSec 0x8f10
-#define GlintChromaLowerSecReg 3
-#define GlintChromaLowerSecOff 0x7f10
-
-#define GlintChromaTestMode 0x8f18
-#define GlintChromaTestModeTag 0x01e3
-#define GlintChromaTestModeReg 1
-#define GlintChromaTestModeOff 0x7f18
-#define GlintChromaTestModeSec 0x8f18
-#define GlintChromaTestModeSecReg 3
-#define GlintChromaTestModeSecOff 0x7f18
-
-#define GlintDitherMode 0x8818
-#define GlintDitherModeTag 0x0103
-#define GlintDitherModeReg 1
-#define GlintDitherModeOff 0x7818
-#define GlintDitherModeSec 0x8818
-#define GlintDitherModeSecReg 3
-#define GlintDitherModeSecOff 0x7818
-
-#define GlintFBSoftwareWriteMask 0x8820
-#define GlintFBSoftwareWriteMaskTag 0x0104
-#define GlintFBSoftwareWriteMaskReg 1
-#define GlintFBSoftwareWriteMaskOff 0x7820
-#define GlintFBSoftwareWriteMaskSec 0x8820
-#define GlintFBSoftwareWriteMaskSecReg 3
-#define GlintFBSoftwareWriteMaskSecOff 0x7820
-
-#define GlintLogicalOpMode 0x8828
-#define GlintLogicalOpModeTag 0x0105
-#define GlintLogicalOpModeReg 1
-#define GlintLogicalOpModeOff 0x7828
-#define GlintLogicalOpModeSec 0x8828
-#define GlintLogicalOpModeSecReg 3
-#define GlintLogicalOpModeSecOff 0x7828
-
-#define GlintFBWriteData 0x8830
-#define GlintFBWriteDataTag 0x0106
-#define GlintFBWriteDataReg 1
-#define GlintFBWriteDataOff 0x7830
-#define GlintFBWriteDataSec 0x8830
-#define GlintFBWriteDataSecReg 3
-#define GlintFBWriteDataSecOff 0x7830
-
-#define GlintLBReadMode 0x8880
-#define GlintLBReadModeTag 0x0110
-#define GlintLBReadModeReg 1
-#define GlintLBReadModeOff 0x7880
-#define GlintLBReadModeSec 0x8880
-#define GlintLBReadModeSecReg 3
-#define GlintLBReadModeSecOff 0x7880
-
-#define GlintLBReadFormat 0x8888
-#define GlintLBReadFormatTag 0x0111
-#define GlintLBReadFormatReg 1
-#define GlintLBReadFormatOff 0x7888
-#define GlintLBReadFormatSec 0x8888
-#define GlintLBReadFormatSecReg 3
-#define GlintLBReadFormatSecOff 0x7888
-
-#define GlintLBSourceOffset 0x8890
-#define GlintLBSourceOffsetTag 0x0112
-#define GlintLBSourceOffsetReg 1
-#define GlintLBSourceOffsetOff 0x7890
-#define GlintLBSourceOffsetSec 0x8890
-#define GlintLBSourceOffsetSecReg 3
-#define GlintLBSourceOffsetSecOff 0x7890
-
-#define GlintLBStencil 0x88a8
-#define GlintLBStencilTag 0x0115
-#define GlintLBStencilReg 1
-#define GlintLBStencilOff 0x78a8
-#define GlintLBStencilSec 0x88a8
-#define GlintLBStencilSecReg 3
-#define GlintLBStencilSecOff 0x78a8
-
-#define GlintLBDepth 0x88b0
-#define GlintLBDepthTag 0x0116
-#define GlintLBDepthReg 1
-#define GlintLBDepthOff 0x78b0
-#define GlintLBDepthSec 0x88b0
-#define GlintLBDepthSecReg 3
-#define GlintLBDepthSecOff 0x78b0
-
-#define GlintLBWindowBase 0x88b8
-#define GlintLBWindowBaseTag 0x0117
-#define GlintLBWindowBaseReg 1
-#define GlintLBWindowBaseOff 0x78b8
-#define GlintLBWindowBaseSec 0x88b8
-#define GlintLBWindowBaseSecReg 3
-#define GlintLBWindowBaseSecOff 0x78b8
-
-#define GlintLBWriteMode 0x88c0
-#define GlintLBWriteModeTag 0x0118
-#define GlintLBWriteModeReg 1
-#define GlintLBWriteModeOff 0x78c0
-#define GlintLBWriteModeSec 0x88c0
-#define GlintLBWriteModeSecReg 3
-#define GlintLBWriteModeSecOff 0x78c0
-
-#define GlintLBWriteFormat 0x88c8
-#define GlintLBWriteFormatTag 0x0119
-#define GlintLBWriteFormatReg 1
-#define GlintLBWriteFormatOff 0x78c8
-#define GlintLBWriteFormatSec 0x88c8
-#define GlintLBWriteFormatSecReg 3
-#define GlintLBWriteFormatSecOff 0x78c8
-
-#define GlintTextureData 0x88e8
-#define GlintTextureDataTag 0x011d
-#define GlintTextureDataReg 1
-#define GlintTextureDataOff 0x78e8
-#define GlintTextureDataSec 0x88e8
-#define GlintTextureDataSecReg 3
-#define GlintTextureDataSecOff 0x78e8
-
-#define GlintTextureDownloadOffset 0x88f0
-#define GlintTextureDownloadOffsetTag 0x011e
-#define GlintTextureDownloadOffsetReg 1
-#define GlintTextureDownloadOffsetOff 0x78f0
-#define GlintTextureDownloadOffsetSec 0x88f0
-#define GlintTextureDownloadOffsetSecReg 3
-#define GlintTextureDownloadOffsetSecOff 0x78f0
-
-#define GlintLBWindowOffset 0x88f8
-#define GlintLBWindowOffsetTag 0x011f
-#define GlintLBWindowOffsetReg 1
-#define GlintLBWindowOffsetOff 0x78f8
-#define GlintLBWindowOffsetSec 0x88f8
-#define GlintLBWindowOffsetSecReg 3
-#define GlintLBWindowOffsetSecOff 0x78f8
-
-#define GlintGLINTWindow 0x8980
-#define GlintGLINTWindowTag 0x0130
-#define GlintGLINTWindowReg 1
-#define GlintGLINTWindowOff 0x7980
-#define GlintGLINTWindowSec 0x8980
-#define GlintGLINTWindowSecReg 3
-#define GlintGLINTWindowSecOff 0x7980
-
-#define GlintStencilMode 0x8988
-#define GlintStencilModeTag 0x0131
-#define GlintStencilModeReg 1
-#define GlintStencilModeOff 0x7988
-#define GlintStencilModeSec 0x8988
-#define GlintStencilModeSecReg 3
-#define GlintStencilModeSecOff 0x7988
-
-#define GlintStencilData 0x8990
-#define GlintStencilDataTag 0x0132
-#define GlintStencilDataReg 1
-#define GlintStencilDataOff 0x7990
-#define GlintStencilDataSec 0x8990
-#define GlintStencilDataSecReg 3
-#define GlintStencilDataSecOff 0x7990
-
-#define GlintGLINTStencil 0x8998
-#define GlintGLINTStencilTag 0x0133
-#define GlintGLINTStencilReg 1
-#define GlintGLINTStencilOff 0x7998
-#define GlintGLINTStencilSec 0x8998
-#define GlintGLINTStencilSecReg 3
-#define GlintGLINTStencilSecOff 0x7998
-
-#define GlintDepthMode 0x89a0
-#define GlintDepthModeTag 0x0134
-#define GlintDepthModeReg 1
-#define GlintDepthModeOff 0x79a0
-#define GlintDepthModeSec 0x89a0
-#define GlintDepthModeSecReg 3
-#define GlintDepthModeSecOff 0x79a0
-
-#define GlintGLINTDepth 0x89a8
-#define GlintGLINTDepthTag 0x0135
-#define GlintGLINTDepthReg 1
-#define GlintGLINTDepthOff 0x79a8
-#define GlintGLINTDepthSec 0x89a8
-#define GlintGLINTDepthSecReg 3
-#define GlintGLINTDepthSecOff 0x79a8
-
-#define GlintZStartU 0x89b0
-#define GlintZStartUTag 0x0136
-#define GlintZStartUReg 1
-#define GlintZStartUOff 0x79b0
-#define GlintZStartUSec 0x89b0
-#define GlintZStartUSecReg 3
-#define GlintZStartUSecOff 0x79b0
-
-#define GlintZStartL 0x89b8
-#define GlintZStartLTag 0x0137
-#define GlintZStartLReg 1
-#define GlintZStartLOff 0x79b8
-#define GlintZStartLSec 0x89b8
-#define GlintZStartLSecReg 3
-#define GlintZStartLSecOff 0x79b8
-
-#define GlintdZdxU 0x89c0
-#define GlintdZdxUTag 0x0138
-#define GlintdZdxUReg 1
-#define GlintdZdxUOff 0x79c0
-#define GlintdZdxUSec 0x89c0
-#define GlintdZdxUSecReg 3
-#define GlintdZdxUSecOff 0x79c0
-
-#define GlintdZdxL 0x89c8
-#define GlintdZdxLTag 0x0139
-#define GlintdZdxLReg 1
-#define GlintdZdxLOff 0x79c8
-#define GlintdZdxLSec 0x89c8
-#define GlintdZdxLSecReg 3
-#define GlintdZdxLSecOff 0x79c8
-
-#define GlintdZdyDomU 0x89d0
-#define GlintdZdyDomUTag 0x013a
-#define GlintdZdyDomUReg 1
-#define GlintdZdyDomUOff 0x79d0
-#define GlintdZdyDomUSec 0x89d0
-#define GlintdZdyDomUSecReg 3
-#define GlintdZdyDomUSecOff 0x79d0
-
-#define GlintdZdyDomL 0x89d8
-#define GlintdZdyDomLTag 0x013b
-#define GlintdZdyDomLReg 1
-#define GlintdZdyDomLOff 0x79d8
-#define GlintdZdyDomLSec 0x89d8
-#define GlintdZdyDomLSecReg 3
-#define GlintdZdyDomLSecOff 0x79d8
-
-#define GlintFastClearDepth 0x89e0
-#define GlintFastClearDepthTag 0x013c
-#define GlintFastClearDepthReg 1
-#define GlintFastClearDepthOff 0x79e0
-#define GlintFastClearDepthSec 0x89e0
-#define GlintFastClearDepthSecReg 3
-#define GlintFastClearDepthSecOff 0x79e0
-
-#define GlintFBReadMode 0x8a80
-#define GlintFBReadModeTag 0x0150
-#define GlintFBReadModeReg 1
-#define GlintFBReadModeOff 0x7a80
-#define GlintFBReadModeSec 0x8a80
-#define GlintFBReadModeSecReg 3
-#define GlintFBReadModeSecOff 0x7a80
-
-#define GlintFBSourceOffset 0x8a88
-#define GlintFBSourceOffsetTag 0x0151
-#define GlintFBSourceOffsetReg 1
-#define GlintFBSourceOffsetOff 0x7a88
-#define GlintFBSourceOffsetSec 0x8a88
-#define GlintFBSourceOffsetSecReg 3
-#define GlintFBSourceOffsetSecOff 0x7a88
-
-#define GlintFBPixelOffset 0x8a90
-#define GlintFBPixelOffsetTag 0x0152
-#define GlintFBPixelOffsetReg 1
-#define GlintFBPixelOffsetOff 0x7a90
-#define GlintFBPixelOffsetSec 0x8a90
-#define GlintFBPixelOffsetSecReg 3
-#define GlintFBPixelOffsetSecOff 0x7a90
-
-#define GlintFBColor 0x8a98
-#define GlintFBColorTag 0x0153
-#define GlintFBColorReg 1
-#define GlintFBColorOff 0x7a98
-#define GlintFBColorSec 0x8a98
-#define GlintFBColorSecReg 3
-#define GlintFBColorSecOff 0x7a98
-
-#define GlintFBData 0x8aa0
-#define GlintFBDataTag 0x0154
-#define GlintFBDataReg 1
-#define GlintFBDataOff 0x7aa0
-#define GlintFBDataSec 0x8aa0
-#define GlintFBDataSecReg 3
-#define GlintFBDataSecOff 0x7aa0
-
-#define GlintFBSourceData 0x8aa8
-#define GlintFBSourceDataTag 0x0155
-#define GlintFBSourceDataReg 1
-#define GlintFBSourceDataOff 0x7aa8
-#define GlintFBSourceDataSec 0x8aa8
-#define GlintFBSourceDataSecReg 3
-#define GlintFBSourceDataSecOff 0x7aa8
-
-#define GlintFBWindowBase 0x8ab0
-#define GlintFBWindowBaseTag 0x0156
-#define GlintFBWindowBaseReg 1
-#define GlintFBWindowBaseOff 0x7ab0
-#define GlintFBWindowBaseSec 0x8ab0
-#define GlintFBWindowBaseSecReg 3
-#define GlintFBWindowBaseSecOff 0x7ab0
-
-#define GlintFBWriteMode 0x8ab8
-#define GlintFBWriteModeTag 0x0157
-#define GlintFBWriteModeReg 1
-#define GlintFBWriteModeOff 0x7ab8
-#define GlintFBWriteModeSec 0x8ab8
-#define GlintFBWriteModeSecReg 3
-#define GlintFBWriteModeSecOff 0x7ab8
-
-#define GlintFBHardwareWriteMask 0x8ac0
-#define GlintFBHardwareWriteMaskTag 0x0158
-#define GlintFBHardwareWriteMaskReg 1
-#define GlintFBHardwareWriteMaskOff 0x7ac0
-#define GlintFBHardwareWriteMaskSec 0x8ac0
-#define GlintFBHardwareWriteMaskSecReg 3
-#define GlintFBHardwareWriteMaskSecOff 0x7ac0
-
-#define GlintFBBlockColor 0x8ac8
-#define GlintFBBlockColorTag 0x0159
-#define GlintFBBlockColorReg 1
-#define GlintFBBlockColorOff 0x7ac8
-#define GlintFBBlockColorSec 0x8ac8
-#define GlintFBBlockColorSecReg 3
-#define GlintFBBlockColorSecOff 0x7ac8
-
-#define GlintPatternRamMode 0x8af8
-#define GlintPatternRamModeTag 0x015f
-#define GlintPatternRamModeReg 1
-#define GlintPatternRamModeOff 0x7af8
-#define GlintPatternRamModeSec 0x8af8
-#define GlintPatternRamModeSecReg 3
-#define GlintPatternRamModeSecOff 0x7af8
-
-#define GlintPatternRamData0 0x8b00
-#define GlintPatternRamData0Tag 0x0160
-#define GlintPatternRamData0Reg 1
-#define GlintPatternRamData0Off 0x7b00
-#define GlintPatternRamData0Sec 0x8b00
-#define GlintPatternRamData0SecReg 3
-#define GlintPatternRamData0SecOff 0x7b00
-
-#define GlintPatternRamData1 0x8b08
-#define GlintPatternRamData1Tag 0x0161
-#define GlintPatternRamData1Reg 1
-#define GlintPatternRamData1Off 0x7b08
-#define GlintPatternRamData1Sec 0x8b08
-#define GlintPatternRamData1SecReg 3
-#define GlintPatternRamData1SecOff 0x7b08
-
-#define GlintPatternRamData2 0x8b10
-#define GlintPatternRamData2Tag 0x0162
-#define GlintPatternRamData2Reg 1
-#define GlintPatternRamData2Off 0x7b10
-#define GlintPatternRamData2Sec 0x8b10
-#define GlintPatternRamData2SecReg 3
-#define GlintPatternRamData2SecOff 0x7b10
-
-#define GlintPatternRamData3 0x8b18
-#define GlintPatternRamData3Tag 0x0163
-#define GlintPatternRamData3Reg 1
-#define GlintPatternRamData3Off 0x7b18
-#define GlintPatternRamData3Sec 0x8b18
-#define GlintPatternRamData3SecReg 3
-#define GlintPatternRamData3SecOff 0x7b18
-
-#define GlintPatternRamData4 0x8b20
-#define GlintPatternRamData4Tag 0x0164
-#define GlintPatternRamData4Reg 1
-#define GlintPatternRamData4Off 0x7b20
-#define GlintPatternRamData4Sec 0x8b20
-#define GlintPatternRamData4SecReg 3
-#define GlintPatternRamData4SecOff 0x7b20
-
-#define GlintPatternRamData5 0x8b28
-#define GlintPatternRamData5Tag 0x0165
-#define GlintPatternRamData5Reg 1
-#define GlintPatternRamData5Off 0x7b28
-#define GlintPatternRamData5Sec 0x8b28
-#define GlintPatternRamData5SecReg 3
-#define GlintPatternRamData5SecOff 0x7b28
-
-#define GlintPatternRamData6 0x8b30
-#define GlintPatternRamData6Tag 0x0166
-#define GlintPatternRamData6Reg 1
-#define GlintPatternRamData6Off 0x7b30
-#define GlintPatternRamData6Sec 0x8b30
-#define GlintPatternRamData6SecReg 3
-#define GlintPatternRamData6SecOff 0x7b30
-
-#define GlintPatternRamData7 0x8b38
-#define GlintPatternRamData7Tag 0x0167
-#define GlintPatternRamData7Reg 1
-#define GlintPatternRamData7Off 0x7b38
-#define GlintPatternRamData7Sec 0x8b38
-#define GlintPatternRamData7SecReg 3
-#define GlintPatternRamData7SecOff 0x7b38
-
-#define GlintPatternRamData8 0x8b40
-#define GlintPatternRamData8Tag 0x0168
-#define GlintPatternRamData8Reg 1
-#define GlintPatternRamData8Off 0x7b40
-#define GlintPatternRamData8Sec 0x8b40
-#define GlintPatternRamData8SecReg 3
-#define GlintPatternRamData8SecOff 0x7b40
-
-#define GlintPatternRamData9 0x8b48
-#define GlintPatternRamData9Tag 0x0169
-#define GlintPatternRamData9Reg 1
-#define GlintPatternRamData9Off 0x7b48
-#define GlintPatternRamData9Sec 0x8b48
-#define GlintPatternRamData9SecReg 3
-#define GlintPatternRamData9SecOff 0x7b48
-
-#define GlintPatternRamData10 0x8b50
-#define GlintPatternRamData10Tag 0x016a
-#define GlintPatternRamData10Reg 1
-#define GlintPatternRamData10Off 0x7b50
-#define GlintPatternRamData10Sec 0x8b50
-#define GlintPatternRamData10SecReg 3
-#define GlintPatternRamData10SecOff 0x7b50
-
-#define GlintPatternRamData11 0x8b58
-#define GlintPatternRamData11Tag 0x016b
-#define GlintPatternRamData11Reg 1
-#define GlintPatternRamData11Off 0x7b58
-#define GlintPatternRamData11Sec 0x8b58
-#define GlintPatternRamData11SecReg 3
-#define GlintPatternRamData11SecOff 0x7b58
-
-#define GlintPatternRamData12 0x8b60
-#define GlintPatternRamData12Tag 0x016c
-#define GlintPatternRamData12Reg 1
-#define GlintPatternRamData12Off 0x7b60
-#define GlintPatternRamData12Sec 0x8b60
-#define GlintPatternRamData12SecReg 3
-#define GlintPatternRamData12SecOff 0x7b60
-
-#define GlintPatternRamData13 0x8b68
-#define GlintPatternRamData13Tag 0x016d
-#define GlintPatternRamData13Reg 1
-#define GlintPatternRamData13Off 0x7b68
-#define GlintPatternRamData13Sec 0x8b68
-#define GlintPatternRamData13SecReg 3
-#define GlintPatternRamData13SecOff 0x7b68
-
-#define GlintPatternRamData14 0x8b70
-#define GlintPatternRamData14Tag 0x016e
-#define GlintPatternRamData14Reg 1
-#define GlintPatternRamData14Off 0x7b70
-#define GlintPatternRamData14Sec 0x8b70
-#define GlintPatternRamData14SecReg 3
-#define GlintPatternRamData14SecOff 0x7b70
-
-#define GlintPatternRamData15 0x8b78
-#define GlintPatternRamData15Tag 0x016f
-#define GlintPatternRamData15Reg 1
-#define GlintPatternRamData15Off 0x7b78
-#define GlintPatternRamData15Sec 0x8b78
-#define GlintPatternRamData15SecReg 3
-#define GlintPatternRamData15SecOff 0x7b78
-
-#define GlintPatternRamData16 0x8b80
-#define GlintPatternRamData16Tag 0x0170
-#define GlintPatternRamData16Reg 1
-#define GlintPatternRamData16Off 0x7b80
-#define GlintPatternRamData16Sec 0x8b80
-#define GlintPatternRamData16SecReg 3
-#define GlintPatternRamData16SecOff 0x7b80
-
-#define GlintPatternRamData17 0x8b88
-#define GlintPatternRamData17Tag 0x0171
-#define GlintPatternRamData17Reg 1
-#define GlintPatternRamData17Off 0x7b88
-#define GlintPatternRamData17Sec 0x8b88
-#define GlintPatternRamData17SecReg 3
-#define GlintPatternRamData17SecOff 0x7b88
-
-#define GlintPatternRamData18 0x8b90
-#define GlintPatternRamData18Tag 0x0172
-#define GlintPatternRamData18Reg 1
-#define GlintPatternRamData18Off 0x7b90
-#define GlintPatternRamData18Sec 0x8b90
-#define GlintPatternRamData18SecReg 3
-#define GlintPatternRamData18SecOff 0x7b90
-
-#define GlintPatternRamData19 0x8b98
-#define GlintPatternRamData19Tag 0x0173
-#define GlintPatternRamData19Reg 1
-#define GlintPatternRamData19Off 0x7b98
-#define GlintPatternRamData19Sec 0x8b98
-#define GlintPatternRamData19SecReg 3
-#define GlintPatternRamData19SecOff 0x7b98
-
-#define GlintPatternRamData20 0x8ba0
-#define GlintPatternRamData20Tag 0x0174
-#define GlintPatternRamData20Reg 1
-#define GlintPatternRamData20Off 0x7ba0
-#define GlintPatternRamData20Sec 0x8ba0
-#define GlintPatternRamData20SecReg 3
-#define GlintPatternRamData20SecOff 0x7ba0
-
-#define GlintPatternRamData21 0x8ba8
-#define GlintPatternRamData21Tag 0x0175
-#define GlintPatternRamData21Reg 1
-#define GlintPatternRamData21Off 0x7ba8
-#define GlintPatternRamData21Sec 0x8ba8
-#define GlintPatternRamData21SecReg 3
-#define GlintPatternRamData21SecOff 0x7ba8
-
-#define GlintPatternRamData22 0x8bb0
-#define GlintPatternRamData22Tag 0x0176
-#define GlintPatternRamData22Reg 1
-#define GlintPatternRamData22Off 0x7bb0
-#define GlintPatternRamData22Sec 0x8bb0
-#define GlintPatternRamData22SecReg 3
-#define GlintPatternRamData22SecOff 0x7bb0
-
-#define GlintPatternRamData23 0x8bb8
-#define GlintPatternRamData23Tag 0x0177
-#define GlintPatternRamData23Reg 1
-#define GlintPatternRamData23Off 0x7bb8
-#define GlintPatternRamData23Sec 0x8bb8
-#define GlintPatternRamData23SecReg 3
-#define GlintPatternRamData23SecOff 0x7bb8
-
-#define GlintPatternRamData24 0x8bc0
-#define GlintPatternRamData24Tag 0x0178
-#define GlintPatternRamData24Reg 1
-#define GlintPatternRamData24Off 0x7bc0
-#define GlintPatternRamData24Sec 0x8bc0
-#define GlintPatternRamData24SecReg 3
-#define GlintPatternRamData24SecOff 0x7bc0
-
-#define GlintPatternRamData25 0x8bc8
-#define GlintPatternRamData25Tag 0x0179
-#define GlintPatternRamData25Reg 1
-#define GlintPatternRamData25Off 0x7bc8
-#define GlintPatternRamData25Sec 0x8bc8
-#define GlintPatternRamData25SecReg 3
-#define GlintPatternRamData25SecOff 0x7bc8
-
-#define GlintPatternRamData26 0x8bd0
-#define GlintPatternRamData26Tag 0x017a
-#define GlintPatternRamData26Reg 1
-#define GlintPatternRamData26Off 0x7bd0
-#define GlintPatternRamData26Sec 0x8bd0
-#define GlintPatternRamData26SecReg 3
-#define GlintPatternRamData26SecOff 0x7bd0
-
-#define GlintPatternRamData27 0x8bd8
-#define GlintPatternRamData27Tag 0x017b
-#define GlintPatternRamData27Reg 1
-#define GlintPatternRamData27Off 0x7bd8
-#define GlintPatternRamData27Sec 0x8bd8
-#define GlintPatternRamData27SecReg 3
-#define GlintPatternRamData27SecOff 0x7bd8
-
-#define GlintPatternRamData28 0x8be0
-#define GlintPatternRamData28Tag 0x017c
-#define GlintPatternRamData28Reg 1
-#define GlintPatternRamData28Off 0x7be0
-#define GlintPatternRamData28Sec 0x8be0
-#define GlintPatternRamData28SecReg 3
-#define GlintPatternRamData28SecOff 0x7be0
-
-#define GlintPatternRamData29 0x8be8
-#define GlintPatternRamData29Tag 0x017d
-#define GlintPatternRamData29Reg 1
-#define GlintPatternRamData29Off 0x7be8
-#define GlintPatternRamData29Sec 0x8be8
-#define GlintPatternRamData29SecReg 3
-#define GlintPatternRamData29SecOff 0x7be8
-
-#define GlintPatternRamData30 0x8bf0
-#define GlintPatternRamData30Tag 0x017e
-#define GlintPatternRamData30Reg 1
-#define GlintPatternRamData30Off 0x7bf0
-#define GlintPatternRamData30Sec 0x8bf0
-#define GlintPatternRamData30SecReg 3
-#define GlintPatternRamData30SecOff 0x7bf0
-
-#define GlintPatternRamData31 0x8bf8
-#define GlintPatternRamData31Tag 0x017f
-#define GlintPatternRamData31Reg 1
-#define GlintPatternRamData31Off 0x7bf8
-#define GlintPatternRamData31Sec 0x8bf8
-#define GlintPatternRamData31SecReg 3
-#define GlintPatternRamData31SecOff 0x7bf8
-
-#define GlintFBBlockColorU 0x8c68
-#define GlintFBBlockColorUTag 0x018d
-#define GlintFBBlockColorUReg 1
-#define GlintFBBlockColorUOff 0x7c68
-#define GlintFBBlockColorUSec 0x8c68
-#define GlintFBBlockColorUSecReg 3
-#define GlintFBBlockColorUSecOff 0x7c68
-
-#define GlintFBBlockColorL 0x8c70
-#define GlintFBBlockColorLTag 0x018e
-#define GlintFBBlockColorLReg 1
-#define GlintFBBlockColorLOff 0x7c70
-#define GlintFBBlockColorLSec 0x8c70
-#define GlintFBBlockColorLSecReg 3
-#define GlintFBBlockColorLSecOff 0x7c70
-
-#define GlintSuspendUntilFrameBlank 0x8c78
-#define GlintSuspendUntilFrameBlankTag 0x018f
-#define GlintSuspendUntilFrameBlankReg 1
-#define GlintSuspendUntilFrameBlankOff 0x7c78
-#define GlintSuspendUntilFrameBlankSec 0x8c78
-#define GlintSuspendUntilFrameBlankSecReg 3
-#define GlintSuspendUntilFrameBlankSecOff 0x7c78
-
-#define GlintFilterMode 0x8c00
-#define GlintFilterModeTag 0x0180
-#define GlintFilterModeReg 1
-#define GlintFilterModeOff 0x7c00
-#define GlintFilterModeSec 0x8c00
-#define GlintFilterModeSecReg 3
-#define GlintFilterModeSecOff 0x7c00
-
-#define GlintStatisticMode 0x8c08
-#define GlintStatisticModeTag 0x0181
-#define GlintStatisticModeReg 1
-#define GlintStatisticModeOff 0x7c08
-#define GlintStatisticModeSec 0x8c08
-#define GlintStatisticModeSecReg 3
-#define GlintStatisticModeSecOff 0x7c08
-
-#define GlintMinRegion 0x8c10
-#define GlintMinRegionTag 0x0182
-#define GlintMinRegionReg 1
-#define GlintMinRegionOff 0x7c10
-#define GlintMinRegionSec 0x8c10
-#define GlintMinRegionSecReg 3
-#define GlintMinRegionSecOff 0x7c10
-
-#define GlintMaxRegion 0x8c18
-#define GlintMaxRegionTag 0x0183
-#define GlintMaxRegionReg 1
-#define GlintMaxRegionOff 0x7c18
-#define GlintMaxRegionSec 0x8c18
-#define GlintMaxRegionSecReg 3
-#define GlintMaxRegionSecOff 0x7c18
-
-#define GlintResetPickResult 0x8c20
-#define GlintResetPickResultTag 0x0184
-#define GlintResetPickResultReg 1
-#define GlintResetPickResultOff 0x7c20
-#define GlintResetPickResultSec 0x8c20
-#define GlintResetPickResultSecReg 3
-#define GlintResetPickResultSecOff 0x7c20
-
-#define GlintMitHitRegion 0x8c28
-#define GlintMitHitRegionTag 0x0185
-#define GlintMitHitRegionReg 1
-#define GlintMitHitRegionOff 0x7c28
-#define GlintMitHitRegionSec 0x8c28
-#define GlintMitHitRegionSecReg 3
-#define GlintMitHitRegionSecOff 0x7c28
-
-#define GlintMaxHitRegion 0x8c30
-#define GlintMaxHitRegionTag 0x0186
-#define GlintMaxHitRegionReg 1
-#define GlintMaxHitRegionOff 0x7c30
-#define GlintMaxHitRegionSec 0x8c30
-#define GlintMaxHitRegionSecReg 3
-#define GlintMaxHitRegionSecOff 0x7c30
-
-#define GlintPickResult 0x8c38
-#define GlintPickResultTag 0x0187
-#define GlintPickResultReg 1
-#define GlintPickResultOff 0x7c38
-#define GlintPickResultSec 0x8c38
-#define GlintPickResultSecReg 3
-#define GlintPickResultSecOff 0x7c38
-
-#define GlintGLINTSync 0x8c40
-#define GlintGLINTSyncTag 0x0188
-#define GlintGLINTSyncReg 1
-#define GlintGLINTSyncOff 0x7c40
-#define GlintGLINTSyncSec 0x8c40
-#define GlintGLINTSyncSecReg 3
-#define GlintGLINTSyncSecOff 0x7c40
-
-#define GlintKsRStart 0x8c80
-#define GlintKsRStartTag 0x0190
-#define GlintKsRStartReg 1
-#define GlintKsRStartOff 0x7c80
-#define GlintKsRStartSec 0x8c80
-#define GlintKsRStartSecReg 3
-#define GlintKsRStartSecOff 0x7c80
-
-#define GlintdKsRdx 0x8c88
-#define GlintdKsRdxTag 0x0191
-#define GlintdKsRdxReg 1
-#define GlintdKsRdxOff 0x7c88
-#define GlintdKsRdxSec 0x8c88
-#define GlintdKsRdxSecReg 3
-#define GlintdKsRdxSecOff 0x7c88
-
-#define GlintdKsRdyDom 0x8c90
-#define GlintdKsRdyDomTag 0x0192
-#define GlintdKsRdyDomReg 1
-#define GlintdKsRdyDomOff 0x7c90
-#define GlintdKsRdyDomSec 0x8c90
-#define GlintdKsRdyDomSecReg 3
-#define GlintdKsRdyDomSecOff 0x7c90
-
-#define GlintKsGStart 0x8c98
-#define GlintKsGStartTag 0x0193
-#define GlintKsGStartReg 1
-#define GlintKsGStartOff 0x7c98
-#define GlintKsGStartSec 0x8c98
-#define GlintKsGStartSecReg 3
-#define GlintKsGStartSecOff 0x7c98
-
-#define GlintdKsGdx 0x8ca0
-#define GlintdKsGdxTag 0x0194
-#define GlintdKsGdxReg 1
-#define GlintdKsGdxOff 0x7ca0
-#define GlintdKsGdxSec 0x8ca0
-#define GlintdKsGdxSecReg 3
-#define GlintdKsGdxSecOff 0x7ca0
-
-#define GlintdKsGdyDom 0x8ca8
-#define GlintdKsGdyDomTag 0x0195
-#define GlintdKsGdyDomReg 1
-#define GlintdKsGdyDomOff 0x7ca8
-#define GlintdKsGdyDomSec 0x8ca8
-#define GlintdKsGdyDomSecReg 3
-#define GlintdKsGdyDomSecOff 0x7ca8
-
-#define GlintKsBStart 0x8cb0
-#define GlintKsBStartTag 0x0196
-#define GlintKsBStartReg 1
-#define GlintKsBStartOff 0x7cb0
-#define GlintKsBStartSec 0x8cb0
-#define GlintKsBStartSecReg 3
-#define GlintKsBStartSecOff 0x7cb0
-
-#define GlintdKsBdx 0x8cb8
-#define GlintdKsBdxTag 0x0197
-#define GlintdKsBdxReg 1
-#define GlintdKsBdxOff 0x7cb8
-#define GlintdKsBdxSec 0x8cb8
-#define GlintdKsBdxSecReg 3
-#define GlintdKsBdxSecOff 0x7cb8
-
-#define GlintdKsBdyDom 0x8cc0
-#define GlintdKsBdyDomTag 0x0198
-#define GlintdKsBdyDomReg 1
-#define GlintdKsBdyDomOff 0x7cc0
-#define GlintdKsBdyDomSec 0x8cc0
-#define GlintdKsBdyDomSecReg 3
-#define GlintdKsBdyDomSecOff 0x7cc0
-
-#define GlintKdRStart 0x8d00
-#define GlintKdRStartTag 0x01a0
-#define GlintKdRStartReg 1
-#define GlintKdRStartOff 0x7d00
-#define GlintKdRStartSec 0x8d00
-#define GlintKdRStartSecReg 3
-#define GlintKdRStartSecOff 0x7d00
-
-#define GlintdKdRdx 0x8d08
-#define GlintdKdRdxTag 0x01a1
-#define GlintdKdRdxReg 1
-#define GlintdKdRdxOff 0x7d08
-#define GlintdKdRdxSec 0x8d08
-#define GlintdKdRdxSecReg 3
-#define GlintdKdRdxSecOff 0x7d08
-
-#define GlintdKdRdyDom 0x8d10
-#define GlintdKdRdyDomTag 0x01a2
-#define GlintdKdRdyDomReg 1
-#define GlintdKdRdyDomOff 0x7d10
-#define GlintdKdRdyDomSec 0x8d10
-#define GlintdKdRdyDomSecReg 3
-#define GlintdKdRdyDomSecOff 0x7d10
-
-#define GlintKdGStart 0x8d18
-#define GlintKdGStartTag 0x01a3
-#define GlintKdGStartReg 1
-#define GlintKdGStartOff 0x7d18
-#define GlintKdGStartSec 0x8d18
-#define GlintKdGStartSecReg 3
-#define GlintKdGStartSecOff 0x7d18
-
-#define GlintdKdGdx 0x8d20
-#define GlintdKdGdxTag 0x01a4
-#define GlintdKdGdxReg 1
-#define GlintdKdGdxOff 0x7d20
-#define GlintdKdGdxSec 0x8d20
-#define GlintdKdGdxSecReg 3
-#define GlintdKdGdxSecOff 0x7d20
-
-#define GlintdKdGdyDom 0x8d28
-#define GlintdKdGdyDomTag 0x01a5
-#define GlintdKdGdyDomReg 1
-#define GlintdKdGdyDomOff 0x7d28
-#define GlintdKdGdyDomSec 0x8d28
-#define GlintdKdGdyDomSecReg 3
-#define GlintdKdGdyDomSecOff 0x7d28
-
-#define GlintKdBStart 0x8d30
-#define GlintKdBStartTag 0x01a6
-#define GlintKdBStartReg 1
-#define GlintKdBStartOff 0x7d30
-#define GlintKdBStartSec 0x8d30
-#define GlintKdBStartSecReg 3
-#define GlintKdBStartSecOff 0x7d30
-
-#define GlintdKdBdx 0x8d38
-#define GlintdKdBdxTag 0x01a7
-#define GlintdKdBdxReg 1
-#define GlintdKdBdxOff 0x7d38
-#define GlintdKdBdxSec 0x8d38
-#define GlintdKdBdxSecReg 3
-#define GlintdKdBdxSecOff 0x7d38
-
-#define GlintdKdBdyDom 0x8d40
-#define GlintdKdBdyDomTag 0x01a8
-#define GlintdKdBdyDomReg 1
-#define GlintdKdBdyDomOff 0x7d40
-#define GlintdKdBdyDomSec 0x8d40
-#define GlintdKdBdyDomSecReg 3
-#define GlintdKdBdyDomSecOff 0x7d40
-
-#define GlintContextDump 0x8dc0
-#define GlintContextDumpTag 0x01b8
-#define GlintContextDumpReg 1
-#define GlintContextDumpOff 0x7dc0
-
-#define GlintContextRestore 0x8dc8
-#define GlintContextRestoreTag 0x01b9
-#define GlintContextRestoreReg 1
-#define GlintContextRestoreOff 0x7dc8
-
-#define GlintContextData 0x8dd0
-#define GlintContextDataTag 0x01ba
-#define GlintContextDataReg 1
-#define GlintContextDataOff 0x7dd0
-
-#define GlintFeedbackToken 0x8f80
-#define GlintFeedbackTokenTag 0x01f0
-#define GlintFeedbackTokenReg 1
-#define GlintFeedbackTokenOff 0x7f80
-
-#define GlintFeedbackX 0x8f88
-#define GlintFeedbackXTag 0x01f1
-#define GlintFeedbackXReg 1
-#define GlintFeedbackXOff 0x7f88
-
-#define GlintFeedbackY 0x8f90
-#define GlintFeedbackYTag 0x01f2
-#define GlintFeedbackYReg 1
-#define GlintFeedbackYOff 0x7f90
-
-#define GlintFeedbackZ 0x8f98
-#define GlintFeedbackZTag 0x01f3
-#define GlintFeedbackZReg 1
-#define GlintFeedbackZOff 0x7f98
-
-#define GlintFeedbackW 0x8fa0
-#define GlintFeedbackWTag 0x01f4
-#define GlintFeedbackWReg 1
-#define GlintFeedbackWOff 0x7fa0
-
-#define GlintFeedbackRed 0x8fa8
-#define GlintFeedbackRedTag 0x01f5
-#define GlintFeedbackRedReg 1
-#define GlintFeedbackRedOff 0x7fa8
-
-#define GlintFeedbackGreen 0x8fb0
-#define GlintFeedbackGreenTag 0x01f6
-#define GlintFeedbackGreenReg 1
-#define GlintFeedbackGreenOff 0x7fb0
-
-#define GlintFeedbackBlue 0x8fb8
-#define GlintFeedbackBlueTag 0x01f7
-#define GlintFeedbackBlueReg 1
-#define GlintFeedbackBlueOff 0x7fb8
-
-#define GlintFeedbackAlpha 0x8fc0
-#define GlintFeedbackAlphaTag 0x01f8
-#define GlintFeedbackAlphaReg 1
-#define GlintFeedbackAlphaOff 0x7fc0
-
-#define GlintFeedbackS 0x8fc8
-#define GlintFeedbackSTag 0x01f9
-#define GlintFeedbackSReg 1
-#define GlintFeedbackSOff 0x7fc8
-
-#define GlintFeedbackT 0x8fd0
-#define GlintFeedbackTTag 0x01fa
-#define GlintFeedbackTReg 1
-#define GlintFeedbackTOff 0x7fd0
-
-#define GlintFeedbackR 0x8fd8
-#define GlintFeedbackRTag 0x01fb
-#define GlintFeedbackRReg 1
-#define GlintFeedbackROff 0x7fd8
-
-#define GlintFeedbackQ 0x8fe0
-#define GlintFeedbackQTag 0x01fc
-#define GlintFeedbackQReg 1
-#define GlintFeedbackQOff 0x7fe0
-
-#define GlintSelectRecord 0x8fe8
-#define GlintSelectRecordTag 0x01fd
-#define GlintSelectRecordReg 1
-#define GlintSelectRecordOff 0x7fe8
-
-#define GlintPassThrough 0x8ff0
-#define GlintPassThroughTag 0x01fe
-#define GlintPassThroughReg 1
-#define GlintPassThroughOff 0x7ff0
-
-#define GlintEndOfFeedback 0x8ff8
-#define GlintEndOfFeedbackTag 0x01ff
-#define GlintEndOfFeedbackReg 1
-#define GlintEndOfFeedbackOff 0x7ff8
-
-#define GlintV0FixedS 0x9000
-#define GlintV0FixedSTag 0x0200
-#define GlintV0FixedSReg 1
-#define GlintV0FixedSOff 0x8000
-
-#define GlintV0FixedT 0x9008
-#define GlintV0FixedTTag 0x0201
-#define GlintV0FixedTReg 1
-#define GlintV0FixedTOff 0x8008
-
-#define GlintV0FixedQ 0x9010
-#define GlintV0FixedQTag 0x0202
-#define GlintV0FixedQReg 1
-#define GlintV0FixedQOff 0x8010
-
-#define GlintV0FixedKs 0x9018
-#define GlintV0FixedKsTag 0x0203
-#define GlintV0FixedKsReg 1
-#define GlintV0FixedKsOff 0x8018
-
-#define GlintV0FixedKd 0x9020
-#define GlintV0FixedKdTag 0x0204
-#define GlintV0FixedKdReg 1
-#define GlintV0FixedKdOff 0x8020
-
-#define GlintV0FixedR 0x9028
-#define GlintV0FixedRTag 0x0205
-#define GlintV0FixedRReg 1
-#define GlintV0FixedROff 0x8028
-
-#define GlintV0FixedG 0x9030
-#define GlintV0FixedGTag 0x0206
-#define GlintV0FixedGReg 1
-#define GlintV0FixedGOff 0x8030
-
-#define GlintV0FixedB 0x9038
-#define GlintV0FixedBTag 0x0207
-#define GlintV0FixedBReg 1
-#define GlintV0FixedBOff 0x8038
-
-#define GlintV0FixedA 0x9040
-#define GlintV0FixedATag 0x0208
-#define GlintV0FixedAReg 1
-#define GlintV0FixedAOff 0x8040
-
-#define GlintV0FixedF 0x9048
-#define GlintV0FixedFTag 0x0209
-#define GlintV0FixedFReg 1
-#define GlintV0FixedFOff 0x8048
-
-#define GlintV0FixedX 0x9050
-#define GlintV0FixedXTag 0x020a
-#define GlintV0FixedXReg 1
-#define GlintV0FixedXOff 0x8050
-
-#define GlintV0FixedY 0x9058
-#define GlintV0FixedYTag 0x020b
-#define GlintV0FixedYReg 1
-#define GlintV0FixedYOff 0x8058
-
-#define GlintV0FixedZ 0x9060
-#define GlintV0FixedZTag 0x020c
-#define GlintV0FixedZReg 1
-#define GlintV0FixedZOff 0x8060
-
-#define GlintV1FixedS 0x9080
-#define GlintV1FixedSTag 0x0210
-#define GlintV1FixedSReg 1
-#define GlintV1FixedSOff 0x8080
-
-#define GlintV1FixedT 0x9088
-#define GlintV1FixedTTag 0x0211
-#define GlintV1FixedTReg 1
-#define GlintV1FixedTOff 0x8088
-
-#define GlintV1FixedQ 0x9090
-#define GlintV1FixedQTag 0x0212
-#define GlintV1FixedQReg 1
-#define GlintV1FixedQOff 0x8090
-
-#define GlintV1FixedKs 0x9098
-#define GlintV1FixedKsTag 0x0213
-#define GlintV1FixedKsReg 1
-#define GlintV1FixedKsOff 0x8098
-
-#define GlintV1FixedKd 0x90a0
-#define GlintV1FixedKdTag 0x0214
-#define GlintV1FixedKdReg 1
-#define GlintV1FixedKdOff 0x80a0
-
-#define GlintV1FixedR 0x90a8
-#define GlintV1FixedRTag 0x0215
-#define GlintV1FixedRReg 1
-#define GlintV1FixedROff 0x80a8
-
-#define GlintV1FixedG 0x90b0
-#define GlintV1FixedGTag 0x0216
-#define GlintV1FixedGReg 1
-#define GlintV1FixedGOff 0x80b0
-
-#define GlintV1FixedB 0x90b8
-#define GlintV1FixedBTag 0x0217
-#define GlintV1FixedBReg 1
-#define GlintV1FixedBOff 0x80b8
-
-#define GlintV1FixedA 0x90c0
-#define GlintV1FixedATag 0x0218
-#define GlintV1FixedAReg 1
-#define GlintV1FixedAOff 0x80c0
-
-#define GlintV1FixedF 0x90c8
-#define GlintV1FixedFTag 0x0219
-#define GlintV1FixedFReg 1
-#define GlintV1FixedFOff 0x80c8
-
-#define GlintV1FixedX 0x90d0
-#define GlintV1FixedXTag 0x021a
-#define GlintV1FixedXReg 1
-#define GlintV1FixedXOff 0x80d0
-
-#define GlintV1FixedY 0x90d8
-#define GlintV1FixedYTag 0x021b
-#define GlintV1FixedYReg 1
-#define GlintV1FixedYOff 0x80d8
-
-#define GlintV1FixedZ 0x90e0
-#define GlintV1FixedZTag 0x021c
-#define GlintV1FixedZReg 1
-#define GlintV1FixedZOff 0x80e0
-
-#define GlintV2FixedS 0x9100
-#define GlintV2FixedSTag 0x0220
-#define GlintV2FixedSReg 1
-#define GlintV2FixedSOff 0x8100
-
-#define GlintV2FixedT 0x9108
-#define GlintV2FixedTTag 0x0221
-#define GlintV2FixedTReg 1
-#define GlintV2FixedTOff 0x8108
-
-#define GlintV2FixedQ 0x9110
-#define GlintV2FixedQTag 0x0222
-#define GlintV2FixedQReg 1
-#define GlintV2FixedQOff 0x8110
-
-#define GlintV2FixedKs 0x9118
-#define GlintV2FixedKsTag 0x0223
-#define GlintV2FixedKsReg 1
-#define GlintV2FixedKsOff 0x8118
-
-#define GlintV2FixedKd 0x9120
-#define GlintV2FixedKdTag 0x0224
-#define GlintV2FixedKdReg 1
-#define GlintV2FixedKdOff 0x8120
-
-#define GlintV2FixedR 0x9128
-#define GlintV2FixedRTag 0x0225
-#define GlintV2FixedRReg 1
-#define GlintV2FixedROff 0x8128
-
-#define GlintV2FixedG 0x9130
-#define GlintV2FixedGTag 0x0226
-#define GlintV2FixedGReg 1
-#define GlintV2FixedGOff 0x8130
-
-#define GlintV2FixedB 0x9138
-#define GlintV2FixedBTag 0x0227
-#define GlintV2FixedBReg 1
-#define GlintV2FixedBOff 0x8138
-
-#define GlintV2FixedA 0x9140
-#define GlintV2FixedATag 0x0228
-#define GlintV2FixedAReg 1
-#define GlintV2FixedAOff 0x8140
-
-#define GlintV2FixedF 0x9148
-#define GlintV2FixedFTag 0x0229
-#define GlintV2FixedFReg 1
-#define GlintV2FixedFOff 0x8148
-
-#define GlintV2FixedX 0x9150
-#define GlintV2FixedXTag 0x022a
-#define GlintV2FixedXReg 1
-#define GlintV2FixedXOff 0x8150
-
-#define GlintV2FixedY 0x9158
-#define GlintV2FixedYTag 0x022b
-#define GlintV2FixedYReg 1
-#define GlintV2FixedYOff 0x8158
-
-#define GlintV2FixedZ 0x9160
-#define GlintV2FixedZTag 0x022c
-#define GlintV2FixedZReg 1
-#define GlintV2FixedZOff 0x8160
-
-#define GlintV0FloatS 0x9180
-#define GlintV0FloatSTag 0x0230
-#define GlintV0FloatSReg 1
-#define GlintV0FloatSOff 0x8180
-
-#define GlintV0FloatT 0x9188
-#define GlintV0FloatTTag 0x0231
-#define GlintV0FloatTReg 1
-#define GlintV0FloatTOff 0x8188
-
-#define GlintV0FloatQ 0x9190
-#define GlintV0FloatQTag 0x0232
-#define GlintV0FloatQReg 1
-#define GlintV0FloatQOff 0x8190
-
-#define GlintV0FloatKs 0x9198
-#define GlintV0FloatKsTag 0x0233
-#define GlintV0FloatKsReg 1
-#define GlintV0FloatKsOff 0x8198
-
-#define GlintV0FloatKd 0x91a0
-#define GlintV0FloatKdTag 0x0234
-#define GlintV0FloatKdReg 1
-#define GlintV0FloatKdOff 0x81a0
-
-#define GlintV0FloatR 0x91a8
-#define GlintV0FloatRTag 0x0235
-#define GlintV0FloatRReg 1
-#define GlintV0FloatROff 0x81a8
-
-#define GlintV0FloatG 0x91b0
-#define GlintV0FloatGTag 0x0236
-#define GlintV0FloatGReg 1
-#define GlintV0FloatGOff 0x81b0
-
-#define GlintV0FloatB 0x91b8
-#define GlintV0FloatBTag 0x0237
-#define GlintV0FloatBReg 1
-#define GlintV0FloatBOff 0x81b8
-
-#define GlintV0FloatA 0x91c0
-#define GlintV0FloatATag 0x0238
-#define GlintV0FloatAReg 1
-#define GlintV0FloatAOff 0x81c0
-
-#define GlintV0FloatF 0x91c8
-#define GlintV0FloatFTag 0x0239
-#define GlintV0FloatFReg 1
-#define GlintV0FloatFOff 0x81c8
-
-#define GlintV0FloatX 0x91d0
-#define GlintV0FloatXTag 0x023a
-#define GlintV0FloatXReg 1
-#define GlintV0FloatXOff 0x81d0
-
-#define GlintV0FloatY 0x91d8
-#define GlintV0FloatYTag 0x023b
-#define GlintV0FloatYReg 1
-#define GlintV0FloatYOff 0x81d8
-
-#define GlintV0FloatZ 0x91e0
-#define GlintV0FloatZTag 0x023c
-#define GlintV0FloatZReg 1
-#define GlintV0FloatZOff 0x81e0
-
-#define GlintV1FloatS 0x9200
-#define GlintV1FloatSTag 0x0240
-#define GlintV1FloatSReg 1
-#define GlintV1FloatSOff 0x8200
-
-#define GlintV1FloatT 0x9208
-#define GlintV1FloatTTag 0x0241
-#define GlintV1FloatTReg 1
-#define GlintV1FloatTOff 0x8208
-
-#define GlintV1FloatQ 0x9210
-#define GlintV1FloatQTag 0x0242
-#define GlintV1FloatQReg 1
-#define GlintV1FloatQOff 0x8210
-
-#define GlintV1FloatKs 0x9218
-#define GlintV1FloatKsTag 0x0243
-#define GlintV1FloatKsReg 1
-#define GlintV1FloatKsOff 0x8218
-
-#define GlintV1FloatKd 0x9220
-#define GlintV1FloatKdTag 0x0244
-#define GlintV1FloatKdReg 1
-#define GlintV1FloatKdOff 0x8220
-
-#define GlintV1FloatR 0x9228
-#define GlintV1FloatRTag 0x0245
-#define GlintV1FloatRReg 1
-#define GlintV1FloatROff 0x8228
-
-#define GlintV1FloatG 0x9230
-#define GlintV1FloatGTag 0x0246
-#define GlintV1FloatGReg 1
-#define GlintV1FloatGOff 0x8230
-
-#define GlintV1FloatB 0x9238
-#define GlintV1FloatBTag 0x0247
-#define GlintV1FloatBReg 1
-#define GlintV1FloatBOff 0x8238
-
-#define GlintV1FloatA 0x9240
-#define GlintV1FloatATag 0x0248
-#define GlintV1FloatAReg 1
-#define GlintV1FloatAOff 0x8240
-
-#define GlintV1FloatF 0x9248
-#define GlintV1FloatFTag 0x0249
-#define GlintV1FloatFReg 1
-#define GlintV1FloatFOff 0x8248
-
-#define GlintV1FloatX 0x9250
-#define GlintV1FloatXTag 0x024a
-#define GlintV1FloatXReg 1
-#define GlintV1FloatXOff 0x8250
-
-#define GlintV1FloatY 0x9258
-#define GlintV1FloatYTag 0x024b
-#define GlintV1FloatYReg 1
-#define GlintV1FloatYOff 0x8258
-
-#define GlintV1FloatZ 0x9260
-#define GlintV1FloatZTag 0x024c
-#define GlintV1FloatZReg 1
-#define GlintV1FloatZOff 0x8260
-
-#define GlintV2FloatS 0x9280
-#define GlintV2FloatSTag 0x0250
-#define GlintV2FloatSReg 1
-#define GlintV2FloatSOff 0x8280
-
-#define GlintV2FloatT 0x9288
-#define GlintV2FloatTTag 0x0251
-#define GlintV2FloatTReg 1
-#define GlintV2FloatTOff 0x8288
-
-#define GlintV2FloatQ 0x9290
-#define GlintV2FloatQTag 0x0252
-#define GlintV2FloatQReg 1
-#define GlintV2FloatQOff 0x8290
-
-#define GlintV2FloatKs 0x9298
-#define GlintV2FloatKsTag 0x0253
-#define GlintV2FloatKsReg 1
-#define GlintV2FloatKsOff 0x8298
-
-#define GlintV2FloatKd 0x92a0
-#define GlintV2FloatKdTag 0x0254
-#define GlintV2FloatKdReg 1
-#define GlintV2FloatKdOff 0x82a0
-
-#define GlintV2FloatR 0x92a8
-#define GlintV2FloatRTag 0x0255
-#define GlintV2FloatRReg 1
-#define GlintV2FloatROff 0x82a8
-
-#define GlintV2FloatG 0x92b0
-#define GlintV2FloatGTag 0x0256
-#define GlintV2FloatGReg 1
-#define GlintV2FloatGOff 0x82b0
-
-#define GlintV2FloatB 0x92b8
-#define GlintV2FloatBTag 0x0257
-#define GlintV2FloatBReg 1
-#define GlintV2FloatBOff 0x82b8
-
-#define GlintV2FloatA 0x92c0
-#define GlintV2FloatATag 0x0258
-#define GlintV2FloatAReg 1
-#define GlintV2FloatAOff 0x82c0
-
-#define GlintV2FloatF 0x92c8
-#define GlintV2FloatFTag 0x0259
-#define GlintV2FloatFReg 1
-#define GlintV2FloatFOff 0x82c8
-
-#define GlintV2FloatX 0x92d0
-#define GlintV2FloatXTag 0x025a
-#define GlintV2FloatXReg 1
-#define GlintV2FloatXOff 0x82d0
-
-#define GlintV2FloatY 0x92d8
-#define GlintV2FloatYTag 0x025b
-#define GlintV2FloatYReg 1
-#define GlintV2FloatYOff 0x82d8
-
-#define GlintV2FloatZ 0x92e0
-#define GlintV2FloatZTag 0x025c
-#define GlintV2FloatZReg 1
-#define GlintV2FloatZOff 0x82e0
-
-#define GlintDeltaMode 0x9300
-#define GlintDeltaModeTag 0x0260
-#define GlintDeltaModeReg 1
-#define GlintDeltaModeOff 0x8300
-
-#define GlintDrawTriangle 0x9308
-#define GlintDrawTriangleTag 0x0261
-#define GlintDrawTriangleReg 1
-#define GlintDrawTriangleOff 0x8308
-
-#define GlintRepeatTriangle 0x9310
-#define GlintRepeatTriangleTag 0x0262
-#define GlintRepeatTriangleReg 1
-#define GlintRepeatTriangleOff 0x8310
-
-#define GlintDrawLine01 0x9318
-#define GlintDrawLine01Tag 0x0263
-#define GlintDrawLine01Reg 1
-#define GlintDrawLine01Off 0x8318
-
-#define GlintDrawLine10 0x9320
-#define GlintDrawLine10Tag 0x0264
-#define GlintDrawLine10Reg 1
-#define GlintDrawLine10Off 0x8320
-
-#define GlintRepeatLine 0x9328
-#define GlintRepeatLineTag 0x0265
-#define GlintRepeatLineReg 1
-#define GlintRepeatLineOff 0x8328
-
-#define GlintEpilogueTag 0x9368
-#define GlintEpilogueTagTag 0x026d
-#define GlintEpilogueTagReg 1
-#define GlintEpilogueTagOff 0x8368
-
-#define GlintEpilogueData 0x9370
-#define GlintEpilogueDataTag 0x026e
-#define GlintEpilogueDataReg 1
-#define GlintEpilogueDataOff 0x8370
-
-#define GlintBroadcastMask 0x9378
-#define GlintBroadcastMaskTag 0x026f
-#define GlintBroadcastMaskReg 1
-#define GlintBroadcastMaskOff 0x8378
-
-#define GlintXBias 0x9480
-#define GlintXBiasTag 0x0290
-#define GlintXBiasReg 1
-#define GlintXBiasOff 0x8480
-
-#define GlintYBias 0x9488
-#define GlintYBiasTag 0x0291
-#define GlintYBiasReg 1
-#define GlintYBiasOff 0x8488
-
-#define GlintPointMode 0x9490
-#define GlintPointModeTag 0x0292
-#define GlintPointModeReg 1
-#define GlintPointModeOff 0x8490
-
-#define GlintPointSize 0x9498
-#define GlintPointSizeTag 0x0293
-#define GlintPointSizeReg 1
-#define GlintPointSizeOff 0x8498
-
-#define GlintAApointSize 0x94a0
-#define GlintAApointSizeTag 0x0294
-#define GlintAApointSizeReg 1
-#define GlintAApointSizeOff 0x84a0
-
-#define GlintLineMode 0x94a8
-#define GlintLineModeTag 0x0295
-#define GlintLineModeReg 1
-#define GlintLineModeOff 0x84a8
-
-#define GlintLineWidth 0x94b0
-#define GlintLineWidthTag 0x0296
-#define GlintLineWidthReg 1
-#define GlintLineWidthOff 0x84b0
-
-#define GlintLineWidthOffset 0x94b8
-#define GlintLineWidthOffsetTag 0x0297
-#define GlintLineWidthOffsetReg 1
-#define GlintLineWidthOffsetOff 0x84b8
-
-#define GlintAAlineWidth 0x94c0
-#define GlintAAlineWidthTag 0x0298
-#define GlintAAlineWidthReg 1
-#define GlintAAlineWidthOff 0x84c0
-
-#define GlintTriangleMode 0x94c8
-#define GlintTriangleModeTag 0x0299
-#define GlintTriangleModeReg 1
-#define GlintTriangleModeOff 0x84c8
-
-#define GlintRectangleMode 0x94d0
-#define GlintRectangleModeTag 0x029a
-#define GlintRectangleModeReg 1
-#define GlintRectangleModeOff 0x84d0
-
-#define GlintRectangleWidth 0x94d8
-#define GlintRectangleWidthTag 0x029b
-#define GlintRectangleWidthReg 1
-#define GlintRectangleWidthOff 0x84d8
-
-#define GlintRectangleHeight 0x94e0
-#define GlintRectangleHeightTag 0x029c
-#define GlintRectangleHeightReg 1
-#define GlintRectangleHeightOff 0x84e0
-
-#define GlintRectangle2DMode 0x94e8
-#define GlintRectangle2DModeTag 0x029d
-#define GlintRectangle2DModeReg 1
-#define GlintRectangle2DModeOff 0x84e8
-
-#define GlintRectangle2DControl 0x94f0
-#define GlintRectangle2DControlTag 0x029e
-#define GlintRectangle2DControlReg 1
-#define GlintRectangle2DControlOff 0x84f0
-
-#define GlintTransformMode 0x9508
-#define GlintTransformModeTag 0x02a1
-#define GlintTransformModeReg 1
-#define GlintTransformModeOff 0x8508
-
-#define GlintGeometryMode 0x9510
-#define GlintGeometryModeTag 0x02a2
-#define GlintGeometryModeReg 1
-#define GlintGeometryModeOff 0x8510
-
-#define GlintNormalizeMode 0x9518
-#define GlintNormalizeModeTag 0x02a3
-#define GlintNormalizeModeReg 1
-#define GlintNormalizeModeOff 0x8518
-
-#define GlintLightingMode 0x9520
-#define GlintLightingModeTag 0x02a4
-#define GlintLightingModeReg 1
-#define GlintLightingModeOff 0x8520
-
-#define GlintColorMaterialMode 0x9528
-#define GlintColorMaterialModeTag 0x02a5
-#define GlintColorMaterialModeReg 1
-#define GlintColorMaterialModeOff 0x8528
-
-#define GlintMaterialMode 0x9530
-#define GlintMaterialModeTag 0x02a6
-#define GlintMaterialModeReg 1
-#define GlintMaterialModeOff 0x8530
-
-#define GlintSelectResult 0x9580
-#define GlintSelectResultTag 0x02b0
-#define GlintSelectResultReg 1
-#define GlintSelectResultOff 0x8580
-
-#define GlintBegin 0x9590
-#define GlintBeginTag 0x02b2
-#define GlintBeginReg 1
-#define GlintBeginOff 0x8590
-
-#define GlintEnd 0x9598
-#define GlintEndTag 0x02b3
-#define GlintEndReg 1
-#define GlintEndOff 0x8598
-
-#define GlintEdgeFlag 0x95a0
-#define GlintEdgeFlagTag 0x02b4
-#define GlintEdgeFlagReg 1
-#define GlintEdgeFlagOff 0x85a0
-
-#define GlintObjectIDvalue 0x95a8
-#define GlintObjectIDvalueTag 0x02b5
-#define GlintObjectIDvalueReg 1
-#define GlintObjectIDvalueOff 0x85a8
-
-#define GlintIncrementObjectID 0x95b0
-#define GlintIncrementObjectIDTag 0x02b6
-#define GlintIncrementObjectIDReg 1
-#define GlintIncrementObjectIDOff 0x85b0
-
-#define GlintTransformCurrent 0x95b8
-#define GlintTransformCurrentTag 0x02b7
-#define GlintTransformCurrentReg 1
-#define GlintTransformCurrentOff 0x85b8
-
-#define GlintSaveCurrent 0x95c8
-#define GlintSaveCurrentTag 0x02b9
-#define GlintSaveCurrentReg 1
-#define GlintSaveCurrentOff 0x85c8
-
-#define GlintRestoreCurrent 0x95d0
-#define GlintRestoreCurrentTag 0x02ba
-#define GlintRestoreCurrentReg 1
-#define GlintRestoreCurrentOff 0x85d0
-
-#define GlintInitNames 0x95d8
-#define GlintInitNamesTag 0x02bb
-#define GlintInitNamesReg 1
-#define GlintInitNamesOff 0x85d8
-
-#define GlintPushName 0x95e0
-#define GlintPushNameTag 0x02bc
-#define GlintPushNameReg 1
-#define GlintPushNameOff 0x85e0
-
-#define GlintPopName 0x95e8
-#define GlintPopNameTag 0x02bd
-#define GlintPopNameReg 1
-#define GlintPopNameOff 0x85e8
-
-#define GlintLoadName 0x95f0
-#define GlintLoadNameTag 0x02be
-#define GlintLoadNameReg 1
-#define GlintLoadNameOff 0x85f0
-
-#define GlintGeomRectangle 0x96a0
-#define GlintGeomRectangleTag 0x02d4
-#define GlintGeomRectangleReg 1
-#define GlintGeomRectangleOff 0x86a0
-
-#define GlintDrawRectangle2D 0x97a0
-#define GlintDrawRectangle2DTag 0x02f4
-#define GlintDrawRectangle2DReg 1
-#define GlintDrawRectangle2DOff 0x87a0
-
-#define GlintNz 0x9800
-#define GlintNzTag 0x0300
-#define GlintNzReg 1
-#define GlintNzOff 0x8800
-
-#define GlintNy 0x9808
-#define GlintNyTag 0x0301
-#define GlintNyReg 1
-#define GlintNyOff 0x8808
-
-#define GlintNx 0x9810
-#define GlintNxTag 0x0302
-#define GlintNxReg 1
-#define GlintNxOff 0x8810
-
-#define GlintCa 0x9818
-#define GlintCaTag 0x0303
-#define GlintCaReg 1
-#define GlintCaOff 0x8818
-
-#define GlintCb 0x9820
-#define GlintCbTag 0x0304
-#define GlintCbReg 1
-#define GlintCbOff 0x8820
-
-#define GlintCg 0x9828
-#define GlintCgTag 0x0305
-#define GlintCgReg 1
-#define GlintCgOff 0x8828
-
-#define GlintCr3 0x9830
-#define GlintCr3Tag 0x0306
-#define GlintCr3Reg 1
-#define GlintCr3Off 0x8830
-
-#define GlintCr4 0x9838
-#define GlintCr4Tag 0x0307
-#define GlintCr4Reg 1
-#define GlintCr4Off 0x8838
-
-#define GlintTt2 0x9840
-#define GlintTt2Tag 0x0308
-#define GlintTt2Reg 1
-#define GlintTt2Off 0x8840
-
-#define GlintTs2 0x9848
-#define GlintTs2Tag 0x0309
-#define GlintTs2Reg 1
-#define GlintTs2Off 0x8848
-
-#define GlintVw 0x9850
-#define GlintVwTag 0x030a
-#define GlintVwReg 1
-#define GlintVwOff 0x8850
-
-#define GlintVz 0x9858
-#define GlintVzTag 0x030b
-#define GlintVzReg 1
-#define GlintVzOff 0x8858
-
-#define GlintVy 0x9860
-#define GlintVyTag 0x030c
-#define GlintVyReg 1
-#define GlintVyOff 0x8860
-
-#define GlintVx2 0x9868
-#define GlintVx2Tag 0x030d
-#define GlintVx2Reg 1
-#define GlintVx2Off 0x8868
-
-#define GlintVx3 0x9870
-#define GlintVx3Tag 0x030e
-#define GlintVx3Reg 1
-#define GlintVx3Off 0x8870
-
-#define GlintVx4 0x9878
-#define GlintVx4Tag 0x030f
-#define GlintVx4Reg 1
-#define GlintVx4Off 0x8878
-
-#define GlintFNz 0x9880
-#define GlintFNzTag 0x0310
-#define GlintFNzReg 1
-#define GlintFNzOff 0x8880
-
-#define GlintFNy 0x9888
-#define GlintFNyTag 0x0311
-#define GlintFNyReg 1
-#define GlintFNyOff 0x8888
-
-#define GlintFNx 0x9890
-#define GlintFNxTag 0x0312
-#define GlintFNxReg 1
-#define GlintFNxOff 0x8890
-
-#define GlintPackedColor3 0x9898
-#define GlintPackedColor3Tag 0x0313
-#define GlintPackedColor3Reg 1
-#define GlintPackedColor3Off 0x8898
-
-#define GlintPackedColor4 0x98a0
-#define GlintPackedColor4Tag 0x0314
-#define GlintPackedColor4Reg 1
-#define GlintPackedColor4Off 0x88a0
-
-#define GlintTq4 0x98a8
-#define GlintTq4Tag 0x0315
-#define GlintTq4Reg 1
-#define GlintTq4Off 0x88a8
-
-#define GlintTr4 0x98b0
-#define GlintTr4Tag 0x0316
-#define GlintTr4Reg 1
-#define GlintTr4Off 0x88b0
-
-#define GlintTt4 0x98b8
-#define GlintTt4Tag 0x0317
-#define GlintTt4Reg 1
-#define GlintTt4Off 0x88b8
-
-#define GlintTs4 0x98c0
-#define GlintTs4Tag 0x0318
-#define GlintTs4Reg 1
-#define GlintTs4Off 0x88c0
-
-#define GlintRPw 0x98c8
-#define GlintRPwTag 0x0319
-#define GlintRPwReg 1
-#define GlintRPwOff 0x88c8
-
-#define GlintRPz 0x98d0
-#define GlintRPzTag 0x031a
-#define GlintRPzReg 1
-#define GlintRPzOff 0x88d0
-
-#define GlintRPy 0x98d8
-#define GlintRPyTag 0x031b
-#define GlintRPyReg 1
-#define GlintRPyOff 0x88d8
-
-#define GlintRPx2 0x98e0
-#define GlintRPx2Tag 0x031c
-#define GlintRPx2Reg 1
-#define GlintRPx2Off 0x88e0
-
-#define GlintRPx3 0x98e8
-#define GlintRPx3Tag 0x031d
-#define GlintRPx3Reg 1
-#define GlintRPx3Off 0x88e8
-
-#define GlintRPx4 0x98f0
-#define GlintRPx4Tag 0x031e
-#define GlintRPx4Reg 1
-#define GlintRPx4Off 0x88f0
-
-#define GlintTs1 0x98f8
-#define GlintTs1Tag 0x031f
-#define GlintTs1Reg 1
-#define GlintTs1Off 0x88f8
-
-#define GlintModelViewMatrix0 0x9900
-#define GlintModelViewMatrix0Tag 0x0320
-#define GlintModelViewMatrix0Reg 1
-#define GlintModelViewMatrix0Off 0x8900
-
-#define GlintModelViewMatrix1 0x9908
-#define GlintModelViewMatrix1Tag 0x0321
-#define GlintModelViewMatrix1Reg 1
-#define GlintModelViewMatrix1Off 0x8908
-
-#define GlintModelViewMatrix2 0x9910
-#define GlintModelViewMatrix2Tag 0x0322
-#define GlintModelViewMatrix2Reg 1
-#define GlintModelViewMatrix2Off 0x8910
-
-#define GlintModelViewMatrix3 0x9918
-#define GlintModelViewMatrix3Tag 0x0323
-#define GlintModelViewMatrix3Reg 1
-#define GlintModelViewMatrix3Off 0x8918
-
-#define GlintModelViewMatrix4 0x9920
-#define GlintModelViewMatrix4Tag 0x0324
-#define GlintModelViewMatrix4Reg 1
-#define GlintModelViewMatrix4Off 0x8920
-
-#define GlintModelViewMatrix5 0x9928
-#define GlintModelViewMatrix5Tag 0x0325
-#define GlintModelViewMatrix5Reg 1
-#define GlintModelViewMatrix5Off 0x8928
-
-#define GlintModelViewMatrix6 0x9930
-#define GlintModelViewMatrix6Tag 0x0326
-#define GlintModelViewMatrix6Reg 1
-#define GlintModelViewMatrix6Off 0x8930
-
-#define GlintModelViewMatrix7 0x9938
-#define GlintModelViewMatrix7Tag 0x0327
-#define GlintModelViewMatrix7Reg 1
-#define GlintModelViewMatrix7Off 0x8938
-
-#define GlintModelViewMatrix8 0x9940
-#define GlintModelViewMatrix8Tag 0x0328
-#define GlintModelViewMatrix8Reg 1
-#define GlintModelViewMatrix8Off 0x8940
-
-#define GlintModelViewMatrix9 0x9948
-#define GlintModelViewMatrix9Tag 0x0329
-#define GlintModelViewMatrix9Reg 1
-#define GlintModelViewMatrix9Off 0x8948
-
-#define GlintModelViewMatrix10 0x9950
-#define GlintModelViewMatrix10Tag 0x032a
-#define GlintModelViewMatrix10Reg 1
-#define GlintModelViewMatrix10Off 0x8950
-
-#define GlintModelViewMatrix11 0x9958
-#define GlintModelViewMatrix11Tag 0x032b
-#define GlintModelViewMatrix11Reg 1
-#define GlintModelViewMatrix11Off 0x8958
-
-#define GlintModelViewMatrix12 0x9960
-#define GlintModelViewMatrix12Tag 0x032c
-#define GlintModelViewMatrix12Reg 1
-#define GlintModelViewMatrix12Off 0x8960
-
-#define GlintModelViewMatrix13 0x9968
-#define GlintModelViewMatrix13Tag 0x032d
-#define GlintModelViewMatrix13Reg 1
-#define GlintModelViewMatrix13Off 0x8968
-
-#define GlintModelViewMatrix14 0x9970
-#define GlintModelViewMatrix14Tag 0x032e
-#define GlintModelViewMatrix14Reg 1
-#define GlintModelViewMatrix14Off 0x8970
-
-#define GlintModelViewMatrix15 0x9978
-#define GlintModelViewMatrix15Tag 0x032f
-#define GlintModelViewMatrix15Reg 1
-#define GlintModelViewMatrix15Off 0x8978
-
-#define GlintModelViewProjectionMatrix0 0x9980
-#define GlintModelViewProjectionMatrix0Tag 0x0330
-#define GlintModelViewProjectionMatrix0Reg 1
-#define GlintModelViewProjectionMatrix0Off 0x8980
-
-#define GlintModelViewProjectionMatrix1 0x9988
-#define GlintModelViewProjectionMatrix1Tag 0x0331
-#define GlintModelViewProjectionMatrix1Reg 1
-#define GlintModelViewProjectionMatrix1Off 0x8988
-
-#define GlintModelViewProjectionMatrix2 0x9990
-#define GlintModelViewProjectionMatrix2Tag 0x0332
-#define GlintModelViewProjectionMatrix2Reg 1
-#define GlintModelViewProjectionMatrix2Off 0x8990
-
-#define GlintModelViewProjectionMatrix3 0x9998
-#define GlintModelViewProjectionMatrix3Tag 0x0333
-#define GlintModelViewProjectionMatrix3Reg 1
-#define GlintModelViewProjectionMatrix3Off 0x8998
-
-#define GlintModelViewProjectionMatrix4 0x99a0
-#define GlintModelViewProjectionMatrix4Tag 0x0334
-#define GlintModelViewProjectionMatrix4Reg 1
-#define GlintModelViewProjectionMatrix4Off 0x89a0
-
-#define GlintModelViewProjectionMatrix5 0x99a8
-#define GlintModelViewProjectionMatrix5Tag 0x0335
-#define GlintModelViewProjectionMatrix5Reg 1
-#define GlintModelViewProjectionMatrix5Off 0x89a8
-
-#define GlintModelViewProjectionMatrix6 0x99b0
-#define GlintModelViewProjectionMatrix6Tag 0x0336
-#define GlintModelViewProjectionMatrix6Reg 1
-#define GlintModelViewProjectionMatrix6Off 0x89b0
-
-#define GlintModelViewProjectionMatrix7 0x99b8
-#define GlintModelViewProjectionMatrix7Tag 0x0337
-#define GlintModelViewProjectionMatrix7Reg 1
-#define GlintModelViewProjectionMatrix7Off 0x89b8
-
-#define GlintModelViewProjectionMatrix8 0x99c0
-#define GlintModelViewProjectionMatrix8Tag 0x0338
-#define GlintModelViewProjectionMatrix8Reg 1
-#define GlintModelViewProjectionMatrix8Off 0x89c0
-
-#define GlintModelViewProjectionMatrix9 0x99c8
-#define GlintModelViewProjectionMatrix9Tag 0x0339
-#define GlintModelViewProjectionMatrix9Reg 1
-#define GlintModelViewProjectionMatrix9Off 0x89c8
-
-#define GlintModelViewProjectionMatrix10 0x99d0
-#define GlintModelViewProjectionMatrix10Tag 0x033a
-#define GlintModelViewProjectionMatrix10Reg 1
-#define GlintModelViewProjectionMatrix10Off 0x89d0
-
-#define GlintModelViewProjectionMatrix11 0x99d8
-#define GlintModelViewProjectionMatrix11Tag 0x033b
-#define GlintModelViewProjectionMatrix11Reg 1
-#define GlintModelViewProjectionMatrix11Off 0x89d8
-
-#define GlintModelViewProjectionMatrix12 0x99e0
-#define GlintModelViewProjectionMatrix12Tag 0x033c
-#define GlintModelViewProjectionMatrix12Reg 1
-#define GlintModelViewProjectionMatrix12Off 0x89e0
-
-#define GlintModelViewProjectionMatrix13 0x99e8
-#define GlintModelViewProjectionMatrix13Tag 0x033d
-#define GlintModelViewProjectionMatrix13Reg 1
-#define GlintModelViewProjectionMatrix13Off 0x89e8
-
-#define GlintModelViewProjectionMatrix14 0x99f0
-#define GlintModelViewProjectionMatrix14Tag 0x033e
-#define GlintModelViewProjectionMatrix14Reg 1
-#define GlintModelViewProjectionMatrix14Off 0x89f0
-
-#define GlintModelViewProjectionMatrix15 0x99f8
-#define GlintModelViewProjectionMatrix15Tag 0x033f
-#define GlintModelViewProjectionMatrix15Reg 1
-#define GlintModelViewProjectionMatrix15Off 0x89f8
-
-#define GlintNormalMatrix0 0x9a00
-#define GlintNormalMatrix0Tag 0x0340
-#define GlintNormalMatrix0Reg 1
-#define GlintNormalMatrix0Off 0x8a00
-
-#define GlintNormalMatrix1 0x9a08
-#define GlintNormalMatrix1Tag 0x0341
-#define GlintNormalMatrix1Reg 1
-#define GlintNormalMatrix1Off 0x8a08
-
-#define GlintNormalMatrix2 0x9a10
-#define GlintNormalMatrix2Tag 0x0342
-#define GlintNormalMatrix2Reg 1
-#define GlintNormalMatrix2Off 0x8a10
-
-#define GlintNormalMatrix3 0x9a18
-#define GlintNormalMatrix3Tag 0x0343
-#define GlintNormalMatrix3Reg 1
-#define GlintNormalMatrix3Off 0x8a18
-
-#define GlintNormalMatrix4 0x9a20
-#define GlintNormalMatrix4Tag 0x0344
-#define GlintNormalMatrix4Reg 1
-#define GlintNormalMatrix4Off 0x8a20
-
-#define GlintNormalMatrix5 0x9a28
-#define GlintNormalMatrix5Tag 0x0345
-#define GlintNormalMatrix5Reg 1
-#define GlintNormalMatrix5Off 0x8a28
-
-#define GlintNormalMatrix6 0x9a30
-#define GlintNormalMatrix6Tag 0x0346
-#define GlintNormalMatrix6Reg 1
-#define GlintNormalMatrix6Off 0x8a30
-
-#define GlintNormalMatrix7 0x9a38
-#define GlintNormalMatrix7Tag 0x0347
-#define GlintNormalMatrix7Reg 1
-#define GlintNormalMatrix7Off 0x8a38
-
-#define GlintNormalMatrix8 0x9a40
-#define GlintNormalMatrix8Tag 0x0348
-#define GlintNormalMatrix8Reg 1
-#define GlintNormalMatrix8Off 0x8a40
-
-#define GlintTextureMatrix0 0x9a80
-#define GlintTextureMatrix0Tag 0x0350
-#define GlintTextureMatrix0Reg 1
-#define GlintTextureMatrix0Off 0x8a80
-
-#define GlintTextureMatrix1 0x9a88
-#define GlintTextureMatrix1Tag 0x0351
-#define GlintTextureMatrix1Reg 1
-#define GlintTextureMatrix1Off 0x8a88
-
-#define GlintTextureMatrix2 0x9a90
-#define GlintTextureMatrix2Tag 0x0352
-#define GlintTextureMatrix2Reg 1
-#define GlintTextureMatrix2Off 0x8a90
-
-#define GlintTextureMatrix3 0x9a98
-#define GlintTextureMatrix3Tag 0x0353
-#define GlintTextureMatrix3Reg 1
-#define GlintTextureMatrix3Off 0x8a98
-
-#define GlintTextureMatrix4 0x9aa0
-#define GlintTextureMatrix4Tag 0x0354
-#define GlintTextureMatrix4Reg 1
-#define GlintTextureMatrix4Off 0x8aa0
-
-#define GlintTextureMatrix5 0x9aa8
-#define GlintTextureMatrix5Tag 0x0355
-#define GlintTextureMatrix5Reg 1
-#define GlintTextureMatrix5Off 0x8aa8
-
-#define GlintTextureMatrix6 0x9ab0
-#define GlintTextureMatrix6Tag 0x0356
-#define GlintTextureMatrix6Reg 1
-#define GlintTextureMatrix6Off 0x8ab0
-
-#define GlintTextureMatrix7 0x9ab8
-#define GlintTextureMatrix7Tag 0x0357
-#define GlintTextureMatrix7Reg 1
-#define GlintTextureMatrix7Off 0x8ab8
-
-#define GlintTextureMatrix8 0x9ac0
-#define GlintTextureMatrix8Tag 0x0358
-#define GlintTextureMatrix8Reg 1
-#define GlintTextureMatrix8Off 0x8ac0
-
-#define GlintTextureMatrix9 0x9ac8
-#define GlintTextureMatrix9Tag 0x0359
-#define GlintTextureMatrix9Reg 1
-#define GlintTextureMatrix9Off 0x8ac8
-
-#define GlintTextureMatrix10 0x9ad0
-#define GlintTextureMatrix10Tag 0x035a
-#define GlintTextureMatrix10Reg 1
-#define GlintTextureMatrix10Off 0x8ad0
-
-#define GlintTextureMatrix11 0x9ad8
-#define GlintTextureMatrix11Tag 0x035b
-#define GlintTextureMatrix11Reg 1
-#define GlintTextureMatrix11Off 0x8ad8
-
-#define GlintTextureMatrix12 0x9ae0
-#define GlintTextureMatrix12Tag 0x035c
-#define GlintTextureMatrix12Reg 1
-#define GlintTextureMatrix12Off 0x8ae0
-
-#define GlintTextureMatrix13 0x9ae8
-#define GlintTextureMatrix13Tag 0x035d
-#define GlintTextureMatrix13Reg 1
-#define GlintTextureMatrix13Off 0x8ae8
-
-#define GlintTextureMatrix14 0x9af0
-#define GlintTextureMatrix14Tag 0x035e
-#define GlintTextureMatrix14Reg 1
-#define GlintTextureMatrix14Off 0x8af0
-
-#define GlintTextureMatrix15 0x9af8
-#define GlintTextureMatrix15Tag 0x035f
-#define GlintTextureMatrix15Reg 1
-#define GlintTextureMatrix15Off 0x8af8
-
-#define GlintTexGen0 0x9b00
-#define GlintTexGen0Tag 0x0360
-#define GlintTexGen0Reg 1
-#define GlintTexGen0Off 0x8b00
-
-#define GlintTexGen1 0x9b08
-#define GlintTexGen1Tag 0x0361
-#define GlintTexGen1Reg 1
-#define GlintTexGen1Off 0x8b08
-
-#define GlintTexGen2 0x9b10
-#define GlintTexGen2Tag 0x0362
-#define GlintTexGen2Reg 1
-#define GlintTexGen2Off 0x8b10
-
-#define GlintTexGen3 0x9b18
-#define GlintTexGen3Tag 0x0363
-#define GlintTexGen3Reg 1
-#define GlintTexGen3Off 0x8b18
-
-#define GlintTexGen4 0x9b20
-#define GlintTexGen4Tag 0x0364
-#define GlintTexGen4Reg 1
-#define GlintTexGen4Off 0x8b20
-
-#define GlintTexGen5 0x9b28
-#define GlintTexGen5Tag 0x0365
-#define GlintTexGen5Reg 1
-#define GlintTexGen5Off 0x8b28
-
-#define GlintTexGen6 0x9b30
-#define GlintTexGen6Tag 0x0366
-#define GlintTexGen6Reg 1
-#define GlintTexGen6Off 0x8b30
-
-#define GlintTexGen7 0x9b38
-#define GlintTexGen7Tag 0x0367
-#define GlintTexGen7Reg 1
-#define GlintTexGen7Off 0x8b38
-
-#define GlintTexGen8 0x9b40
-#define GlintTexGen8Tag 0x0368
-#define GlintTexGen8Reg 1
-#define GlintTexGen8Off 0x8b40
-
-#define GlintTexGen9 0x9b48
-#define GlintTexGen9Tag 0x0369
-#define GlintTexGen9Reg 1
-#define GlintTexGen9Off 0x8b48
-
-#define GlintTexGen10 0x9b50
-#define GlintTexGen10Tag 0x036a
-#define GlintTexGen10Reg 1
-#define GlintTexGen10Off 0x8b50
-
-#define GlintTexGen11 0x9b58
-#define GlintTexGen11Tag 0x036b
-#define GlintTexGen11Reg 1
-#define GlintTexGen11Off 0x8b58
-
-#define GlintTexGen12 0x9b60
-#define GlintTexGen12Tag 0x036c
-#define GlintTexGen12Reg 1
-#define GlintTexGen12Off 0x8b60
-
-#define GlintTexGen13 0x9b68
-#define GlintTexGen13Tag 0x036d
-#define GlintTexGen13Reg 1
-#define GlintTexGen13Off 0x8b68
-
-#define GlintTexGen14 0x9b70
-#define GlintTexGen14Tag 0x036e
-#define GlintTexGen14Reg 1
-#define GlintTexGen14Off 0x8b70
-
-#define GlintTexGen15 0x9b78
-#define GlintTexGen15Tag 0x036f
-#define GlintTexGen15Reg 1
-#define GlintTexGen15Off 0x8b78
-
-#define GlintViewPortScaleX 0x9b80
-#define GlintViewPortScaleXTag 0x0370
-#define GlintViewPortScaleXReg 1
-#define GlintViewPortScaleXOff 0x8b80
-
-#define GlintViewPortScaleY 0x9b88
-#define GlintViewPortScaleYTag 0x0371
-#define GlintViewPortScaleYReg 1
-#define GlintViewPortScaleYOff 0x8b88
-
-#define GlintViewPortScaleZ 0x9b90
-#define GlintViewPortScaleZTag 0x0372
-#define GlintViewPortScaleZReg 1
-#define GlintViewPortScaleZOff 0x8b90
-
-#define GlintViewPortOffsetX 0x9b98
-#define GlintViewPortOffsetXTag 0x0373
-#define GlintViewPortOffsetXReg 1
-#define GlintViewPortOffsetXOff 0x8b98
-
-#define GlintViewPortOffsetY 0x9ba0
-#define GlintViewPortOffsetYTag 0x0374
-#define GlintViewPortOffsetYReg 1
-#define GlintViewPortOffsetYOff 0x8ba0
-
-#define GlintViewPortOffsetZ 0x9ba8
-#define GlintViewPortOffsetZTag 0x0375
-#define GlintViewPortOffsetZReg 1
-#define GlintViewPortOffsetZOff 0x8ba8
-
-#define GlintFogDensity 0x9bb0
-#define GlintFogDensityTag 0x0376
-#define GlintFogDensityReg 1
-#define GlintFogDensityOff 0x8bb0
-
-#define GlintFogScale 0x9bb8
-#define GlintFogScaleTag 0x0377
-#define GlintFogScaleReg 1
-#define GlintFogScaleOff 0x8bb8
-
-#define GlintFogEnd 0x9bc0
-#define GlintFogEndTag 0x0378
-#define GlintFogEndReg 1
-#define GlintFogEndOff 0x8bc0
-
-#define GlintPolygonOffsetFactor 0x9bc8
-#define GlintPolygonOffsetFactorTag 0x0379
-#define GlintPolygonOffsetFactorReg 1
-#define GlintPolygonOffsetFactorOff 0x8bc8
-
-#define GlintPolygonOffsetBias 0x9bd0
-#define GlintPolygonOffsetBiasTag 0x037a
-#define GlintPolygonOffsetBiasReg 1
-#define GlintPolygonOffsetBiasOff 0x8bd0
-
-#define GlintLineClipLengthThreshold 0x9bd8
-#define GlintLineClipLengthThresholdTag 0x037b
-#define GlintLineClipLengthThresholdReg 1
-#define GlintLineClipLengthThresholdOff 0x8bd8
-
-#define GlintTriangleClipAreaThreshold 0x9be0
-#define GlintTriangleClipAreaThresholdTag 0x037c
-#define GlintTriangleClipAreaThresholdReg 1
-#define GlintTriangleClipAreaThresholdOff 0x8be0
-
-#define GlintRasterPosXIncrement 0x9be8
-#define GlintRasterPosXIncrementTag 0x037d
-#define GlintRasterPosXIncrementReg 1
-#define GlintRasterPosXIncrementOff 0x8be8
-
-#define GlintRasterPosYIncrement 0x9bf0
-#define GlintRasterPosYIncrementTag 0x037e
-#define GlintRasterPosYIncrementReg 1
-#define GlintRasterPosYIncrementOff 0x8bf0
-
-#define GlintUserClip0X 0x9c00
-#define GlintUserClip0XTag 0x0380
-#define GlintUserClip0XReg 1
-#define GlintUserClip0XOff 0x8c00
-
-#define GlintUserClip0Y 0x9c08
-#define GlintUserClip0YTag 0x0381
-#define GlintUserClip0YReg 1
-#define GlintUserClip0YOff 0x8c08
-
-#define GlintUserClip0Z 0x9c10
-#define GlintUserClip0ZTag 0x0382
-#define GlintUserClip0ZReg 1
-#define GlintUserClip0ZOff 0x8c10
-
-#define GlintUserClip0W 0x9c18
-#define GlintUserClip0WTag 0x0383
-#define GlintUserClip0WReg 1
-#define GlintUserClip0WOff 0x8c18
-
-#define GlintUserClip1X 0x9c20
-#define GlintUserClip1XTag 0x0384
-#define GlintUserClip1XReg 1
-#define GlintUserClip1XOff 0x8c20
-
-#define GlintUserClip1Y 0x9c28
-#define GlintUserClip1YTag 0x0385
-#define GlintUserClip1YReg 1
-#define GlintUserClip1YOff 0x8c28
-
-#define GlintUserClip1Z 0x9c30
-#define GlintUserClip1ZTag 0x0386
-#define GlintUserClip1ZReg 1
-#define GlintUserClip1ZOff 0x8c30
-
-#define GlintUserClip1W 0x9c38
-#define GlintUserClip1WTag 0x0387
-#define GlintUserClip1WReg 1
-#define GlintUserClip1WOff 0x8c38
-
-#define GlintUserClip2X 0x9c40
-#define GlintUserClip2XTag 0x0388
-#define GlintUserClip2XReg 1
-#define GlintUserClip2XOff 0x8c40
-
-#define GlintUserClip2Y 0x9c48
-#define GlintUserClip2YTag 0x0389
-#define GlintUserClip2YReg 1
-#define GlintUserClip2YOff 0x8c48
-
-#define GlintUserClip2Z 0x9c50
-#define GlintUserClip2ZTag 0x038a
-#define GlintUserClip2ZReg 1
-#define GlintUserClip2ZOff 0x8c50
-
-#define GlintUserClip2W 0x9c58
-#define GlintUserClip2WTag 0x038b
-#define GlintUserClip2WReg 1
-#define GlintUserClip2WOff 0x8c58
-
-#define GlintUserClip3X 0x9c60
-#define GlintUserClip3XTag 0x038c
-#define GlintUserClip3XReg 1
-#define GlintUserClip3XOff 0x8c60
-
-#define GlintUserClip3Y 0x9c68
-#define GlintUserClip3YTag 0x038d
-#define GlintUserClip3YReg 1
-#define GlintUserClip3YOff 0x8c68
-
-#define GlintUserClip3Z 0x9c70
-#define GlintUserClip3ZTag 0x038e
-#define GlintUserClip3ZReg 1
-#define GlintUserClip3ZOff 0x8c70
-
-#define GlintUserClip3W 0x9c78
-#define GlintUserClip3WTag 0x038f
-#define GlintUserClip3WReg 1
-#define GlintUserClip3WOff 0x8c78
-
-#define GlintUserClip4X 0x9c80
-#define GlintUserClip4XTag 0x0390
-#define GlintUserClip4XReg 1
-#define GlintUserClip4XOff 0x8c80
-
-#define GlintUserClip4Y 0x9c88
-#define GlintUserClip4YTag 0x0391
-#define GlintUserClip4YReg 1
-#define GlintUserClip4YOff 0x8c88
-
-#define GlintUserClip4Z 0x9c90
-#define GlintUserClip4ZTag 0x0392
-#define GlintUserClip4ZReg 1
-#define GlintUserClip4ZOff 0x8c90
-
-#define GlintUserClip4W 0x9c98
-#define GlintUserClip4WTag 0x0393
-#define GlintUserClip4WReg 1
-#define GlintUserClip4WOff 0x8c98
-
-#define GlintUserClip5X 0x9ca0
-#define GlintUserClip5XTag 0x0394
-#define GlintUserClip5XReg 1
-#define GlintUserClip5XOff 0x8ca0
-
-#define GlintUserClip5Y 0x9ca8
-#define GlintUserClip5YTag 0x0395
-#define GlintUserClip5YReg 1
-#define GlintUserClip5YOff 0x8ca8
-
-#define GlintUserClip5Z 0x9cb0
-#define GlintUserClip5ZTag 0x0396
-#define GlintUserClip5ZReg 1
-#define GlintUserClip5ZOff 0x8cb0
-
-#define GlintUserClip5W 0x9cb8
-#define GlintUserClip5WTag 0x0397
-#define GlintUserClip5WReg 1
-#define GlintUserClip5WOff 0x8cb8
-
-#define GlintRasterPosXOffset 0x9ce8
-#define GlintRasterPosXOffsetTag 0x039d
-#define GlintRasterPosXOffsetReg 1
-#define GlintRasterPosXOffsetOff 0x8ce8
-
-#define GlintRasterPosYOffset 0x9cf0
-#define GlintRasterPosYOffsetTag 0x039e
-#define GlintRasterPosYOffsetReg 1
-#define GlintRasterPosYOffsetOff 0x8cf0
-
-#define GlintAttenuationCutOff 0x9cf8
-#define GlintAttenuationCutOffTag 0x039f
-#define GlintAttenuationCutOffReg 1
-#define GlintAttenuationCutOffOff 0x8cf8
-
-#define GlintLight0Mode 0x9d00
-#define GlintLight0ModeTag 0x03a0
-#define GlintLight0ModeReg 1
-#define GlintLight0ModeOff 0x8d00
-
-#define GlintLight0AmbientIntensityRed 0x9d08
-#define GlintLight0AmbientIntensityRedTag 0x03a1
-#define GlintLight0AmbientIntensityRedReg 1
-#define GlintLight0AmbientIntensityRedOff 0x8d08
-
-#define GlintLight0AmbientIntensityGreen 0x9d10
-#define GlintLight0AmbientIntensityGreenTag 0x03a2
-#define GlintLight0AmbientIntensityGreenReg 1
-#define GlintLight0AmbientIntensityGreenOff 0x8d10
-
-#define GlintLight0AmbientIntensityBlue 0x9d18
-#define GlintLight0AmbientIntensityBlueTag 0x03a3
-#define GlintLight0AmbientIntensityBlueReg 1
-#define GlintLight0AmbientIntensityBlueOff 0x8d18
-
-#define GlintLight0DiffuseIntensityRed 0x9d20
-#define GlintLight0DiffuseIntensityRedTag 0x03a4
-#define GlintLight0DiffuseIntensityRedReg 1
-#define GlintLight0DiffuseIntensityRedOff 0x8d20
-
-#define GlintLight0DiffuseIntensityGreen 0x9d28
-#define GlintLight0DiffuseIntensityGreenTag 0x03a5
-#define GlintLight0DiffuseIntensityGreenReg 1
-#define GlintLight0DiffuseIntensityGreenOff 0x8d28
-
-#define GlintLight0DiffuseIntensityBlue 0x9d30
-#define GlintLight0DiffuseIntensityBlueTag 0x03a6
-#define GlintLight0DiffuseIntensityBlueReg 1
-#define GlintLight0DiffuseIntensityBlueOff 0x8d30
-
-#define GlintLight0SpecularIntensityRed 0x9d38
-#define GlintLight0SpecularIntensityRedTag 0x03a7
-#define GlintLight0SpecularIntensityRedReg 1
-#define GlintLight0SpecularIntensityRedOff 0x8d38
-
-#define GlintLight0SpecularIntensityGreen 0x9d40
-#define GlintLight0SpecularIntensityGreenTag 0x03a8
-#define GlintLight0SpecularIntensityGreenReg 1
-#define GlintLight0SpecularIntensityGreenOff 0x8d40
-
-#define GlintLight0SpecularIntensityBlue 0x9d48
-#define GlintLight0SpecularIntensityBlueTag 0x03a9
-#define GlintLight0SpecularIntensityBlueReg 1
-#define GlintLight0SpecularIntensityBlueOff 0x8d48
-
-#define GlintLight0PositionX 0x9d50
-#define GlintLight0PositionXTag 0x03aa
-#define GlintLight0PositionXReg 1
-#define GlintLight0PositionXOff 0x8d50
-
-#define GlintLight0PositionY 0x9d58
-#define GlintLight0PositionYTag 0x03ab
-#define GlintLight0PositionYReg 1
-#define GlintLight0PositionYOff 0x8d58
-
-#define GlintLight0PositionZ 0x9d60
-#define GlintLight0PositionZTag 0x03ac
-#define GlintLight0PositionZReg 1
-#define GlintLight0PositionZOff 0x8d60
-
-#define GlintLight0PositionW 0x9d68
-#define GlintLight0PositionWTag 0x03ad
-#define GlintLight0PositionWReg 1
-#define GlintLight0PositionWOff 0x8d68
-
-#define GlintLight0SpotlightDirectionX 0x9d70
-#define GlintLight0SpotlightDirectionXTag 0x03ae
-#define GlintLight0SpotlightDirectionXReg 1
-#define GlintLight0SpotlightDirectionXOff 0x8d70
-
-#define GlintLight0SpotlightDirectionY 0x9d78
-#define GlintLight0SpotlightDirectionYTag 0x03af
-#define GlintLight0SpotlightDirectionYReg 1
-#define GlintLight0SpotlightDirectionYOff 0x8d78
-
-#define GlintLight0SpotlightDirectionZ 0x9d80
-#define GlintLight0SpotlightDirectionZTag 0x03b0
-#define GlintLight0SpotlightDirectionZReg 1
-#define GlintLight0SpotlightDirectionZOff 0x8d80
-
-#define GlintLight0SpotlightExponent 0x9d88
-#define GlintLight0SpotlightExponentTag 0x03b1
-#define GlintLight0SpotlightExponentReg 1
-#define GlintLight0SpotlightExponentOff 0x8d88
-
-#define GlintLight0CosSpotlightCutoffAngle 0x9d90
-#define GlintLight0CosSpotlightCutoffAngleTag 0x03b2
-#define GlintLight0CosSpotlightCutoffAngleReg 1
-#define GlintLight0CosSpotlightCutoffAngleOff 0x8d90
-
-#define GlintLight0ConstantAttenuation 0x9d98
-#define GlintLight0ConstantAttenuationTag 0x03b3
-#define GlintLight0ConstantAttenuationReg 1
-#define GlintLight0ConstantAttenuationOff 0x8d98
-
-#define GlintLight0LinearAttenuation 0x9da0
-#define GlintLight0LinearAttenuationTag 0x03b4
-#define GlintLight0LinearAttenuationReg 1
-#define GlintLight0LinearAttenuationOff 0x8da0
-
-#define GlintLight0QuadraticAttenuation 0x9da8
-#define GlintLight0QuadraticAttenuationTag 0x03b5
-#define GlintLight0QuadraticAttenuationReg 1
-#define GlintLight0QuadraticAttenuationOff 0x8da8
-
-#define GlintLight1Mode 0x9db0
-#define GlintLight1ModeTag 0x03b6
-#define GlintLight1ModeReg 1
-#define GlintLight1ModeOff 0x8db0
-
-#define GlintLight1AmbientIntensityRed 0x9db8
-#define GlintLight1AmbientIntensityRedTag 0x03b7
-#define GlintLight1AmbientIntensityRedReg 1
-#define GlintLight1AmbientIntensityRedOff 0x8db8
-
-#define GlintLight1AmbientIntensityGreen 0x9dc0
-#define GlintLight1AmbientIntensityGreenTag 0x03b8
-#define GlintLight1AmbientIntensityGreenReg 1
-#define GlintLight1AmbientIntensityGreenOff 0x8dc0
-
-#define GlintLight1AmbientIntensityBlue 0x9dc8
-#define GlintLight1AmbientIntensityBlueTag 0x03b9
-#define GlintLight1AmbientIntensityBlueReg 1
-#define GlintLight1AmbientIntensityBlueOff 0x8dc8
-
-#define GlintLight1DiffuseIntensityRed 0x9dd0
-#define GlintLight1DiffuseIntensityRedTag 0x03ba
-#define GlintLight1DiffuseIntensityRedReg 1
-#define GlintLight1DiffuseIntensityRedOff 0x8dd0
-
-#define GlintLight1DiffuseIntensityGreen 0x9dd8
-#define GlintLight1DiffuseIntensityGreenTag 0x03bb
-#define GlintLight1DiffuseIntensityGreenReg 1
-#define GlintLight1DiffuseIntensityGreenOff 0x8dd8
-
-#define GlintLight1DiffuseIntensityBlue 0x9de0
-#define GlintLight1DiffuseIntensityBlueTag 0x03bc
-#define GlintLight1DiffuseIntensityBlueReg 1
-#define GlintLight1DiffuseIntensityBlueOff 0x8de0
-
-#define GlintLight1SpecularIntensityRed 0x9de8
-#define GlintLight1SpecularIntensityRedTag 0x03bd
-#define GlintLight1SpecularIntensityRedReg 1
-#define GlintLight1SpecularIntensityRedOff 0x8de8
-
-#define GlintLight1SpecularIntensityGreen 0x9df0
-#define GlintLight1SpecularIntensityGreenTag 0x03be
-#define GlintLight1SpecularIntensityGreenReg 1
-#define GlintLight1SpecularIntensityGreenOff 0x8df0
-
-#define GlintLight1SpecularIntensityBlue 0x9df8
-#define GlintLight1SpecularIntensityBlueTag 0x03bf
-#define GlintLight1SpecularIntensityBlueReg 1
-#define GlintLight1SpecularIntensityBlueOff 0x8df8
-
-#define GlintLight1PositionX 0x9e00
-#define GlintLight1PositionXTag 0x03c0
-#define GlintLight1PositionXReg 1
-#define GlintLight1PositionXOff 0x8e00
-
-#define GlintLight1PositionY 0x9e08
-#define GlintLight1PositionYTag 0x03c1
-#define GlintLight1PositionYReg 1
-#define GlintLight1PositionYOff 0x8e08
-
-#define GlintLight1PositionZ 0x9e10
-#define GlintLight1PositionZTag 0x03c2
-#define GlintLight1PositionZReg 1
-#define GlintLight1PositionZOff 0x8e10
-
-#define GlintLight1PositionW 0x9e18
-#define GlintLight1PositionWTag 0x03c3
-#define GlintLight1PositionWReg 1
-#define GlintLight1PositionWOff 0x8e18
-
-#define GlintLight1SpotlightDirectionX 0x9e20
-#define GlintLight1SpotlightDirectionXTag 0x03c4
-#define GlintLight1SpotlightDirectionXReg 1
-#define GlintLight1SpotlightDirectionXOff 0x8e20
-
-#define GlintLight1SpotlightDirectionY 0x9e28
-#define GlintLight1SpotlightDirectionYTag 0x03c5
-#define GlintLight1SpotlightDirectionYReg 1
-#define GlintLight1SpotlightDirectionYOff 0x8e28
-
-#define GlintLight1SpotlightDirectionZ 0x9e30
-#define GlintLight1SpotlightDirectionZTag 0x03c6
-#define GlintLight1SpotlightDirectionZReg 1
-#define GlintLight1SpotlightDirectionZOff 0x8e30
-
-#define GlintLight1SpotlightExponent 0x9e38
-#define GlintLight1SpotlightExponentTag 0x03c7
-#define GlintLight1SpotlightExponentReg 1
-#define GlintLight1SpotlightExponentOff 0x8e38
-
-#define GlintLight1CosSpotlightCutoffAngle 0x9e40
-#define GlintLight1CosSpotlightCutoffAngleTag 0x03c8
-#define GlintLight1CosSpotlightCutoffAngleReg 1
-#define GlintLight1CosSpotlightCutoffAngleOff 0x8e40
-
-#define GlintLight1ConstantAttenuation 0x9e48
-#define GlintLight1ConstantAttenuationTag 0x03c9
-#define GlintLight1ConstantAttenuationReg 1
-#define GlintLight1ConstantAttenuationOff 0x8e48
-
-#define GlintLight1LinearAttenuation 0x9e50
-#define GlintLight1LinearAttenuationTag 0x03ca
-#define GlintLight1LinearAttenuationReg 1
-#define GlintLight1LinearAttenuationOff 0x8e50
-
-#define GlintLight1QuadraticAttenuation 0x9e58
-#define GlintLight1QuadraticAttenuationTag 0x03cb
-#define GlintLight1QuadraticAttenuationReg 1
-#define GlintLight1QuadraticAttenuationOff 0x8e58
-
-#define GlintLight2Mode 0x9e60
-#define GlintLight2ModeTag 0x03cc
-#define GlintLight2ModeReg 1
-#define GlintLight2ModeOff 0x8e60
-
-#define GlintLight2AmbientIntensityRed 0x9e68
-#define GlintLight2AmbientIntensityRedTag 0x03cd
-#define GlintLight2AmbientIntensityRedReg 1
-#define GlintLight2AmbientIntensityRedOff 0x8e68
-
-#define GlintLight2AmbientIntensityGreen 0x9e70
-#define GlintLight2AmbientIntensityGreenTag 0x03ce
-#define GlintLight2AmbientIntensityGreenReg 1
-#define GlintLight2AmbientIntensityGreenOff 0x8e70
-
-#define GlintLight2AmbientIntensityBlue 0x9e78
-#define GlintLight2AmbientIntensityBlueTag 0x03cf
-#define GlintLight2AmbientIntensityBlueReg 1
-#define GlintLight2AmbientIntensityBlueOff 0x8e78
-
-#define GlintLight2DiffuseIntensityRed 0x9e80
-#define GlintLight2DiffuseIntensityRedTag 0x03d0
-#define GlintLight2DiffuseIntensityRedReg 1
-#define GlintLight2DiffuseIntensityRedOff 0x8e80
-
-#define GlintLight2DiffuseIntensityGreen 0x9e88
-#define GlintLight2DiffuseIntensityGreenTag 0x03d1
-#define GlintLight2DiffuseIntensityGreenReg 1
-#define GlintLight2DiffuseIntensityGreenOff 0x8e88
-
-#define GlintLight2DiffuseIntensityBlue 0x9e90
-#define GlintLight2DiffuseIntensityBlueTag 0x03d2
-#define GlintLight2DiffuseIntensityBlueReg 1
-#define GlintLight2DiffuseIntensityBlueOff 0x8e90
-
-#define GlintLight2SpecularIntensityRed 0x9e98
-#define GlintLight2SpecularIntensityRedTag 0x03d3
-#define GlintLight2SpecularIntensityRedReg 1
-#define GlintLight2SpecularIntensityRedOff 0x8e98
-
-#define GlintLight2SpecularIntensityGreen 0x9ea0
-#define GlintLight2SpecularIntensityGreenTag 0x03d4
-#define GlintLight2SpecularIntensityGreenReg 1
-#define GlintLight2SpecularIntensityGreenOff 0x8ea0
-
-#define GlintLight2SpecularIntensityBlue 0x9ea8
-#define GlintLight2SpecularIntensityBlueTag 0x03d5
-#define GlintLight2SpecularIntensityBlueReg 1
-#define GlintLight2SpecularIntensityBlueOff 0x8ea8
-
-#define GlintLight2PositionX 0x9eb0
-#define GlintLight2PositionXTag 0x03d6
-#define GlintLight2PositionXReg 1
-#define GlintLight2PositionXOff 0x8eb0
-
-#define GlintLight2PositionY 0x9eb8
-#define GlintLight2PositionYTag 0x03d7
-#define GlintLight2PositionYReg 1
-#define GlintLight2PositionYOff 0x8eb8
-
-#define GlintLight2PositionZ 0x9ec0
-#define GlintLight2PositionZTag 0x03d8
-#define GlintLight2PositionZReg 1
-#define GlintLight2PositionZOff 0x8ec0
-
-#define GlintLight2PositionW 0x9ec8
-#define GlintLight2PositionWTag 0x03d9
-#define GlintLight2PositionWReg 1
-#define GlintLight2PositionWOff 0x8ec8
-
-#define GlintLight2SpotlightDirectionX 0x9ed0
-#define GlintLight2SpotlightDirectionXTag 0x03da
-#define GlintLight2SpotlightDirectionXReg 1
-#define GlintLight2SpotlightDirectionXOff 0x8ed0
-
-#define GlintLight2SpotlightDirectionY 0x9ed8
-#define GlintLight2SpotlightDirectionYTag 0x03db
-#define GlintLight2SpotlightDirectionYReg 1
-#define GlintLight2SpotlightDirectionYOff 0x8ed8
-
-#define GlintLight2SpotlightDirectionZ 0x9ee0
-#define GlintLight2SpotlightDirectionZTag 0x03dc
-#define GlintLight2SpotlightDirectionZReg 1
-#define GlintLight2SpotlightDirectionZOff 0x8ee0
-
-#define GlintLight2SpotlightExponent 0x9ee8
-#define GlintLight2SpotlightExponentTag 0x03dd
-#define GlintLight2SpotlightExponentReg 1
-#define GlintLight2SpotlightExponentOff 0x8ee8
-
-#define GlintLight2CosSpotlightCutoffAngle 0x9ef0
-#define GlintLight2CosSpotlightCutoffAngleTag 0x03de
-#define GlintLight2CosSpotlightCutoffAngleReg 1
-#define GlintLight2CosSpotlightCutoffAngleOff 0x8ef0
-
-#define GlintLight2ConstantAttenuation 0x9ef8
-#define GlintLight2ConstantAttenuationTag 0x03df
-#define GlintLight2ConstantAttenuationReg 1
-#define GlintLight2ConstantAttenuationOff 0x8ef8
-
-#define GlintLight2LinearAttenuation 0x9f00
-#define GlintLight2LinearAttenuationTag 0x03e0
-#define GlintLight2LinearAttenuationReg 1
-#define GlintLight2LinearAttenuationOff 0x8f00
-
-#define GlintLight2QuadraticAttenuation 0x9f08
-#define GlintLight2QuadraticAttenuationTag 0x03e1
-#define GlintLight2QuadraticAttenuationReg 1
-#define GlintLight2QuadraticAttenuationOff 0x8f08
-
-#define GlintLight3Mode 0x9f10
-#define GlintLight3ModeTag 0x03e2
-#define GlintLight3ModeReg 1
-#define GlintLight3ModeOff 0x8f10
-
-#define GlintLight3AmbientIntensityRed 0x9f18
-#define GlintLight3AmbientIntensityRedTag 0x03e3
-#define GlintLight3AmbientIntensityRedReg 1
-#define GlintLight3AmbientIntensityRedOff 0x8f18
-
-#define GlintLight3AmbientIntensityGreen 0x9f20
-#define GlintLight3AmbientIntensityGreenTag 0x03e4
-#define GlintLight3AmbientIntensityGreenReg 1
-#define GlintLight3AmbientIntensityGreenOff 0x8f20
-
-#define GlintLight3AmbientIntensityBlue 0x9f28
-#define GlintLight3AmbientIntensityBlueTag 0x03e5
-#define GlintLight3AmbientIntensityBlueReg 1
-#define GlintLight3AmbientIntensityBlueOff 0x8f28
-
-#define GlintLight3DiffuseIntensityRed 0x9f30
-#define GlintLight3DiffuseIntensityRedTag 0x03e6
-#define GlintLight3DiffuseIntensityRedReg 1
-#define GlintLight3DiffuseIntensityRedOff 0x8f30
-
-#define GlintLight3DiffuseIntensityGreen 0x9f38
-#define GlintLight3DiffuseIntensityGreenTag 0x03e7
-#define GlintLight3DiffuseIntensityGreenReg 1
-#define GlintLight3DiffuseIntensityGreenOff 0x8f38
-
-#define GlintLight3DiffuseIntensityBlue 0x9f40
-#define GlintLight3DiffuseIntensityBlueTag 0x03e8
-#define GlintLight3DiffuseIntensityBlueReg 1
-#define GlintLight3DiffuseIntensityBlueOff 0x8f40
-
-#define GlintLight3SpecularIntensityRed 0x9f48
-#define GlintLight3SpecularIntensityRedTag 0x03e9
-#define GlintLight3SpecularIntensityRedReg 1
-#define GlintLight3SpecularIntensityRedOff 0x8f48
-
-#define GlintLight3SpecularIntensityGreen 0x9f50
-#define GlintLight3SpecularIntensityGreenTag 0x03ea
-#define GlintLight3SpecularIntensityGreenReg 1
-#define GlintLight3SpecularIntensityGreenOff 0x8f50
-
-#define GlintLight3SpecularIntensityBlue 0x9f58
-#define GlintLight3SpecularIntensityBlueTag 0x03eb
-#define GlintLight3SpecularIntensityBlueReg 1
-#define GlintLight3SpecularIntensityBlueOff 0x8f58
-
-#define GlintLight3PositionX 0x9f60
-#define GlintLight3PositionXTag 0x03ec
-#define GlintLight3PositionXReg 1
-#define GlintLight3PositionXOff 0x8f60
-
-#define GlintLight3PositionY 0x9f68
-#define GlintLight3PositionYTag 0x03ed
-#define GlintLight3PositionYReg 1
-#define GlintLight3PositionYOff 0x8f68
-
-#define GlintLight3PositionZ 0x9f70
-#define GlintLight3PositionZTag 0x03ee
-#define GlintLight3PositionZReg 1
-#define GlintLight3PositionZOff 0x8f70
-
-#define GlintLight3PositionW 0x9f78
-#define GlintLight3PositionWTag 0x03ef
-#define GlintLight3PositionWReg 1
-#define GlintLight3PositionWOff 0x8f78
-
-#define GlintLight3SpotlightDirectionX 0x9f80
-#define GlintLight3SpotlightDirectionXTag 0x03f0
-#define GlintLight3SpotlightDirectionXReg 1
-#define GlintLight3SpotlightDirectionXOff 0x8f80
-
-#define GlintLight3SpotlightDirectionY 0x9f88
-#define GlintLight3SpotlightDirectionYTag 0x03f1
-#define GlintLight3SpotlightDirectionYReg 1
-#define GlintLight3SpotlightDirectionYOff 0x8f88
-
-#define GlintLight3SpotlightDirectionZ 0x9f90
-#define GlintLight3SpotlightDirectionZTag 0x03f2
-#define GlintLight3SpotlightDirectionZReg 1
-#define GlintLight3SpotlightDirectionZOff 0x8f90
-
-#define GlintLight3SpotlightExponent 0x9f98
-#define GlintLight3SpotlightExponentTag 0x03f3
-#define GlintLight3SpotlightExponentReg 1
-#define GlintLight3SpotlightExponentOff 0x8f98
-
-#define GlintLight3CosSpotlightCutoffAngle 0x9fa0
-#define GlintLight3CosSpotlightCutoffAngleTag 0x03f4
-#define GlintLight3CosSpotlightCutoffAngleReg 1
-#define GlintLight3CosSpotlightCutoffAngleOff 0x8fa0
-
-#define GlintLight3ConstantAttenuation 0x9fa8
-#define GlintLight3ConstantAttenuationTag 0x03f5
-#define GlintLight3ConstantAttenuationReg 1
-#define GlintLight3ConstantAttenuationOff 0x8fa8
-
-#define GlintLight3LinearAttenuation 0x9fb0
-#define GlintLight3LinearAttenuationTag 0x03f6
-#define GlintLight3LinearAttenuationReg 1
-#define GlintLight3LinearAttenuationOff 0x8fb0
-
-#define GlintLight3QuadraticAttenuation 0x9fb8
-#define GlintLight3QuadraticAttenuationTag 0x03f7
-#define GlintLight3QuadraticAttenuationReg 1
-#define GlintLight3QuadraticAttenuationOff 0x8fb8
-
-#define GlintLight4Mode 0x9fc0
-#define GlintLight4ModeTag 0x03f8
-#define GlintLight4ModeReg 1
-#define GlintLight4ModeOff 0x8fc0
-
-#define GlintLight4AmbientIntensityRed 0x9fc8
-#define GlintLight4AmbientIntensityRedTag 0x03f9
-#define GlintLight4AmbientIntensityRedReg 1
-#define GlintLight4AmbientIntensityRedOff 0x8fc8
-
-#define GlintLight4AmbientIntensityGreen 0x9fd0
-#define GlintLight4AmbientIntensityGreenTag 0x03fa
-#define GlintLight4AmbientIntensityGreenReg 1
-#define GlintLight4AmbientIntensityGreenOff 0x8fd0
-
-#define GlintLight4AmbientIntensityBlue 0x9fd8
-#define GlintLight4AmbientIntensityBlueTag 0x03fb
-#define GlintLight4AmbientIntensityBlueReg 1
-#define GlintLight4AmbientIntensityBlueOff 0x8fd8
-
-#define GlintLight4DiffuseIntensityRed 0x9fe0
-#define GlintLight4DiffuseIntensityRedTag 0x03fc
-#define GlintLight4DiffuseIntensityRedReg 1
-#define GlintLight4DiffuseIntensityRedOff 0x8fe0
-
-#define GlintLight4DiffuseIntensityGreen 0x9fe8
-#define GlintLight4DiffuseIntensityGreenTag 0x03fd
-#define GlintLight4DiffuseIntensityGreenReg 1
-#define GlintLight4DiffuseIntensityGreenOff 0x8fe8
-
-#define GlintLight4DiffuseIntensityBlue 0x9ff0
-#define GlintLight4DiffuseIntensityBlueTag 0x03fe
-#define GlintLight4DiffuseIntensityBlueReg 1
-#define GlintLight4DiffuseIntensityBlueOff 0x8ff0
-
-#define GlintLight4SpecularIntensityRed 0x9ff8
-#define GlintLight4SpecularIntensityRedTag 0x03ff
-#define GlintLight4SpecularIntensityRedReg 1
-#define GlintLight4SpecularIntensityRedOff 0x8ff8
-
-#define GlintLight4SpecularIntensityGreen 0xa000
-#define GlintLight4SpecularIntensityGreenTag 0x0400
-#define GlintLight4SpecularIntensityGreenReg 1
-#define GlintLight4SpecularIntensityGreenOff 0x9000
-
-#define GlintLight4SpecularIntensityBlue 0xa008
-#define GlintLight4SpecularIntensityBlueTag 0x0401
-#define GlintLight4SpecularIntensityBlueReg 1
-#define GlintLight4SpecularIntensityBlueOff 0x9008
-
-#define GlintLight4PositionX 0xa010
-#define GlintLight4PositionXTag 0x0402
-#define GlintLight4PositionXReg 1
-#define GlintLight4PositionXOff 0x9010
-
-#define GlintLight4PositionY 0xa018
-#define GlintLight4PositionYTag 0x0403
-#define GlintLight4PositionYReg 1
-#define GlintLight4PositionYOff 0x9018
-
-#define GlintLight4PositionZ 0xa020
-#define GlintLight4PositionZTag 0x0404
-#define GlintLight4PositionZReg 1
-#define GlintLight4PositionZOff 0x9020
-
-#define GlintLight4PositionW 0xa028
-#define GlintLight4PositionWTag 0x0405
-#define GlintLight4PositionWReg 1
-#define GlintLight4PositionWOff 0x9028
-
-#define GlintLight4SpotlightDirectionX 0xa030
-#define GlintLight4SpotlightDirectionXTag 0x0406
-#define GlintLight4SpotlightDirectionXReg 1
-#define GlintLight4SpotlightDirectionXOff 0x9030
-
-#define GlintLight4SpotlightDirectionY 0xa038
-#define GlintLight4SpotlightDirectionYTag 0x0407
-#define GlintLight4SpotlightDirectionYReg 1
-#define GlintLight4SpotlightDirectionYOff 0x9038
-
-#define GlintLight4SpotlightDirectionZ 0xa040
-#define GlintLight4SpotlightDirectionZTag 0x0408
-#define GlintLight4SpotlightDirectionZReg 1
-#define GlintLight4SpotlightDirectionZOff 0x9040
-
-#define GlintLight4SpotlightExponent 0xa048
-#define GlintLight4SpotlightExponentTag 0x0409
-#define GlintLight4SpotlightExponentReg 1
-#define GlintLight4SpotlightExponentOff 0x9048
-
-#define GlintLight4CosSpotlightCutoffAngle 0xa050
-#define GlintLight4CosSpotlightCutoffAngleTag 0x040a
-#define GlintLight4CosSpotlightCutoffAngleReg 1
-#define GlintLight4CosSpotlightCutoffAngleOff 0x9050
-
-#define GlintLight4ConstantAttenuation 0xa058
-#define GlintLight4ConstantAttenuationTag 0x040b
-#define GlintLight4ConstantAttenuationReg 1
-#define GlintLight4ConstantAttenuationOff 0x9058
-
-#define GlintLight4LinearAttenuation 0xa060
-#define GlintLight4LinearAttenuationTag 0x040c
-#define GlintLight4LinearAttenuationReg 1
-#define GlintLight4LinearAttenuationOff 0x9060
-
-#define GlintLight4QuadraticAttenuation 0xa068
-#define GlintLight4QuadraticAttenuationTag 0x040d
-#define GlintLight4QuadraticAttenuationReg 1
-#define GlintLight4QuadraticAttenuationOff 0x9068
-
-#define GlintLight5Mode 0xa070
-#define GlintLight5ModeTag 0x040e
-#define GlintLight5ModeReg 1
-#define GlintLight5ModeOff 0x9070
-
-#define GlintLight5AmbientIntensityRed 0xa078
-#define GlintLight5AmbientIntensityRedTag 0x040f
-#define GlintLight5AmbientIntensityRedReg 1
-#define GlintLight5AmbientIntensityRedOff 0x9078
-
-#define GlintLight5AmbientIntensityGreen 0xa080
-#define GlintLight5AmbientIntensityGreenTag 0x0410
-#define GlintLight5AmbientIntensityGreenReg 1
-#define GlintLight5AmbientIntensityGreenOff 0x9080
-
-#define GlintLight5AmbientIntensityBlue 0xa088
-#define GlintLight5AmbientIntensityBlueTag 0x0411
-#define GlintLight5AmbientIntensityBlueReg 1
-#define GlintLight5AmbientIntensityBlueOff 0x9088
-
-#define GlintLight5DiffuseIntensityRed 0xa090
-#define GlintLight5DiffuseIntensityRedTag 0x0412
-#define GlintLight5DiffuseIntensityRedReg 1
-#define GlintLight5DiffuseIntensityRedOff 0x9090
-
-#define GlintLight5DiffuseIntensityGreen 0xa098
-#define GlintLight5DiffuseIntensityGreenTag 0x0413
-#define GlintLight5DiffuseIntensityGreenReg 1
-#define GlintLight5DiffuseIntensityGreenOff 0x9098
-
-#define GlintLight5DiffuseIntensityBlue 0xa0a0
-#define GlintLight5DiffuseIntensityBlueTag 0x0414
-#define GlintLight5DiffuseIntensityBlueReg 1
-#define GlintLight5DiffuseIntensityBlueOff 0x90a0
-
-#define GlintLight5SpecularIntensityRed 0xa0a8
-#define GlintLight5SpecularIntensityRedTag 0x0415
-#define GlintLight5SpecularIntensityRedReg 1
-#define GlintLight5SpecularIntensityRedOff 0x90a8
-
-#define GlintLight5SpecularIntensityGreen 0xa0b0
-#define GlintLight5SpecularIntensityGreenTag 0x0416
-#define GlintLight5SpecularIntensityGreenReg 1
-#define GlintLight5SpecularIntensityGreenOff 0x90b0
-
-#define GlintLight5SpecularIntensityBlue 0xa0b8
-#define GlintLight5SpecularIntensityBlueTag 0x0417
-#define GlintLight5SpecularIntensityBlueReg 1
-#define GlintLight5SpecularIntensityBlueOff 0x90b8
-
-#define GlintLight5PositionX 0xa0c0
-#define GlintLight5PositionXTag 0x0418
-#define GlintLight5PositionXReg 1
-#define GlintLight5PositionXOff 0x90c0
-
-#define GlintLight5PositionY 0xa0c8
-#define GlintLight5PositionYTag 0x0419
-#define GlintLight5PositionYReg 1
-#define GlintLight5PositionYOff 0x90c8
-
-#define GlintLight5PositionZ 0xa0d0
-#define GlintLight5PositionZTag 0x041a
-#define GlintLight5PositionZReg 1
-#define GlintLight5PositionZOff 0x90d0
-
-#define GlintLight5PositionW 0xa0d8
-#define GlintLight5PositionWTag 0x041b
-#define GlintLight5PositionWReg 1
-#define GlintLight5PositionWOff 0x90d8
-
-#define GlintLight5SpotlightDirectionX 0xa0e0
-#define GlintLight5SpotlightDirectionXTag 0x041c
-#define GlintLight5SpotlightDirectionXReg 1
-#define GlintLight5SpotlightDirectionXOff 0x90e0
-
-#define GlintLight5SpotlightDirectionY 0xa0e8
-#define GlintLight5SpotlightDirectionYTag 0x041d
-#define GlintLight5SpotlightDirectionYReg 1
-#define GlintLight5SpotlightDirectionYOff 0x90e8
-
-#define GlintLight5SpotlightDirectionZ 0xa0f0
-#define GlintLight5SpotlightDirectionZTag 0x041e
-#define GlintLight5SpotlightDirectionZReg 1
-#define GlintLight5SpotlightDirectionZOff 0x90f0
-
-#define GlintLight5SpotlightExponent 0xa0f8
-#define GlintLight5SpotlightExponentTag 0x041f
-#define GlintLight5SpotlightExponentReg 1
-#define GlintLight5SpotlightExponentOff 0x90f8
-
-#define GlintLight5CosSpotlightCutoffAngle 0xa100
-#define GlintLight5CosSpotlightCutoffAngleTag 0x0420
-#define GlintLight5CosSpotlightCutoffAngleReg 1
-#define GlintLight5CosSpotlightCutoffAngleOff 0x9100
-
-#define GlintLight5ConstantAttenuation 0xa108
-#define GlintLight5ConstantAttenuationTag 0x0421
-#define GlintLight5ConstantAttenuationReg 1
-#define GlintLight5ConstantAttenuationOff 0x9108
-
-#define GlintLight5LinearAttenuation 0xa110
-#define GlintLight5LinearAttenuationTag 0x0422
-#define GlintLight5LinearAttenuationReg 1
-#define GlintLight5LinearAttenuationOff 0x9110
-
-#define GlintLight5QuadraticAttenuation 0xa118
-#define GlintLight5QuadraticAttenuationTag 0x0423
-#define GlintLight5QuadraticAttenuationReg 1
-#define GlintLight5QuadraticAttenuationOff 0x9118
-
-#define GlintLight6Mode 0xa120
-#define GlintLight6ModeTag 0x0424
-#define GlintLight6ModeReg 1
-#define GlintLight6ModeOff 0x9120
-
-#define GlintLight6AmbientIntensityRed 0xa128
-#define GlintLight6AmbientIntensityRedTag 0x0425
-#define GlintLight6AmbientIntensityRedReg 1
-#define GlintLight6AmbientIntensityRedOff 0x9128
-
-#define GlintLight6AmbientIntensityGreen 0xa130
-#define GlintLight6AmbientIntensityGreenTag 0x0426
-#define GlintLight6AmbientIntensityGreenReg 1
-#define GlintLight6AmbientIntensityGreenOff 0x9130
-
-#define GlintLight6AmbientIntensityBlue 0xa138
-#define GlintLight6AmbientIntensityBlueTag 0x0427
-#define GlintLight6AmbientIntensityBlueReg 1
-#define GlintLight6AmbientIntensityBlueOff 0x9138
-
-#define GlintLight6DiffuseIntensityRed 0xa140
-#define GlintLight6DiffuseIntensityRedTag 0x0428
-#define GlintLight6DiffuseIntensityRedReg 1
-#define GlintLight6DiffuseIntensityRedOff 0x9140
-
-#define GlintLight6DiffuseIntensityGreen 0xa148
-#define GlintLight6DiffuseIntensityGreenTag 0x0429
-#define GlintLight6DiffuseIntensityGreenReg 1
-#define GlintLight6DiffuseIntensityGreenOff 0x9148
-
-#define GlintLight6DiffuseIntensityBlue 0xa150
-#define GlintLight6DiffuseIntensityBlueTag 0x042a
-#define GlintLight6DiffuseIntensityBlueReg 1
-#define GlintLight6DiffuseIntensityBlueOff 0x9150
-
-#define GlintLight6SpecularIntensityRed 0xa158
-#define GlintLight6SpecularIntensityRedTag 0x042b
-#define GlintLight6SpecularIntensityRedReg 1
-#define GlintLight6SpecularIntensityRedOff 0x9158
-
-#define GlintLight6SpecularIntensityGreen 0xa160
-#define GlintLight6SpecularIntensityGreenTag 0x042c
-#define GlintLight6SpecularIntensityGreenReg 1
-#define GlintLight6SpecularIntensityGreenOff 0x9160
-
-#define GlintLight6SpecularIntensityBlue 0xa168
-#define GlintLight6SpecularIntensityBlueTag 0x042d
-#define GlintLight6SpecularIntensityBlueReg 1
-#define GlintLight6SpecularIntensityBlueOff 0x9168
-
-#define GlintLight6PositionX 0xa170
-#define GlintLight6PositionXTag 0x042e
-#define GlintLight6PositionXReg 1
-#define GlintLight6PositionXOff 0x9170
-
-#define GlintLight6PositionY 0xa178
-#define GlintLight6PositionYTag 0x042f
-#define GlintLight6PositionYReg 1
-#define GlintLight6PositionYOff 0x9178
-
-#define GlintLight6PositionZ 0xa180
-#define GlintLight6PositionZTag 0x0430
-#define GlintLight6PositionZReg 1
-#define GlintLight6PositionZOff 0x9180
-
-#define GlintLight6PositionW 0xa188
-#define GlintLight6PositionWTag 0x0431
-#define GlintLight6PositionWReg 1
-#define GlintLight6PositionWOff 0x9188
-
-#define GlintLight6SpotlightDirectionX 0xa190
-#define GlintLight6SpotlightDirectionXTag 0x0432
-#define GlintLight6SpotlightDirectionXReg 1
-#define GlintLight6SpotlightDirectionXOff 0x9190
-
-#define GlintLight6SpotlightDirectionY 0xa198
-#define GlintLight6SpotlightDirectionYTag 0x0433
-#define GlintLight6SpotlightDirectionYReg 1
-#define GlintLight6SpotlightDirectionYOff 0x9198
-
-#define GlintLight6SpotlightDirectionZ 0xa1a0
-#define GlintLight6SpotlightDirectionZTag 0x0434
-#define GlintLight6SpotlightDirectionZReg 1
-#define GlintLight6SpotlightDirectionZOff 0x91a0
-
-#define GlintLight6SpotlightExponent 0xa1a8
-#define GlintLight6SpotlightExponentTag 0x0435
-#define GlintLight6SpotlightExponentReg 1
-#define GlintLight6SpotlightExponentOff 0x91a8
-
-#define GlintLight6CosSpotlightCutoffAngle 0xa1b0
-#define GlintLight6CosSpotlightCutoffAngleTag 0x0436
-#define GlintLight6CosSpotlightCutoffAngleReg 1
-#define GlintLight6CosSpotlightCutoffAngleOff 0x91b0
-
-#define GlintLight6ConstantAttenuation 0xa1b8
-#define GlintLight6ConstantAttenuationTag 0x0437
-#define GlintLight6ConstantAttenuationReg 1
-#define GlintLight6ConstantAttenuationOff 0x91b8
-
-#define GlintLight6LinearAttenuation 0xa1c0
-#define GlintLight6LinearAttenuationTag 0x0438
-#define GlintLight6LinearAttenuationReg 1
-#define GlintLight6LinearAttenuationOff 0x91c0
-
-#define GlintLight6QuadraticAttenuation 0xa1c8
-#define GlintLight6QuadraticAttenuationTag 0x0439
-#define GlintLight6QuadraticAttenuationReg 1
-#define GlintLight6QuadraticAttenuationOff 0x91c8
-
-#define GlintLight7Mode 0xa1d0
-#define GlintLight7ModeTag 0x043a
-#define GlintLight7ModeReg 1
-#define GlintLight7ModeOff 0x91d0
-
-#define GlintLight7AmbientIntensityRed 0xa1d8
-#define GlintLight7AmbientIntensityRedTag 0x043b
-#define GlintLight7AmbientIntensityRedReg 1
-#define GlintLight7AmbientIntensityRedOff 0x91d8
-
-#define GlintLight7AmbientIntensityGreen 0xa1e0
-#define GlintLight7AmbientIntensityGreenTag 0x043c
-#define GlintLight7AmbientIntensityGreenReg 1
-#define GlintLight7AmbientIntensityGreenOff 0x91e0
-
-#define GlintLight7AmbientIntensityBlue 0xa1e8
-#define GlintLight7AmbientIntensityBlueTag 0x043d
-#define GlintLight7AmbientIntensityBlueReg 1
-#define GlintLight7AmbientIntensityBlueOff 0x91e8
-
-#define GlintLight7DiffuseIntensityRed 0xa1f0
-#define GlintLight7DiffuseIntensityRedTag 0x043e
-#define GlintLight7DiffuseIntensityRedReg 1
-#define GlintLight7DiffuseIntensityRedOff 0x91f0
-
-#define GlintLight7DiffuseIntensityGreen 0xa1f8
-#define GlintLight7DiffuseIntensityGreenTag 0x043f
-#define GlintLight7DiffuseIntensityGreenReg 1
-#define GlintLight7DiffuseIntensityGreenOff 0x91f8
-
-#define GlintLight7DiffuseIntensityBlue 0xa200
-#define GlintLight7DiffuseIntensityBlueTag 0x0440
-#define GlintLight7DiffuseIntensityBlueReg 1
-#define GlintLight7DiffuseIntensityBlueOff 0x9200
-
-#define GlintLight7SpecularIntensityRed 0xa208
-#define GlintLight7SpecularIntensityRedTag 0x0441
-#define GlintLight7SpecularIntensityRedReg 1
-#define GlintLight7SpecularIntensityRedOff 0x9208
-
-#define GlintLight7SpecularIntensityGreen 0xa210
-#define GlintLight7SpecularIntensityGreenTag 0x0442
-#define GlintLight7SpecularIntensityGreenReg 1
-#define GlintLight7SpecularIntensityGreenOff 0x9210
-
-#define GlintLight7SpecularIntensityBlue 0xa218
-#define GlintLight7SpecularIntensityBlueTag 0x0443
-#define GlintLight7SpecularIntensityBlueReg 1
-#define GlintLight7SpecularIntensityBlueOff 0x9218
-
-#define GlintLight7PositionX 0xa220
-#define GlintLight7PositionXTag 0x0444
-#define GlintLight7PositionXReg 1
-#define GlintLight7PositionXOff 0x9220
-
-#define GlintLight7PositionY 0xa228
-#define GlintLight7PositionYTag 0x0445
-#define GlintLight7PositionYReg 1
-#define GlintLight7PositionYOff 0x9228
-
-#define GlintLight7PositionZ 0xa230
-#define GlintLight7PositionZTag 0x0446
-#define GlintLight7PositionZReg 1
-#define GlintLight7PositionZOff 0x9230
-
-#define GlintLight7PositionW 0xa238
-#define GlintLight7PositionWTag 0x0447
-#define GlintLight7PositionWReg 1
-#define GlintLight7PositionWOff 0x9238
-
-#define GlintLight7SpotlightDirectionX 0xa240
-#define GlintLight7SpotlightDirectionXTag 0x0448
-#define GlintLight7SpotlightDirectionXReg 1
-#define GlintLight7SpotlightDirectionXOff 0x9240
-
-#define GlintLight7SpotlightDirectionY 0xa248
-#define GlintLight7SpotlightDirectionYTag 0x0449
-#define GlintLight7SpotlightDirectionYReg 1
-#define GlintLight7SpotlightDirectionYOff 0x9248
-
-#define GlintLight7SpotlightDirectionZ 0xa250
-#define GlintLight7SpotlightDirectionZTag 0x044a
-#define GlintLight7SpotlightDirectionZReg 1
-#define GlintLight7SpotlightDirectionZOff 0x9250
-
-#define GlintLight7SpotlightExponent 0xa258
-#define GlintLight7SpotlightExponentTag 0x044b
-#define GlintLight7SpotlightExponentReg 1
-#define GlintLight7SpotlightExponentOff 0x9258
-
-#define GlintLight7CosSpotlightCutoffAngle 0xa260
-#define GlintLight7CosSpotlightCutoffAngleTag 0x044c
-#define GlintLight7CosSpotlightCutoffAngleReg 1
-#define GlintLight7CosSpotlightCutoffAngleOff 0x9260
-
-#define GlintLight7ConstantAttenuation 0xa268
-#define GlintLight7ConstantAttenuationTag 0x044d
-#define GlintLight7ConstantAttenuationReg 1
-#define GlintLight7ConstantAttenuationOff 0x9268
-
-#define GlintLight7LinearAttenuation 0xa270
-#define GlintLight7LinearAttenuationTag 0x044e
-#define GlintLight7LinearAttenuationReg 1
-#define GlintLight7LinearAttenuationOff 0x9270
-
-#define GlintLight7QuadraticAttenuation 0xa278
-#define GlintLight7QuadraticAttenuationTag 0x044f
-#define GlintLight7QuadraticAttenuationReg 1
-#define GlintLight7QuadraticAttenuationOff 0x9278
-
-#define GlintLight8Mode 0xa280
-#define GlintLight8ModeTag 0x0450
-#define GlintLight8ModeReg 1
-#define GlintLight8ModeOff 0x9280
-
-#define GlintLight8AmbientIntensityRed 0xa288
-#define GlintLight8AmbientIntensityRedTag 0x0451
-#define GlintLight8AmbientIntensityRedReg 1
-#define GlintLight8AmbientIntensityRedOff 0x9288
-
-#define GlintLight8AmbientIntensityGreen 0xa290
-#define GlintLight8AmbientIntensityGreenTag 0x0452
-#define GlintLight8AmbientIntensityGreenReg 1
-#define GlintLight8AmbientIntensityGreenOff 0x9290
-
-#define GlintLight8AmbientIntensityBlue 0xa298
-#define GlintLight8AmbientIntensityBlueTag 0x0453
-#define GlintLight8AmbientIntensityBlueReg 1
-#define GlintLight8AmbientIntensityBlueOff 0x9298
-
-#define GlintLight8DiffuseIntensityRed 0xa2a0
-#define GlintLight8DiffuseIntensityRedTag 0x0454
-#define GlintLight8DiffuseIntensityRedReg 1
-#define GlintLight8DiffuseIntensityRedOff 0x92a0
-
-#define GlintLight8DiffuseIntensityGreen 0xa2a8
-#define GlintLight8DiffuseIntensityGreenTag 0x0455
-#define GlintLight8DiffuseIntensityGreenReg 1
-#define GlintLight8DiffuseIntensityGreenOff 0x92a8
-
-#define GlintLight8DiffuseIntensityBlue 0xa2b0
-#define GlintLight8DiffuseIntensityBlueTag 0x0456
-#define GlintLight8DiffuseIntensityBlueReg 1
-#define GlintLight8DiffuseIntensityBlueOff 0x92b0
-
-#define GlintLight8SpecularIntensityRed 0xa2b8
-#define GlintLight8SpecularIntensityRedTag 0x0457
-#define GlintLight8SpecularIntensityRedReg 1
-#define GlintLight8SpecularIntensityRedOff 0x92b8
-
-#define GlintLight8SpecularIntensityGreen 0xa2c0
-#define GlintLight8SpecularIntensityGreenTag 0x0458
-#define GlintLight8SpecularIntensityGreenReg 1
-#define GlintLight8SpecularIntensityGreenOff 0x92c0
-
-#define GlintLight8SpecularIntensityBlue 0xa2c8
-#define GlintLight8SpecularIntensityBlueTag 0x0459
-#define GlintLight8SpecularIntensityBlueReg 1
-#define GlintLight8SpecularIntensityBlueOff 0x92c8
-
-#define GlintLight8PositionX 0xa2d0
-#define GlintLight8PositionXTag 0x045a
-#define GlintLight8PositionXReg 1
-#define GlintLight8PositionXOff 0x92d0
-
-#define GlintLight8PositionY 0xa2d8
-#define GlintLight8PositionYTag 0x045b
-#define GlintLight8PositionYReg 1
-#define GlintLight8PositionYOff 0x92d8
-
-#define GlintLight8PositionZ 0xa2e0
-#define GlintLight8PositionZTag 0x045c
-#define GlintLight8PositionZReg 1
-#define GlintLight8PositionZOff 0x92e0
-
-#define GlintLight8PositionW 0xa2e8
-#define GlintLight8PositionWTag 0x045d
-#define GlintLight8PositionWReg 1
-#define GlintLight8PositionWOff 0x92e8
-
-#define GlintLight8SpotlightDirectionX 0xa2f0
-#define GlintLight8SpotlightDirectionXTag 0x045e
-#define GlintLight8SpotlightDirectionXReg 1
-#define GlintLight8SpotlightDirectionXOff 0x92f0
-
-#define GlintLight8SpotlightDirectionY 0xa2f8
-#define GlintLight8SpotlightDirectionYTag 0x045f
-#define GlintLight8SpotlightDirectionYReg 1
-#define GlintLight8SpotlightDirectionYOff 0x92f8
-
-#define GlintLight8SpotlightDirectionZ 0xa300
-#define GlintLight8SpotlightDirectionZTag 0x0460
-#define GlintLight8SpotlightDirectionZReg 1
-#define GlintLight8SpotlightDirectionZOff 0x9300
-
-#define GlintLight8SpotlightExponent 0xa308
-#define GlintLight8SpotlightExponentTag 0x0461
-#define GlintLight8SpotlightExponentReg 1
-#define GlintLight8SpotlightExponentOff 0x9308
-
-#define GlintLight8CosSpotlightCutoffAngle 0xa310
-#define GlintLight8CosSpotlightCutoffAngleTag 0x0462
-#define GlintLight8CosSpotlightCutoffAngleReg 1
-#define GlintLight8CosSpotlightCutoffAngleOff 0x9310
-
-#define GlintLight8ConstantAttenuation 0xa318
-#define GlintLight8ConstantAttenuationTag 0x0463
-#define GlintLight8ConstantAttenuationReg 1
-#define GlintLight8ConstantAttenuationOff 0x9318
-
-#define GlintLight8LinearAttenuation 0xa320
-#define GlintLight8LinearAttenuationTag 0x0464
-#define GlintLight8LinearAttenuationReg 1
-#define GlintLight8LinearAttenuationOff 0x9320
-
-#define GlintLight8QuadraticAttenuation 0xa328
-#define GlintLight8QuadraticAttenuationTag 0x0465
-#define GlintLight8QuadraticAttenuationReg 1
-#define GlintLight8QuadraticAttenuationOff 0x9328
-
-#define GlintLight9Mode 0xa330
-#define GlintLight9ModeTag 0x0466
-#define GlintLight9ModeReg 1
-#define GlintLight9ModeOff 0x9330
-
-#define GlintLight9AmbientIntensityRed 0xa338
-#define GlintLight9AmbientIntensityRedTag 0x0467
-#define GlintLight9AmbientIntensityRedReg 1
-#define GlintLight9AmbientIntensityRedOff 0x9338
-
-#define GlintLight9AmbientIntensityGreen 0xa340
-#define GlintLight9AmbientIntensityGreenTag 0x0468
-#define GlintLight9AmbientIntensityGreenReg 1
-#define GlintLight9AmbientIntensityGreenOff 0x9340
-
-#define GlintLight9AmbientIntensityBlue 0xa348
-#define GlintLight9AmbientIntensityBlueTag 0x0469
-#define GlintLight9AmbientIntensityBlueReg 1
-#define GlintLight9AmbientIntensityBlueOff 0x9348
-
-#define GlintLight9DiffuseIntensityRed 0xa350
-#define GlintLight9DiffuseIntensityRedTag 0x046a
-#define GlintLight9DiffuseIntensityRedReg 1
-#define GlintLight9DiffuseIntensityRedOff 0x9350
-
-#define GlintLight9DiffuseIntensityGreen 0xa358
-#define GlintLight9DiffuseIntensityGreenTag 0x046b
-#define GlintLight9DiffuseIntensityGreenReg 1
-#define GlintLight9DiffuseIntensityGreenOff 0x9358
-
-#define GlintLight9DiffuseIntensityBlue 0xa360
-#define GlintLight9DiffuseIntensityBlueTag 0x046c
-#define GlintLight9DiffuseIntensityBlueReg 1
-#define GlintLight9DiffuseIntensityBlueOff 0x9360
-
-#define GlintLight9SpecularIntensityRed 0xa368
-#define GlintLight9SpecularIntensityRedTag 0x046d
-#define GlintLight9SpecularIntensityRedReg 1
-#define GlintLight9SpecularIntensityRedOff 0x9368
-
-#define GlintLight9SpecularIntensityGreen 0xa370
-#define GlintLight9SpecularIntensityGreenTag 0x046e
-#define GlintLight9SpecularIntensityGreenReg 1
-#define GlintLight9SpecularIntensityGreenOff 0x9370
-
-#define GlintLight9SpecularIntensityBlue 0xa378
-#define GlintLight9SpecularIntensityBlueTag 0x046f
-#define GlintLight9SpecularIntensityBlueReg 1
-#define GlintLight9SpecularIntensityBlueOff 0x9378
-
-#define GlintLight9PositionX 0xa380
-#define GlintLight9PositionXTag 0x0470
-#define GlintLight9PositionXReg 1
-#define GlintLight9PositionXOff 0x9380
-
-#define GlintLight9PositionY 0xa388
-#define GlintLight9PositionYTag 0x0471
-#define GlintLight9PositionYReg 1
-#define GlintLight9PositionYOff 0x9388
-
-#define GlintLight9PositionZ 0xa390
-#define GlintLight9PositionZTag 0x0472
-#define GlintLight9PositionZReg 1
-#define GlintLight9PositionZOff 0x9390
-
-#define GlintLight9PositionW 0xa398
-#define GlintLight9PositionWTag 0x0473
-#define GlintLight9PositionWReg 1
-#define GlintLight9PositionWOff 0x9398
-
-#define GlintLight9SpotlightDirectionX 0xa3a0
-#define GlintLight9SpotlightDirectionXTag 0x0474
-#define GlintLight9SpotlightDirectionXReg 1
-#define GlintLight9SpotlightDirectionXOff 0x93a0
-
-#define GlintLight9SpotlightDirectionY 0xa3a8
-#define GlintLight9SpotlightDirectionYTag 0x0475
-#define GlintLight9SpotlightDirectionYReg 1
-#define GlintLight9SpotlightDirectionYOff 0x93a8
-
-#define GlintLight9SpotlightDirectionZ 0xa3b0
-#define GlintLight9SpotlightDirectionZTag 0x0476
-#define GlintLight9SpotlightDirectionZReg 1
-#define GlintLight9SpotlightDirectionZOff 0x93b0
-
-#define GlintLight9SpotlightExponent 0xa3b8
-#define GlintLight9SpotlightExponentTag 0x0477
-#define GlintLight9SpotlightExponentReg 1
-#define GlintLight9SpotlightExponentOff 0x93b8
-
-#define GlintLight9CosSpotlightCutoffAngle 0xa3c0
-#define GlintLight9CosSpotlightCutoffAngleTag 0x0478
-#define GlintLight9CosSpotlightCutoffAngleReg 1
-#define GlintLight9CosSpotlightCutoffAngleOff 0x93c0
-
-#define GlintLight9ConstantAttenuation 0xa3c8
-#define GlintLight9ConstantAttenuationTag 0x0479
-#define GlintLight9ConstantAttenuationReg 1
-#define GlintLight9ConstantAttenuationOff 0x93c8
-
-#define GlintLight9LinearAttenuation 0xa3d0
-#define GlintLight9LinearAttenuationTag 0x047a
-#define GlintLight9LinearAttenuationReg 1
-#define GlintLight9LinearAttenuationOff 0x93d0
-
-#define GlintLight9QuadraticAttenuation 0xa3d8
-#define GlintLight9QuadraticAttenuationTag 0x047b
-#define GlintLight9QuadraticAttenuationReg 1
-#define GlintLight9QuadraticAttenuationOff 0x93d8
-
-#define GlintLight10Mode 0xa3e0
-#define GlintLight10ModeTag 0x047c
-#define GlintLight10ModeReg 1
-#define GlintLight10ModeOff 0x93e0
-
-#define GlintLight10AmbientIntensityRed 0xa3e8
-#define GlintLight10AmbientIntensityRedTag 0x047d
-#define GlintLight10AmbientIntensityRedReg 1
-#define GlintLight10AmbientIntensityRedOff 0x93e8
-
-#define GlintLight10AmbientIntensityGreen 0xa3f0
-#define GlintLight10AmbientIntensityGreenTag 0x047e
-#define GlintLight10AmbientIntensityGreenReg 1
-#define GlintLight10AmbientIntensityGreenOff 0x93f0
-
-#define GlintLight10AmbientIntensityBlue 0xa3f8
-#define GlintLight10AmbientIntensityBlueTag 0x047f
-#define GlintLight10AmbientIntensityBlueReg 1
-#define GlintLight10AmbientIntensityBlueOff 0x93f8
-
-#define GlintLight10DiffuseIntensityRed 0xa400
-#define GlintLight10DiffuseIntensityRedTag 0x0480
-#define GlintLight10DiffuseIntensityRedReg 1
-#define GlintLight10DiffuseIntensityRedOff 0x9400
-
-#define GlintLight10DiffuseIntensityGreen 0xa408
-#define GlintLight10DiffuseIntensityGreenTag 0x0481
-#define GlintLight10DiffuseIntensityGreenReg 1
-#define GlintLight10DiffuseIntensityGreenOff 0x9408
-
-#define GlintLight10DiffuseIntensityBlue 0xa410
-#define GlintLight10DiffuseIntensityBlueTag 0x0482
-#define GlintLight10DiffuseIntensityBlueReg 1
-#define GlintLight10DiffuseIntensityBlueOff 0x9410
-
-#define GlintLight10SpecularIntensityRed 0xa418
-#define GlintLight10SpecularIntensityRedTag 0x0483
-#define GlintLight10SpecularIntensityRedReg 1
-#define GlintLight10SpecularIntensityRedOff 0x9418
-
-#define GlintLight10SpecularIntensityGreen 0xa420
-#define GlintLight10SpecularIntensityGreenTag 0x0484
-#define GlintLight10SpecularIntensityGreenReg 1
-#define GlintLight10SpecularIntensityGreenOff 0x9420
-
-#define GlintLight10SpecularIntensityBlue 0xa428
-#define GlintLight10SpecularIntensityBlueTag 0x0485
-#define GlintLight10SpecularIntensityBlueReg 1
-#define GlintLight10SpecularIntensityBlueOff 0x9428
-
-#define GlintLight10PositionX 0xa430
-#define GlintLight10PositionXTag 0x0486
-#define GlintLight10PositionXReg 1
-#define GlintLight10PositionXOff 0x9430
-
-#define GlintLight10PositionY 0xa438
-#define GlintLight10PositionYTag 0x0487
-#define GlintLight10PositionYReg 1
-#define GlintLight10PositionYOff 0x9438
-
-#define GlintLight10PositionZ 0xa440
-#define GlintLight10PositionZTag 0x0488
-#define GlintLight10PositionZReg 1
-#define GlintLight10PositionZOff 0x9440
-
-#define GlintLight10PositionW 0xa448
-#define GlintLight10PositionWTag 0x0489
-#define GlintLight10PositionWReg 1
-#define GlintLight10PositionWOff 0x9448
-
-#define GlintLight10SpotlightDirectionX 0xa450
-#define GlintLight10SpotlightDirectionXTag 0x048a
-#define GlintLight10SpotlightDirectionXReg 1
-#define GlintLight10SpotlightDirectionXOff 0x9450
-
-#define GlintLight10SpotlightDirectionY 0xa458
-#define GlintLight10SpotlightDirectionYTag 0x048b
-#define GlintLight10SpotlightDirectionYReg 1
-#define GlintLight10SpotlightDirectionYOff 0x9458
-
-#define GlintLight10SpotlightDirectionZ 0xa460
-#define GlintLight10SpotlightDirectionZTag 0x048c
-#define GlintLight10SpotlightDirectionZReg 1
-#define GlintLight10SpotlightDirectionZOff 0x9460
-
-#define GlintLight10SpotlightExponent 0xa468
-#define GlintLight10SpotlightExponentTag 0x048d
-#define GlintLight10SpotlightExponentReg 1
-#define GlintLight10SpotlightExponentOff 0x9468
-
-#define GlintLight10CosSpotlightCutoffAngle 0xa470
-#define GlintLight10CosSpotlightCutoffAngleTag 0x048e
-#define GlintLight10CosSpotlightCutoffAngleReg 1
-#define GlintLight10CosSpotlightCutoffAngleOff 0x9470
-
-#define GlintLight10ConstantAttenuation 0xa478
-#define GlintLight10ConstantAttenuationTag 0x048f
-#define GlintLight10ConstantAttenuationReg 1
-#define GlintLight10ConstantAttenuationOff 0x9478
-
-#define GlintLight10LinearAttenuation 0xa480
-#define GlintLight10LinearAttenuationTag 0x0490
-#define GlintLight10LinearAttenuationReg 1
-#define GlintLight10LinearAttenuationOff 0x9480
-
-#define GlintLight10QuadraticAttenuation 0xa488
-#define GlintLight10QuadraticAttenuationTag 0x0491
-#define GlintLight10QuadraticAttenuationReg 1
-#define GlintLight10QuadraticAttenuationOff 0x9488
-
-#define GlintLight11Mode 0xa490
-#define GlintLight11ModeTag 0x0492
-#define GlintLight11ModeReg 1
-#define GlintLight11ModeOff 0x9490
-
-#define GlintLight11AmbientIntensiveRed 0xa498
-#define GlintLight11AmbientIntensiveRedTag 0x0493
-#define GlintLight11AmbientIntensiveRedReg 1
-#define GlintLight11AmbientIntensiveRedOff 0x9498
-
-#define GlintLight11AmbientIntensityGreen 0xa4a0
-#define GlintLight11AmbientIntensityGreenTag 0x0494
-#define GlintLight11AmbientIntensityGreenReg 1
-#define GlintLight11AmbientIntensityGreenOff 0x94a0
-
-#define GlintLight11AmbientIntensityBlue 0xa4a8
-#define GlintLight11AmbientIntensityBlueTag 0x0495
-#define GlintLight11AmbientIntensityBlueReg 1
-#define GlintLight11AmbientIntensityBlueOff 0x94a8
-
-#define GlintLight11DiffuseIntensityRed 0xa4b0
-#define GlintLight11DiffuseIntensityRedTag 0x0496
-#define GlintLight11DiffuseIntensityRedReg 1
-#define GlintLight11DiffuseIntensityRedOff 0x94b0
-
-#define GlintLight11DiffuseIntensityGreen 0xa4b8
-#define GlintLight11DiffuseIntensityGreenTag 0x0497
-#define GlintLight11DiffuseIntensityGreenReg 1
-#define GlintLight11DiffuseIntensityGreenOff 0x94b8
-
-#define GlintLight11DiffuseIntensityBlue 0xa4c0
-#define GlintLight11DiffuseIntensityBlueTag 0x0498
-#define GlintLight11DiffuseIntensityBlueReg 1
-#define GlintLight11DiffuseIntensityBlueOff 0x94c0
-
-#define GlintLight11SpecularIntensityRed 0xa4c8
-#define GlintLight11SpecularIntensityRedTag 0x0499
-#define GlintLight11SpecularIntensityRedReg 1
-#define GlintLight11SpecularIntensityRedOff 0x94c8
-
-#define GlintLight11SpecularIntensityGreen 0xa4d0
-#define GlintLight11SpecularIntensityGreenTag 0x049a
-#define GlintLight11SpecularIntensityGreenReg 1
-#define GlintLight11SpecularIntensityGreenOff 0x94d0
-
-#define GlintLight11SpecularIntensityBlue 0xa4d8
-#define GlintLight11SpecularIntensityBlueTag 0x049b
-#define GlintLight11SpecularIntensityBlueReg 1
-#define GlintLight11SpecularIntensityBlueOff 0x94d8
-
-#define GlintLight11PositionX 0xa4e0
-#define GlintLight11PositionXTag 0x049c
-#define GlintLight11PositionXReg 1
-#define GlintLight11PositionXOff 0x94e0
-
-#define GlintLight11PositionY 0xa4e8
-#define GlintLight11PositionYTag 0x049d
-#define GlintLight11PositionYReg 1
-#define GlintLight11PositionYOff 0x94e8
-
-#define GlintLight11PositionZ 0xa4f0
-#define GlintLight11PositionZTag 0x049e
-#define GlintLight11PositionZReg 1
-#define GlintLight11PositionZOff 0x94f0
-
-#define GlintLight11PositionW 0xa4f8
-#define GlintLight11PositionWTag 0x049f
-#define GlintLight11PositionWReg 1
-#define GlintLight11PositionWOff 0x94f8
-
-#define GlintLight11SpotlightDirectionX 0xa500
-#define GlintLight11SpotlightDirectionXTag 0x04a0
-#define GlintLight11SpotlightDirectionXReg 1
-#define GlintLight11SpotlightDirectionXOff 0x9500
-
-#define GlintLight11SpotlightDirectionY 0xa508
-#define GlintLight11SpotlightDirectionYTag 0x04a1
-#define GlintLight11SpotlightDirectionYReg 1
-#define GlintLight11SpotlightDirectionYOff 0x9508
-
-#define GlintLight11SpotlightDirectionZ 0xa510
-#define GlintLight11SpotlightDirectionZTag 0x04a2
-#define GlintLight11SpotlightDirectionZReg 1
-#define GlintLight11SpotlightDirectionZOff 0x9510
-
-#define GlintLight11SpotlightExponent 0xa518
-#define GlintLight11SpotlightExponentTag 0x04a3
-#define GlintLight11SpotlightExponentReg 1
-#define GlintLight11SpotlightExponentOff 0x9518
-
-#define GlintLight11CosSpotlightCutoffAngle 0xa520
-#define GlintLight11CosSpotlightCutoffAngleTag 0x04a4
-#define GlintLight11CosSpotlightCutoffAngleReg 1
-#define GlintLight11CosSpotlightCutoffAngleOff 0x9520
-
-#define GlintLight11ConstantAttenuation 0xa528
-#define GlintLight11ConstantAttenuationTag 0x04a5
-#define GlintLight11ConstantAttenuationReg 1
-#define GlintLight11ConstantAttenuationOff 0x9528
-
-#define GlintLight11LinearAttenuation 0xa530
-#define GlintLight11LinearAttenuationTag 0x04a6
-#define GlintLight11LinearAttenuationReg 1
-#define GlintLight11LinearAttenuationOff 0x9530
-
-#define GlintLight11QuadraticAttenuation 0xa538
-#define GlintLight11QuadraticAttenuationTag 0x04a7
-#define GlintLight11QuadraticAttenuationReg 1
-#define GlintLight11QuadraticAttenuationOff 0x9538
-
-#define GlintLight12Mode 0xa540
-#define GlintLight12ModeTag 0x04a8
-#define GlintLight12ModeReg 1
-#define GlintLight12ModeOff 0x9540
-
-#define GlintLight12AmbientIntensityRed 0xa548
-#define GlintLight12AmbientIntensityRedTag 0x04a9
-#define GlintLight12AmbientIntensityRedReg 1
-#define GlintLight12AmbientIntensityRedOff 0x9548
-
-#define GlintLight12AmbientIntensityGreen 0xa550
-#define GlintLight12AmbientIntensityGreenTag 0x04aa
-#define GlintLight12AmbientIntensityGreenReg 1
-#define GlintLight12AmbientIntensityGreenOff 0x9550
-
-#define GlintLight12AmbientIntensityBlue 0xa558
-#define GlintLight12AmbientIntensityBlueTag 0x04ab
-#define GlintLight12AmbientIntensityBlueReg 1
-#define GlintLight12AmbientIntensityBlueOff 0x9558
-
-#define GlintLight12DiffuseIntensityRed 0xa560
-#define GlintLight12DiffuseIntensityRedTag 0x04ac
-#define GlintLight12DiffuseIntensityRedReg 1
-#define GlintLight12DiffuseIntensityRedOff 0x9560
-
-#define GlintLight12DiffuseIntensityGreen 0xa568
-#define GlintLight12DiffuseIntensityGreenTag 0x04ad
-#define GlintLight12DiffuseIntensityGreenReg 1
-#define GlintLight12DiffuseIntensityGreenOff 0x9568
-
-#define GlintLight12DiffuseIntensityBlue 0xa570
-#define GlintLight12DiffuseIntensityBlueTag 0x04ae
-#define GlintLight12DiffuseIntensityBlueReg 1
-#define GlintLight12DiffuseIntensityBlueOff 0x9570
-
-#define GlintLight12SpecularIntensityRed 0xa578
-#define GlintLight12SpecularIntensityRedTag 0x04af
-#define GlintLight12SpecularIntensityRedReg 1
-#define GlintLight12SpecularIntensityRedOff 0x9578
-
-#define GlintLight12SpecularIntensityGreen 0xa580
-#define GlintLight12SpecularIntensityGreenTag 0x04b0
-#define GlintLight12SpecularIntensityGreenReg 1
-#define GlintLight12SpecularIntensityGreenOff 0x9580
-
-#define GlintLight12SpecularIntensityBlue 0xa588
-#define GlintLight12SpecularIntensityBlueTag 0x04b1
-#define GlintLight12SpecularIntensityBlueReg 1
-#define GlintLight12SpecularIntensityBlueOff 0x9588
-
-#define GlintLight12PositionX 0xa590
-#define GlintLight12PositionXTag 0x04b2
-#define GlintLight12PositionXReg 1
-#define GlintLight12PositionXOff 0x9590
-
-#define GlintLight12PositionY 0xa598
-#define GlintLight12PositionYTag 0x04b3
-#define GlintLight12PositionYReg 1
-#define GlintLight12PositionYOff 0x9598
-
-#define GlintLight12PositionZ 0xa5a0
-#define GlintLight12PositionZTag 0x04b4
-#define GlintLight12PositionZReg 1
-#define GlintLight12PositionZOff 0x95a0
-
-#define GlintLight12PositionW 0xa5a8
-#define GlintLight12PositionWTag 0x04b5
-#define GlintLight12PositionWReg 1
-#define GlintLight12PositionWOff 0x95a8
-
-#define GlintLight12SpotlightDirectionX 0xa5b0
-#define GlintLight12SpotlightDirectionXTag 0x04b6
-#define GlintLight12SpotlightDirectionXReg 1
-#define GlintLight12SpotlightDirectionXOff 0x95b0
-
-#define GlintLight12SpotlightDirectionY 0xa5b8
-#define GlintLight12SpotlightDirectionYTag 0x04b7
-#define GlintLight12SpotlightDirectionYReg 1
-#define GlintLight12SpotlightDirectionYOff 0x95b8
-
-#define GlintLight12SpotlightDirectionZ 0xa5c0
-#define GlintLight12SpotlightDirectionZTag 0x04b8
-#define GlintLight12SpotlightDirectionZReg 1
-#define GlintLight12SpotlightDirectionZOff 0x95c0
-
-#define GlintLight12SpotlightExponent 0xa5c8
-#define GlintLight12SpotlightExponentTag 0x04b9
-#define GlintLight12SpotlightExponentReg 1
-#define GlintLight12SpotlightExponentOff 0x95c8
-
-#define GlintLight12CosSpotlightCutoffAngle 0xa5d0
-#define GlintLight12CosSpotlightCutoffAngleTag 0x04ba
-#define GlintLight12CosSpotlightCutoffAngleReg 1
-#define GlintLight12CosSpotlightCutoffAngleOff 0x95d0
-
-#define GlintLight12ConstantAttenuation 0xa5d8
-#define GlintLight12ConstantAttenuationTag 0x04bb
-#define GlintLight12ConstantAttenuationReg 1
-#define GlintLight12ConstantAttenuationOff 0x95d8
-
-#define GlintLight12LinearAttenuation 0xa5e0
-#define GlintLight12LinearAttenuationTag 0x04bc
-#define GlintLight12LinearAttenuationReg 1
-#define GlintLight12LinearAttenuationOff 0x95e0
-
-#define GlintLight12QuadraticAttenuation 0xa5e8
-#define GlintLight12QuadraticAttenuationTag 0x04bd
-#define GlintLight12QuadraticAttenuationReg 1
-#define GlintLight12QuadraticAttenuationOff 0x95e8
-
-#define GlintLight13Mode 0xa5f0
-#define GlintLight13ModeTag 0x04be
-#define GlintLight13ModeReg 1
-#define GlintLight13ModeOff 0x95f0
-
-#define GlintLight13AmbientIntensityRed 0xa5f8
-#define GlintLight13AmbientIntensityRedTag 0x04bf
-#define GlintLight13AmbientIntensityRedReg 1
-#define GlintLight13AmbientIntensityRedOff 0x95f8
-
-#define GlintLight13AmbientIntensityGreen 0xa600
-#define GlintLight13AmbientIntensityGreenTag 0x04c0
-#define GlintLight13AmbientIntensityGreenReg 1
-#define GlintLight13AmbientIntensityGreenOff 0x9600
-
-#define GlintLight13AmbientIntensityBlue 0xa608
-#define GlintLight13AmbientIntensityBlueTag 0x04c1
-#define GlintLight13AmbientIntensityBlueReg 1
-#define GlintLight13AmbientIntensityBlueOff 0x9608
-
-#define GlintLight13DiffuseIntensityRed 0xa610
-#define GlintLight13DiffuseIntensityRedTag 0x04c2
-#define GlintLight13DiffuseIntensityRedReg 1
-#define GlintLight13DiffuseIntensityRedOff 0x9610
-
-#define GlintLight13DiffuseIntensityGreen 0xa618
-#define GlintLight13DiffuseIntensityGreenTag 0x04c3
-#define GlintLight13DiffuseIntensityGreenReg 1
-#define GlintLight13DiffuseIntensityGreenOff 0x9618
-
-#define GlintLight13DiffuseIntensityBlue 0xa620
-#define GlintLight13DiffuseIntensityBlueTag 0x04c4
-#define GlintLight13DiffuseIntensityBlueReg 1
-#define GlintLight13DiffuseIntensityBlueOff 0x9620
-
-#define GlintLight13SpecularIntensityRed 0xa628
-#define GlintLight13SpecularIntensityRedTag 0x04c5
-#define GlintLight13SpecularIntensityRedReg 1
-#define GlintLight13SpecularIntensityRedOff 0x9628
-
-#define GlintLight13SpecularIntensityGreen 0xa630
-#define GlintLight13SpecularIntensityGreenTag 0x04c6
-#define GlintLight13SpecularIntensityGreenReg 1
-#define GlintLight13SpecularIntensityGreenOff 0x9630
-
-#define GlintLight13SpecularIntensityBlue 0xa638
-#define GlintLight13SpecularIntensityBlueTag 0x04c7
-#define GlintLight13SpecularIntensityBlueReg 1
-#define GlintLight13SpecularIntensityBlueOff 0x9638
-
-#define GlintLight13PositionX 0xa640
-#define GlintLight13PositionXTag 0x04c8
-#define GlintLight13PositionXReg 1
-#define GlintLight13PositionXOff 0x9640
-
-#define GlintLight13PositionY 0xa648
-#define GlintLight13PositionYTag 0x04c9
-#define GlintLight13PositionYReg 1
-#define GlintLight13PositionYOff 0x9648
-
-#define GlintLight13PositionZ 0xa650
-#define GlintLight13PositionZTag 0x04ca
-#define GlintLight13PositionZReg 1
-#define GlintLight13PositionZOff 0x9650
-
-#define GlintLight13PositionW 0xa658
-#define GlintLight13PositionWTag 0x04cb
-#define GlintLight13PositionWReg 1
-#define GlintLight13PositionWOff 0x9658
-
-#define GlintLight13SpotlightDirectionX 0xa660
-#define GlintLight13SpotlightDirectionXTag 0x04cc
-#define GlintLight13SpotlightDirectionXReg 1
-#define GlintLight13SpotlightDirectionXOff 0x9660
-
-#define GlintLight13SpotlightDirectionY 0xa668
-#define GlintLight13SpotlightDirectionYTag 0x04cd
-#define GlintLight13SpotlightDirectionYReg 1
-#define GlintLight13SpotlightDirectionYOff 0x9668
-
-#define GlintLight13SpotlightDirectionZ 0xa670
-#define GlintLight13SpotlightDirectionZTag 0x04ce
-#define GlintLight13SpotlightDirectionZReg 1
-#define GlintLight13SpotlightDirectionZOff 0x9670
-
-#define GlintLight13SpotlightExponent 0xa678
-#define GlintLight13SpotlightExponentTag 0x04cf
-#define GlintLight13SpotlightExponentReg 1
-#define GlintLight13SpotlightExponentOff 0x9678
-
-#define GlintLight13CosSpotlightCutoffAngle 0xa680
-#define GlintLight13CosSpotlightCutoffAngleTag 0x04d0
-#define GlintLight13CosSpotlightCutoffAngleReg 1
-#define GlintLight13CosSpotlightCutoffAngleOff 0x9680
-
-#define GlintLight13ConstantAttenuation 0xa688
-#define GlintLight13ConstantAttenuationTag 0x04d1
-#define GlintLight13ConstantAttenuationReg 1
-#define GlintLight13ConstantAttenuationOff 0x9688
-
-#define GlintLight13LinearAttenuation 0xa690
-#define GlintLight13LinearAttenuationTag 0x04d2
-#define GlintLight13LinearAttenuationReg 1
-#define GlintLight13LinearAttenuationOff 0x9690
-
-#define GlintLight13QuadraticAttenuation 0xa698
-#define GlintLight13QuadraticAttenuationTag 0x04d3
-#define GlintLight13QuadraticAttenuationReg 1
-#define GlintLight13QuadraticAttenuationOff 0x9698
-
-#define GlintLight14Mode 0xa6a0
-#define GlintLight14ModeTag 0x04d4
-#define GlintLight14ModeReg 1
-#define GlintLight14ModeOff 0x96a0
-
-#define GlintLight14AmbientIntensityRed 0xa6a8
-#define GlintLight14AmbientIntensityRedTag 0x04d5
-#define GlintLight14AmbientIntensityRedReg 1
-#define GlintLight14AmbientIntensityRedOff 0x96a8
-
-#define GlintLight14AmbientIntensityGreen 0xa6b0
-#define GlintLight14AmbientIntensityGreenTag 0x04d6
-#define GlintLight14AmbientIntensityGreenReg 1
-#define GlintLight14AmbientIntensityGreenOff 0x96b0
-
-#define GlintLight14AmbientIntensityBlue 0xa6b8
-#define GlintLight14AmbientIntensityBlueTag 0x04d7
-#define GlintLight14AmbientIntensityBlueReg 1
-#define GlintLight14AmbientIntensityBlueOff 0x96b8
-
-#define GlintLight14DiffuseIntensityRed 0xa6c0
-#define GlintLight14DiffuseIntensityRedTag 0x04d8
-#define GlintLight14DiffuseIntensityRedReg 1
-#define GlintLight14DiffuseIntensityRedOff 0x96c0
-
-#define GlintLight14DiffuseIntensityGreen 0xa6c8
-#define GlintLight14DiffuseIntensityGreenTag 0x04d9
-#define GlintLight14DiffuseIntensityGreenReg 1
-#define GlintLight14DiffuseIntensityGreenOff 0x96c8
-
-#define GlintLight14DiffuseIntensityBlue 0xa6d0
-#define GlintLight14DiffuseIntensityBlueTag 0x04da
-#define GlintLight14DiffuseIntensityBlueReg 1
-#define GlintLight14DiffuseIntensityBlueOff 0x96d0
-
-#define GlintLight14SpecularIntensityRed 0xa6d8
-#define GlintLight14SpecularIntensityRedTag 0x04db
-#define GlintLight14SpecularIntensityRedReg 1
-#define GlintLight14SpecularIntensityRedOff 0x96d8
-
-#define GlintLight14SpecularIntensityGreen 0xa6e0
-#define GlintLight14SpecularIntensityGreenTag 0x04dc
-#define GlintLight14SpecularIntensityGreenReg 1
-#define GlintLight14SpecularIntensityGreenOff 0x96e0
-
-#define GlintLight14SpecularIntensityBlue 0xa6e8
-#define GlintLight14SpecularIntensityBlueTag 0x04dd
-#define GlintLight14SpecularIntensityBlueReg 1
-#define GlintLight14SpecularIntensityBlueOff 0x96e8
-
-#define GlintLight14PositionX 0xa6f0
-#define GlintLight14PositionXTag 0x04de
-#define GlintLight14PositionXReg 1
-#define GlintLight14PositionXOff 0x96f0
-
-#define GlintLight14PositionY 0xa6f8
-#define GlintLight14PositionYTag 0x04df
-#define GlintLight14PositionYReg 1
-#define GlintLight14PositionYOff 0x96f8
-
-#define GlintLight14PositionZ 0xa700
-#define GlintLight14PositionZTag 0x04e0
-#define GlintLight14PositionZReg 1
-#define GlintLight14PositionZOff 0x9700
-
-#define GlintLight14PositionW 0xa708
-#define GlintLight14PositionWTag 0x04e1
-#define GlintLight14PositionWReg 1
-#define GlintLight14PositionWOff 0x9708
-
-#define GlintLight14SpotlightDirectionX 0xa710
-#define GlintLight14SpotlightDirectionXTag 0x04e2
-#define GlintLight14SpotlightDirectionXReg 1
-#define GlintLight14SpotlightDirectionXOff 0x9710
-
-#define GlintLight14SpotlightDirectionY 0xa718
-#define GlintLight14SpotlightDirectionYTag 0x04e3
-#define GlintLight14SpotlightDirectionYReg 1
-#define GlintLight14SpotlightDirectionYOff 0x9718
-
-#define GlintLight14SpotlightDirectionZ 0xa720
-#define GlintLight14SpotlightDirectionZTag 0x04e4
-#define GlintLight14SpotlightDirectionZReg 1
-#define GlintLight14SpotlightDirectionZOff 0x9720
-
-#define GlintLight14SpotlightExponent 0xa728
-#define GlintLight14SpotlightExponentTag 0x04e5
-#define GlintLight14SpotlightExponentReg 1
-#define GlintLight14SpotlightExponentOff 0x9728
-
-#define GlintLight14CosSpotlightCutoffAngle 0xa730
-#define GlintLight14CosSpotlightCutoffAngleTag 0x04e6
-#define GlintLight14CosSpotlightCutoffAngleReg 1
-#define GlintLight14CosSpotlightCutoffAngleOff 0x9730
-
-#define GlintLight14ConstantAttenuation 0xa738
-#define GlintLight14ConstantAttenuationTag 0x04e7
-#define GlintLight14ConstantAttenuationReg 1
-#define GlintLight14ConstantAttenuationOff 0x9738
-
-#define GlintLight14LinearAttenuation 0xa740
-#define GlintLight14LinearAttenuationTag 0x04e8
-#define GlintLight14LinearAttenuationReg 1
-#define GlintLight14LinearAttenuationOff 0x9740
-
-#define GlintLight14QuadraticAttenuation 0xa748
-#define GlintLight14QuadraticAttenuationTag 0x04e9
-#define GlintLight14QuadraticAttenuationReg 1
-#define GlintLight14QuadraticAttenuationOff 0x9748
-
-#define GlintLight15Mode 0xa750
-#define GlintLight15ModeTag 0x04ea
-#define GlintLight15ModeReg 1
-#define GlintLight15ModeOff 0x9750
-
-#define GlintLight15AmbientIntensityRed 0xa758
-#define GlintLight15AmbientIntensityRedTag 0x04eb
-#define GlintLight15AmbientIntensityRedReg 1
-#define GlintLight15AmbientIntensityRedOff 0x9758
-
-#define GlintLight15AmbientIntensityGreen 0xa760
-#define GlintLight15AmbientIntensityGreenTag 0x04ec
-#define GlintLight15AmbientIntensityGreenReg 1
-#define GlintLight15AmbientIntensityGreenOff 0x9760
-
-#define GlintLight15AmbientIntensityBlue 0xa768
-#define GlintLight15AmbientIntensityBlueTag 0x04ed
-#define GlintLight15AmbientIntensityBlueReg 1
-#define GlintLight15AmbientIntensityBlueOff 0x9768
-
-#define GlintLight15DiffuseIntensityRed 0xa770
-#define GlintLight15DiffuseIntensityRedTag 0x04ee
-#define GlintLight15DiffuseIntensityRedReg 1
-#define GlintLight15DiffuseIntensityRedOff 0x9770
-
-#define GlintLight15DiffuseIntensityGreen 0xa778
-#define GlintLight15DiffuseIntensityGreenTag 0x04ef
-#define GlintLight15DiffuseIntensityGreenReg 1
-#define GlintLight15DiffuseIntensityGreenOff 0x9778
-
-#define GlintLight15DiffuseIntensityBlue 0xa780
-#define GlintLight15DiffuseIntensityBlueTag 0x04f0
-#define GlintLight15DiffuseIntensityBlueReg 1
-#define GlintLight15DiffuseIntensityBlueOff 0x9780
-
-#define GlintLight15SpecularIntensityRed 0xa788
-#define GlintLight15SpecularIntensityRedTag 0x04f1
-#define GlintLight15SpecularIntensityRedReg 1
-#define GlintLight15SpecularIntensityRedOff 0x9788
-
-#define GlintLight15SpecularIntensityGreen 0xa790
-#define GlintLight15SpecularIntensityGreenTag 0x04f2
-#define GlintLight15SpecularIntensityGreenReg 1
-#define GlintLight15SpecularIntensityGreenOff 0x9790
-
-#define GlintLight15SpecularIntensityBlue 0xa798
-#define GlintLight15SpecularIntensityBlueTag 0x04f3
-#define GlintLight15SpecularIntensityBlueReg 1
-#define GlintLight15SpecularIntensityBlueOff 0x9798
-
-#define GlintLight15PositionX 0xa7a0
-#define GlintLight15PositionXTag 0x04f4
-#define GlintLight15PositionXReg 1
-#define GlintLight15PositionXOff 0x97a0
-
-#define GlintLight15PositionY 0xa7a8
-#define GlintLight15PositionYTag 0x04f5
-#define GlintLight15PositionYReg 1
-#define GlintLight15PositionYOff 0x97a8
-
-#define GlintLight15PositionZ 0xa7b0
-#define GlintLight15PositionZTag 0x04f6
-#define GlintLight15PositionZReg 1
-#define GlintLight15PositionZOff 0x97b0
-
-#define GlintLight15PositionW 0xa7b8
-#define GlintLight15PositionWTag 0x04f7
-#define GlintLight15PositionWReg 1
-#define GlintLight15PositionWOff 0x97b8
-
-#define GlintLight15SpotlightDirectionX 0xa7c0
-#define GlintLight15SpotlightDirectionXTag 0x04f8
-#define GlintLight15SpotlightDirectionXReg 1
-#define GlintLight15SpotlightDirectionXOff 0x97c0
-
-#define GlintLight15SpotlightDirectionY 0xa7c8
-#define GlintLight15SpotlightDirectionYTag 0x04f9
-#define GlintLight15SpotlightDirectionYReg 1
-#define GlintLight15SpotlightDirectionYOff 0x97c8
-
-#define GlintLight15SpotlightDirectionZ 0xa7d0
-#define GlintLight15SpotlightDirectionZTag 0x04fa
-#define GlintLight15SpotlightDirectionZReg 1
-#define GlintLight15SpotlightDirectionZOff 0x97d0
-
-#define GlintLight15SpotlightExponent 0xa7d8
-#define GlintLight15SpotlightExponentTag 0x04fb
-#define GlintLight15SpotlightExponentReg 1
-#define GlintLight15SpotlightExponentOff 0x97d8
-
-#define GlintLight15CosSpotlightCutoffAngle 0xa7e0
-#define GlintLight15CosSpotlightCutoffAngleTag 0x04fc
-#define GlintLight15CosSpotlightCutoffAngleReg 1
-#define GlintLight15CosSpotlightCutoffAngleOff 0x97e0
-
-#define GlintLight15ConstantAttenuation 0xa7e8
-#define GlintLight15ConstantAttenuationTag 0x04fd
-#define GlintLight15ConstantAttenuationReg 1
-#define GlintLight15ConstantAttenuationOff 0x97e8
-
-#define GlintLight15LinearAttenuation 0xa7f0
-#define GlintLight15LinearAttenuationTag 0x04fe
-#define GlintLight15LinearAttenuationReg 1
-#define GlintLight15LinearAttenuationOff 0x97f0
-
-#define GlintLight15QuadraticAttenuation 0xa7f8
-#define GlintLight15QuadraticAttenuationTag 0x04ff
-#define GlintLight15QuadraticAttenuationReg 1
-#define GlintLight15QuadraticAttenuationOff 0x97f8
-
-#define GlintSceneAmbientColorRed 0xa800
-#define GlintSceneAmbientColorRedTag 0x0500
-#define GlintSceneAmbientColorRedReg 1
-#define GlintSceneAmbientColorRedOff 0x9800
-
-#define GlintSceneAmbientColorGreen 0xa808
-#define GlintSceneAmbientColorGreenTag 0x0501
-#define GlintSceneAmbientColorGreenReg 1
-#define GlintSceneAmbientColorGreenOff 0x9808
-
-#define GlintSceneAmbientColorBlue 0xa810
-#define GlintSceneAmbientColorBlueTag 0x0502
-#define GlintSceneAmbientColorBlueReg 1
-#define GlintSceneAmbientColorBlueOff 0x9810
-
-#define GlintFrontAmbientColorRed 0xa880
-#define GlintFrontAmbientColorRedTag 0x0510
-#define GlintFrontAmbientColorRedReg 1
-#define GlintFrontAmbientColorRedOff 0x9880
-
-#define GlintFrontAmbientColorGreen 0xa888
-#define GlintFrontAmbientColorGreenTag 0x0511
-#define GlintFrontAmbientColorGreenReg 1
-#define GlintFrontAmbientColorGreenOff 0x9888
-
-#define GlintFrontAmbientColorBlue 0xa890
-#define GlintFrontAmbientColorBlueTag 0x0512
-#define GlintFrontAmbientColorBlueReg 1
-#define GlintFrontAmbientColorBlueOff 0x9890
-
-#define GlintFrontDiffuseColorRed 0xa898
-#define GlintFrontDiffuseColorRedTag 0x0513
-#define GlintFrontDiffuseColorRedReg 1
-#define GlintFrontDiffuseColorRedOff 0x9898
-
-#define GlintFrontDiffuseColorGreen 0xa8a0
-#define GlintFrontDiffuseColorGreenTag 0x0514
-#define GlintFrontDiffuseColorGreenReg 1
-#define GlintFrontDiffuseColorGreenOff 0x98a0
-
-#define GlintFrontDiffuseColorBlue 0xa8a8
-#define GlintFrontDiffuseColorBlueTag 0x0515
-#define GlintFrontDiffuseColorBlueReg 1
-#define GlintFrontDiffuseColorBlueOff 0x98a8
-
-#define GlintFrontAlpha 0xa8b0
-#define GlintFrontAlphaTag 0x0516
-#define GlintFrontAlphaReg 1
-#define GlintFrontAlphaOff 0x98b0
-
-#define GlintFrontSpecularColorRed 0xa8b8
-#define GlintFrontSpecularColorRedTag 0x0517
-#define GlintFrontSpecularColorRedReg 1
-#define GlintFrontSpecularColorRedOff 0x98b8
-
-#define GlintFrontSpecularColorGreen 0xa8c0
-#define GlintFrontSpecularColorGreenTag 0x0518
-#define GlintFrontSpecularColorGreenReg 1
-#define GlintFrontSpecularColorGreenOff 0x98c0
-
-#define GlintFrontSpecularColorBlue 0xa8c8
-#define GlintFrontSpecularColorBlueTag 0x0519
-#define GlintFrontSpecularColorBlueReg 1
-#define GlintFrontSpecularColorBlueOff 0x98c8
-
-#define GlintFrontEmissiveColorRed 0xa8d0
-#define GlintFrontEmissiveColorRedTag 0x051a
-#define GlintFrontEmissiveColorRedReg 1
-#define GlintFrontEmissiveColorRedOff 0x98d0
-
-#define GlintFrontEmissiveColorGreen 0xa8d8
-#define GlintFrontEmissiveColorGreenTag 0x051b
-#define GlintFrontEmissiveColorGreenReg 1
-#define GlintFrontEmissiveColorGreenOff 0x98d8
-
-#define GlintFrontEmissiveColorBlue 0xa8e0
-#define GlintFrontEmissiveColorBlueTag 0x051c
-#define GlintFrontEmissiveColorBlueReg 1
-#define GlintFrontEmissiveColorBlueOff 0x98e0
-
-#define GlintFrontSpecularExponent 0xa8e8
-#define GlintFrontSpecularExponentTag 0x051d
-#define GlintFrontSpecularExponentReg 1
-#define GlintFrontSpecularExponentOff 0x98e8
-
-#define GlintBackAmbientColorRed 0xa900
-#define GlintBackAmbientColorRedTag 0x0520
-#define GlintBackAmbientColorRedReg 1
-#define GlintBackAmbientColorRedOff 0x9900
-
-#define GlintBackAmbientColorGreen 0xa908
-#define GlintBackAmbientColorGreenTag 0x0521
-#define GlintBackAmbientColorGreenReg 1
-#define GlintBackAmbientColorGreenOff 0x9908
-
-#define GlintBackAmbientColorBlue 0xa910
-#define GlintBackAmbientColorBlueTag 0x0522
-#define GlintBackAmbientColorBlueReg 1
-#define GlintBackAmbientColorBlueOff 0x9910
-
-#define GlintBackDiffuseColorRed 0xa918
-#define GlintBackDiffuseColorRedTag 0x0523
-#define GlintBackDiffuseColorRedReg 1
-#define GlintBackDiffuseColorRedOff 0x9918
-
-#define GlintBackDiffuseColorGreen 0xa920
-#define GlintBackDiffuseColorGreenTag 0x0524
-#define GlintBackDiffuseColorGreenReg 1
-#define GlintBackDiffuseColorGreenOff 0x9920
-
-#define GlintBackDiffuseColorBlue 0xa928
-#define GlintBackDiffuseColorBlueTag 0x0525
-#define GlintBackDiffuseColorBlueReg 1
-#define GlintBackDiffuseColorBlueOff 0x9928
-
-#define GlintBackAlpha 0xa930
-#define GlintBackAlphaTag 0x0526
-#define GlintBackAlphaReg 1
-#define GlintBackAlphaOff 0x9930
-
-#define GlintBackSpecularColorRed 0xa938
-#define GlintBackSpecularColorRedTag 0x0527
-#define GlintBackSpecularColorRedReg 1
-#define GlintBackSpecularColorRedOff 0x9938
-
-#define GlintBackSpecularColorGreen 0xa940
-#define GlintBackSpecularColorGreenTag 0x0528
-#define GlintBackSpecularColorGreenReg 1
-#define GlintBackSpecularColorGreenOff 0x9940
-
-#define GlintBackSpecularColorBlue 0xa948
-#define GlintBackSpecularColorBlueTag 0x0529
-#define GlintBackSpecularColorBlueReg 1
-#define GlintBackSpecularColorBlueOff 0x9948
-
-#define GlintBackEmissiveColorRed 0xa950
-#define GlintBackEmissiveColorRedTag 0x052a
-#define GlintBackEmissiveColorRedReg 1
-#define GlintBackEmissiveColorRedOff 0x9950
-
-#define GlintBackEmissiveColorGreen 0xa958
-#define GlintBackEmissiveColorGreenTag 0x052b
-#define GlintBackEmissiveColorGreenReg 1
-#define GlintBackEmissiveColorGreenOff 0x9958
-
-#define GlintBackEmissiveColorBlue 0xa960
-#define GlintBackEmissiveColorBlueTag 0x052c
-#define GlintBackEmissiveColorBlueReg 1
-#define GlintBackEmissiveColorBlueOff 0x9960
-
-#define GlintBackSpecularExponent 0xa968
-#define GlintBackSpecularExponentTag 0x052d
-#define GlintBackSpecularExponentReg 1
-#define GlintBackSpecularExponentOff 0x9968
-
-#define GlintDMAAddr 0xa980
-#define GlintDMAAddrTag 0x0530
-#define GlintDMAAddrReg 1
-#define GlintDMAAddrOff 0x9980
-
-#define GlintGammaDMACount 0xa988
-#define GlintGammaDMACountTag 0x0531
-#define GlintGammaDMACountReg 1
-#define GlintGammaDMACountOff 0x9988
-
-#define GlintCommandInterrupt 0xa990
-#define GlintCommandInterruptTag 0x0532
-#define GlintCommandInterruptReg 1
-#define GlintCommandInterruptOff 0x9990
-
-#define GlintDMACall 0xa998
-#define GlintDMACallTag 0x0533
-#define GlintDMACallReg 1
-#define GlintDMACallOff 0x9998
-
-#define GlintDMAReturn 0xa9a0
-#define GlintDMAReturnTag 0x0534
-#define GlintDMAReturnReg 1
-#define GlintDMAReturnOff 0x99a0
-
-#define GlintDMARectangularRead 0xa9a8
-#define GlintDMARectangularReadTag 0x0535
-#define GlintDMARectangularReadReg 1
-#define GlintDMARectangularReadOff 0x99a8
-
-#define GlintDMARectangleReadAddress 0xa9b0
-#define GlintDMARectangleReadAddressTag 0x0536
-#define GlintDMARectangleReadAddressReg 1
-#define GlintDMARectangleReadAddressOff 0x99b0
-
-#define GlintDMARectangleReadLinePitch 0xa9b8
-#define GlintDMARectangleReadLinePitchTag 0x0537
-#define GlintDMARectangleReadLinePitchReg 1
-#define GlintDMARectangleReadLinePitchOff 0x99b8
-
-#define GlintDMARectangleReadTarget 0xa9c0
-#define GlintDMARectangleReadTargetTag 0x0538
-#define GlintDMARectangleReadTargetReg 1
-#define GlintDMARectangleReadTargetOff 0x99c0
-
-#define GlintDMARectangleWrite 0xa9c8
-#define GlintDMARectangleWriteTag 0x0539
-#define GlintDMARectangleWriteReg 1
-#define GlintDMARectangleWriteOff 0x99c8
-
-#define GlintDMARectangleWriteAddress 0xa9d0
-#define GlintDMARectangleWriteAddressTag 0x053a
-#define GlintDMARectangleWriteAddressReg 1
-#define GlintDMARectangleWriteAddressOff 0x99d0
-
-#define GlintDMARectangleWriteLinePitch 0xa9d8
-#define GlintDMARectangleWriteLinePitchTag 0x053b
-#define GlintDMARectangleWriteLinePitchReg 1
-#define GlintDMARectangleWriteLinePitchOff 0x99d8
-
-#define GlintDMAOutputAddress 0xa9e0
-#define GlintDMAOutputAddressTag 0x053c
-#define GlintDMAOutputAddressReg 1
-#define GlintDMAOutputAddressOff 0x99e0
-
-#define GlintDMAOutputCount 0xa9e8
-#define GlintDMAOutputCountTag 0x053d
-#define GlintDMAOutputCountReg 1
-#define GlintDMAOutputCountOff 0x99e8
-
-#define GlintDMAReadGLINTSource 0xa9f0
-#define GlintDMAReadGLINTSourceTag 0x053e
-#define GlintDMAReadGLINTSourceReg 1
-#define GlintDMAReadGLINTSourceOff 0x99f0
-
-#define GlintDMAFeedback 0xaa10
-#define GlintDMAFeedbackTag 0x0542
-#define GlintDMAFeedbackReg 1
-#define GlintDMAFeedbackOff 0x9a10
-
-#define GlintTransformModeAnd 0xaa80
-#define GlintTransformModeAndTag 0x0550
-#define GlintTransformModeAndReg 1
-#define GlintTransformModeAndOff 0x9a80
-
-#define GlintTransformModeOr 0xaa88
-#define GlintTransformModeOrTag 0x0551
-#define GlintTransformModeOrReg 1
-#define GlintTransformModeOrOff 0x9a88
-
-#define GlintGeometryModeAnd 0xaa90
-#define GlintGeometryModeAndTag 0x0552
-#define GlintGeometryModeAndReg 1
-#define GlintGeometryModeAndOff 0x9a90
-
-#define GlintGeometryModeOr 0xaa98
-#define GlintGeometryModeOrTag 0x0553
-#define GlintGeometryModeOrReg 1
-#define GlintGeometryModeOrOff 0x9a98
-
-#define GlintNormalizeModeAnd 0xaaa0
-#define GlintNormalizeModeAndTag 0x0554
-#define GlintNormalizeModeAndReg 1
-#define GlintNormalizeModeAndOff 0x9aa0
-
-#define GlintNormalizeModeOr 0xaaa8
-#define GlintNormalizeModeOrTag 0x0555
-#define GlintNormalizeModeOrReg 1
-#define GlintNormalizeModeOrOff 0x9aa8
-
-#define GlintLightingModeAnd 0xaab0
-#define GlintLightingModeAndTag 0x0556
-#define GlintLightingModeAndReg 1
-#define GlintLightingModeAndOff 0x9ab0
-
-#define GlintLightingModeOr 0xaab8
-#define GlintLightingModeOrTag 0x0557
-#define GlintLightingModeOrReg 1
-#define GlintLightingModeOrOff 0x9ab8
-
-#define GlintColorMaterialModeAnd 0xaac0
-#define GlintColorMaterialModeAndTag 0x0558
-#define GlintColorMaterialModeAndReg 1
-#define GlintColorMaterialModeAndOff 0x9ac0
-
-#define GlintColorMaterialModeOr 0xaac8
-#define GlintColorMaterialModeOrTag 0x0559
-#define GlintColorMaterialModeOrReg 1
-#define GlintColorMaterialModeOrOff 0x9ac8
-
-#define GlintDeltaModeAnd 0xaad0
-#define GlintDeltaModeAndTag 0x055a
-#define GlintDeltaModeAndReg 1
-#define GlintDeltaModeAndOff 0x9ad0
-
-#define GlintDeltaModeOr 0xaad8
-#define GlintDeltaModeOrTag 0x055b
-#define GlintDeltaModeOrReg 1
-#define GlintDeltaModeOrOff 0x9ad8
-
-#define GlintPointModeAnd 0xaae0
-#define GlintPointModeAndTag 0x055c
-#define GlintPointModeAndReg 1
-#define GlintPointModeAndOff 0x9ae0
-
-#define GlintPointModeOr 0xaae8
-#define GlintPointModeOrTag 0x055d
-#define GlintPointModeOrReg 1
-#define GlintPointModeOrOff 0x9ae8
-
-#define GlintLineModeAnd 0xaaf0
-#define GlintLineModeAndTag 0x055e
-#define GlintLineModeAndReg 1
-#define GlintLineModeAndOff 0x9af0
-
-#define GlintLineModeOr 0xaaf8
-#define GlintLineModeOrTag 0x055f
-#define GlintLineModeOrReg 1
-#define GlintLineModeOrOff 0x9af8
-
-#define GlintTriangleModeAnd 0xab00
-#define GlintTriangleModeAndTag 0x0560
-#define GlintTriangleModeAndReg 1
-#define GlintTriangleModeAndOff 0x9b00
-
-#define GlintTriangleModeOr 0xab08
-#define GlintTriangleModeOrTag 0x0561
-#define GlintTriangleModeOrReg 1
-#define GlintTriangleModeOrOff 0x9b08
-
-#define GlintMaterialModeAnd 0xab10
-#define GlintMaterialModeAndTag 0x0562
-#define GlintMaterialModeAndReg 1
-#define GlintMaterialModeAndOff 0x9b10
-
-#define GlintMaterialModeOr 0xab18
-#define GlintMaterialModeOrTag 0x0563
-#define GlintMaterialModeOrReg 1
-#define GlintMaterialModeOrOff 0x9b18
-
-#define GlintWindowAnd 0xab80
-#define GlintWindowAndTag 0x0570
-#define GlintWindowAndReg 1
-#define GlintWindowAndOff 0x9b80
-
-#define GlintWindowOr 0xab88
-#define GlintWindowOrTag 0x0571
-#define GlintWindowOrReg 1
-#define GlintWindowOrOff 0x9b88
-
-#define GlintLBReadModeAnd 0xab90
-#define GlintLBReadModeAndTag 0x0572
-#define GlintLBReadModeAndReg 1
-#define GlintLBReadModeAndOff 0x9b90
-
-#define GlintLBReadModeOr 0xab98
-#define GlintLBReadModeOrTag 0x0573
-#define GlintLBReadModeOrReg 1
-#define GlintLBReadModeOrOff 0x9b98
-#endif
diff --git a/src/mesa/drivers/dri/gamma/gamma_context.c b/src/mesa/drivers/dri/gamma/gamma_context.c
deleted file mode 100644
index 5e666c5c8c6..00000000000
--- a/src/mesa/drivers/dri/gamma/gamma_context.c
+++ /dev/null
@@ -1,229 +0,0 @@
-/*
- * Copyright 2001 by Alan Hourihane.
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Alan Hourihane not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Alan Hourihane makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * ALAN HOURIHANE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL ALAN HOURIHANE BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- * Authors: Alan Hourihane, <[email protected]>
- *
- * 3DLabs Gamma driver.
- *
- */
-#include "gamma_context.h"
-
-#include "swrast/swrast.h"
-#include "swrast_setup/swrast_setup.h"
-#include "vbo/vbo.h"
-
-#include "tnl/tnl.h"
-#include "tnl/t_pipeline.h"
-
-#include "drivers/common/driverfuncs.h"
-
-#include "main/context.h"
-#include "main/simple_list.h"
-#include "main/imports.h"
-#include "main/matrix.h"
-#include "main/extensions.h"
-#if defined(USE_X86_ASM)
-#include "x86/common_x86_asm.h"
-#endif
-#include "main/simple_list.h"
-#include "main/mm.h"
-
-
-#include "gamma_vb.h"
-#include "gamma_tris.h"
-#include "gamma_macros.h"
-
-extern const struct tnl_pipeline_stage _gamma_render_stage;
-
-static const struct tnl_pipeline_stage *gamma_pipeline[] = {
- &_tnl_vertex_transform_stage,
- &_tnl_normal_transform_stage,
- &_tnl_lighting_stage,
- &_tnl_fog_coordinate_stage,
- &_tnl_texgen_stage,
- &_tnl_texture_transform_stage,
- /* REMOVE: point attenuation stage */
-#if 1
- &_gamma_render_stage, /* ADD: unclipped rastersetup-to-dma */
-#endif
- &_tnl_render_stage,
- 0,
-};
-
-GLboolean gammaCreateContext( const __GLcontextModes *glVisual,
- __DRIcontext *driContextPriv,
- void *sharedContextPrivate)
-{
- GLcontext *ctx, *shareCtx;
- __DRIscreen *sPriv = driContextPriv->driScreenPriv;
- gammaContextPtr gmesa;
- gammaScreenPtr gammascrn;
- GLINTSAREADRIPtr saPriv=(GLINTSAREADRIPtr)(((char*)sPriv->pSAREA)+
- sizeof(drm_sarea_t));
- struct dd_function_table functions;
-
- gmesa = (gammaContextPtr) CALLOC( sizeof(*gmesa) );
- if (!gmesa)
- return GL_FALSE;
-
- /* Init default driver functions then plug in our gamma-specific functions
- * (the texture functions are especially important)
- */
- _mesa_init_driver_functions( &functions );
- gammaDDInitTextureFuncs( &functions );
-
- /* Allocate the Mesa context */
- if (sharedContextPrivate)
- shareCtx = ((gammaContextPtr) sharedContextPrivate)->glCtx;
- else
- shareCtx = NULL;
-
- gmesa->glCtx = _mesa_create_context(glVisual, shareCtx,
- &functions, (void *) gmesa);
- if (!gmesa->glCtx) {
- FREE(gmesa);
- return GL_FALSE;
- }
-
- gmesa->driContext = driContextPriv;
- gmesa->driScreen = sPriv;
- gmesa->driDrawable = NULL; /* Set by XMesaMakeCurrent */
-
- gmesa->hHWContext = driContextPriv->hHWContext;
- gmesa->driHwLock = &sPriv->pSAREA->lock;
- gmesa->driFd = sPriv->fd;
- gmesa->sarea = saPriv;
-
- gammascrn = gmesa->gammaScreen = (gammaScreenPtr)(sPriv->private);
-
- ctx = gmesa->glCtx;
-
- ctx->Const.MaxTextureLevels = GAMMA_TEX_MAXLEVELS;
- ctx->Const.MaxTextureUnits = 1; /* Permedia 3 */
- ctx->Const.MaxTextureImageUnits = 1;
- ctx->Const.MaxTextureCoordUnits = 1;
-
- ctx->Const.MinLineWidth = 0.0;
- ctx->Const.MaxLineWidth = 255.0;
-
- ctx->Const.MinLineWidthAA = 0.0;
- ctx->Const.MaxLineWidthAA = 65536.0;
-
- ctx->Const.MinPointSize = 0.0;
- ctx->Const.MaxPointSize = 255.0;
-
- ctx->Const.MinPointSizeAA = 0.5; /* 4x4 quality mode */
- ctx->Const.MaxPointSizeAA = 16.0;
- ctx->Const.PointSizeGranularity = 0.25;
-
- ctx->Const.MaxDrawBuffers = 1;
-
- gmesa->texHeap = mmInit( 0, gmesa->gammaScreen->textureSize );
-
- make_empty_list(&gmesa->TexObjList);
- make_empty_list(&gmesa->SwappedOut);
-
- gmesa->CurrentTexObj[0] = 0;
- gmesa->CurrentTexObj[1] = 0; /* Permedia 3, second texture */
-
- gmesa->RenderIndex = ~0;
-
-
- /* Initialize the software rasterizer and helper modules.
- */
- _swrast_CreateContext( ctx );
- _vbo_CreateContext( ctx );
- _tnl_CreateContext( ctx );
- _swsetup_CreateContext( ctx );
-
- /* Install the customized pipeline:
- */
- _tnl_destroy_pipeline( ctx );
- _tnl_install_pipeline( ctx, gamma_pipeline );
-
- /* Configure swrast & TNL to match hardware characteristics:
- */
- _swrast_allow_pixel_fog( ctx, GL_FALSE );
- _swrast_allow_vertex_fog( ctx, GL_TRUE );
- _tnl_allow_pixel_fog( ctx, GL_FALSE );
- _tnl_allow_vertex_fog( ctx, GL_TRUE );
-
- gammaInitVB( ctx );
- gammaDDInitExtensions( ctx );
- /* XXX these should really go right after _mesa_init_driver_functions() */
- gammaDDInitDriverFuncs( ctx );
- gammaDDInitStateFuncs( ctx );
- gammaDDInitSpanFuncs( ctx );
- gammaDDInitTriFuncs( ctx );
- gammaDDInitState( gmesa );
-
- gammaInitTextureObjects( ctx );
-
- driContextPriv->driverPrivate = (void *)gmesa;
-
- GET_FIRST_DMA(gmesa->driFd, gmesa->hHWContext,
- 1, &gmesa->bufIndex, &gmesa->bufSize,
- &gmesa->buf, &gmesa->bufCount, gammascrn);
-
-#ifdef DO_VALIDATE
- GET_FIRST_DMA(gmesa->driFd, gmesa->hHWContext,
- 1, &gmesa->WCbufIndex, &gmesa->WCbufSize,
- &gmesa->WCbuf, &gmesa->WCbufCount, gammascrn);
-#endif
-
- switch (glVisual->depthBits) {
- case 16:
- gmesa->DeltaMode = DM_Depth16;
- gmesa->depth_scale = 1.0f / 0xffff;
- break;
- case 24:
- gmesa->DeltaMode = DM_Depth24;
- gmesa->depth_scale = 1.0f / 0xffffff;
- break;
- case 32:
- gmesa->DeltaMode = DM_Depth32;
- gmesa->depth_scale = 1.0f / 0xffffffff;
- break;
- default:
- break;
- }
-
- gmesa->DepthSize = glVisual->depthBits;
- gmesa->Flags = GAMMA_FRONT_BUFFER;
- gmesa->Flags |= (glVisual->doubleBufferMode ? GAMMA_BACK_BUFFER : 0);
- gmesa->Flags |= (gmesa->DepthSize > 0 ? GAMMA_DEPTH_BUFFER : 0);
-
- gmesa->EnabledFlags = GAMMA_FRONT_BUFFER;
- gmesa->EnabledFlags |= (glVisual->doubleBufferMode ? GAMMA_BACK_BUFFER : 0);
-
-
- if (gmesa->Flags & GAMMA_BACK_BUFFER) {
- gmesa->readOffset = gmesa->drawOffset = gmesa->driScreen->fbHeight * gmesa->driScreen->fbWidth * gmesa->gammaScreen->cpp;
- } else {
- gmesa->readOffset = gmesa->drawOffset = 0;
- }
-
- gammaInitHW( gmesa );
-
- driContextPriv->driverPrivate = (void *)gmesa;
-
- return GL_TRUE;
-}
diff --git a/src/mesa/drivers/dri/gamma/gamma_context.h b/src/mesa/drivers/dri/gamma/gamma_context.h
deleted file mode 100644
index b03dfa6fb4f..00000000000
--- a/src/mesa/drivers/dri/gamma/gamma_context.h
+++ /dev/null
@@ -1,401 +0,0 @@
-/*
- * Copyright 2001 by Alan Hourihane.
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Alan Hourihane not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Alan Hourihane makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * ALAN HOURIHANE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL ALAN HOURIHANE BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- * Authors: Alan Hourihane, <[email protected]>
- *
- */
-
-#ifndef _GAMMA_CONTEXT_H_
-#define _GAMMA_CONTEXT_H_
-
-#include "dri_util.h"
-#include "drm.h"
-#include "drm_sarea.h"
-#include "main/colormac.h"
-#include "gamma_regs.h"
-#include "gamma_screen.h"
-#include "main/macros.h"
-#include "main/mtypes.h"
-#include "glint_dri.h"
-#include "main/mm.h"
-
-typedef union {
- unsigned int i;
- float f;
-} dmaBufRec, *dmaBuf;
-
-/* Flags for context */
-#define GAMMA_FRONT_BUFFER 0x00000001
-#define GAMMA_BACK_BUFFER 0x00000002
-#define GAMMA_DEPTH_BUFFER 0x00000004
-#define GAMMA_STENCIL_BUFFER 0x00000008
-#define GAMMA_ACCUM_BUFFER 0x00000010
-
-#define GAMMA_MAX_TEXTURE_SIZE 2048
-
-/* These are the minimum requirements and should probably be increased */
-#define MAX_MODELVIEW_STACK 16
-#define MAX_PROJECTION_STACK 2
-#define MAX_TEXTURE_STACK 2
-
-extern void gammaDDUpdateHWState(GLcontext *ctx);
-extern gammaScreenPtr gammaCreateScreen(__DRIscreen *sPriv);
-extern void gammaDestroyScreen(__DRIscreen *sPriv);
-extern GLboolean gammaCreateContext( const __GLcontextModes *glVisual,
- __DRIcontext *driContextPriv,
- void *sharedContextPrivate);
-
-#define GAMMA_UPLOAD_ALL 0xffffffff
-#define GAMMA_UPLOAD_CLIPRECTS 0x00000002
-#define GAMMA_UPLOAD_ALPHA 0x00000004
-#define GAMMA_UPLOAD_BLEND 0x00000008
-#define GAMMA_UPLOAD_DEPTH 0x00000010
-#define GAMMA_UPLOAD_VIEWPORT 0x00000020
-#define GAMMA_UPLOAD_SHADE 0x00000040
-#define GAMMA_UPLOAD_CLIP 0x00000080
-#define GAMMA_UPLOAD_MASKS 0x00000100
-#define GAMMA_UPLOAD_WINDOW 0x00000200 /* defunct */
-#define GAMMA_UPLOAD_GEOMETRY 0x00000400
-#define GAMMA_UPLOAD_POLYGON 0x00000800
-#define GAMMA_UPLOAD_DITHER 0x00001000
-#define GAMMA_UPLOAD_LOGICOP 0x00002000
-#define GAMMA_UPLOAD_FOG 0x00004000
-#define GAMMA_UPLOAD_LIGHT 0x00008000
-#define GAMMA_UPLOAD_CONTEXT 0x00010000
-#define GAMMA_UPLOAD_TEX0 0x00020000
-#define GAMMA_UPLOAD_STIPPLE 0x00040000
-#define GAMMA_UPLOAD_TRANSFORM 0x00080000
-#define GAMMA_UPLOAD_LINEMODE 0x00100000
-#define GAMMA_UPLOAD_POINTMODE 0x00200000
-#define GAMMA_UPLOAD_TRIMODE 0x00400000
-
-#define GAMMA_NEW_CLIP 0x00000001
-#define GAMMA_NEW_WINDOW 0x00000002
-#define GAMMA_NEW_CONTEXT 0x00000004
-#define GAMMA_NEW_TEXTURE 0x00000008 /* defunct */
-#define GAMMA_NEW_ALPHA 0x00000010
-#define GAMMA_NEW_DEPTH 0x00000020
-#define GAMMA_NEW_MASKS 0x00000040
-#define GAMMA_NEW_POLYGON 0x00000080
-#define GAMMA_NEW_CULL 0x00000100
-#define GAMMA_NEW_LOGICOP 0x00000200
-#define GAMMA_NEW_FOG 0x00000400
-#define GAMMA_NEW_LIGHT 0x00000800
-#define GAMMA_NEW_STIPPLE 0x00001000
-#define GAMMA_NEW_ALL 0xffffffff
-
-#define GAMMA_FALLBACK_TRI 0x00000001
-#define GAMMA_FALLBACK_TEXTURE 0x00000002
-
-#define FLUSH_BATCH(gmesa) do { \
- /*FLUSH_DMA_BUFFER(gmesa);*/ \
-} while(0)
-
-struct gamma_context;
-typedef struct gamma_context gammaContextRec;
-typedef struct gamma_context *gammaContextPtr;
-typedef struct gamma_texture_object_t *gammaTextureObjectPtr;
-
-#define VALID_GAMMA_TEXTURE_OBJECT(tobj) (tobj)
-
-#define GAMMA_TEX_MAXLEVELS 12 /* 2K x 2K */
-
-/* For shared texture space managment, these texture objects may also
- * be used as proxies for regions of texture memory containing other
- * client's textures. Such proxy textures (not to be confused with GL
- * proxy textures) are subject to the same LRU aging we use for our
- * own private textures, and thus we have a mechanism where we can
- * fairly decide between kicking out our own textures and those of
- * other clients.
- *
- * Non-local texture objects have a valid MemBlock to describe the
- * region managed by the other client, and can be identified by
- * 't->globj == 0'
- */
-struct gamma_texture_object_t {
- struct gamma_texture_object_t *next, *prev;
-
- GLuint age;
- struct gl_texture_object *globj;
-
- int Pitch;
- int Height;
- int texelBytes;
- int totalSize;
- int bound;
-
- struct mem_block *MemBlock;
- char * BufAddr;
-
- GLuint min_level;
- GLuint max_level;
- GLuint dirty_images;
-
- GLint firstLevel, lastLevel; /* upload tObj->Image[0][first .. lastLevel] */
-
- struct {
- const struct gl_texture_image *image;
- int offset; /* into BufAddr */
- int height;
- int internalFormat;
- } image[GAMMA_TEX_MAXLEVELS];
-
- uint32_t TextureBaseAddr[GAMMA_TEX_MAXLEVELS];
- uint32_t TextureAddressMode;
- uint32_t TextureColorMode;
- uint32_t TextureFilterMode;
- uint32_t TextureFormat;
- uint32_t TextureReadMode;
- uint32_t TextureBorderColor;
-};
-
-#define GAMMA_NO_PALETTE 0x0
-#define GAMMA_USE_PALETTE 0x1
-#define GAMMA_UPDATE_PALETTE 0x2
-#define GAMMA_FALLBACK_PALETTE 0x4
-
-void gammaUpdateTextureState( GLcontext *ctx );
-
-void gammaDestroyTexObj( gammaContextPtr gmesa, gammaTextureObjectPtr t );
-void gammaSwapOutTexObj( gammaContextPtr gmesa, gammaTextureObjectPtr t );
-void gammaUploadTexImages( gammaContextPtr gmesa, gammaTextureObjectPtr t );
-
-void gammaResetGlobalLRU( gammaContextPtr gmesa );
-void gammaUpdateTexLRU( gammaContextPtr gmesa, gammaTextureObjectPtr t );
-void gammaTexturesGone( gammaContextPtr gmesa,
- GLuint start, GLuint end,
- GLuint in_use );
-
-void gammaEmitHwState( gammaContextPtr gmesa );
-void gammaDDInitExtensions( GLcontext *ctx );
-void gammaDDInitDriverFuncs( GLcontext *ctx );
-void gammaDDInitSpanFuncs( GLcontext *ctx );
-void gammaDDInitState( gammaContextPtr gmesa );
-void gammaInitHW( gammaContextPtr gmesa );
-void gammaDDInitStateFuncs( GLcontext *ctx );
-void gammaDDInitTextureFuncs( struct dd_function_table *table );
-void gammaInitTextureObjects( GLcontext *ctx );
-void gammaDDInitTriFuncs( GLcontext *ctx );
-
-void gammaUpdateWindow( GLcontext *ctx );
-void gammaUpdateViewportOffset( GLcontext *ctx );
-
-void gammaPrintLocalLRU( gammaContextPtr gmesa );
-void gammaPrintGlobalLRU( gammaContextPtr gmesa );
-
-extern void gammaFallback( gammaContextPtr gmesa, GLuint bit, GLboolean mode );
-#define FALLBACK( imesa, bit, mode ) gammaFallback( imesa, bit, mode )
-
-/* Use the templated vertex formats. Only one of these is used in gamma.
- */
-#define TAG(x) gamma##x
-#include "tnl_dd/t_dd_vertex.h"
-#undef TAG
-
-typedef void (*gamma_quad_func)( gammaContextPtr,
- const gammaVertex *,
- const gammaVertex *,
- const gammaVertex *,
- const gammaVertex * );
-typedef void (*gamma_tri_func)( gammaContextPtr,
- const gammaVertex *,
- const gammaVertex *,
- const gammaVertex * );
-typedef void (*gamma_line_func)( gammaContextPtr,
- const gammaVertex *,
- const gammaVertex * );
-typedef void (*gamma_point_func)( gammaContextPtr,
- const gammaVertex * );
-
-
-struct gamma_context {
- GLcontext *glCtx; /* Mesa context */
-
- __DRIcontext *driContext;
- __DRIscreen *driScreen;
- __DRIdrawable *driDrawable;
-
- GLuint new_gl_state;
- GLuint new_state;
- GLuint dirty;
-
- GLINTSAREADRIPtr sarea;
-
- /* Mirrors of some DRI state
- */
- drm_context_t hHWContext;
- drm_hw_lock_t *driHwLock;
- int driFd;
-
- GLuint numClipRects; /* Cliprects for the draw buffer */
- drm_clip_rect_t *pClipRects;
-
- dmaBuf buf; /* DMA buffer for regular cmds */
- int bufIndex;
- int bufSize;
- int bufCount;
-
- dmaBuf WCbuf; /* DMA buffer for window changed cmds */
- int WCbufIndex;
- int WCbufSize;
- int WCbufCount;
-
- gammaScreenPtr gammaScreen; /* Screen private DRI data */
-
- int drawOffset;
- int readOffset;
-
- gamma_point_func draw_point;
- gamma_line_func draw_line;
- gamma_tri_func draw_tri;
- gamma_quad_func draw_quad;
-
- GLuint Fallback;
- GLuint RenderIndex;
- GLuint SetupNewInputs;
- GLuint SetupIndex;
-
- GLuint vertex_format;
- GLuint vertex_size;
- GLuint vertex_stride_shift;
- GLubyte *verts;
-
- GLfloat hw_viewport[16];
- GLuint hw_primitive;
- GLenum render_primitive;
-
- GLfloat depth_scale;
-
- gammaTextureObjectPtr CurrentTexObj[2];
- struct gamma_texture_object_t TexObjList;
- struct gamma_texture_object_t SwappedOut;
- GLenum TexEnvImageFmt[2];
-
- struct mem_block *texHeap;
-
- unsigned int lastSwap;
- int texAge;
- int ctxAge;
- int dirtyAge;
- unsigned int lastStamp;
-
-
- uint32_t ClearColor;
- uint32_t Color;
- uint32_t DitherMode;
- uint32_t ClearDepth;
- uint32_t FogMode;
- uint32_t AreaStippleMode;
- uint32_t LBReadFormat;
- uint32_t LBWriteFormat;
- uint32_t LineMode;
- uint32_t PointMode;
- uint32_t TriangleMode;
- uint32_t AntialiasMode;
- GLfloat ViewportScaleX;
- GLfloat ViewportScaleY;
- GLfloat ViewportScaleZ;
- GLfloat ViewportOffsetX;
- GLfloat ViewportOffsetY;
- GLfloat ViewportOffsetZ;
- int MatrixMode;
- int DepthMode;
- int TransformMode;
- int LBReadMode;
- int FBReadMode;
- int FBWindowBase;
- int LBWindowBase;
- int ColorDDAMode;
- int GeometryMode;
- int AlphaTestMode;
- int AlphaBlendMode;
- int AB_FBReadMode;
- int AB_FBReadMode_Save;
- int DeltaMode;
- int ColorMaterialMode;
- int FBHardwareWriteMask;
- int MaterialMode;
- int NormalizeMode;
- int LightingMode;
- int Light0Mode;
- int Light1Mode;
- int Light2Mode;
- int Light3Mode;
- int Light4Mode;
- int Light5Mode;
- int Light6Mode;
- int Light7Mode;
- int Light8Mode;
- int Light9Mode;
- int Light10Mode;
- int Light11Mode;
- int Light12Mode;
- int Light13Mode;
- int Light14Mode;
- int Light15Mode;
- int LogicalOpMode;
- int ScissorMode;
- int ScissorMaxXY;
- int ScissorMinXY;
- int Window; /* GID part probably should be in draw priv */
- int WindowOrigin;
- int x, y, w, h; /* Probably should be in drawable priv */
- int FrameCount; /* Probably should be in drawable priv */
- int NotClipped; /* Probably should be in drawable priv */
- int WindowChanged; /* Probably should be in drawabl... */
- int Flags;
- int EnabledFlags;
- int DepthSize;
- int Begin;
- GLenum ErrorValue;
- int Texture1DEnabled;
- int Texture2DEnabled;
-
- float ModelView[16];
- float Proj[16];
- float ModelViewProj[16];
- float Texture[16];
-
- float ModelViewStack[(MAX_MODELVIEW_STACK-1)*16];
- int ModelViewCount;
- float ProjStack[(MAX_PROJECTION_STACK-1)*16];
- int ProjCount;
- float TextureStack[(MAX_TEXTURE_STACK-1)*16];
- int TextureCount;
-};
-
-static INLINE GLuint gammaPackColor( GLuint cpp,
- GLubyte r, GLubyte g,
- GLubyte b, GLubyte a )
-{
- switch ( cpp ) {
- case 2:
- return PACK_COLOR_565( r, g, b );
- case 4:
- return PACK_COLOR_8888( a, r, g, b );
- default:
- return 0;
- }
-}
-
-#define GAMMA_CONTEXT(ctx) ((gammaContextPtr)(ctx->DriverCtx))
-
-#endif /* _GAMMA_CONTEXT_H_ */
diff --git a/src/mesa/drivers/dri/gamma/gamma_dd.c b/src/mesa/drivers/dri/gamma/gamma_dd.c
deleted file mode 100644
index 389d2231e76..00000000000
--- a/src/mesa/drivers/dri/gamma/gamma_dd.c
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Copyright 2001 by Alan Hourihane.
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Alan Hourihane not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Alan Hourihane makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * ALAN HOURIHANE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL ALAN HOURIHANE BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- * Authors: Alan Hourihane, <[email protected]>
- *
- */
-
-#include "gamma_context.h"
-#include "gamma_vb.h"
-#include "gamma_lock.h"
-#include "gamma_macros.h"
-#if defined(USE_X86_ASM)
-#include "x86/common_x86_asm.h"
-#endif
-
-#include "main/context.h"
-#include "swrast/swrast.h"
-
-#define GAMMA_DATE "20021125"
-
-
-/* Return the width and height of the current color buffer.
- */
-static void gammaDDGetBufferSize( GLframebuffer *buffer,
- GLuint *width, GLuint *height )
-{
- GET_CURRENT_CONTEXT(ctx);
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
-
- GAMMAHW_LOCK( gmesa );
- *width = gmesa->driDrawable->w;
- *height = gmesa->driDrawable->h;
- GAMMAHW_UNLOCK( gmesa );
-}
-
-
-/* Return various strings for glGetString().
- */
-static const GLubyte *gammaDDGetString( GLcontext *ctx, GLenum name )
-{
- static char buffer[128];
-
- switch ( name ) {
- case GL_VENDOR:
- return (GLubyte *)"VA Linux Systems, Inc.";
-
- case GL_RENDERER:
- sprintf( buffer, "Mesa DRI Gamma " GAMMA_DATE );
-
- /* Append any CPU-specific information.
- */
-#ifdef USE_X86_ASM
- if ( _mesa_x86_cpu_features ) {
- strncat( buffer, " x86", 4 );
- }
-#ifdef USE_MMX_ASM
- if ( cpu_has_mmx ) {
- strncat( buffer, "/MMX", 4 );
- }
-#endif
-#ifdef USE_3DNOW_ASM
- if ( cpu_has_3dnow ) {
- strncat( buffer, "/3DNow!", 7 );
- }
-#endif
-#ifdef USE_SSE_ASM
- if ( cpu_has_xmm ) {
- strncat( buffer, "/SSE", 4 );
- }
-#endif
-#endif
- return (GLubyte *)buffer;
-
- default:
- return NULL;
- }
-}
-
-/* Enable the extensions supported by this driver.
- */
-void gammaDDInitExtensions( GLcontext *ctx )
-{
- /* None... */
-}
-
-/* Initialize the driver's misc functions.
- */
-void gammaDDInitDriverFuncs( GLcontext *ctx )
-{
- ctx->Driver.GetBufferSize = gammaDDGetBufferSize;
- ctx->Driver.GetString = gammaDDGetString;
-}
diff --git a/src/mesa/drivers/dri/gamma/gamma_inithw.c b/src/mesa/drivers/dri/gamma/gamma_inithw.c
deleted file mode 100644
index 735acb7a576..00000000000
--- a/src/mesa/drivers/dri/gamma/gamma_inithw.c
+++ /dev/null
@@ -1,551 +0,0 @@
-/*
- * Copyright 2001 by Alan Hourihane.
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Alan Hourihane not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Alan Hourihane makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * ALAN HOURIHANE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL ALAN HOURIHANE BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- * Authors: Alan Hourihane, <[email protected]>
- * Kevin E. Martin <[email protected]>
- *
- */
-
-#include "gamma_context.h"
-#include "gamma_macros.h"
-#include "glint_dri.h"
-
-void gammaInitHW( gammaContextPtr gmesa )
-{
- GLINTDRIPtr gDRIPriv = (GLINTDRIPtr)gmesa->driScreen->pDevPriv;
- int i;
-
- if (gDRIPriv->numMultiDevices == 2) {
- /* Set up each MX's ScanLineOwnership for OpenGL */
- CHECK_DMA_BUFFER(gmesa, 5);
- WRITE(gmesa->buf, BroadcastMask, 1);
- WRITE(gmesa->buf, ScanLineOwnership, 5); /* Use bottom left as [0,0] */
- WRITE(gmesa->buf, BroadcastMask, 2);
- WRITE(gmesa->buf, ScanLineOwnership, 1); /* Use bottom left as [0,0] */
- /* Broadcast to both MX's */
- WRITE(gmesa->buf, BroadcastMask, 3);
- FLUSH_DMA_BUFFER(gmesa);
- }
-
- gmesa->AlphaBlendMode = (AlphaBlendModeDisable |
- AB_Src_One |
- AB_Dst_Zero |
- AB_NoAlphaBufferPresent |
- AB_ColorFmt_8888 |
- AB_ColorOrder_RGB |
- AB_OpenGLType |
- AB_AlphaDst_FBData |
- AB_ColorConversionScale |
- AB_AlphaConversionScale);
-
- gmesa->DitherMode = DitherModeEnable | DM_ColorOrder_RGB;
-
- switch (gmesa->gammaScreen->cpp) {
- case 2:
- gmesa->DitherMode |= DM_ColorFmt_5555;
- gmesa->AlphaBlendMode |= AB_ColorFmt_5555;
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, PixelSize, 1);
- break;
- case 4:
- gmesa->DitherMode |= DM_ColorFmt_8888;
- gmesa->AlphaBlendMode |= AB_ColorFmt_8888;
- WRITE(gmesa->buf, PixelSize, 0);
- break;
- }
-
- /* FIXME for stencil, gid, etc */
- switch (gmesa->DepthSize) {
- case 16:
- gmesa->LBReadFormat =
- (LBRF_DepthWidth16 |
- LBRF_StencilWidth8 |
- LBRF_StencilPos16 |
- LBRF_FrameCount8 |
- LBRF_FrameCountPos24 |
- LBRF_GIDWidth4 |
- LBRF_GIDPos32 );
- gmesa->LBWriteFormat =
- (LBRF_DepthWidth16 |
- LBRF_StencilWidth8 |
- LBRF_StencilPos16 |
- LBRF_FrameCount8 |
- LBRF_FrameCountPos24 |
- LBRF_GIDWidth4 |
- LBRF_GIDPos32 );
- break;
- case 24:
- gmesa->LBReadFormat =
- (LBRF_DepthWidth24 |
- LBRF_StencilWidth8 |
- LBRF_StencilPos24 |
- LBRF_FrameCount8 |
- LBRF_FrameCountPos32 |
- LBRF_GIDWidth4 |
- LBRF_GIDPos36 );
- gmesa->LBWriteFormat =
- (LBRF_DepthWidth24 |
- LBRF_StencilWidth8 |
- LBRF_StencilPos24 |
- LBRF_FrameCount8 |
- LBRF_FrameCountPos32 |
- LBRF_GIDWidth4 |
- LBRF_GIDPos36 );
- break;
- case 32:
- gmesa->LBReadFormat =
- (LBRF_DepthWidth32 |
- LBRF_StencilWidth8 |
- LBRF_StencilPos32 |
- LBRF_FrameCount8 |
- LBRF_FrameCountPos40 |
- LBRF_GIDWidth4 |
- LBRF_GIDPos44 );
- gmesa->LBWriteFormat =
- (LBRF_DepthWidth32 |
- LBRF_StencilWidth8 |
- LBRF_StencilPos32 |
- LBRF_FrameCount8 |
- LBRF_FrameCountPos40 |
- LBRF_GIDWidth4 |
- LBRF_GIDPos44 );
- break;
- }
-
- gmesa->FBHardwareWriteMask = 0xffffffff;
- gmesa->FogMode = FogModeDisable;
- gmesa->ClearDepth = 0xffffffff;
- gmesa->AreaStippleMode = AreaStippleModeDisable;
- gmesa->x = 0;
- gmesa->y = 0;
- gmesa->w = 0;
- gmesa->h = 0;
- gmesa->FrameCount = 0;
- gmesa->MatrixMode = GL_MODELVIEW;
- gmesa->ModelViewCount = 0;
- gmesa->ProjCount = 0;
- gmesa->TextureCount = 0;
- gmesa->PointMode = PM_AntialiasQuality_4x4;
- gmesa->LineMode = LM_AntialiasQuality_4x4;
- gmesa->TriangleMode = TM_AntialiasQuality_4x4;
- gmesa->AntialiasMode = AntialiasModeDisable;
-
- for (i = 0; i < 16; i++)
- if (i % 5 == 0)
- gmesa->ModelView[i] =
- gmesa->Proj[i] =
- gmesa->ModelViewProj[i] =
- gmesa->Texture[i] = 1.0;
- else
- gmesa->ModelView[i] =
- gmesa->Proj[i] =
- gmesa->ModelViewProj[i] =
- gmesa->Texture[i] = 0.0;
-
- gmesa->LBReadMode = (LBReadSrcDisable |
- LBReadDstDisable |
- LBDataTypeDefault |
- LBWindowOriginBot |
- gDRIPriv->pprod);
- gmesa->FBReadMode = (FBReadSrcDisable |
- FBReadDstDisable |
- FBDataTypeDefault |
- FBWindowOriginBot |
- gDRIPriv->pprod);
-
- if (gDRIPriv->numMultiDevices == 2) {
- gmesa->LBReadMode |= LBScanLineInt2;
- gmesa->FBReadMode |= FBScanLineInt2;
- gmesa->LBWindowBase = gmesa->driScreen->fbWidth *
- (gmesa->driScreen->fbHeight/2 - 1);
- gmesa->FBWindowBase = gmesa->driScreen->fbWidth *
- (gmesa->driScreen->fbHeight/2 - 1);
- } else {
- gmesa->LBWindowBase = gmesa->driScreen->fbWidth *
- (gmesa->driScreen->fbHeight - 1);
- gmesa->FBWindowBase = gmesa->driScreen->fbWidth *
- (gmesa->driScreen->fbHeight - 1);
- }
-
- gmesa->Begin = (B_AreaStippleDisable |
- B_LineStippleDisable |
- B_AntiAliasDisable |
- B_TextureDisable |
- B_FogDisable |
- B_SubPixelCorrectEnable |
- B_PrimType_Null);
-
- gmesa->ColorDDAMode = (ColorDDAEnable |
- ColorDDAGouraud);
-
- gmesa->GeometryMode = (GM_TextureDisable |
- GM_FogDisable |
- GM_FogExp |
- GM_FrontPolyFill |
- GM_BackPolyFill |
- GM_FrontFaceCCW |
- GM_PolyCullDisable |
- GM_PolyCullBack |
- GM_ClipShortLinesDisable |
- GM_ClipSmallTrisDisable |
- GM_RenderMode |
- GM_Feedback2D |
- GM_CullFaceNormDisable |
- GM_AutoFaceNormDisable |
- GM_GouraudShading |
- GM_UserClipNone |
- GM_PolyOffsetPointDisable |
- GM_PolyOffsetLineDisable |
- GM_PolyOffsetFillDisable |
- GM_InvertFaceNormCullDisable);
-
- gmesa->AlphaTestMode = (AlphaTestModeDisable |
- AT_Always);
-
- gmesa->AB_FBReadMode_Save = gmesa->AB_FBReadMode = 0;
-
- gmesa->Window = (WindowEnable | /* For GID testing */
- W_PassIfEqual |
- (0 << 5)); /* GID part is set from draw priv (below) */
-
- gmesa->NotClipped = GL_FALSE;
- gmesa->WindowChanged = GL_TRUE;
-
- gmesa->Texture1DEnabled = GL_FALSE;
- gmesa->Texture2DEnabled = GL_FALSE;
-
- gmesa->DepthMode |= (DepthModeDisable |
- DM_WriteMask |
- DM_Less);
-
- gmesa->DeltaMode |= (DM_SubPixlCorrectionEnable |
- DM_SmoothShadingEnable |
- DM_Target500TXMX);
-
- gmesa->LightingMode = LightingModeDisable | LightingModeSpecularEnable;
- gmesa->Light0Mode = LNM_Off;
- gmesa->Light1Mode = LNM_Off;
- gmesa->Light2Mode = LNM_Off;
- gmesa->Light3Mode = LNM_Off;
- gmesa->Light4Mode = LNM_Off;
- gmesa->Light5Mode = LNM_Off;
- gmesa->Light6Mode = LNM_Off;
- gmesa->Light7Mode = LNM_Off;
- gmesa->Light8Mode = LNM_Off;
- gmesa->Light9Mode = LNM_Off;
- gmesa->Light10Mode = LNM_Off;
- gmesa->Light11Mode = LNM_Off;
- gmesa->Light12Mode = LNM_Off;
- gmesa->Light13Mode = LNM_Off;
- gmesa->Light14Mode = LNM_Off;
- gmesa->Light15Mode = LNM_Off;
-
- gmesa->LogicalOpMode = LogicalOpModeDisable;
-
- gmesa->MaterialMode = MaterialModeDisable;
-
- gmesa->ScissorMode = UserScissorDisable | ScreenScissorDisable;
-
- gmesa->TransformMode = XM_UseModelViewProjMatrix |
- XM_TexGenModeS_None |
- XM_TexGenModeT_None |
- XM_TexGenModeR_None |
- XM_TexGenModeQ_None;
-
- CHECK_DMA_BUFFER(gmesa, 20);
- WRITE(gmesa->buf, LineStippleMode, 0);
- WRITE(gmesa->buf, RouterMode, 0);
- WRITE(gmesa->buf, TextureAddressMode, 0);
- WRITE(gmesa->buf, TextureReadMode, 0);
- WRITE(gmesa->buf, TextureFilterMode, 0);
- WRITE(gmesa->buf, TextureColorMode, 0);
- WRITE(gmesa->buf, StencilMode, 0);
- WRITE(gmesa->buf, PatternRamMode, 0);
- WRITE(gmesa->buf, ChromaTestMode, 0);
- WRITE(gmesa->buf, StatisticMode, 0);
- WRITE(gmesa->buf, AreaStippleMode, gmesa->AreaStippleMode);
- WRITE(gmesa->buf, ScissorMode, gmesa->ScissorMode);
- WRITE(gmesa->buf, FogMode, gmesa->FogMode);
- WRITE(gmesa->buf, AntialiasMode, gmesa->AntialiasMode);
- WRITE(gmesa->buf, LogicalOpMode, gmesa->LogicalOpMode);
- WRITE(gmesa->buf, TriangleMode, gmesa->TriangleMode);
- WRITE(gmesa->buf, PointMode, gmesa->PointMode);
- WRITE(gmesa->buf, LineMode, gmesa->LineMode);
- WRITE(gmesa->buf, LBWriteFormat, gmesa->LBWriteFormat);
- WRITE(gmesa->buf, LBReadFormat, gmesa->LBReadFormat);
-
- /* Framebuffer initialization */
- CHECK_DMA_BUFFER(gmesa, 10);
- WRITE(gmesa->buf, FBSourceData, 0);
- WRITE(gmesa->buf, FBReadMode, gmesa->FBReadMode);
- if (gmesa->EnabledFlags & GAMMA_BACK_BUFFER) {
- if (gDRIPriv->numMultiDevices == 2) {
- WRITE(gmesa->buf, FBPixelOffset,
- (gmesa->driScreen->fbHeight/2)*gmesa->driScreen->fbWidth);
- } else {
- WRITE(gmesa->buf, FBPixelOffset,
- gmesa->driScreen->fbHeight*gmesa->driScreen->fbWidth);
- }
- } else
- WRITE(gmesa->buf, FBPixelOffset, 0);
- WRITE(gmesa->buf, FBSourceOffset, 0);
- WRITE(gmesa->buf, FBHardwareWriteMask, 0xffffffff);
- WRITE(gmesa->buf, FBSoftwareWriteMask, 0xffffffff);
- WRITE(gmesa->buf, FBWriteMode, FBWriteModeEnable);
- WRITE(gmesa->buf, FBWindowBase, gmesa->FBWindowBase);
- WRITE(gmesa->buf, ScreenSize, ((gmesa->driScreen->fbHeight << 16) |
- (gmesa->driScreen->fbWidth)));
- WRITE(gmesa->buf, WindowOrigin, 0x00000000);
-
- /* Localbuffer initialization */
- CHECK_DMA_BUFFER(gmesa, 5);
- WRITE(gmesa->buf, LBReadMode, gmesa->LBReadMode);
- WRITE(gmesa->buf, LBSourceOffset, 0);
- WRITE(gmesa->buf, LBWriteMode, LBWriteModeEnable);
- WRITE(gmesa->buf, LBWindowOffset, 0);
- WRITE(gmesa->buf, LBWindowBase, gmesa->LBWindowBase);
-
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, Rectangle2DControl, 1);
-
- CHECK_DMA_BUFFER(gmesa, 11);
- WRITE(gmesa->buf, DepthMode, gmesa->DepthMode);
- WRITE(gmesa->buf, ColorDDAMode, gmesa->ColorDDAMode);
- WRITE(gmesa->buf, FBBlockColor, 0x00000000);
- WRITE(gmesa->buf, ConstantColor, 0x00000000);
- WRITE(gmesa->buf, AlphaTestMode, gmesa->AlphaTestMode);
- WRITE(gmesa->buf, AlphaBlendMode, gmesa->AlphaBlendMode);
- WRITE(gmesa->buf, DitherMode, gmesa->DitherMode);
- if (gDRIPriv->numMultiDevices == 2)
- WRITE(gmesa->buf, RasterizerMode, RM_MultiGLINT | RM_BiasCoordNearHalf);
- else
- WRITE(gmesa->buf, RasterizerMode, RM_BiasCoordNearHalf);
- WRITE(gmesa->buf, GLINTWindow, gmesa->Window);
- WRITE(gmesa->buf, FastClearDepth, gmesa->ClearDepth);
- WRITE(gmesa->buf, GLINTDepth, gmesa->ClearDepth);
-
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, EdgeFlag, EdgeFlagEnable);
-
- CHECK_DMA_BUFFER(gmesa, 16);
- WRITEF(gmesa->buf, ModelViewMatrix0, 1.0);
- WRITEF(gmesa->buf, ModelViewMatrix1, 0.0);
- WRITEF(gmesa->buf, ModelViewMatrix2, 0.0);
- WRITEF(gmesa->buf, ModelViewMatrix3, 0.0);
- WRITEF(gmesa->buf, ModelViewMatrix4, 0.0);
- WRITEF(gmesa->buf, ModelViewMatrix5, 1.0);
- WRITEF(gmesa->buf, ModelViewMatrix6, 0.0);
- WRITEF(gmesa->buf, ModelViewMatrix7, 0.0);
- WRITEF(gmesa->buf, ModelViewMatrix8, 0.0);
- WRITEF(gmesa->buf, ModelViewMatrix9, 0.0);
- WRITEF(gmesa->buf, ModelViewMatrix10, 1.0);
- WRITEF(gmesa->buf, ModelViewMatrix11, 0.0);
- WRITEF(gmesa->buf, ModelViewMatrix12, 0.0);
- WRITEF(gmesa->buf, ModelViewMatrix13, 0.0);
- WRITEF(gmesa->buf, ModelViewMatrix14, 0.0);
- WRITEF(gmesa->buf, ModelViewMatrix15, 1.0);
-
- CHECK_DMA_BUFFER(gmesa, 16);
- WRITEF(gmesa->buf, ModelViewProjectionMatrix0, 1.0);
- WRITEF(gmesa->buf, ModelViewProjectionMatrix1, 0.0);
- WRITEF(gmesa->buf, ModelViewProjectionMatrix2, 0.0);
- WRITEF(gmesa->buf, ModelViewProjectionMatrix3, 0.0);
- WRITEF(gmesa->buf, ModelViewProjectionMatrix4, 0.0);
- WRITEF(gmesa->buf, ModelViewProjectionMatrix5, 1.0);
- WRITEF(gmesa->buf, ModelViewProjectionMatrix6, 0.0);
- WRITEF(gmesa->buf, ModelViewProjectionMatrix7, 0.0);
- WRITEF(gmesa->buf, ModelViewProjectionMatrix8, 0.0);
- WRITEF(gmesa->buf, ModelViewProjectionMatrix9, 0.0);
- WRITEF(gmesa->buf, ModelViewProjectionMatrix10, 1.0);
- WRITEF(gmesa->buf, ModelViewProjectionMatrix11, 0.0);
- WRITEF(gmesa->buf, ModelViewProjectionMatrix12, 0.0);
- WRITEF(gmesa->buf, ModelViewProjectionMatrix13, 0.0);
- WRITEF(gmesa->buf, ModelViewProjectionMatrix14, 0.0);
- WRITEF(gmesa->buf, ModelViewProjectionMatrix15, 1.0);
-
- CHECK_DMA_BUFFER(gmesa, 16);
- WRITEF(gmesa->buf, TextureMatrix0, 1.0);
- WRITEF(gmesa->buf, TextureMatrix1, 0.0);
- WRITEF(gmesa->buf, TextureMatrix2, 0.0);
- WRITEF(gmesa->buf, TextureMatrix3, 0.0);
- WRITEF(gmesa->buf, TextureMatrix4, 0.0);
- WRITEF(gmesa->buf, TextureMatrix5, 1.0);
- WRITEF(gmesa->buf, TextureMatrix6, 0.0);
- WRITEF(gmesa->buf, TextureMatrix7, 0.0);
- WRITEF(gmesa->buf, TextureMatrix8, 0.0);
- WRITEF(gmesa->buf, TextureMatrix9, 0.0);
- WRITEF(gmesa->buf, TextureMatrix10, 1.0);
- WRITEF(gmesa->buf, TextureMatrix11, 0.0);
- WRITEF(gmesa->buf, TextureMatrix12, 0.0);
- WRITEF(gmesa->buf, TextureMatrix13, 0.0);
- WRITEF(gmesa->buf, TextureMatrix14, 0.0);
- WRITEF(gmesa->buf, TextureMatrix15, 1.0);
-
- CHECK_DMA_BUFFER(gmesa, 16);
- WRITEF(gmesa->buf, TexGen0, 0.0);
- WRITEF(gmesa->buf, TexGen1, 0.0);
- WRITEF(gmesa->buf, TexGen2, 0.0);
- WRITEF(gmesa->buf, TexGen3, 0.0);
- WRITEF(gmesa->buf, TexGen4, 0.0);
- WRITEF(gmesa->buf, TexGen5, 0.0);
- WRITEF(gmesa->buf, TexGen6, 0.0);
- WRITEF(gmesa->buf, TexGen7, 0.0);
- WRITEF(gmesa->buf, TexGen8, 0.0);
- WRITEF(gmesa->buf, TexGen9, 0.0);
- WRITEF(gmesa->buf, TexGen10, 0.0);
- WRITEF(gmesa->buf, TexGen11, 0.0);
- WRITEF(gmesa->buf, TexGen12, 0.0);
- WRITEF(gmesa->buf, TexGen13, 0.0);
- WRITEF(gmesa->buf, TexGen14, 0.0);
- WRITEF(gmesa->buf, TexGen15, 0.0);
-
- CHECK_DMA_BUFFER(gmesa, 9);
- WRITEF(gmesa->buf, NormalMatrix0, 1.0);
- WRITEF(gmesa->buf, NormalMatrix1, 0.0);
- WRITEF(gmesa->buf, NormalMatrix2, 0.0);
- WRITEF(gmesa->buf, NormalMatrix3, 0.0);
- WRITEF(gmesa->buf, NormalMatrix4, 1.0);
- WRITEF(gmesa->buf, NormalMatrix5, 0.0);
- WRITEF(gmesa->buf, NormalMatrix6, 0.0);
- WRITEF(gmesa->buf, NormalMatrix7, 0.0);
- WRITEF(gmesa->buf, NormalMatrix8, 1.0);
-
- CHECK_DMA_BUFFER(gmesa, 3);
- WRITEF(gmesa->buf, FogDensity, 0.0);
- WRITEF(gmesa->buf, FogEnd, 0.0);
- WRITEF(gmesa->buf, FogScale, 0.0);
-
- CHECK_DMA_BUFFER(gmesa, 2);
- WRITEF(gmesa->buf, LineClipLengthThreshold, 0.0);
- WRITEF(gmesa->buf, TriangleClipAreaThreshold, 0.0);
-
- CHECK_DMA_BUFFER(gmesa, 5);
- WRITE(gmesa->buf, GeometryMode, gmesa->GeometryMode);
- WRITE(gmesa->buf, NormalizeMode, NormalizeModeDisable);
- WRITE(gmesa->buf, LightingMode, gmesa->LightingMode);
- WRITE(gmesa->buf, ColorMaterialMode, ColorMaterialModeDisable);
- WRITE(gmesa->buf, MaterialMode, MaterialModeDisable);
-
- CHECK_DMA_BUFFER(gmesa, 2);
- WRITE(gmesa->buf, FrontSpecularExponent, 0); /* fixed point */
- WRITE(gmesa->buf, BackSpecularExponent, 0); /* fixed point */
-
- CHECK_DMA_BUFFER(gmesa, 29);
- WRITEF(gmesa->buf, FrontAmbientColorRed, 0.2);
- WRITEF(gmesa->buf, FrontAmbientColorGreen, 0.2);
- WRITEF(gmesa->buf, FrontAmbientColorBlue, 0.2);
- WRITEF(gmesa->buf, BackAmbientColorRed, 0.2);
- WRITEF(gmesa->buf, BackAmbientColorGreen, 0.2);
- WRITEF(gmesa->buf, BackAmbientColorBlue, 0.2);
- WRITEF(gmesa->buf, FrontDiffuseColorRed, 0.8);
- WRITEF(gmesa->buf, FrontDiffuseColorGreen, 0.8);
- WRITEF(gmesa->buf, FrontDiffuseColorBlue, 0.8);
- WRITEF(gmesa->buf, BackDiffuseColorRed, 0.8);
- WRITEF(gmesa->buf, BackDiffuseColorGreen, 0.8);
- WRITEF(gmesa->buf, BackDiffuseColorBlue, 0.8);
- WRITEF(gmesa->buf, FrontSpecularColorRed, 0.0);
- WRITEF(gmesa->buf, FrontSpecularColorGreen, 0.0);
- WRITEF(gmesa->buf, FrontSpecularColorBlue, 0.0);
- WRITEF(gmesa->buf, BackSpecularColorRed, 0.0);
- WRITEF(gmesa->buf, BackSpecularColorGreen, 0.0);
- WRITEF(gmesa->buf, BackSpecularColorBlue, 0.0);
- WRITEF(gmesa->buf, FrontEmissiveColorRed, 0.0);
- WRITEF(gmesa->buf, FrontEmissiveColorGreen, 0.0);
- WRITEF(gmesa->buf, FrontEmissiveColorBlue, 0.0);
- WRITEF(gmesa->buf, BackEmissiveColorRed, 0.0);
- WRITEF(gmesa->buf, BackEmissiveColorGreen, 0.0);
- WRITEF(gmesa->buf, BackEmissiveColorBlue, 0.0);
- WRITEF(gmesa->buf, SceneAmbientColorRed, 0.2);
- WRITEF(gmesa->buf, SceneAmbientColorGreen, 0.2);
- WRITEF(gmesa->buf, SceneAmbientColorBlue, 0.2);
- WRITEF(gmesa->buf, FrontAlpha, 1.0);
- WRITEF(gmesa->buf, BackAlpha, 1.0);
-
- CHECK_DMA_BUFFER(gmesa, 7);
- WRITE(gmesa->buf, PointSize, 1);
- WRITEF(gmesa->buf, AApointSize, 1.0);
- WRITE(gmesa->buf, LineWidth, 1);
- WRITEF(gmesa->buf, AAlineWidth, 1.0);
- WRITE(gmesa->buf, LineWidthOffset, 0);
- WRITE(gmesa->buf, TransformMode, gmesa->TransformMode);
- WRITE(gmesa->buf, DeltaMode, gmesa->DeltaMode);
-
- CHECK_DMA_BUFFER(gmesa, 16);
- WRITE(gmesa->buf, Light0Mode, LNM_Off);
- WRITE(gmesa->buf, Light1Mode, LNM_Off);
- WRITE(gmesa->buf, Light2Mode, LNM_Off);
- WRITE(gmesa->buf, Light3Mode, LNM_Off);
- WRITE(gmesa->buf, Light4Mode, LNM_Off);
- WRITE(gmesa->buf, Light5Mode, LNM_Off);
- WRITE(gmesa->buf, Light6Mode, LNM_Off);
- WRITE(gmesa->buf, Light7Mode, LNM_Off);
- WRITE(gmesa->buf, Light8Mode, LNM_Off);
- WRITE(gmesa->buf, Light9Mode, LNM_Off);
- WRITE(gmesa->buf, Light10Mode, LNM_Off);
- WRITE(gmesa->buf, Light11Mode, LNM_Off);
- WRITE(gmesa->buf, Light12Mode, LNM_Off);
- WRITE(gmesa->buf, Light13Mode, LNM_Off);
- WRITE(gmesa->buf, Light14Mode, LNM_Off);
- WRITE(gmesa->buf, Light15Mode, LNM_Off);
-
- CHECK_DMA_BUFFER(gmesa, 22);
- WRITEF(gmesa->buf, Light0AmbientIntensityBlue, 0.0);
- WRITEF(gmesa->buf, Light0AmbientIntensityGreen, 0.0);
- WRITEF(gmesa->buf, Light0AmbientIntensityRed, 0.0);
- WRITEF(gmesa->buf, Light0DiffuseIntensityBlue, 1.0);
- WRITEF(gmesa->buf, Light0DiffuseIntensityGreen, 1.0);
- WRITEF(gmesa->buf, Light0DiffuseIntensityRed, 1.0);
- WRITEF(gmesa->buf, Light0SpecularIntensityBlue, 1.0);
- WRITEF(gmesa->buf, Light0SpecularIntensityGreen, 1.0);
- WRITEF(gmesa->buf, Light0SpecularIntensityRed, 1.0);
- WRITEF(gmesa->buf, Light0SpotlightDirectionZ, 0.0);
- WRITEF(gmesa->buf, Light0SpotlightDirectionY, 0.0);
- WRITEF(gmesa->buf, Light0SpotlightDirectionX, -1.0);
- WRITEF(gmesa->buf, Light0SpotlightExponent, 0.0);
- WRITEF(gmesa->buf, Light0PositionZ, 0.0);
- WRITEF(gmesa->buf, Light0PositionY, 0.0);
- WRITEF(gmesa->buf, Light0PositionX, 1.0);
- WRITEF(gmesa->buf, Light0PositionW, 0.0);
- WRITEF(gmesa->buf, Light0CosSpotlightCutoffAngle, -1.0);
- WRITEF(gmesa->buf, Light0ConstantAttenuation, 1.0);
- WRITEF(gmesa->buf, Light0LinearAttenuation, 0.0);
- WRITEF(gmesa->buf, Light0QuadraticAttenuation,0.0);
-
- CHECK_DMA_BUFFER(gmesa, 2);
- WRITEF(gmesa->buf, XBias, 0.0);
- WRITEF(gmesa->buf, YBias, 0.0);
-
- CHECK_DMA_BUFFER(gmesa, 6);
- WRITEF(gmesa->buf, ViewPortScaleX, gmesa->driScreen->fbWidth/4);
- WRITEF(gmesa->buf, ViewPortScaleY, gmesa->driScreen->fbHeight/4);
- WRITEF(gmesa->buf, ViewPortScaleZ, 1.0f);
- WRITEF(gmesa->buf, ViewPortOffsetX, gmesa->x);
- WRITEF(gmesa->buf, ViewPortOffsetY, gmesa->y);
- WRITEF(gmesa->buf, ViewPortOffsetZ, 0.0f);
-
- CHECK_DMA_BUFFER(gmesa, 3);
- WRITEF(gmesa->buf, Nz, 1.0);
- WRITEF(gmesa->buf, Ny, 0.0);
- WRITEF(gmesa->buf, Nx, 0.0);
-
- /* Send the initialization commands to the HW */
- FLUSH_DMA_BUFFER(gmesa);
-}
diff --git a/src/mesa/drivers/dri/gamma/gamma_lock.c b/src/mesa/drivers/dri/gamma/gamma_lock.c
deleted file mode 100644
index c58b59aa1b4..00000000000
--- a/src/mesa/drivers/dri/gamma/gamma_lock.c
+++ /dev/null
@@ -1,60 +0,0 @@
-
-#include "gamma_context.h"
-#include "gamma_lock.h"
-#include "drirenderbuffer.h"
-
-#ifdef DEBUG_LOCKING
-char *prevLockFile = NULL;
-int prevLockLine = 0;
-#endif
-
-
-/* Update the hardware state. This is called if another context has
- * grabbed the hardware lock, which includes the X server. This
- * function also updates the driver's window state after the X server
- * moves, resizes or restacks a window -- the change will be reflected
- * in the drawable position and clip rects. Since the X server grabs
- * the hardware lock when it changes the window state, this routine will
- * automatically be called after such a change.
- */
-void gammaGetLock( gammaContextPtr gmesa, GLuint flags )
-{
- __DRIdrawable *dPriv = gmesa->driDrawable;
- __DRIscreen *sPriv = gmesa->driScreen;
-
- drmGetLock( gmesa->driFd, gmesa->hHWContext, flags );
-
- /* The window might have moved, so we might need to get new clip
- * rects.
- *
- * NOTE: This releases and regrabs the hw lock to allow the X server
- * to respond to the DRI protocol request for new drawable info.
- * Since the hardware state depends on having the latest drawable
- * clip rects, all state checking must be done _after_ this call.
- */
- DRI_VALIDATE_DRAWABLE_INFO( sPriv, dPriv );
-
- if ( gmesa->lastStamp != dPriv->lastStamp ) {
- driUpdateFramebufferSize(gmesa->glCtx, dPriv);
- gmesa->lastStamp = dPriv->lastStamp;
- gmesa->new_state |= GAMMA_NEW_WINDOW | GAMMA_NEW_CLIP;
- }
-
- gmesa->numClipRects = dPriv->numClipRects;
- gmesa->pClipRects = dPriv->pClipRects;
-
-#if 0
- gmesa->dirty = ~0;
-
- if ( sarea->ctxOwner != gmesa->hHWContext ) {
- sarea->ctxOwner = gmesa->hHWContext;
- gmesa->dirty = GAMMA_UPLOAD_ALL;
- }
-
- for ( i = 0 ; i < gmesa->lastTexHeap ; i++ ) {
- if ( sarea->texAge[i] != gmesa->lastTexAge[i] ) {
- gammaAgeTextures( gmesa, i );
- }
- }
-#endif
-}
diff --git a/src/mesa/drivers/dri/gamma/gamma_lock.h b/src/mesa/drivers/dri/gamma/gamma_lock.h
deleted file mode 100644
index 2d117320da2..00000000000
--- a/src/mesa/drivers/dri/gamma/gamma_lock.h
+++ /dev/null
@@ -1,84 +0,0 @@
-#ifndef __GAMMA_LOCK_H__
-#define __GAMMA_LOCK_H__
-
-extern void gammaGetLock( gammaContextPtr gmesa, GLuint flags );
-
-/* Turn DEBUG_LOCKING on to find locking conflicts.
- */
-#define DEBUG_LOCKING 0
-
-#if DEBUG_LOCKING
-extern char *prevLockFile;
-extern int prevLockLine;
-
-#define DEBUG_LOCK() \
- do { \
- prevLockFile = (__FILE__); \
- prevLockLine = (__LINE__); \
- } while (0)
-
-#define DEBUG_RESET() \
- do { \
- prevLockFile = 0; \
- prevLockLine = 0; \
- } while (0)
-
-#define DEBUG_CHECK_LOCK() \
- do { \
- if ( prevLockFile ) { \
- fprintf( stderr, \
- "LOCK SET!\n\tPrevious %s:%d\n\tCurrent: %s:%d\n", \
- prevLockFile, prevLockLine, __FILE__, __LINE__ ); \
- exit( 1 ); \
- } \
- } while (0)
-
-#else
-
-#define DEBUG_LOCK()
-#define DEBUG_RESET()
-#define DEBUG_CHECK_LOCK()
-
-#endif
-
-/*
- * !!! We may want to separate locks from locks with validation. This
- * could be used to improve performance for those things commands that
- * do not do any drawing !!!
- */
-
-/* Lock the hardware and validate our state.
- */
-#define LOCK_HARDWARE( gmesa ) \
- do { \
- char __ret = 0; \
- DEBUG_CHECK_LOCK(); \
- DRM_CAS( gmesa->driHwLock, gmesa->hHWContext, \
- (DRM_LOCK_HELD | gmesa->hHWContext), __ret ); \
- if ( __ret ) \
- gammaGetLock( gmesa, 0 ); \
- DEBUG_LOCK(); \
- } while (0)
-
-/* Unlock the hardware.
- */
-#define UNLOCK_HARDWARE( gmesa ) \
- do { \
- DRM_UNLOCK( gmesa->driFd, \
- gmesa->driHwLock, \
- gmesa->hHWContext ); \
- DEBUG_RESET(); \
- } while (0)
-
-#define GAMMAHW_LOCK( gmesa ) \
- DRM_UNLOCK(gmesa->driFd, gmesa->driHwLock, gmesa->hHWContext); \
- DRM_SPINLOCK(&gmesa->driScreen->pSAREA->drawable_lock, \
- gmesa->driScreen->drawLockID); \
- VALIDATE_DRAWABLE_INFO_NO_LOCK(gmesa);
-
-#define GAMMAHW_UNLOCK( gmesa ) \
- DRM_SPINUNLOCK(&gmesa->driScreen->pSAREA->drawable_lock, \
- gmesa->driScreen->drawLockID); \
- VALIDATE_DRAWABLE_INFO_NO_LOCK_POST(gmesa);
-
-#endif /* __GAMMA_LOCK_H__ */
diff --git a/src/mesa/drivers/dri/gamma/gamma_macros.h b/src/mesa/drivers/dri/gamma/gamma_macros.h
deleted file mode 100644
index d962dcdb566..00000000000
--- a/src/mesa/drivers/dri/gamma/gamma_macros.h
+++ /dev/null
@@ -1,323 +0,0 @@
-/**************************************************************************
-
-Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
-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, sub license, 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 NON-INFRINGEMENT.
-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:
- * Kevin E. Martin <[email protected]>
- *
- */
-
-#ifndef _GAMMA_MACROS_H_
-#define _GAMMA_MACROS_H_
-
-#define DEBUG_DRMDMA
-#define DEBUG_ERRORS
-#define DEBUG_COMMANDS_NOT
-#define DEBUG_VERBOSE_NOT
-#define DEBUG_VERBOSE_EXTRA_NOT
-
-#define RANDOMIZE_COLORS_NOT
-#define TURN_OFF_CLEARS_NOT
-#define CULL_ALL_PRIMS_NOT
-#define TURN_OFF_DEPTH_NOT
-#define TURN_OFF_BLEND_NOT
-#define FAST_CLEAR_4_NOT
-#define FORCE_DEPTH32_NOT
-#define DONT_SEND_DMA_NOT
-#define TURN_OFF_FCP_NOT
-#define TURN_OFF_TEXTURES_NOT
-#define DO_VALIDATE
-
-#define GAMMA_DMA_BUFFER_SIZE 4096
-
-#if 0
-#define GAMMA_DMA_SEND_FLAGS DRM_DMA_PRIORITY
-#define GAMMA_DMA_SEND_FLAGS DRM_DMA_BLOCK
-#else
-/* MUST use non-blocking dma flags for drawable lock routines */
-#define GAMMA_DMA_SEND_FLAGS 0
-#endif
-
-#if 0
-#define GAMMA_DMA_GET_FLAGS \
- (DRM_DMA_SMALLER_OK | DRM_DMA_LARGER_OK | DRM_DMA_WAIT)
-#else
-#define GAMMA_DMA_GET_FLAGS DRM_DMA_WAIT
-#endif
-
-#if defined(DEBUG_DRMDMA) || defined(DEBUG_COMMANDS) || defined(DEBUG_VERBOSE)
-#include <stdio.h>
-#endif
-
-/* Note: The argument to DEBUG_GLCMDS() _must_ be enclosed in parenthesis */
-#ifdef DEBUG_VERBOSE
-#define DEBUG_GLCMDS(s) printf s
-#else
-#define DEBUG_GLCMDS(s)
-#endif
-
-/* Note: The argument to DEBUG_DMACMDS() _must_ be enclosed in parenthesis */
-#ifdef DEBUG_DRMDMA
-#define DEBUG_DMACMDS(s) printf s
-#else
-#define DEBUG_DMACMDS(s)
-#endif
-
-/* Note: The argument to DEBUG_WRITE() _must_ be enclosed in parenthesis */
-#ifdef DEBUG_COMMANDS
-#define DEBUG_WRITE(s) printf s
-#else
-#define DEBUG_WRITE(s)
-#endif
-
-/* Note: The argument to DEBUG_ERROR() _must_ be enclosed in parenthesis */
-#ifdef DEBUG_ERRORS
-#define DEBUG_ERROR(s) printf s
-#else
-#define DEBUG_ERROR(s)
-#endif
-
-#define WRITEV(buf,val1,val2,val3,val4) \
-do { \
- buf++->i = 0x9C008300; \
- buf++->f = val1; \
- buf++->f = val2; \
- buf++->f = val3; \
- buf++->f = val4; \
-} while (0)
-
-#define WRITE(buf,reg,val) \
-do { \
- buf++->i = Glint##reg##Tag; \
- buf++->i = val; \
- DEBUG_WRITE(("WRITE(buf, %s, 0x%08x);\n", #reg, (int)val)); \
-} while (0)
-
-#define WRITEF(buf,reg,val) \
-do { \
- buf++->i = Glint##reg##Tag; \
- buf++->f = val; \
- DEBUG_WRITE(("WRITEF(buf, %s, %f);\n", #reg, (float)val)); \
-} while (0)
-
-#define CHECK_WC_DMA_BUFFER(gcp,n) \
-do { \
- (gcp)->WCbufCount += (n<<1); \
-} while (0)
-
-#define CHECK_DMA_BUFFER(gcp,n) \
-do { \
- if ((gcp)->bufCount+(n<<1) >= (gcp)->bufSize) \
- PROCESS_DMA_BUFFER(gcp); \
- (gcp)->bufCount += (n<<1); \
-} while (0)
-
-#define CHECK_DMA_BUFFER2(gcp,n) \
-do { \
- if ((gcp)->bufCount+n >= (gcp)->bufSize) \
- PROCESS_DMA_BUFFER(gcp); \
- (gcp)->bufCount += n; \
-} while (0)
-
-#define FLUSH_DMA_BUFFER(gcp) \
-do { \
- if (gcp->bufCount) \
- PROCESS_DMA_BUFFER(gcp); \
-} while (0)
-
-#ifdef DONT_SEND_DMA
-#define GET_DMA(fd, hHWCtx, n, idx, size)
-#define SEND_DMA(fd, hHWCtx,n, idx, cnt)
-#else
-#define GET_DMA(fd, hHWCtx, n, idx, size) \
-do { \
- drmDMAReq dma; \
- int retcode, i; \
- \
- dma.context = (hHWCtx); \
- dma.send_count = 0; \
- dma.send_list = NULL; \
- dma.send_sizes = NULL; \
- dma.flags = GAMMA_DMA_GET_FLAGS; \
- dma.request_count = (n); \
- dma.request_size = GAMMA_DMA_BUFFER_SIZE; \
- dma.request_list = (idx); \
- dma.request_sizes = (size); \
- \
- do { \
- if ((retcode = drmDMA((fd), &dma))) { \
- DEBUG_DMACMDS(("drmDMA returned %d\n", retcode)); \
- } \
- } while (!(dma).granted_count); \
- \
- for (i = 0; i < (n); i++) { \
- (size)[i] >>= 2; /* Convert from bytes to words */ \
- } \
-} while (0)
-
-#define SEND_DMA(fd, hHWCtx, n, idx, cnt) \
-do { \
- drmDMAReq dma; \
- int retcode, i; \
- \
- for (i = 0; i < (n); i++) { \
- (cnt)[i] <<= 2; /* Convert from words to bytes */ \
- } \
- \
- dma.context = (hHWCtx); \
- dma.send_count = 1; \
- dma.send_list = (idx); \
- dma.send_sizes = (cnt); \
- dma.flags = GAMMA_DMA_SEND_FLAGS; \
- dma.request_count = 0; \
- dma.request_size = 0; \
- dma.request_list = NULL; \
- dma.request_sizes = NULL; \
- \
- if ((retcode = drmDMA((fd), &dma))) { \
- DEBUG_DMACMDS(("drmDMA returned %d\n", retcode)); \
- } \
- \
- for (i = 0; i < (n); i++) { \
- (cnt)[i] = 0; \
- } \
-} while (0)
-#endif
-
-#define GET_FIRST_DMA(fd, hHWCtx, n, idx, size, buf, cnt, gPriv) \
-do { \
- int i; \
- \
- GET_DMA(fd, hHWCtx, n, idx, size); \
- \
- for (i = 0; i < (n); i++) { \
- (buf)[i] = (dmaBuf)(gPriv)->bufs->list[(idx)[i]].address; \
- (cnt)[i] = 0; \
- } \
-} while (0)
-
-#define PROCESS_DMA_BUFFER_TOP_HALF(gcp) \
-do { \
- SEND_DMA((gcp)->driFd, \
- (gcp)->hHWContext, 1, &(gcp)->bufIndex, &(gcp)->bufCount); \
-} while (0)
-
-#define PROCESS_DMA_BUFFER_BOTTOM_HALF(gcp) \
-do { \
- GET_DMA((gcp)->driFd, \
- (gcp)->hHWContext, 1, &(gcp)->bufIndex, &(gcp)->bufSize); \
- \
- (gcp)->buf = \
- (dmaBuf)(gcp)->gammaScreen->bufs->list[(gcp)->bufIndex].address; \
-} while (0)
-
-#define PROCESS_DMA_BUFFER(gcp) \
-do { \
- VALIDATE_DRAWABLE_INFO(gcp); \
- PROCESS_DMA_BUFFER_TOP_HALF(gcp); \
- PROCESS_DMA_BUFFER_BOTTOM_HALF(gcp); \
-} while (0)
-
-#ifdef DO_VALIDATE
-#define VALIDATE_DRAWABLE_INFO_NO_LOCK(gcp) \
-do { \
- /*__DRIscreen *psp = gcp->driScreen;*/ \
- __DRIdrawable *pdp = gcp->driDrawable; \
- \
- if (*(pdp->pStamp) != pdp->lastStamp) { \
- int old_index = pdp->index; \
- while (*(pdp->pStamp) != pdp->lastStamp) { \
- DRI_VALIDATE_DRAWABLE_INFO_ONCE(pdp); \
- } \
- if (pdp->index != old_index) { \
- gcp->Window &= ~W_GIDMask; \
- gcp->Window |= (pdp->index << 5); \
- CHECK_WC_DMA_BUFFER(gcp, 1); \
- WRITE(gcp->WCbuf, GLINTWindow, gcp->Window|(gcp->FrameCount<<9));\
- } \
- \
- gammaUpdateViewportOffset( gcp->glCtx); \
- \
- if (pdp->numClipRects == 1 && \
- pdp->pClipRects->x1 == pdp->x && \
- pdp->pClipRects->x2 == (pdp->x+pdp->w) && \
- pdp->pClipRects->y1 == pdp->y && \
- pdp->pClipRects->y2 == (pdp->y+pdp->h)) { \
- CHECK_WC_DMA_BUFFER(gcp, 1); \
- WRITE(gcp->WCbuf, Rectangle2DControl, 0); \
- gcp->NotClipped = GL_TRUE; \
- } else { \
- CHECK_WC_DMA_BUFFER(gcp, 1); \
- WRITE(gcp->WCbuf, Rectangle2DControl, 1); \
- gcp->NotClipped = GL_FALSE; \
- } \
- gcp->WindowChanged = GL_TRUE; \
- \
- if (gcp->WCbufCount) { \
- SEND_DMA((gcp)->gammaScreen->driScreen->fd, \
- (gcp)->hHWContext, 1, &(gcp)->WCbufIndex, \
- &(gcp)->WCbufCount); \
- (gcp)->WCbufIndex = -1; \
- } \
- } \
-} while (0)
-
-#define VALIDATE_DRAWABLE_INFO_NO_LOCK_POST(gcp) \
-do { \
- if ((gcp)->WCbufIndex < 0) { \
- GET_DMA((gcp)->gammaScreen->driScreen->fd, \
- (gcp)->hHWContext, 1, &(gcp)->WCbufIndex, \
- &(gcp)->WCbufSize); \
- \
- (gcp)->WCbuf = \
- (dmaBuf)(gcp)->gammaScreen->bufs-> \
- list[(gcp)->WCbufIndex].address; \
- } \
-} while (0)
-
-#define VALIDATE_DRAWABLE_INFO(gcp) \
-do { \
- __DRIscreen *psp = gcp->driScreen; \
-if (gcp->driDrawable) { \
- DRM_SPINLOCK(&psp->pSAREA->drawable_lock, psp->drawLockID); \
- VALIDATE_DRAWABLE_INFO_NO_LOCK(gcp); \
- DRM_SPINUNLOCK(&psp->pSAREA->drawable_lock, psp->drawLockID); \
- VALIDATE_DRAWABLE_INFO_NO_LOCK_POST(gcp); \
-} \
-} while (0)
-#else
-#define VALIDATE_DRAWABLE_INFO(gcp)
-#endif
-
-#define CALC_LOG2(l2,s) \
-do { \
- int __s = s; \
- l2 = 0; \
- while (__s > 1) { ++l2; __s >>= 1; } \
-} while (0)
-
-#endif /* _GAMMA_MACROS_H_ */
diff --git a/src/mesa/drivers/dri/gamma/gamma_regs.h b/src/mesa/drivers/dri/gamma/gamma_regs.h
deleted file mode 100644
index 9e1c735019d..00000000000
--- a/src/mesa/drivers/dri/gamma/gamma_regs.h
+++ /dev/null
@@ -1,658 +0,0 @@
-/**************************************************************************
-
-Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
-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, sub license, 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 NON-INFRINGEMENT.
-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:
- * Kevin E. Martin <[email protected]>
- *
- */
-
-#ifndef _GAMMA_REGS_H_
-#define _GAMMA_REGS_H_
-
-#include "gamma_client.h"
-
-/**************** MX FLAGS ****************/
-/* FBReadMode */
-#define FBReadSrcDisable 0x00000000
-#define FBReadSrcEnable 0x00000200
-#define FBReadDstDisable 0x00000000
-#define FBReadDstEnable 0x00000400
-#define FBDataTypeDefault 0x00000000
-#define FBDataTypeColor 0x00008000
-#define FBWindowOriginTop 0x00000000
-#define FBWindowOriginBot 0x00010000
-#define FBScanLineInt1 0x00000000
-#define FBScanLineInt2 0x00800000
-#define FBScanLineInt4 0x01000000
-#define FBScanLineInt8 0x01800000
-#define FBSrcAddrConst 0x00000000
-#define FBSrcAddrIndex 0x10000000
-#define FBSrcAddrCoord 0x20000000
-
-/* LBReadMode */
-#define LBPartialProdMask 0x000001ff
-#define LBReadSrcDisable 0x00000000
-#define LBReadSrcEnable 0x00000200
-#define LBReadDstDisable 0x00000000
-#define LBReadDstEnable 0x00000400
-#define LBDataTypeDefault 0x00000000
-#define LBDataTypeStencil 0x00010000
-#define LBDataTypeDepth 0x00020000
-#define LBWindowOriginTop 0x00000000
-#define LBWindowOriginBot 0x00040000
-#define LBScanLineInt1 0x00000000
-#define LBScanLineInt2 0x00100000
-#define LBScanLineInt4 0x00200000
-#define LBScanLineInt8 0x00300000
-
-/* ColorDDAMode */
-#define ColorDDADisable 0x00000000
-#define ColorDDAEnable 0x00000001
-#define ColorDDAFlat 0x00000000
-#define ColorDDAGouraud 0x00000002
-#define ColorDDAShadingMask 0x00000002
-
-/* AlphaTestMode */
-#define AlphaTestModeDisable 0x00000000
-#define AlphaTestModeEnable 0x00000001
-#define AT_Never 0x00000000
-#define AT_Less 0x00000002
-#define AT_Equal 0x00000004
-#define AT_LessEqual 0x00000006
-#define AT_Greater 0x00000008
-#define AT_NotEqual 0x0000000a
-#define AT_GreaterEqual 0x0000000c
-#define AT_Always 0x0000000e
-#define AT_CompareMask 0x0000000e
-#define AT_RefValueMask 0x00000ff0
-
-/* AlphaBlendMode */
-#define AlphaBlendModeDisable 0x00000000
-#define AlphaBlendModeEnable 0x00000001
-#define AB_Src_Zero 0x00000000
-#define AB_Src_One 0x00000002
-#define AB_Src_DstColor 0x00000004
-#define AB_Src_OneMinusDstColor 0x00000006
-#define AB_Src_SrcAlpha 0x00000008
-#define AB_Src_OneMinusSrcAlpha 0x0000000a
-#define AB_Src_DstAlpha 0x0000000c
-#define AB_Src_OneMinusDstAlpha 0x0000000e
-#define AB_Src_SrcAlphaSaturate 0x00000010
-#define AB_SrcBlendMask 0x0000001e
-#define AB_Dst_Zero 0x00000000
-#define AB_Dst_One 0x00000020
-#define AB_Dst_SrcColor 0x00000040
-#define AB_Dst_OneMinusSrcColor 0x00000060
-#define AB_Dst_SrcAlpha 0x00000080
-#define AB_Dst_OneMinusSrcAlpha 0x000000a0
-#define AB_Dst_DstAlpha 0x000000c0
-#define AB_Dst_OneMinusDstAlpha 0x000000e0
-#define AB_DstBlendMask 0x000000e0
-#define AB_ColorFmt_8888 0x00000000
-#define AB_ColorFmt_5555 0x00000100
-#define AB_ColorFmt_4444 0x00000200
-#define AB_ColorFmt_4444Front 0x00000300
-#define AB_ColorFmt_4444Back 0x00000400
-#define AB_ColorFmt_332Front 0x00000500
-#define AB_ColorFmt_332Back 0x00000600
-#define AB_ColorFmt_121Front 0x00000700
-#define AB_ColorFmt_121Back 0x00000800
-#define AB_ColorFmt_555Back 0x00000d00
-#define AB_ColorFmt_CI8 0x00000e00
-#define AB_ColorFmt_CI4 0x00000f00
-#define AB_AlphaBufferPresent 0x00000000
-#define AB_NoAlphaBufferPresent 0x00001000
-#define AB_ColorOrder_BGR 0x00000000
-#define AB_ColorOrder_RGB 0x00002000
-#define AB_OpenGLType 0x00000000
-#define AB_QuickDraw3DType 0x00004000
-#define AB_AlphaDst_FBData 0x00000000
-#define AB_AlphaDst_FBSourceData 0x00008000
-#define AB_ColorConversionScale 0x00000000
-#define AB_ColorConversionShift 0x00010000
-#define AB_AlphaConversionScale 0x00000000
-#define AB_AlphaConversionShift 0x00020000
-
-/* AntialiasMode */
-#define AntialiasModeDisable 0x00000000
-#define AntialiasModeEnable 0x00000001
-
-/* AreaStippleMode */
-#define AreaStippleModeDisable 0x00000000
-#define AreaStippleModeEnable 0x00000001
-#define ASM_X32 0x00000008
-#define ASM_Y32 0x00000040
-
-/* DepthMode */
-#define DepthModeDisable 0x00000000
-#define DepthModeEnable 0x00000001
-#define DM_WriteMask 0x00000002
-#define DM_SourceFragment 0x00000000
-#define DM_SourceLBData 0x00000004
-#define DM_SourceDepthRegister 0x00000008
-#define DM_SourceLBSourceData 0x0000000c
-#define DM_SourceMask 0x0000000c
-#define DM_Never 0x00000000
-#define DM_Less 0x00000010
-#define DM_Equal 0x00000020
-#define DM_LessEqual 0x00000030
-#define DM_Greater 0x00000040
-#define DM_NotEqual 0x00000050
-#define DM_GreaterEqual 0x00000060
-#define DM_Always 0x00000070
-#define DM_CompareMask 0x00000070
-
-/* FBWriteMode */
-#define FBWriteModeDisable 0x00000000
-#define FBWriteModeEnable 0x00000001
-#define FBW_UploadColorData 0x00000008
-
-/* FogMode */
-#define FogModeDisable 0x00000000
-#define FogModeEnable 0x00000001
-
-/* LBWriteMode */
-#define LBWriteModeDisable 0x00000000
-#define LBWriteModeEnable 0x00000001
-#define LBW_UploadNone 0x00000000
-#define LBW_UploadDepth 0x00000002
-#define LBW_UploadStencil 0x00000004
-
-/* LBRead/Write Format */
-#define LBRF_DepthWidth15 0x03 /* only permedia */
-#define LBRF_DepthWidth16 0x00
-#define LBRF_DepthWidth24 0x01
-#define LBRF_DepthWidth32 0x02
-#define LBRF_StencilWidth0 (0 << 2)
-#define LBRF_StencilWidth4 (1 << 2)
-#define LBRF_StencilWidth8 (2 << 2)
-#define LBRF_StencilPos16 (0 << 4)
-#define LBRF_StencilPos20 (1 << 4)
-#define LBRF_StencilPos24 (2 << 4)
-#define LBRF_StencilPos28 (3 << 4)
-#define LBRF_StencilPos32 (4 << 4)
-#define LBRF_FrameCount0 (0 << 7)
-#define LBRF_FrameCount4 (1 << 7)
-#define LBRF_FrameCount8 (2 << 7)
-#define LBRF_FrameCountPos16 (0 << 9)
-#define LBRF_FrameCountPos20 (1 << 9)
-#define LBRF_FrameCountPos24 (2 << 9)
-#define LBRF_FrameCountPos28 (3 << 9)
-#define LBRF_FrameCountPos32 (4 << 9)
-#define LBRF_FrameCountPos36 (5 << 9)
-#define LBRF_FrameCountPos40 (6 << 9)
-#define LBRF_GIDWidth0 (0 << 12)
-#define LBRF_GIDWidth4 (1 << 12)
-#define LBRF_GIDPos16 (0 << 13)
-#define LBRF_GIDPos20 (1 << 13)
-#define LBRF_GIDPos24 (2 << 13)
-#define LBRF_GIDPos28 (3 << 13)
-#define LBRF_GIDPos32 (4 << 13)
-#define LBRF_GIDPos36 (5 << 13)
-#define LBRF_GIDPos40 (6 << 13)
-#define LBRF_GIDPos44 (7 << 13)
-#define LBRF_GIDPos48 (8 << 13)
-#define LBRF_Compact32 (1 << 17)
-
-/* StencilMode */
-#define StencilDisable 0x00000000
-#define StencilEnable 0x00000001
-
-/* RouterMode */
-#define R_Order_TextureDepth 0x00000000
-#define R_Order_DepthTexture 0x00000001
-
-/* ScissorMode */
-#define UserScissorDisable 0x00000000
-#define UserScissorEnable 0x00000001
-#define ScreenScissorDisable 0x00000000
-#define ScreenScissorEnable 0x00000002
-
-/* DitherMode */
-#define DitherModeDisable 0x00000000
-#define DitherModeEnable 0x00000001
-#define DM_DitherDisable 0x00000000
-#define DM_DitherEnable 0x00000002
-#define DM_ColorFmt_8888 0x00000000
-#define DM_ColorFmt_5555 0x00000004
-#define DM_ColorFmt_4444 0x00000008
-#define DM_ColorFmt_4444Front 0x0000000c
-#define DM_ColorFmt_4444Back 0x00000010
-#define DM_ColorFmt_332Front 0x00000014
-#define DM_ColorFmt_332Back 0x00000018
-#define DM_ColorFmt_121Front 0x0000001c
-#define DM_ColorFmt_121Back 0x00000020
-#define DM_ColorFmt_555Back 0x00000024
-#define DM_ColorFmt_CI8 0x00000028
-#define DM_ColorFmt_CI4 0x0000002c
-#define DM_XOffsetMask 0x000000c0
-#define DM_YOffsetMask 0x00000300
-#define DM_ColorOrder_BGR 0x00000000
-#define DM_ColorOrder_RGB 0x00000400
-#define DM_AlphaDitherDefault 0x00000000
-#define DM_AlphaDitherNone 0x00004000
-#define DM_Truncate 0x00000000
-#define DM_Round 0x00008000
-
-/* RasterizerMode */
-#define RM_MirrorBitMask 0x00000001
-#define RM_InvertBitMask 0x00000002
-#define RM_FractionAdjNo 0x00000000
-#define RM_FractionAdjZero 0x00000004
-#define RM_FractionAdjHalf 0x00000008
-#define RM_FractionAdjNearHalf 0x0000000c
-#define RM_BiasCoordZero 0x00000000
-#define RM_BiasCoordHalf 0x00000010
-#define RM_BiasCoordNearHalf 0x00000020
-#define RM_BitMaskByteSwap_ABCD 0x00000000
-#define RM_BitMaskByteSwap_BADC 0x00000080
-#define RM_BitMaskByteSwap_CDAB 0x00000100
-#define RM_BitMaskByteSwap_DCBA 0x00000180
-#define RM_BitMaskPacked 0x00000000
-#define RM_BitMaskEveryScanline 0x00000200
-#define RM_BitMaskOffsetMask 0x00007c00
-#define RM_HostDataByteSwap_ABCD 0x00000000
-#define RM_HostDataByteSwap_BADC 0x00008000
-#define RM_HostDataByteSwap_CDAB 0x00010000
-#define RM_HostDataByteSwap_DCBA 0x00018000
-#define RM_SingleGLINT 0x00000000
-#define RM_MultiGLINT 0x00020000
-#define RM_YLimitsEnable 0x00040000
-
-/* Window */
-#define WindowDisable 0x00000000
-#define WindowEnable 0x00000001
-#define W_AlwaysPass 0x00000000
-#define W_NeverPass 0x00000002
-#define W_PassIfEqual 0x00000004
-#define W_PassIfNotEqual 0x00000006
-#define W_CompareMask 0x00000006
-#define W_ForceLBUpdate 0x00000008
-#define W_LBUpdateFromSource 0x00000000
-#define W_LBUpdateFromRegisters 0x00000010
-#define W_GIDMask 0x000001e0
-#define W_FrameCountMask 0x0001fe00
-#define W_StencilFCP 0x00020000
-#define W_DepthFCP 0x00040000
-#define W_OverrideWriteFiltering 0x00080000
-
-/* TextureAddressMode */
-#define TextureAddressModeDisable 0x00000000
-#define TextureAddressModeEnable 0x00000001
-#define TAM_SWrap_Clamp 0x00000000
-#define TAM_SWrap_Repeat 0x00000002
-#define TAM_SWrap_Mirror 0x00000004
-#define TAM_SWrap_Mask 0x00000006
-#define TAM_TWrap_Clamp 0x00000000
-#define TAM_TWrap_Repeat 0x00000008
-#define TAM_TWrap_Mirror 0x00000010
-#define TAM_TWrap_Mask 0x00000018
-#define TAM_Operation_2D 0x00000000
-#define TAM_Operation_3D 0x00000020
-#define TAM_InhibitDDAInit 0x00000040
-#define TAM_LODDisable 0x00000000
-#define TAM_LODEnable 0x00000080
-#define TAM_DY_Disable 0x00000000
-#define TAM_DY_Enable 0x00000100
-#define TAM_WidthMask 0x00001e00
-#define TAM_HeightMask 0x0001e000
-#define TAM_TexMapType_1D 0x00000000
-#define TAM_TexMapType_2D 0x00020000
-#define TAM_TexMapType_Mask 0x00020000
-
-/* TextureReadMode */
-#define TextureReadModeDisable 0x00000000
-#define TextureReadModeEnable 0x00000001
-#define TRM_WidthMask 0x0000001e
-#define TRM_HeightMask 0x000001e0
-#define TRM_Depth1 0x00000000
-#define TRM_Depth2 0x00000200
-#define TRM_Depth4 0x00000400
-#define TRM_Depth8 0x00000600
-#define TRM_Depth16 0x00000800
-#define TRM_Depth32 0x00000a00
-#define TRM_DepthMask 0x00000e00
-#define TRM_Border 0x00001000
-#define TRM_Patch 0x00002000
-#define TRM_Mag_Nearest 0x00000000
-#define TRM_Mag_Linear 0x00004000
-#define TRM_Mag_Mask 0x00004000
-#define TRM_Min_Nearest 0x00000000
-#define TRM_Min_Linear 0x00008000
-#define TRM_Min_NearestMMNearest 0x00010000
-#define TRM_Min_NearestMMLinear 0x00018000
-#define TRM_Min_LinearMMNearest 0x00020000
-#define TRM_Min_LinearMMLinear 0x00028000
-#define TRM_Min_Mask 0x00038000
-#define TRM_UWrap_Clamp 0x00000000
-#define TRM_UWrap_Repeat 0x00040000
-#define TRM_UWrap_Mirror 0x00080000
-#define TRM_UWrap_Mask 0x000c0000
-#define TRM_VWrap_Clamp 0x00000000
-#define TRM_VWrap_Repeat 0x00100000
-#define TRM_VWrap_Mirror 0x00200000
-#define TRM_VWrap_Mask 0x00300000
-#define TRM_TexMapType_1D 0x00000000
-#define TRM_TexMapType_2D 0x00400000
-#define TRM_TexMapType_Mask 0x00400000
-#define TRM_MipMapDisable 0x00000000
-#define TRM_MipMapEnable 0x00800000
-#define TRM_PrimaryCacheDisable 0x00000000
-#define TRM_PrimaryCacheEnable 0x01000000
-#define TRM_FBSourceAddr_None 0x00000000
-#define TRM_FBSourceAddr_Index 0x02000000
-#define TRM_FBSourceAddr_Coord 0x04000000
-#define TRM_BorderClamp 0x08000000
-
-/* TextureColorMode */
-#define TextureColorModeDisable 0x00000000
-#define TextureColorModeEnable 0x00000001
-#define TCM_Modulate 0x00000000
-#define TCM_Decal 0x00000002
-#define TCM_Blend 0x00000004
-#define TCM_Replace 0x00000006
-#define TCM_ApplicationMask 0x0000000e
-#define TCM_OpenGLType 0x00000000
-#define TCM_QuickDraw3DType 0x00000010
-#define TCM_KdDDA_Disable 0x00000000
-#define TCM_KdDDA_Enable 0x00000020
-#define TCM_KsDDA_Disable 0x00000000
-#define TCM_KsDDA_Enable 0x00000040
-#define TCM_BaseFormat_Alpha 0x00000000
-#define TCM_BaseFormat_Lum 0x00000080
-#define TCM_BaseFormat_LumAlpha 0x00000100
-#define TCM_BaseFormat_Intensity 0x00000180
-#define TCM_BaseFormat_RGB 0x00000200
-#define TCM_BaseFormat_RGBA 0x00000280
-#define TCM_BaseFormatMask 0x00000380
-#define TCM_LoadMode_None 0x00000000
-#define TCM_LoadMode_Ks 0x00000400
-#define TCM_LoadMode_Kd 0x00000800
-
-/* TextureCacheControl */
-#define TCC_Invalidate 0x00000001
-#define TCC_Disable 0x00000000
-#define TCC_Enable 0x00000002
-
-/* TextureFilterMode */
-#define TextureFilterModeDisable 0x00000000
-#define TextureFilterModeEnable 0x00000001
-#define TFM_AlphaMapEnable 0x00000002
-#define TFM_AlphaMapSense 0x00000004
-
-/* TextureFormat */
-#define TF_LittleEndian 0x00000000
-#define TF_BigEndian 0x00000001
-#define TF_16Bit_565 0x00000000
-#define TF_16Bit_555 0x00000002
-#define TF_ColorOrder_BGR 0x00000000
-#define TF_ColorOrder_RGB 0x00000004
-#define TF_Compnents_1 0x00000000
-#define TF_Compnents_2 0x00000008
-#define TF_Compnents_3 0x00000010
-#define TF_Compnents_4 0x00000018
-#define TF_CompnentsMask 0x00000018
-#define TF_OutputFmt_Texel 0x00000000
-#define TF_OutputFmt_Color 0x00000020
-#define TF_OutputFmt_BitMask 0x00000040
-#define TF_OutputFmtMask 0x00000060
-#define TF_MirrorEnable 0x00000080
-#define TF_InvertEnable 0x00000100
-#define TF_ByteSwapEnable 0x00000200
-#define TF_LUTOffsetMask 0x0003fc00
-#define TF_OneCompFmt_Lum 0x00000000
-#define TF_OneCompFmt_Alpha 0x00040000
-#define TF_OneCompFmt_Intensity 0x00080000
-#define TF_OneCompFmt_Mask 0x000c0000
-/**************** MX FLAGS ****************/
-
-/************** GAMMA FLAGS ***************/
-/* GeometryMode */
-#define GM_TextureDisable 0x00000000
-#define GM_TextureEnable 0x00000001
-#define GM_FogDisable 0x00000000
-#define GM_FogEnable 0x00000002
-#define GM_FogLinear 0x00000000
-#define GM_FogExp 0x00000004
-#define GM_FogExpSquared 0x00000008
-#define GM_FogMask 0x0000000C
-#define GM_FrontPolyPoint 0x00000000
-#define GM_FrontPolyLine 0x00000010
-#define GM_FrontPolyFill 0x00000020
-#define GM_BackPolyPoint 0x00000000
-#define GM_BackPolyLine 0x00000040
-#define GM_BackPolyFill 0x00000080
-#define GM_FB_PolyMask 0x000000F0
-#define GM_FrontFaceCW 0x00000000
-#define GM_FrontFaceCCW 0x00000100
-#define GM_FFMask 0x00000100
-#define GM_PolyCullDisable 0x00000000
-#define GM_PolyCullEnable 0x00000200
-#define GM_PolyCullFront 0x00000000
-#define GM_PolyCullBack 0x00000400
-#define GM_PolyCullBoth 0x00000800
-#define GM_PolyCullMask 0x00000c00
-#define GM_ClipShortLinesDisable 0x00000000
-#define GM_ClipShortLinesEnable 0x00001000
-#define GM_ClipSmallTrisDisable 0x00000000
-#define GM_ClipSmallTrisEnable 0x00002000
-#define GM_RenderMode 0x00000000
-#define GM_SelectMode 0x00004000
-#define GM_FeedbackMode 0x00008000
-#define GM_Feedback2D 0x00000000
-#define GM_Feedback3D 0x00010000
-#define GM_Feedback3DColor 0x00020000
-#define GM_Feedback3DColorTexture 0x00030000
-#define GM_Feedback4DColorTexture 0x00040000
-#define GM_CullFaceNormDisable 0x00000000
-#define GM_CullFaceNormEnable 0x00080000
-#define GM_AutoFaceNormDisable 0x00000000
-#define GM_AutoFaceNormEnable 0x00100000
-#define GM_GouraudShading 0x00000000
-#define GM_FlatShading 0x00200000
-#define GM_ShadingMask 0x00200000
-#define GM_UserClipNone 0x00000000
-#define GM_UserClip0 0x00400000
-#define GM_UserClip1 0x00800000
-#define GM_UserClip2 0x01000000
-#define GM_UserClip3 0x02000000
-#define GM_UserClip4 0x04000000
-#define GM_UserClip5 0x08000000
-#define GM_PolyOffsetPointDisable 0x00000000
-#define GM_PolyOffsetPointEnable 0x10000000
-#define GM_PolyOffsetLineDisable 0x00000000
-#define GM_PolyOffsetLineEnable 0x20000000
-#define GM_PolyOffsetFillDisable 0x00000000
-#define GM_PolyOffsetFillEnable 0x40000000
-#define GM_InvertFaceNormCullDisable 0x00000000
-#define GM_InvertFaceNormCullEnable 0x80000000
-
-/* Begin */
-#define B_AreaStippleDisable 0x00000000
-#define B_AreaStippleEnable 0x00000001
-#define B_LineStippleDisable 0x00000000
-#define B_LineStippleEnable 0x00000002
-#define B_AntiAliasDisable 0x00000000
-#define B_AntiAliasEnable 0x00000100
-#define B_TextureDisable 0x00000000
-#define B_TextureEnable 0x00002000
-#define B_FogDisable 0x00000000
-#define B_FogEnable 0x00004000
-#define B_SubPixelCorrectDisable 0x00000000
-#define B_SubPixelCorrectEnable 0x00010000
-#define B_PrimType_Null 0x00000000
-#define B_PrimType_Points 0x10000000
-#define B_PrimType_Lines 0x20000000
-#define B_PrimType_LineLoop 0x30000000
-#define B_PrimType_LineStrip 0x40000000
-#define B_PrimType_Triangles 0x50000000
-#define B_PrimType_TriangleStrip 0x60000000
-#define B_PrimType_TriangleFan 0x70000000
-#define B_PrimType_Quads 0x80000000
-#define B_PrimType_QuadStrip 0x90000000
-#define B_PrimType_Polygon 0xa0000000
-#define B_PrimType_Mask 0xf0000000
-
-/* EdgeFlag */
-#define EdgeFlagDisable 0x00000000
-#define EdgeFlagEnable 0x00000001
-
-/* NormalizeMode */
-#define NormalizeModeDisable 0x00000000
-#define NormalizeModeEnable 0x00000001
-#define FaceNormalDisable 0x00000000
-#define FaceNormalEnable 0x00000002
-#define InvertAutoFaceNormal 0x00000004
-
-/* LightingMode */
-#define LightingModeDisable 0x00000000
-#define LightingModeEnable 0x00000001
-#define LightingModeTwoSides 0x00000004
-#define LightingModeLocalViewer 0x00000008
-#define LightingModeSpecularEnable 0x00008000
-
-/* Light0Mode */
-#define Light0ModeDisable 0x00000000
-#define Light0ModeEnable 0x00000001
-#define Light0ModeSpotLight 0x00000002
-#define Light0ModeAttenuation 0x00000004
-#define Light0ModeLocal 0x00000008
-
-/* Light0Mode */
-#define Light1ModeDisable 0x00000000
-#define Light1ModeEnable 0x00000001
-#define Light1ModeSpotLight 0x00000002
-#define Light1ModeAttenuation 0x00000004
-#define Light1ModeLocal 0x00000008
-
-/* ColorMaterialMode */
-#define ColorMaterialModeDisable 0x00000000
-#define ColorMaterialModeEnable 0x00000001
-#define ColorMaterialModeFront 0x00000000
-#define ColorMaterialModeBack 0x00000002
-#define ColorMaterialModeFrontAndBack 0x00000004
-#define ColorMaterialModeEmission 0x00000000
-#define ColorMaterialModeAmbient 0x00000008
-#define ColorMaterialModeDiffuse 0x00000010
-#define ColorMaterialModeSpecular 0x00000018
-#define ColorMaterialModeAmbAndDiff 0x00000020
-#define ColorMaterialModeMask 0x0000003e
-
-/* MaterialMode */
-#define MaterialModeDisable 0x00000000
-#define MaterialModeEnable 0x00000001
-#define MaterialModeTwoSides 0x00000080
-
-/* DeltaMode */
-#define DM_Target300SX 0x00000000
-#define DM_Target500TXMX 0x00000001
-#define DM_Depth16 0x00000004
-#define DM_Depth24 0x00000008
-#define DM_Depth32 0x0000000c
-#define DM_FogEnable 0x00000010
-#define DM_TextureEnable 0x00000020
-#define DM_SmoothShadingEnable 0x00000040
-#define DM_DepthEnable 0x00000080
-#define DM_SpecularEnable 0x00000100
-#define DM_DiffuseEnable 0x00000200
-#define DM_SubPixlCorrectionEnable 0x00000400
-#define DM_DiamondExit 0x00000800
-#define DM_NoDraw 0x00001000
-#define DM_ClampEnable 0x00002000
-#define DM_TextureParameterAsGiven 0x00000000
-#define DM_TextureParameterClamped 0x00004000
-#define DM_TextureParameterNormalized 0x00008000
-#define DM_BiasCoords 0x00080000
-#define DM_ColorDiffuse 0x00100000
-#define DM_ColorSpecular 0x00200000
-#define DM_FlatShadingMethod 0x00400000
-
-/* PointMode */
-#define PM_AntialiasDisable 0x00000000
-#define PM_AntialiasEnable 0x00000001
-#define PM_AntialiasQuality_4x4 0x00000000
-#define PM_AntialiasQuality_8x8 0x00000002
-
-/* LogicalOpMode */
-#define LogicalOpModeDisable 0x00000000
-#define LogicalOpModeEnable 0x00000001
-#define LogicalOpModeMask 0x0000001e
-
-/* LineMode */
-#define LM_StippleDisable 0x00000000
-#define LM_StippleEnable 0x00000001
-#define LM_RepeatFactorMask 0x000003fe
-#define LM_StippleMask 0x03fffc00
-#define LM_MirrorDisable 0x00000000
-#define LM_MirrorEnable 0x04000000
-#define LM_AntialiasDisable 0x00000000
-#define LM_AntialiasEnable 0x08000000
-#define LM_AntialiasQuality_4x4 0x00000000
-#define LM_AntialiasQuality_8x8 0x10000000
-
-/* TriangleMode */
-#define TM_AntialiasDisable 0x00000000
-#define TM_AntialiasEnable 0x00000001
-#define TM_AntialiasQuality_4x4 0x00000000
-#define TM_AntialiasQuality_8x8 0x00000002
-#define TM_UseTriPacketInterface 0x00000004
-
-/* TransformMode */
-#define XM_UseModelViewMatrix 0x00000001
-#define XM_UseModelViewProjMatrix 0x00000002
-#define XM_XformNormals 0x00000004
-#define XM_XformFaceNormals 0x00000008
-#define XM_XformTexture 0x00000010
-#define XM_XMask 0x00000013
-#define XM_TexGenModeS_None 0x00000000
-#define XM_TexGenModeS_ObjLinear 0x00000020
-#define XM_TexGenModeS_EyeLinear 0x00000040
-#define XM_TexGenModeS_SphereMap 0x00000060
-#define XM_TexGenModeT_None 0x00000000
-#define XM_TexGenModeT_ObjLinear 0x00000080
-#define XM_TexGenModeT_EyeLinear 0x00000100
-#define XM_TexGenModeT_SphereMap 0x00000180
-#define XM_TexGenModeR_None 0x00000000
-#define XM_TexGenModeR_ObjLinear 0x00000200
-#define XM_TexGenModeR_EyeLinear 0x00000400
-#define XM_TexGenModeR_SphereMap 0x00000600
-#define XM_TexGenModeQ_None 0x00000000
-#define XM_TexGenModeQ_ObjLinear 0x00000800
-#define XM_TexGenModeQ_EyeLinear 0x00001000
-#define XM_TexGenModeQQSphereMap 0x00001800
-#define XM_TexGenS 0x00002000
-#define XM_TexGenT 0x00004000
-#define XM_TexGenR 0x00008000
-#define XM_TexGenQ 0x00010000
-
-/* LightNMode */
-#define LNM_Off 0x00000000
-#define LNM_On 0x00000001
-/************** GAMMA FLAGS ***************/
-
-#endif /* _GAMMA_REGS_H_ */
diff --git a/src/mesa/drivers/dri/gamma/gamma_render.c b/src/mesa/drivers/dri/gamma/gamma_render.c
deleted file mode 100644
index 3c2fa507a97..00000000000
--- a/src/mesa/drivers/dri/gamma/gamma_render.c
+++ /dev/null
@@ -1,221 +0,0 @@
-/*
- * Copyright 2001 by Alan Hourihane.
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Alan Hourihane not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Alan Hourihane makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * ALAN HOURIHANE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL ALAN HOURIHANE BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- * Authors: Alan Hourihane, <[email protected]>
- *
- * 3DLabs Gamma driver.
- *
- */
-
-#include "main/glheader.h"
-#include "main/context.h"
-#include "main/macros.h"
-#include "main/imports.h"
-#include "main/mtypes.h"
-
-#include "tnl/t_context.h"
-
-#include "gamma_context.h"
-#include "gamma_macros.h"
-#include "gamma_tris.h"
-#include "gamma_vb.h"
-
-
-/* !! Should template this eventually !! */
-
-static void gamma_emit( GLcontext *ctx, GLuint start, GLuint end)
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
- struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
- GLfloat (*coord)[4];
- GLuint coord_stride;
- GLfloat (*col)[4];
- GLuint col_stride;
- int i;
- GLuint tc0_stride = 0;
- GLfloat (*tc0)[4] = 0;
- GLuint tc0_size = 0;
-
- col = VB->AttribPtr[_TNL_ATTRIB_COLOR0]->data;
- col_stride = VB->AttribPtr[_TNL_ATTRIB_COLOR0]->stride;
-
- if (ctx->Texture.Unit[0]._ReallyEnabled) {
- tc0_stride = VB->AttribPtr[_TNL_ATTRIB_TEX0]->stride;
- tc0 = VB->AttribPtr[_TNL_ATTRIB_TEX0]->data;
- tc0_size = VB->AttribPtr[_TNL_ATTRIB_TEX0]->size;
- coord = VB->ClipPtr->data;
- coord_stride = VB->ClipPtr->stride;
- } else {
- coord = VB->NdcPtr->data;
- coord_stride = VB->NdcPtr->stride;
- }
-
- if (ctx->Texture.Unit[0]._ReallyEnabled && tc0_size == 4) {
- for (i=start; i < end; i++) {
- CHECK_DMA_BUFFER(gmesa, 9);
- WRITEF(gmesa->buf, Tq4, tc0[i][3]);
- WRITEF(gmesa->buf, Tr4, tc0[i][2]);
- WRITEF(gmesa->buf, Tt4, tc0[i][0]);
- WRITEF(gmesa->buf, Ts4, tc0[i][1]);
- WRITE(gmesa->buf, PackedColor4, *(uint32_t*)col[i]);
- WRITEF(gmesa->buf, Vw, coord[i][3]);
- WRITEF(gmesa->buf, Vz, coord[i][2]);
- WRITEF(gmesa->buf, Vy, coord[i][1]);
- WRITEF(gmesa->buf, Vx4, coord[i][0]);
- }
- } else if (ctx->Texture.Unit[0]._ReallyEnabled && tc0_size == 2) {
- for (i=start; i < end; i++) {
- CHECK_DMA_BUFFER(gmesa, 7);
- WRITEF(gmesa->buf, Tt2, tc0[i][0]);
- WRITEF(gmesa->buf, Ts2, tc0[i][1]);
- WRITE(gmesa->buf, PackedColor4, *(uint32_t*)col[i]);
- WRITEF(gmesa->buf, Vw, coord[i][3]);
- WRITEF(gmesa->buf, Vz, coord[i][2]);
- WRITEF(gmesa->buf, Vy, coord[i][1]);
- WRITEF(gmesa->buf, Vx4, coord[i][0]);
- }
- } else {
- for (i=start; i < end; i++) {
- CHECK_DMA_BUFFER(gmesa, 4);
- WRITE(gmesa->buf, PackedColor4, *(uint32_t*)col[i]);
- WRITEF(gmesa->buf, Vz, coord[i][2]);
- WRITEF(gmesa->buf, Vy, coord[i][1]);
- WRITEF(gmesa->buf, Vx3, coord[i][0]);
- }
- }
-}
-
-#define HAVE_POINTS 1
-#define HAVE_LINES 1
-#define HAVE_LINE_STRIPS 1
-#define HAVE_TRIANGLES 1
-#define HAVE_TRI_STRIPS 1
-#define HAVE_TRI_STRIP_1 0
-#define HAVE_TRI_FANS 1
-#define HAVE_QUADS 1
-#define HAVE_QUAD_STRIPS 1
-#define HAVE_POLYGONS 1
-
-#define HAVE_ELTS 0
-
-
-static const GLuint hw_prim[GL_POLYGON+1] = {
- B_PrimType_Points,
- B_PrimType_Lines,
- B_PrimType_LineLoop,
- B_PrimType_LineStrip,
- B_PrimType_Triangles,
- B_PrimType_TriangleStrip,
- B_PrimType_TriangleFan,
- B_PrimType_Quads,
- B_PrimType_QuadStrip,
- B_PrimType_Polygon
-};
-
-static INLINE void gammaStartPrimitive( gammaContextPtr gmesa, GLenum prim )
-{
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, Begin, gmesa->Begin | hw_prim[prim]);
-}
-
-static INLINE void gammaEndPrimitive( gammaContextPtr gmesa )
-{
- GLcontext *ctx = gmesa->glCtx;
-
- if ( ctx->Line.SmoothFlag ||
- ctx->Polygon.SmoothFlag ||
- ctx->Point.SmoothFlag ) {
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, FlushSpan, 0);
- }
-
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, End, 0);
-}
-
-#define LOCAL_VARS gammaContextPtr gmesa = GAMMA_CONTEXT(ctx)
-#define INIT( prim ) gammaStartPrimitive( gmesa, prim )
-#define FLUSH() gammaEndPrimitive( gmesa )
-#define GET_CURRENT_VB_MAX_VERTS() \
- (gmesa->bufSize - gmesa->bufCount) / 2
-#define GET_SUBSEQUENT_VB_MAX_VERTS() \
- GAMMA_DMA_BUFFER_SIZE / 2
-
-#define ALLOC_VERTS( nr ) (void *)0 /* todo: explicit alloc */
-#define EMIT_VERTS( ctx, j, nr, buf ) (gamma_emit(ctx, j, (j)+(nr)), (void *)0)
-
-#define TAG(x) gamma_##x
-#include "tnl_dd/t_dd_dmatmp.h"
-
-
-/**********************************************************************/
-/* Render pipeline stage */
-/**********************************************************************/
-
-
-static GLboolean gamma_run_render( GLcontext *ctx,
- struct tnl_pipeline_stage *stage )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
- TNLcontext *tnl = TNL_CONTEXT(ctx);
- struct vertex_buffer *VB = &tnl->vb;
- GLuint i;
- tnl_render_func *tab;
-
- /* GH: THIS IS A HACK!!! */
- if (VB->ClipOrMask || gmesa->RenderIndex != 0)
- return GL_TRUE; /* don't handle clipping here */
-
- /* We don't do elts */
- if (VB->Elts || !gamma_validate_render( ctx, VB ))
- return GL_TRUE;
-
- tab = TAG(render_tab_verts);
-
- tnl->Driver.Render.Start( ctx );
-
- for (i = 0 ; i < VB->PrimitiveCount ; i++)
- {
- GLuint prim = _tnl_translate_prim(&VB->Primitive[i]);
- GLuint start = VB->Primitive[i].start;
- GLuint length = VB->Primitive[i].count;
-
- if (!length)
- continue;
-
- tab[prim & PRIM_MODE_MASK]( ctx, start, start + length, prim);
- }
-
- tnl->Driver.Render.Finish( ctx );
-
- return GL_FALSE; /* finished the pipe */
-}
-
-
-const struct tnl_pipeline_stage _gamma_render_stage =
-{
- "gamma render",
- NULL,
- NULL,
- NULL,
- NULL,
- gamma_run_render /* run */
-};
diff --git a/src/mesa/drivers/dri/gamma/gamma_screen.c b/src/mesa/drivers/dri/gamma/gamma_screen.c
deleted file mode 100644
index 47862f1d77e..00000000000
--- a/src/mesa/drivers/dri/gamma/gamma_screen.c
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * Copyright 2001 by Alan Hourihane.
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Alan Hourihane not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Alan Hourihane makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * ALAN HOURIHANE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL ALAN HOURIHANE BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- * Authors: Alan Hourihane, <[email protected]>
- *
- */
-
-#include "gamma_context.h"
-#include "gamma_vb.h"
-#include "glint_dri.h"
-
-#include "main/imports.h"
-
-gammaScreenPtr gammaCreateScreen( __DRIscreen *sPriv )
-{
- gammaScreenPtr gammaScreen;
- GLINTDRIPtr gDRIPriv = (GLINTDRIPtr)sPriv->pDevPriv;
- int i;
-
- if (sPriv->devPrivSize != sizeof(GLINTDRIRec)) {
- fprintf(stderr,"\nERROR! sizeof(GLINTDRIRec) does not match passed size from device driver\n");
- return GL_FALSE;
- }
-
-#if 0
- /* Check the DRI externsion version */
- if ( sPriv->driMajor != 3 || sPriv->driMinor != 1 ) {
- __driUtilMessage( "Gamma DRI driver expected DRI version 4.0.x "
- "but got version %d.%d.%d",
- sPriv->driMajor, sPriv->driMinor, sPriv->driPatch );
- return NULL;
- }
-
- /* Check that the DDX driver version is compatible */
- if ( sPriv->ddxMajor != 4 ||
- sPriv->ddxMinor != 0 ||
- sPriv->ddxPatch < 0 ) {
- __driUtilMessage( "r128 DRI driver expected DDX driver version 4.0.x but got version %d.%d.%d", sPriv->ddxMajor, sPriv->ddxMinor, sPriv->ddxPatch );
- return GL_FALSE;
- }
-
- /* Check that the DRM driver version is compatible */
- if ( sPriv->drmMajor != 2 ||
- sPriv->drmMinor != 1 ||
- sPriv->drmPatch < 0 ) {
- __driUtilMessage( "r128 DRI driver expected DRM driver version 2.1.x but got version %d.%d.%d", sPriv->drmMajor, sPriv->drmMinor, sPriv->drmPatch );
- return GL_FALSE;
- }
-#endif
-
- /* Allocate the private area */
- gammaScreen = (gammaScreenPtr) CALLOC( sizeof(*gammaScreen) );
- if ( !gammaScreen ) return NULL;
-
- gammaScreen->regionCount = 4; /* Magic number. Can we fix this? */
-
- gammaScreen->regions = CALLOC(gammaScreen->regionCount *
- sizeof(gammaRegion));
-
- gammaScreen->regions[0].handle = gDRIPriv->registers0.handle;
- gammaScreen->regions[0].size = gDRIPriv->registers0.size;
- gammaScreen->regions[1].handle = gDRIPriv->registers1.handle;
- gammaScreen->regions[1].size = gDRIPriv->registers1.size;
- gammaScreen->regions[2].handle = gDRIPriv->registers2.handle;
- gammaScreen->regions[2].size = gDRIPriv->registers2.size;
- gammaScreen->regions[3].handle = gDRIPriv->registers3.handle;
- gammaScreen->regions[3].size = gDRIPriv->registers3.size;
-
- /* Next, map all the regions */
- for (i = 0; i < gammaScreen->regionCount; i++) {
- if (drmMap(sPriv->fd,
- gammaScreen->regions[i].handle,
- gammaScreen->regions[i].size,
- &gammaScreen->regions[i].map)) {
- while (--i > 0) {
- (void)drmUnmap(gammaScreen->regions[i].map,
- gammaScreen->regions[i].size);
- }
- return GL_FALSE;
- }
- }
-
- /* Get the list of dma buffers */
- gammaScreen->bufs = drmMapBufs(sPriv->fd);
-
- if (!gammaScreen->bufs) {
- while (gammaScreen->regionCount > 0) {
- (void)drmUnmap(gammaScreen->regions[gammaScreen->regionCount].map,
- gammaScreen->regions[gammaScreen->regionCount].size);
- gammaScreen->regionCount--;
- }
- return GL_FALSE;
- }
-
- gammaScreen->textureSize = gDRIPriv->textureSize;
- gammaScreen->logTextureGranularity = gDRIPriv->logTextureGranularity;
- gammaScreen->cpp = gDRIPriv->cpp;
- gammaScreen->frontOffset = gDRIPriv->frontOffset;
- gammaScreen->frontPitch = gDRIPriv->frontPitch;
- gammaScreen->backOffset = gDRIPriv->backOffset;
- gammaScreen->backPitch = gDRIPriv->backPitch;
- gammaScreen->backX = gDRIPriv->backX;
- gammaScreen->backY = gDRIPriv->backY;
- gammaScreen->depthOffset = gDRIPriv->depthOffset;
- gammaScreen->depthPitch = gDRIPriv->depthPitch;
-
- gammaScreen->driScreen = sPriv;
-
- return gammaScreen;
-}
-
-/* Destroy the device specific screen private data struct.
- */
-void gammaDestroyScreen( __DRIscreen *sPriv )
-{
- gammaScreenPtr gammaScreen = (gammaScreenPtr)sPriv->private;
-
- /* First, unmap the dma buffers */
- drmUnmapBufs( gammaScreen->bufs );
-
- /* Next, unmap all the regions */
- while (gammaScreen->regionCount > 0) {
- (void)drmUnmap(gammaScreen->regions[gammaScreen->regionCount].map,
- gammaScreen->regions[gammaScreen->regionCount].size);
- gammaScreen->regionCount--;
- }
- FREE(gammaScreen->regions);
- FREE(gammaScreen);
-}
diff --git a/src/mesa/drivers/dri/gamma/gamma_screen.h b/src/mesa/drivers/dri/gamma/gamma_screen.h
deleted file mode 100644
index c716ea89c29..00000000000
--- a/src/mesa/drivers/dri/gamma/gamma_screen.h
+++ /dev/null
@@ -1,30 +0,0 @@
-typedef struct _gammaRegion {
- drm_handle_t handle;
- drmSize size;
- drmAddress map;
-} gammaRegion, *gammaRegionPtr;
-
-typedef struct {
-
- int regionCount; /* Count of register regions */
- gammaRegion *regions; /* Vector of mapped region info */
-
- drmBufMapPtr bufs; /* Map of DMA buffers */
-
- __DRIscreen *driScreen; /* Back pointer to DRI screen */
-
- int cpp;
- int frontPitch;
- int frontOffset;
-
- int backPitch;
- int backOffset;
- int backX;
- int backY;
-
- int depthOffset;
- int depthPitch;
-
- int textureSize;
- int logTextureGranularity;
-} gammaScreenRec, *gammaScreenPtr;
diff --git a/src/mesa/drivers/dri/gamma/gamma_span.c b/src/mesa/drivers/dri/gamma/gamma_span.c
deleted file mode 100644
index 00160f760b2..00000000000
--- a/src/mesa/drivers/dri/gamma/gamma_span.c
+++ /dev/null
@@ -1,315 +0,0 @@
-
-#include "gamma_context.h"
-#include "gamma_lock.h"
-#include "gamma_macros.h"
-#include "main/colormac.h"
-
-#include "swrast/swrast.h"
-
-#define DBG 0
-
-#define LOCAL_VARS \
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx); \
- gammaScreenPtr gammascrn = gmesa->gammaScreen; \
- __DRIscreen *sPriv = gmesa->driScreen; \
- __DRIdrawable *dPriv = gmesa->driDrawable; \
- GLuint pitch = sPriv->fbWidth * gammascrn->cpp; \
- GLuint height = dPriv->h; \
- char *buf = (char *)(sPriv->pFB + \
- gmesa->drawOffset + \
- (dPriv->x * gammascrn->cpp) + \
- (dPriv->y * pitch)); \
- GLuint p; \
- (void) buf; (void) p
-
-/* FIXME! Depth/Stencil read/writes don't work ! */
-#define LOCAL_DEPTH_VARS \
- gammaScreenPtr gammascrn = gmesa->gammaScreen; \
- __DRIdrawable *dPriv = gmesa->driDrawable; \
- __DRIscreen *sPriv = gmesa->driScreen; \
- GLuint pitch = gammascrn->depthPitch; \
- GLuint height = dPriv->h; \
- char *buf = (char *)(sPriv->pFB + \
- gammascrn->depthOffset + \
- dPriv->x * gammascrn->cpp + \
- dPriv->y * pitch)
-
-#define LOCAL_STENCIL_VARS LOCAL_DEPTH_VARS
-
-#define Y_FLIP( _y ) (height - _y - 1)
-
-#define HW_LOCK() \
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx); \
- FLUSH_DMA_BUFFER(gmesa); \
- gammaGetLock( gmesa, DRM_LOCK_FLUSH | DRM_LOCK_QUIESCENT ); \
- GAMMAHW_LOCK( gmesa );
-
-#define HW_UNLOCK() GAMMAHW_UNLOCK( gmesa )
-
-
-
-/* ================================================================
- * Color buffer
- */
-
-/* 16 bit, RGB565 color spanline and pixel functions
- */
-#define INIT_MONO_PIXEL(p, color) \
- p = PACK_COLOR_565( color[0], color[1], color[2] )
-
-#define WRITE_RGBA( _x, _y, r, g, b, a ) \
- *(GLushort *)(buf + _x*2 + _y*pitch) = ((((int)r & 0xf8) << 8) | \
- (((int)g & 0xfc) << 3) | \
- (((int)b & 0xf8) >> 3))
-
-#define WRITE_PIXEL( _x, _y, p ) \
- *(GLushort *)(buf + _x*2 + _y*pitch) = p
-
-#define READ_RGBA( rgba, _x, _y ) \
- do { \
- GLushort p = *(GLushort *)(buf + _x*2 + _y*pitch); \
- rgba[0] = (p >> 8) & 0xf8; \
- rgba[1] = (p >> 3) & 0xfc; \
- rgba[2] = (p << 3) & 0xf8; \
- rgba[3] = 0xff; \
- if ( rgba[0] & 0x08 ) rgba[0] |= 0x07; \
- if ( rgba[1] & 0x04 ) rgba[1] |= 0x03; \
- if ( rgba[2] & 0x08 ) rgba[2] |= 0x07; \
- } while (0)
-
-#define TAG(x) gamma##x##_RGB565
-#include "spantmp.h"
-
-
-/* 32 bit, ARGB8888 color spanline and pixel functions
- */
-
-#undef INIT_MONO_PIXEL
-#define INIT_MONO_PIXEL(p, color) \
- p = PACK_COLOR_8888( color[3], color[0], color[1], color[2] )
-
-#define WRITE_RGBA( _x, _y, r, g, b, a ) \
- *(GLuint *)(buf + _x*4 + _y*pitch) = ((b << 0) | \
- (g << 8) | \
- (r << 16) | \
- (a << 24) )
-
-#define WRITE_PIXEL( _x, _y, p ) \
- *(GLuint *)(buf + _x*4 + _y*pitch) = p
-
-#define READ_RGBA( rgba, _x, _y ) \
-do { \
- GLuint p = *(GLuint *)(buf + _x*4 + _y*pitch); \
- rgba[0] = (p >> 16) & 0xff; \
- rgba[1] = (p >> 8) & 0xff; \
- rgba[2] = (p >> 0) & 0xff; \
- rgba[3] = (p >> 24) & 0xff; \
-} while (0)
-
-#define TAG(x) gamma##x##_ARGB8888
-#include "spantmp.h"
-
-
-/* 16 bit depthbuffer functions.
- */
-#define VALUE_TYPE GLushort
-
-#define WRITE_DEPTH( _x, _y, d ) \
- *(GLushort *)(buf + (_x)*2 + (_y)*pitch) = d;
-
-#define READ_DEPTH( d, _x, _y ) \
- d = *(GLushort *)(buf + (_x)*2 + (_y)*pitch);
-
-#define TAG(x) gamma##x##_16
-#include "depthtmp.h"
-
-
-#if 0 /* Unused */
-/* 32 bit depthbuffer functions.
- */
-#define VALUE_TYPE GLuint
-
-#define WRITE_DEPTH( _x, _y, d ) \
- *(GLuint *)(buf + (_x)*4 + (_y)*pitch) = d;
-
-#define READ_DEPTH( d, _x, _y ) \
- d = *(GLuint *)(buf + (_x)*4 + (_y)*pitch);
-
-#define TAG(x) gamma##x##_32
-#include "depthtmp.h"
-#endif
-
-
-/* 24/8 bit interleaved depth/stencil functions
- */
-#define VALUE_TYPE GLuint
-
-#define WRITE_DEPTH( _x, _y, d ) { \
- GLuint tmp = *(GLuint *)(buf + (_x)*4 + (_y)*pitch); \
- tmp &= 0xff; \
- tmp |= (d) & 0xffffff00; \
- *(GLuint *)(buf + (_x)*4 + (_y)*pitch) = tmp; \
-}
-
-#define READ_DEPTH( d, _x, _y ) \
- d = *(GLuint *)(buf + (_x)*4 + (_y)*pitch) & ~0xff;
-
-
-#define TAG(x) gamma##x##_24_8
-#include "depthtmp.h"
-
-#if 0
-#define WRITE_STENCIL( _x, _y, d ) { \
- GLuint tmp = *(GLuint *)(buf + _x*4 + _y*pitch); \
- tmp &= 0xffffff00; \
- tmp |= d & 0xff; \
- *(GLuint *)(buf + _x*4 + _y*pitch) = tmp; \
-}
-
-#define READ_STENCIL( d, _x, _y ) \
- d = *(GLuint *)(buf + _x*4 + _y*pitch) & 0xff;
-
-#define TAG(x) gamma##x##_24_8
-#include "stenciltmp.h"
-
-static void gammaReadRGBASpan8888( const GLcontext *ctx,
- GLuint n, GLint x, GLint y,
- GLubyte rgba[][4])
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
- gammaScreenPtr gammascrn = gmesa->gammaScreen;
- uint32_t dwords1, dwords2, i = 0;
- char *src = (char *)rgba[0];
- GLuint read = n * gammascrn->cpp; /* Number of bytes we are expecting */
- uint32_t data;
-
- FLUSH_DMA_BUFFER(gmesa);
- CHECK_DMA_BUFFER(gmesa, 16);
- WRITE(gmesa->buf, LBReadMode, gmesa->LBReadMode & ~(LBReadSrcEnable | LBReadDstEnable));
- WRITE(gmesa->buf, ColorDDAMode, ColorDDAEnable);
- WRITE(gmesa->buf, LBWriteMode, LBWriteModeDisable);
- WRITE(gmesa->buf, FBReadMode, (gmesa->FBReadMode & ~FBReadSrcEnable) | FBReadDstEnable | FBDataTypeColor);
- WRITE(gmesa->buf, FilterMode, 0x200); /* Pass FBColorData */
- WRITE(gmesa->buf, FBWriteMode, FBW_UploadColorData | FBWriteModeDisable);
- WRITE(gmesa->buf, StartXSub, (x+n)<<16);
- WRITE(gmesa->buf, StartXDom, x<<16);
- WRITE(gmesa->buf, StartY, y<<16);
- WRITE(gmesa->buf, GLINTCount, 1);
- WRITE(gmesa->buf, dXDom, 0<<16);
- WRITE(gmesa->buf, dXSub, 0<<16);
- WRITE(gmesa->buf, dY, 1<<16);
- WRITE(gmesa->buf, Render, PrimitiveTrapezoid);
- FLUSH_DMA_BUFFER(gmesa);
-
-moredata:
-
- dwords1 = *(volatile uint32_t*)(void *)(((uint8_t*)gammascrn->regions[0].map) + (GlintOutFIFOWords));
- dwords2 = *(volatile uint32_t*)(void *)(((uint8_t*)gammascrn->regions[2].map) + (GlintOutFIFOWords));
-
- if (dwords1) {
- memcpy(src, (char*)gammascrn->regions[1].map + 0x1000, dwords1 << 2);
- src += dwords1 << 2;
- read -= dwords1 << 2;
- }
- if (dwords2) {
- memcpy(src, (char*)gammascrn->regions[3].map + 0x1000, dwords2 << 2);
- src += dwords2 << 2;
- read -= dwords2 << 2;
- }
-
- if (read)
- goto moredata;
-
-done:
-
- CHECK_DMA_BUFFER(gmesa, 6);
- WRITE(gmesa->buf, ColorDDAMode, gmesa->ColorDDAMode);
- WRITE(gmesa->buf, LBWriteMode, LBWriteModeEnable);
- WRITE(gmesa->buf, LBReadMode, gmesa->LBReadMode);
- WRITE(gmesa->buf, FBReadMode, gmesa->FBReadMode);
- WRITE(gmesa->buf, FBWriteMode, FBWriteModeEnable);
- WRITE(gmesa->buf, FilterMode, 0x400);
-}
-#endif
-
-static void gammaSetBuffer( GLcontext *ctx,
- GLframebuffer *colorBuffer,
- GLuint bufferBit )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
-
- switch ( bufferBit ) {
- case BUFFER_BIT_FRONT_LEFT:
- gmesa->readOffset = 0;
- break;
- case BUFFER_BIT_BACK_LEFT:
- gmesa->readOffset = gmesa->driScreen->fbHeight * gmesa->driScreen->fbWidth * gmesa->gammaScreen->cpp;
- break;
- default:
- _mesa_problem(ctx, "Unexpected buffer 0x%x in gammaSetBuffer()", bufferBit);
- }
-}
-
-
-void gammaDDInitSpanFuncs( GLcontext *ctx )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
- struct swrast_device_driver *swdd = _swrast_GetDeviceDriverReference(ctx);
-
- swdd->SetBuffer = gammaSetBuffer;
-
- switch ( gmesa->gammaScreen->cpp ) {
- case 2:
- swdd->WriteRGBASpan = gammaWriteRGBASpan_RGB565;
- swdd->WriteRGBSpan = gammaWriteRGBSpan_RGB565;
- swdd->WriteMonoRGBASpan = gammaWriteMonoRGBASpan_RGB565;
- swdd->WriteRGBAPixels = gammaWriteRGBAPixels_RGB565;
- swdd->WriteMonoRGBAPixels = gammaWriteMonoRGBAPixels_RGB565;
- swdd->ReadRGBASpan = gammaReadRGBASpan_RGB565;
- swdd->ReadRGBAPixels = gammaReadRGBAPixels_RGB565;
- break;
-
- case 4:
- swdd->WriteRGBASpan = gammaWriteRGBASpan_ARGB8888;
- swdd->WriteRGBSpan = gammaWriteRGBSpan_ARGB8888;
- swdd->WriteMonoRGBASpan = gammaWriteMonoRGBASpan_ARGB8888;
- swdd->WriteRGBAPixels = gammaWriteRGBAPixels_ARGB8888;
- swdd->WriteMonoRGBAPixels = gammaWriteMonoRGBAPixels_ARGB8888;
-#if 1
- swdd->ReadRGBASpan = gammaReadRGBASpan_ARGB8888;
-#else
- swdd->ReadRGBASpan = gammaReadRGBASpan8888;
-#endif
- swdd->ReadRGBAPixels = gammaReadRGBAPixels_ARGB8888;
- break;
-
- default:
- break;
- }
-
- switch ( gmesa->glCtx->Visual.depthBits ) {
- case 16:
- swdd->ReadDepthSpan = gammaReadDepthSpan_16;
- swdd->WriteDepthSpan = gammaWriteDepthSpan_16;
- swdd->ReadDepthPixels = gammaReadDepthPixels_16;
- swdd->WriteDepthPixels = gammaWriteDepthPixels_16;
- break;
-
- case 24:
- swdd->ReadDepthSpan = gammaReadDepthSpan_24_8;
- swdd->WriteDepthSpan = gammaWriteDepthSpan_24_8;
- swdd->ReadDepthPixels = gammaReadDepthPixels_24_8;
- swdd->WriteDepthPixels = gammaWriteDepthPixels_24_8;
-
-#if 0
- swdd->ReadStencilSpan = gammaReadStencilSpan_24_8;
- swdd->WriteStencilSpan = gammaWriteStencilSpan_24_8;
- swdd->ReadStencilPixels = gammaReadStencilPixels_24_8;
- swdd->WriteStencilPixels = gammaWriteStencilPixels_24_8;
-#endif
- break;
-
- default:
- break;
- }
-}
diff --git a/src/mesa/drivers/dri/gamma/gamma_state.c b/src/mesa/drivers/dri/gamma/gamma_state.c
deleted file mode 100644
index c628457fbac..00000000000
--- a/src/mesa/drivers/dri/gamma/gamma_state.c
+++ /dev/null
@@ -1,1721 +0,0 @@
-/*
- * Copyright 2001 by Alan Hourihane.
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Alan Hourihane not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Alan Hourihane makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * ALAN HOURIHANE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL ALAN HOURIHANE BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- * Authors: Alan Hourihane, <[email protected]>
- *
- * 3DLabs Gamma driver
- */
-
-#include "gamma_context.h"
-#include "gamma_macros.h"
-#include "main/macros.h"
-#include "glint_dri.h"
-#include "main/colormac.h"
-#include "swrast/swrast.h"
-#include "swrast_setup/swrast_setup.h"
-#include "vbo/vbo.h"
-#include "tnl/tnl.h"
-
-#define ENABLELIGHTING 0
-
-/* =============================================================
- * Alpha blending
- */
-
-static void gammaUpdateAlphaMode( GLcontext *ctx )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
- uint32_t a = gmesa->AlphaTestMode;
- uint32_t b = gmesa->AlphaBlendMode;
- uint32_t f = gmesa->AB_FBReadMode_Save = 0;
- GLubyte refByte = (GLint) (ctx->Color.AlphaRef * 255.0);
-
- a &= ~(AT_CompareMask | AT_RefValueMask);
- b &= ~(AB_SrcBlendMask | AB_DstBlendMask);
-
- a |= refByte << 4;
-
- switch ( ctx->Color.AlphaFunc ) {
- case GL_NEVER:
- a |= AT_Never;
- break;
- case GL_LESS:
- a |= AT_Less;
- break;
- case GL_EQUAL:
- a |= AT_Equal;
- break;
- case GL_LEQUAL:
- a |= AT_LessEqual;
- break;
- case GL_GEQUAL:
- a |= AT_GreaterEqual;
- break;
- case GL_GREATER:
- a |= AT_Greater;
- break;
- case GL_NOTEQUAL:
- a |= AT_NotEqual;
- break;
- case GL_ALWAYS:
- a |= AT_Always;
- break;
- }
-
- if ( ctx->Color.AlphaEnabled ) {
- f |= FBReadDstEnable;
- a |= AlphaTestModeEnable;
- } else {
- a &= ~AlphaTestModeEnable;
- }
-
- switch ( ctx->Color.BlendSrcRGB ) {
- case GL_ZERO:
- b |= AB_Src_Zero;
- break;
- case GL_ONE:
- b |= AB_Src_One;
- break;
- case GL_DST_COLOR:
- b |= AB_Src_DstColor;
- break;
- case GL_ONE_MINUS_DST_COLOR:
- b |= AB_Src_OneMinusDstColor;
- break;
- case GL_SRC_ALPHA:
- b |= AB_Src_SrcAlpha;
- break;
- case GL_ONE_MINUS_SRC_ALPHA:
- b |= AB_Src_OneMinusSrcAlpha;
- break;
- case GL_DST_ALPHA:
- b |= AB_Src_DstAlpha;
- f |= FBReadSrcEnable;
- break;
- case GL_ONE_MINUS_DST_ALPHA:
- b |= AB_Src_OneMinusDstAlpha;
- f |= FBReadSrcEnable;
- break;
- case GL_SRC_ALPHA_SATURATE:
- b |= AB_Src_SrcAlphaSaturate;
- break;
- }
-
- switch ( ctx->Color.BlendDstRGB ) {
- case GL_ZERO:
- b |= AB_Dst_Zero;
- break;
- case GL_ONE:
- b |= AB_Dst_One;
- break;
- case GL_SRC_COLOR:
- b |= AB_Dst_SrcColor;
- break;
- case GL_ONE_MINUS_SRC_COLOR:
- b |= AB_Dst_OneMinusSrcColor;
- break;
- case GL_SRC_ALPHA:
- b |= AB_Dst_SrcAlpha;
- break;
- case GL_ONE_MINUS_SRC_ALPHA:
- b |= AB_Dst_OneMinusSrcAlpha;
- break;
- case GL_DST_ALPHA:
- b |= AB_Dst_DstAlpha;
- f |= FBReadSrcEnable;
- break;
- case GL_ONE_MINUS_DST_ALPHA:
- b |= AB_Dst_OneMinusDstAlpha;
- f |= FBReadSrcEnable;
- break;
- }
-
- if ( ctx->Color.BlendEnabled ) {
- f |= FBReadDstEnable;
- b |= AlphaBlendModeEnable;
- } else {
- b &= ~AlphaBlendModeEnable;
- }
-
- if ( gmesa->AlphaTestMode != a ) {
- gmesa->AlphaTestMode = a;
- gmesa->dirty |= GAMMA_UPLOAD_ALPHA;
- }
- if ( gmesa->AlphaBlendMode != b) {
- gmesa->AlphaBlendMode = b;
- gmesa->dirty |= GAMMA_UPLOAD_BLEND;
- }
- gmesa->AB_FBReadMode_Save = f;
-}
-
-static void gammaDDAlphaFunc( GLcontext *ctx, GLenum func, GLfloat ref )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
- (void) ref;
-
- FLUSH_BATCH( gmesa );
-
- gmesa->new_state |= GAMMA_NEW_ALPHA;
-}
-
-static void gammaDDBlendEquationSeparate( GLcontext *ctx,
- GLenum modeRGB, GLenum modeA )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
-
- assert( modeRGB == modeA );
- FLUSH_BATCH( gmesa );
-
- gmesa->new_state |= GAMMA_NEW_ALPHA;
-}
-
-static void gammaDDBlendFuncSeparate( GLcontext *ctx,
- GLenum sfactorRGB, GLenum dfactorRGB,
- GLenum sfactorA, GLenum dfactorA )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
-
- FLUSH_BATCH( gmesa );
-
- gmesa->new_state |= GAMMA_NEW_ALPHA;
-}
-
-
-/* ================================================================
- * Buffer clear
- */
-
-static void gammaDDClear( GLcontext *ctx, GLbitfield mask )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
- GLINTDRIPtr gDRIPriv = (GLINTDRIPtr)gmesa->driScreen->pDevPriv;
- GLuint temp = 0;
-
- FLUSH_BATCH( gmesa );
-
- /* Update and emit any new state. We need to do this here to catch
- * changes to the masks.
- * FIXME: Just update the masks?
- */
- if ( gmesa->new_state )
- gammaDDUpdateHWState( ctx );
-
-#ifdef DO_VALIDATE
- /* Flush any partially filled buffers */
- FLUSH_DMA_BUFFER(gmesa);
-
- DRM_SPINLOCK(&gmesa->driScreen->pSAREA->drawable_lock,
- gmesa->driScreen->drawLockID);
- VALIDATE_DRAWABLE_INFO_NO_LOCK(gmesa);
-#endif
-
- if (mask & BUFFER_BIT_DEPTH) {
- /* Turn off writes the FB */
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, FBWriteMode, FBWriteModeDisable);
-
- mask &= ~BUFFER_BIT_DEPTH;
-
- /*
- * Turn Rectangle2DControl off when the window is not clipped
- * (i.e., the GID tests are not necessary). This dramatically
- * increases the performance of the depth clears.
- */
- if (!gmesa->NotClipped) {
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, Rectangle2DControl, 1);
- }
-
- temp = (gmesa->LBReadMode & LBPartialProdMask) | LBWindowOriginBot;
- if (gDRIPriv->numMultiDevices == 2) temp |= LBScanLineInt2;
-
- CHECK_DMA_BUFFER(gmesa, 5);
- WRITE(gmesa->buf, LBReadMode, temp);
- WRITE(gmesa->buf, DeltaMode, DM_DepthEnable);
- WRITE(gmesa->buf, DepthMode, (DepthModeEnable |
- DM_Always |
- DM_SourceDepthRegister |
- DM_WriteMask));
- WRITE(gmesa->buf, GLINTDepth, gmesa->ClearDepth);
-
- /* Increment the frame count */
- gmesa->FrameCount++;
-#ifdef FAST_CLEAR_4
- gmesa->FrameCount &= 0x0f;
-#else
- gmesa->FrameCount &= 0xff;
-#endif
-
- /* Force FCP to be written */
- WRITE(gmesa->buf, GLINTWindow, (WindowEnable |
- W_PassIfEqual |
- (gmesa->Window & W_GIDMask) |
- W_DepthFCP |
- W_LBUpdateFromRegisters |
- W_OverrideWriteFiltering |
- (gmesa->FrameCount << 9)));
-
- /* Clear part of the depth and FCP buffers */
- {
- int y = gmesa->driScreen->fbHeight - gmesa->driDrawable->y - gmesa->driDrawable->h;
- int x = gmesa->driDrawable->x;
- int w = gmesa->driDrawable->w;
- int h = gmesa->driDrawable->h;
-#ifndef TURN_OFF_FCP
- float hsub = h;
-
- if (gmesa->WindowChanged) {
- gmesa->WindowChanged = GL_FALSE;
- } else {
-#ifdef FAST_CLEAR_4
- hsub /= 16;
-#else
- hsub /= 256;
-#endif
-
- /* Handle the case where the height < # of FCPs */
- if (hsub < 1.0) {
- if (gmesa->FrameCount > h)
- gmesa->FrameCount = 0;
- h = 1;
- y += gmesa->FrameCount;
- } else {
- h = (gmesa->FrameCount+1)*hsub;
- h -= (int)(gmesa->FrameCount*hsub);
- y += gmesa->FrameCount*hsub;
- }
- }
-#endif
- if (h && w) {
-#if 0
- CHECK_DMA_BUFFER(gmesa, 2);
- WRITE(gmesa->buf, Rectangle2DMode, ((h & 0xfff)<<12) |
- (w & 0xfff) );
- WRITE(gmesa->buf, DrawRectangle2D, ((y & 0xffff)<<16) |
- (x & 0xffff) );
-#else
- CHECK_DMA_BUFFER(gmesa, 8);
- WRITE(gmesa->buf, StartXDom, x<<16);
- WRITE(gmesa->buf, StartY, y<<16);
- WRITE(gmesa->buf, StartXSub, (x+w)<<16);
- WRITE(gmesa->buf, GLINTCount, h);
- WRITE(gmesa->buf, dY, 1<<16);
- WRITE(gmesa->buf, dXDom, 0<<16);
- WRITE(gmesa->buf, dXSub, 0<<16);
- WRITE(gmesa->buf, Render, 0x00000040); /* NOT_DONE */
-#endif
- }
- }
-
- CHECK_DMA_BUFFER(gmesa, 6);
- WRITE(gmesa->buf, DepthMode, gmesa->DepthMode);
- WRITE(gmesa->buf, DeltaMode, gmesa->DeltaMode);
- WRITE(gmesa->buf, LBReadMode, gmesa->LBReadMode);
- WRITE(gmesa->buf, GLINTWindow, gmesa->Window);
- WRITE(gmesa->buf, FastClearDepth, gmesa->ClearDepth);
- WRITE(gmesa->buf, FBWriteMode, FBWriteModeEnable);
-
- /* Turn on Depth FCP */
- if (gmesa->Window & W_DepthFCP) {
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, WindowOr, (gmesa->FrameCount << 9));
- }
-
- /* Turn off GID clipping if window is not clipped */
- if (gmesa->NotClipped) {
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, Rectangle2DControl, 0);
- }
- }
-
- if (mask & (BUFFER_BIT_FRONT_LEFT | BUFFER_BIT_BACK_LEFT)) {
- int y = gmesa->driScreen->fbHeight - gmesa->driDrawable->y - gmesa->driDrawable->h;
- int x = gmesa->driDrawable->x;
- int w = gmesa->driDrawable->w;
- int h = gmesa->driDrawable->h;
-
- mask &= ~(BUFFER_BIT_FRONT_LEFT | BUFFER_BIT_BACK_LEFT);
-
- if (x < 0) { w -= -x; x = 0; }
-
- /* Turn on GID clipping if window is clipped */
- if (!gmesa->NotClipped) {
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, Rectangle2DControl, 1);
- }
-
- CHECK_DMA_BUFFER(gmesa, 18);
- WRITE(gmesa->buf, FBBlockColor, gmesa->ClearColor);
- WRITE(gmesa->buf, ColorDDAMode, ColorDDADisable);
- WRITE(gmesa->buf, FBWriteMode, FBWriteModeEnable);
- WRITE(gmesa->buf, DepthMode, 0);
- WRITE(gmesa->buf, DeltaMode, 0);
- WRITE(gmesa->buf, AlphaBlendMode, 0);
-#if 1
- WRITE(gmesa->buf, dY, 1<<16);
- WRITE(gmesa->buf, dXDom, 0<<16);
- WRITE(gmesa->buf, dXSub, 0<<16);
- WRITE(gmesa->buf, StartXSub, (x+w)<<16);
- WRITE(gmesa->buf, GLINTCount, h);
- WRITE(gmesa->buf, StartXDom, x<<16);
- WRITE(gmesa->buf, StartY, y<<16);
- WRITE(gmesa->buf, Render, 0x00000048); /* NOT_DONE */
-#else
- WRITE(gmesa->buf, Rectangle2DMode, (((h & 0xfff)<<12) |
- (w & 0xfff)));
- WRITE(gmesa->buf, DrawRectangle2D, (((y & 0xffff)<<16) |
- (x & 0xffff)));
-#endif
- WRITE(gmesa->buf, DepthMode, gmesa->DepthMode);
- WRITE(gmesa->buf, DeltaMode, gmesa->DeltaMode);
- WRITE(gmesa->buf, AlphaBlendMode, gmesa->AlphaBlendMode);
- WRITE(gmesa->buf, ColorDDAMode, gmesa->ColorDDAMode);
-
- /* Turn off GID clipping if window is clipped */
- if (gmesa->NotClipped) {
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, Rectangle2DControl, 0);
- }
- }
-
-#ifdef DO_VALIDATE
- PROCESS_DMA_BUFFER_TOP_HALF(gmesa);
-
- DRM_SPINUNLOCK(&gmesa->driScreen->pSAREA->drawable_lock,
- gmesa->driScreen->drawLockID);
- VALIDATE_DRAWABLE_INFO_NO_LOCK_POST(gmesa);
-
- PROCESS_DMA_BUFFER_BOTTOM_HALF(gmesa);
-#endif
-
- if ( mask )
- _swrast_Clear( ctx, mask );
-}
-
-/* =============================================================
- * Depth testing
- */
-
-static void gammaUpdateZMode( GLcontext *ctx )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
- uint32_t z = gmesa->DepthMode;
- uint32_t delta = gmesa->DeltaMode;
- uint32_t window = gmesa->Window;
- uint32_t lbread = gmesa->LBReadMode;
-
- z &= ~DM_CompareMask;
-
- switch ( ctx->Depth.Func ) {
- case GL_NEVER:
- z |= DM_Never;
- break;
- case GL_ALWAYS:
- z |= DM_Always;
- break;
- case GL_LESS:
- z |= DM_Less;
- break;
- case GL_LEQUAL:
- z |= DM_LessEqual;
- break;
- case GL_EQUAL:
- z |= DM_Equal;
- break;
- case GL_GEQUAL:
- z |= DM_GreaterEqual;
- break;
- case GL_GREATER:
- z |= DM_Greater;
- break;
- case GL_NOTEQUAL:
- z |= DM_NotEqual;
- break;
- }
-
- if ( ctx->Depth.Test ) {
- z |= DepthModeEnable;
- delta |= DM_DepthEnable;
- window |= W_DepthFCP;
- lbread |= LBReadDstEnable;
- } else {
- z &= ~DepthModeEnable;
- delta &= ~DM_DepthEnable;
- window &= ~W_DepthFCP;
- lbread &= ~LBReadDstEnable;
- }
-
- if ( ctx->Depth.Mask ) {
- z |= DM_WriteMask;
- } else {
- z &= ~DM_WriteMask;
- }
-
-#if 0
- if ( gmesa->DepthMode != z ){
-#endif
- gmesa->DepthMode = z;
- gmesa->DeltaMode = delta;
- gmesa->Window = window;
- gmesa->LBReadMode = lbread;
- gmesa->dirty |= GAMMA_UPLOAD_DEPTH;
-#if 0
- }
-#endif
-}
-
-static void gammaDDDepthFunc( GLcontext *ctx, GLenum func )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
-
- FLUSH_BATCH( gmesa );
- gmesa->new_state |= GAMMA_NEW_DEPTH;
-}
-
-static void gammaDDDepthMask( GLcontext *ctx, GLboolean flag )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
-
- FLUSH_BATCH( gmesa );
- gmesa->new_state |= GAMMA_NEW_DEPTH;
-}
-
-static void gammaDDClearDepth( GLcontext *ctx, GLclampd d )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
-
- switch ( gmesa->DepthSize ) {
- case 16:
- gmesa->ClearDepth = d * 0x0000ffff;
- break;
- case 24:
- gmesa->ClearDepth = d * 0x00ffffff;
- break;
- case 32:
- gmesa->ClearDepth = d * 0xffffffff;
- break;
- }
-}
-
-static void gammaDDFinish( GLcontext *ctx )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
-
- FLUSH_DMA_BUFFER(gmesa);
-}
-
-static void gammaDDFlush( GLcontext *ctx )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
-
- FLUSH_DMA_BUFFER(gmesa);
-}
-
-/* =============================================================
- * Fog
- */
-
-static void gammaUpdateFogAttrib( GLcontext *ctx )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
- uint32_t f = gmesa->FogMode;
- uint32_t g = gmesa->GeometryMode;
- uint32_t d = gmesa->DeltaMode;
-
- if (ctx->Fog.Enabled) {
- f |= FogModeEnable;
- g |= GM_FogEnable;
- d |= DM_FogEnable;
- } else {
- f &= ~FogModeEnable;
- g &= ~GM_FogEnable;
- d &= ~DM_FogEnable;
- }
-
- g &= ~GM_FogMask;
-
- switch (ctx->Fog.Mode) {
- case GL_LINEAR:
- g |= GM_FogLinear;
- break;
- case GL_EXP:
- g |= GM_FogExp;
- break;
- case GL_EXP2:
- g |= GM_FogExpSquared;
- break;
- }
-
- if ( gmesa->FogMode != f ) {
- gmesa->FogMode = f;
- gmesa->dirty |= GAMMA_UPLOAD_FOG;
- }
-
- if ( gmesa->GeometryMode != g ) {
- gmesa->GeometryMode = g;
- gmesa->dirty |= GAMMA_UPLOAD_GEOMETRY;
- }
-
- if ( gmesa->DeltaMode != d ) {
- gmesa->DeltaMode = d;
- gmesa->dirty |= GAMMA_UPLOAD_DEPTH;
- }
-}
-
-#if 0
-static void gammaDDFogfv( GLcontext *ctx, GLenum pname, const GLfloat *param )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
-
- FLUSH_BATCH( gmesa );
- gmesa->new_state |= GAMMA_NEW_FOG;
-}
-#endif
-
-/* =============================================================
- * Lines
- */
-static void gammaDDLineWidth( GLcontext *ctx, GLfloat width )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
-
- CHECK_DMA_BUFFER(gmesa, 3);
- WRITE(gmesa->buf, LineWidth, (GLuint)width);
- WRITEF(gmesa->buf, AAlineWidth, width);
- WRITE(gmesa->buf, LineWidthOffset, (GLuint)(width-1)/2);
-}
-
-static void gammaDDLineStipple( GLcontext *ctx, GLint factor, GLushort pattern )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
-
- gmesa->LineMode &= ~(LM_StippleMask | LM_RepeatFactorMask);
- gmesa->LineMode |= ((GLuint)(factor - 1) << 1) | ((GLuint)pattern << 10);
-
- gmesa->dirty |= GAMMA_UPLOAD_LINEMODE;
-}
-
-
-
-/* =============================================================
- * Points
- */
-static void gammaDDPointSize( GLcontext *ctx, GLfloat size )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
-
- CHECK_DMA_BUFFER(gmesa, 2);
- WRITE(gmesa->buf, PointSize, (GLuint)size);
- WRITEF(gmesa->buf, AApointSize, size);
-}
-
-/* =============================================================
- * Polygon
- */
-
-static void gammaUpdatePolygon( GLcontext *ctx )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
- uint32_t g = gmesa->GeometryMode;
-
- g &= ~(GM_PolyOffsetFillEnable | GM_PolyOffsetPointEnable |
- GM_PolyOffsetLineEnable);
-
- if (ctx->Polygon.OffsetFill) g |= GM_PolyOffsetFillEnable;
- if (ctx->Polygon.OffsetPoint) g |= GM_PolyOffsetPointEnable;
- if (ctx->Polygon.OffsetLine) g |= GM_PolyOffsetLineEnable;
-
- g &= ~GM_FB_PolyMask;
-
- switch (ctx->Polygon.FrontMode) {
- case GL_FILL:
- g |= GM_FrontPolyFill;
- break;
- case GL_LINE:
- g |= GM_FrontPolyLine;
- break;
- case GL_POINT:
- g |= GM_FrontPolyPoint;
- break;
- }
-
- switch (ctx->Polygon.BackMode) {
- case GL_FILL:
- g |= GM_BackPolyFill;
- break;
- case GL_LINE:
- g |= GM_BackPolyLine;
- break;
- case GL_POINT:
- g |= GM_BackPolyPoint;
- break;
- }
-
- if ( gmesa->GeometryMode != g ) {
- gmesa->GeometryMode = g;
- gmesa->dirty |= GAMMA_UPLOAD_GEOMETRY;
- }
-
- gmesa->dirty |= GAMMA_UPLOAD_POLYGON;
-}
-
-static void gammaDDPolygonMode( GLcontext *ctx, GLenum face, GLenum mode)
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
-
- FLUSH_BATCH( gmesa );
-
- gmesa->new_state |= GAMMA_NEW_POLYGON;
-}
-
-static void gammaUpdateStipple( GLcontext *ctx )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
-
- FLUSH_BATCH( gmesa );
-
- if (ctx->Polygon.StippleFlag) {
- gmesa->AreaStippleMode |= AreaStippleModeEnable/* | ASM_X32 | ASM_Y32*/;
- } else {
- gmesa->AreaStippleMode &= ~AreaStippleModeEnable;
- }
-
- gmesa->dirty |= GAMMA_UPLOAD_STIPPLE;
-}
-
-static void gammaDDPolygonStipple( GLcontext *ctx, const GLubyte *mask)
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
- FLUSH_BATCH( gmesa );
- gmesa->new_state |= GAMMA_NEW_STIPPLE;
-}
-
-/* =============================================================
- * Clipping
- */
-
-static void gammaUpdateClipping( GLcontext *ctx )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
- GLint x1, y1, x2, y2;
-
- if ( gmesa->driDrawable ) {
- x1 = gmesa->driDrawable->x + ctx->Scissor.X;
- y1 = gmesa->driScreen->fbHeight -
- (gmesa->driDrawable->y +
- gmesa->driDrawable->h) + ctx->Scissor.Y;
- x2 = x1 + ctx->Scissor.Width;
- y2 = y1 + ctx->Scissor.Height;
-
- gmesa->ScissorMinXY = x1 | (y1 << 16);
- gmesa->ScissorMaxXY = x2 | (y2 << 16);
- if (ctx->Scissor.Enabled)
- gmesa->ScissorMode |= UserScissorEnable;
- else
- gmesa->ScissorMode &= ~UserScissorEnable;
-
- gmesa->dirty |= GAMMA_UPLOAD_CLIP;
- }
-}
-
-static void gammaDDScissor( GLcontext *ctx,
- GLint x, GLint y, GLsizei w, GLsizei h )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
-
- FLUSH_BATCH( gmesa );
- gmesa->new_state |= GAMMA_NEW_CLIP;
-}
-
-/* =============================================================
- * Culling
- */
-
-static void gammaUpdateCull( GLcontext *ctx )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
- uint32_t g = gmesa->GeometryMode;
-
- g &= ~(GM_PolyCullMask | GM_FFMask);
-
- if (ctx->Polygon.FrontFace == GL_CCW) {
- g |= GM_FrontFaceCCW;
- } else {
- g |= GM_FrontFaceCW;
- }
-
- switch ( ctx->Polygon.CullFaceMode ) {
- case GL_FRONT:
- g |= GM_PolyCullFront;
- break;
- case GL_BACK:
- g |= GM_PolyCullBack;
- break;
- case GL_FRONT_AND_BACK:
- g |= GM_PolyCullBoth;
- break;
- }
-
- if ( ctx->Polygon.CullFlag ) {
- g |= GM_PolyCullEnable;
- } else {
- g &= ~GM_PolyCullEnable;
- }
-
- if ( gmesa->GeometryMode != g ) {
- gmesa->GeometryMode = g;
- gmesa->dirty |= GAMMA_UPLOAD_GEOMETRY;
- }
-}
-
-static void gammaDDCullFace( GLcontext *ctx, GLenum mode )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
-
- FLUSH_BATCH( gmesa );
- gmesa->new_state |= GAMMA_NEW_CULL;
-}
-
-static void gammaDDFrontFace( GLcontext *ctx, GLenum mode )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
-
- FLUSH_BATCH( gmesa );
- gmesa->new_state |= GAMMA_NEW_CULL;
-}
-
-/* =============================================================
- * Masks
- */
-
-static void gammaUpdateMasks( GLcontext *ctx )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
-
-
- GLuint mask = gammaPackColor( gmesa->gammaScreen->cpp,
- ctx->Color.ColorMask[0][RCOMP],
- ctx->Color.ColorMask[0][GCOMP],
- ctx->Color.ColorMask[0][BCOMP],
- ctx->Color.ColorMask[0][ACOMP] );
-
- if (gmesa->gammaScreen->cpp == 2) mask |= mask << 16;
-
- if ( gmesa->FBHardwareWriteMask != mask ) {
- gmesa->FBHardwareWriteMask = mask;
- gmesa->dirty |= GAMMA_UPLOAD_MASKS;
- }
-}
-
-static void gammaDDColorMask( GLcontext *ctx, GLboolean r, GLboolean g,
- GLboolean b, GLboolean a)
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
-
- FLUSH_BATCH( gmesa );
- gmesa->new_state |= GAMMA_NEW_MASKS;
-}
-
-/* =============================================================
- * Rendering attributes
- *
- * We really don't want to recalculate all this every time we bind a
- * texture. These things shouldn't change all that often, so it makes
- * sense to break them out of the core texture state update routines.
- */
-
-#if ENABLELIGHTING
-static void gammaDDLightfv(GLcontext *ctx, GLenum light, GLenum pname,
- const GLfloat *params, GLint nParams)
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
- GLfloat l,x,y,z,w;
-
- switch(light) {
- case GL_LIGHT0:
- switch (pname) {
- case GL_AMBIENT:
- CHECK_DMA_BUFFER(gmesa, 3);
- /* We don't do alpha */
- WRITEF(gmesa->buf, Light0AmbientIntensityBlue, params[2]);
- WRITEF(gmesa->buf, Light0AmbientIntensityGreen, params[1]);
- WRITEF(gmesa->buf, Light0AmbientIntensityRed, params[0]);
- break;
- case GL_DIFFUSE:
- CHECK_DMA_BUFFER(gmesa, 3);
- /* We don't do alpha */
- WRITEF(gmesa->buf, Light0DiffuseIntensityBlue, params[2]);
- WRITEF(gmesa->buf, Light0DiffuseIntensityGreen, params[1]);
- WRITEF(gmesa->buf, Light0DiffuseIntensityRed, params[0]);
- break;
- case GL_SPECULAR:
- CHECK_DMA_BUFFER(gmesa, 3);
- /* We don't do alpha */
- WRITEF(gmesa->buf, Light0SpecularIntensityBlue, params[2]);
- WRITEF(gmesa->buf, Light0SpecularIntensityGreen, params[1]);
- WRITEF(gmesa->buf, Light0SpecularIntensityRed, params[0]);
- break;
- case GL_POSITION:
- /* Normalize <x,y,z> */
- x = params[0]; y = params[1]; z = params[2]; w = params[3];
- l = sqrt(x*x + y*y + z*z + w*w);
- w /= l;
- x /= l;
- y /= l;
- z /= l;
- if (params[3] != 0.0) {
- gmesa->Light0Mode |= Light0ModeAttenuation;
- gmesa->Light0Mode |= Light0ModeLocal;
- } else {
- gmesa->Light0Mode &= ~Light0ModeAttenuation;
- gmesa->Light0Mode &= ~Light0ModeLocal;
- }
- CHECK_DMA_BUFFER(gmesa, 5);
- WRITE(gmesa->buf, Light0Mode, gmesa->Light0Mode);
- WRITEF(gmesa->buf, Light0PositionW, w);
- WRITEF(gmesa->buf, Light0PositionZ, z);
- WRITEF(gmesa->buf, Light0PositionY, y);
- WRITEF(gmesa->buf, Light0PositionX, x);
- break;
- case GL_SPOT_DIRECTION:
- CHECK_DMA_BUFFER(gmesa, 3);
- /* WRITEF(gmesa->buf, Light0SpotlightDirectionW, params[3]); */
- WRITEF(gmesa->buf, Light0SpotlightDirectionZ, params[2]);
- WRITEF(gmesa->buf, Light0SpotlightDirectionY, params[1]);
- WRITEF(gmesa->buf, Light0SpotlightDirectionX, params[0]);
- break;
- case GL_SPOT_EXPONENT:
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITEF(gmesa->buf, Light0SpotlightExponent, params[0]);
- break;
- case GL_SPOT_CUTOFF:
- if (params[0] != 180.0)
- gmesa->Light0Mode |= Light0ModeSpotLight;
- else
- gmesa->Light0Mode &= ~Light0ModeSpotLight;
- CHECK_DMA_BUFFER(gmesa, 2);
- WRITE(gmesa->buf, Light0Mode, gmesa->Light0Mode);
- WRITEF(gmesa->buf, Light0CosSpotlightCutoffAngle, cos(params[0]*DEG2RAD));
- break;
- case GL_CONSTANT_ATTENUATION:
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITEF(gmesa->buf, Light0ConstantAttenuation, params[0]);
- break;
- case GL_LINEAR_ATTENUATION:
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITEF(gmesa->buf, Light0LinearAttenuation, params[0]);
- break;
- case GL_QUADRATIC_ATTENUATION:
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITEF(gmesa->buf, Light0QuadraticAttenuation, params[0]);
- break;
- }
- break;
- }
-}
-
-static void gammaDDLightModelfv( GLcontext *ctx, GLenum pname,
- const GLfloat *params )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
-
- switch (pname) {
- case GL_LIGHT_MODEL_AMBIENT:
- CHECK_DMA_BUFFER(gmesa, 3);
- /* We don't do alpha */
- WRITEF(gmesa->buf, SceneAmbientColorBlue, params[2]);
- WRITEF(gmesa->buf, SceneAmbientColorGreen, params[1]);
- WRITEF(gmesa->buf, SceneAmbientColorRed, params[0]);
- break;
- case GL_LIGHT_MODEL_LOCAL_VIEWER:
- if (params[0] != 0.0)
- gmesa->LightingMode |= LightingModeLocalViewer;
- else
- gmesa->LightingMode &= ~LightingModeLocalViewer;
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, LightingMode, gmesa->LightingMode);
- break;
- case GL_LIGHT_MODEL_TWO_SIDE:
- if (params[0] == 1.0f) {
- gmesa->LightingMode |= LightingModeTwoSides;
- gmesa->MaterialMode |= MaterialModeTwoSides;
- } else {
- gmesa->LightingMode &= ~LightingModeTwoSides;
- gmesa->MaterialMode &= ~MaterialModeTwoSides;
- }
- CHECK_DMA_BUFFER(gmesa, 2);
- WRITE(gmesa->buf, LightingMode, gmesa->LightingMode);
- WRITE(gmesa->buf, MaterialMode, gmesa->MaterialMode);
- break;
- }
-}
-#endif
-
-static void gammaDDShadeModel( GLcontext *ctx, GLenum mode )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
- uint32_t g = gmesa->GeometryMode;
- uint32_t c = gmesa->ColorDDAMode;
-
- g &= ~GM_ShadingMask;
- c &= ~ColorDDAShadingMask;
-
- switch ( mode ) {
- case GL_FLAT:
- g |= GM_FlatShading;
- c |= ColorDDAFlat;
- break;
- case GL_SMOOTH:
- g |= GM_GouraudShading;
- c |= ColorDDAGouraud;
- break;
- default:
- return;
- }
-
- if ( gmesa->ColorDDAMode != c ) {
- FLUSH_BATCH( gmesa );
- gmesa->ColorDDAMode = c;
-
- gmesa->dirty |= GAMMA_UPLOAD_SHADE;
- }
-
- if ( gmesa->GeometryMode != g ) {
- FLUSH_BATCH( gmesa );
- gmesa->GeometryMode = g;
-
- gmesa->dirty |= GAMMA_UPLOAD_GEOMETRY;
- }
-}
-
-/* =============================================================
- * Miscellaneous
- */
-
-static void gammaDDClearColor( GLcontext *ctx, const GLfloat color[4])
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
- GLubyte c[4];
- UNCLAMPED_FLOAT_TO_UBYTE(c[0], color[0]);
- UNCLAMPED_FLOAT_TO_UBYTE(c[1], color[1]);
- UNCLAMPED_FLOAT_TO_UBYTE(c[2], color[2]);
- UNCLAMPED_FLOAT_TO_UBYTE(c[3], color[3]);
-
- gmesa->ClearColor = gammaPackColor( gmesa->gammaScreen->cpp,
- c[0], c[1], c[2], c[3] );
-
- if (gmesa->gammaScreen->cpp == 2) gmesa->ClearColor |= gmesa->ClearColor<<16;
-}
-
-
-static void gammaDDLogicalOpcode( GLcontext *ctx, GLenum opcode )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
-
- FLUSH_BATCH( gmesa );
-
- if ( ctx->Color.ColorLogicOpEnabled ) {
- gmesa->LogicalOpMode = opcode << 1 | LogicalOpModeEnable;
- } else {
- gmesa->LogicalOpMode = LogicalOpModeDisable;
- }
-
- gmesa->dirty |= GAMMA_UPLOAD_LOGICOP;
-}
-
-static void gammaDDDrawBuffer( GLcontext *ctx, GLenum mode )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
-
- FLUSH_BATCH( gmesa );
-
- switch ( mode ) {
- case GL_FRONT_LEFT:
- gmesa->drawOffset = gmesa->readOffset = 0;
- break;
- case GL_BACK_LEFT:
- gmesa->drawOffset = gmesa->readOffset = gmesa->driScreen->fbHeight * gmesa->driScreen->fbWidth * gmesa->gammaScreen->cpp;
- break;
- }
-}
-
-static void gammaDDReadBuffer( GLcontext *ctx, GLenum mode )
-{
- /* XXX anything? */
-}
-
-/* =============================================================
- * Window position and viewport transformation
- */
-
-void gammaUpdateWindow( GLcontext *ctx )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
- __DRIdrawable *dPriv = gmesa->driDrawable;
- GLfloat xoffset = (GLfloat)dPriv->x;
- GLfloat yoffset = gmesa->driScreen->fbHeight - (GLfloat)dPriv->y - dPriv->h;
- const GLfloat *v = ctx->Viewport._WindowMap.m;
-
- GLfloat sx = v[MAT_SX];
- GLfloat tx = v[MAT_TX] + xoffset;
- GLfloat sy = v[MAT_SY];
- GLfloat ty = v[MAT_TY] + yoffset;
- GLfloat sz = v[MAT_SZ] * gmesa->depth_scale;
- GLfloat tz = v[MAT_TZ] * gmesa->depth_scale;
-
- gmesa->dirty |= GAMMA_UPLOAD_VIEWPORT;
-
- gmesa->ViewportScaleX = sx;
- gmesa->ViewportScaleY = sy;
- gmesa->ViewportScaleZ = sz;
- gmesa->ViewportOffsetX = tx;
- gmesa->ViewportOffsetY = ty;
- gmesa->ViewportOffsetZ = tz;
-}
-
-
-
-static void gammaDDViewport( GLcontext *ctx, GLint x, GLint y,
- GLsizei width, GLsizei height )
-{
- gammaUpdateWindow( ctx );
-}
-
-static void gammaDDDepthRange( GLcontext *ctx, GLclampd nearval,
- GLclampd farval )
-{
- gammaUpdateWindow( ctx );
-}
-
-void gammaUpdateViewportOffset( GLcontext *ctx )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
- __DRIdrawable *dPriv = gmesa->driDrawable;
- GLfloat xoffset = (GLfloat)dPriv->x;
- GLfloat yoffset = gmesa->driScreen->fbHeight - (GLfloat)dPriv->y - dPriv->h;
- const GLfloat *v = ctx->Viewport._WindowMap.m;
-
- GLfloat tx = v[MAT_TX] + xoffset;
- GLfloat ty = v[MAT_TY] + yoffset;
-
- if ( gmesa->ViewportOffsetX != tx ||
- gmesa->ViewportOffsetY != ty )
- {
- gmesa->ViewportOffsetX = tx;
- gmesa->ViewportOffsetY = ty;
-
- gmesa->new_state |= GAMMA_NEW_WINDOW;
- }
-
- gmesa->new_state |= GAMMA_NEW_CLIP;
-}
-
-#if 0
-/*
- * Matrix
- */
-
-static void gammaLoadHWMatrix(GLcontext *ctx)
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
- const GLfloat *m;
-
- gmesa->TransformMode &= ~XM_XformTexture;
-
- switch (ctx->Transform.MatrixMode) {
- case GL_MODELVIEW:
- gmesa->TransformMode |= XM_UseModelViewMatrix;
- m = ctx->ModelviewMatrixStack.Top->m;
- CHECK_DMA_BUFFER(gmesa, 16);
- WRITEF(gmesa->buf, ModelViewMatrix0, m[0]);
- WRITEF(gmesa->buf, ModelViewMatrix1, m[1]);
- WRITEF(gmesa->buf, ModelViewMatrix2, m[2]);
- WRITEF(gmesa->buf, ModelViewMatrix3, m[3]);
- WRITEF(gmesa->buf, ModelViewMatrix4, m[4]);
- WRITEF(gmesa->buf, ModelViewMatrix5, m[5]);
- WRITEF(gmesa->buf, ModelViewMatrix6, m[6]);
- WRITEF(gmesa->buf, ModelViewMatrix7, m[7]);
- WRITEF(gmesa->buf, ModelViewMatrix8, m[8]);
- WRITEF(gmesa->buf, ModelViewMatrix9, m[9]);
- WRITEF(gmesa->buf, ModelViewMatrix10, m[10]);
- WRITEF(gmesa->buf, ModelViewMatrix11, m[11]);
- WRITEF(gmesa->buf, ModelViewMatrix12, m[12]);
- WRITEF(gmesa->buf, ModelViewMatrix13, m[13]);
- WRITEF(gmesa->buf, ModelViewMatrix14, m[14]);
- WRITEF(gmesa->buf, ModelViewMatrix15, m[15]);
- break;
- case GL_PROJECTION:
- m = ctx->ProjectionMatrixStack.Top->m;
- CHECK_DMA_BUFFER(gmesa, 16);
- WRITEF(gmesa->buf, ModelViewProjectionMatrix0, m[0]);
- WRITEF(gmesa->buf, ModelViewProjectionMatrix1, m[1]);
- WRITEF(gmesa->buf, ModelViewProjectionMatrix2, m[2]);
- WRITEF(gmesa->buf, ModelViewProjectionMatrix3, m[3]);
- WRITEF(gmesa->buf, ModelViewProjectionMatrix4, m[4]);
- WRITEF(gmesa->buf, ModelViewProjectionMatrix5, m[5]);
- WRITEF(gmesa->buf, ModelViewProjectionMatrix6, m[6]);
- WRITEF(gmesa->buf, ModelViewProjectionMatrix7, m[7]);
- WRITEF(gmesa->buf, ModelViewProjectionMatrix8, m[8]);
- WRITEF(gmesa->buf, ModelViewProjectionMatrix9, m[9]);
- WRITEF(gmesa->buf, ModelViewProjectionMatrix10, m[10]);
- WRITEF(gmesa->buf, ModelViewProjectionMatrix11, m[11]);
- WRITEF(gmesa->buf, ModelViewProjectionMatrix12, m[12]);
- WRITEF(gmesa->buf, ModelViewProjectionMatrix13, m[13]);
- WRITEF(gmesa->buf, ModelViewProjectionMatrix14, m[14]);
- WRITEF(gmesa->buf, ModelViewProjectionMatrix15, m[15]);
- break;
- case GL_TEXTURE:
- m = ctx->TextureMatrixStack[0].Top->m;
- CHECK_DMA_BUFFER(gmesa, 16);
- gmesa->TransformMode |= XM_XformTexture;
- WRITEF(gmesa->buf, TextureMatrix0, m[0]);
- WRITEF(gmesa->buf, TextureMatrix1, m[1]);
- WRITEF(gmesa->buf, TextureMatrix2, m[2]);
- WRITEF(gmesa->buf, TextureMatrix3, m[3]);
- WRITEF(gmesa->buf, TextureMatrix4, m[4]);
- WRITEF(gmesa->buf, TextureMatrix5, m[5]);
- WRITEF(gmesa->buf, TextureMatrix6, m[6]);
- WRITEF(gmesa->buf, TextureMatrix7, m[7]);
- WRITEF(gmesa->buf, TextureMatrix8, m[8]);
- WRITEF(gmesa->buf, TextureMatrix9, m[9]);
- WRITEF(gmesa->buf, TextureMatrix10, m[10]);
- WRITEF(gmesa->buf, TextureMatrix11, m[11]);
- WRITEF(gmesa->buf, TextureMatrix12, m[12]);
- WRITEF(gmesa->buf, TextureMatrix13, m[13]);
- WRITEF(gmesa->buf, TextureMatrix14, m[14]);
- WRITEF(gmesa->buf, TextureMatrix15, m[15]);
- break;
-
- default:
- /* ERROR!!! -- how did this happen? */
- break;
- }
-
- gmesa->dirty |= GAMMA_UPLOAD_TRANSFORM;
-}
-#endif
-
-/* =============================================================
- * State enable/disable
- */
-
-static void gammaDDEnable( GLcontext *ctx, GLenum cap, GLboolean state )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
-
- switch ( cap ) {
- case GL_ALPHA_TEST:
- case GL_BLEND:
- FLUSH_BATCH( gmesa );
- gmesa->new_state |= GAMMA_NEW_ALPHA;
- break;
-
- case GL_CULL_FACE:
- FLUSH_BATCH( gmesa );
- gmesa->new_state |= GAMMA_NEW_CULL;
- break;
-
- case GL_DEPTH_TEST:
- FLUSH_BATCH( gmesa );
- gmesa->new_state |= GAMMA_NEW_DEPTH;
- break;
-
- case GL_DITHER:
- do {
- uint32_t d = gmesa->DitherMode;
- FLUSH_BATCH( gmesa );
-
- if ( state ) {
- d |= DM_DitherEnable;
- } else {
- d &= ~DM_DitherEnable;
- }
-
- if ( gmesa->DitherMode != d ) {
- gmesa->DitherMode = d;
- gmesa->dirty |= GAMMA_UPLOAD_DITHER;
- }
- } while (0);
- break;
-
-#if 0
- case GL_FOG:
- FLUSH_BATCH( gmesa );
- gmesa->new_state |= GAMMA_NEW_FOG;
- break;
-#endif
-
- case GL_INDEX_LOGIC_OP:
- case GL_COLOR_LOGIC_OP:
- FLUSH_BATCH( gmesa );
- gmesa->new_state |= GAMMA_NEW_LOGICOP;
- break;
-
-#if ENABLELIGHTING
- case GL_LIGHTING:
- do {
- uint32_t l = gmesa->LightingMode;
- FLUSH_BATCH( gmesa );
-
- if ( state ) {
- l |= LightingModeEnable;
- } else {
- l &= ~LightingModeEnable;
- }
-
- if ( gmesa->LightingMode != l ) {
- gmesa->LightingMode = l;
- gmesa->dirty |= GAMMA_UPLOAD_LIGHT;
- }
- } while (0);
- break;
-
- case GL_COLOR_MATERIAL:
- do {
- uint32_t m = gmesa->MaterialMode;
- FLUSH_BATCH( gmesa );
-
- if ( state ) {
- m |= MaterialModeEnable;
- } else {
- m &= ~MaterialModeEnable;
- }
-
- if ( gmesa->MaterialMode != m ) {
- gmesa->MaterialMode = m;
- gmesa->dirty |= GAMMA_UPLOAD_LIGHT;
- }
- } while (0);
- break;
-#endif
-
- case GL_LINE_SMOOTH:
- FLUSH_BATCH( gmesa );
- if ( state ) {
- gmesa->AntialiasMode |= AntialiasModeEnable;
- gmesa->LineMode |= LM_AntialiasEnable;
- } else {
- gmesa->AntialiasMode &= ~AntialiasModeEnable;
- gmesa->LineMode &= ~LM_AntialiasEnable;
- }
- gmesa->dirty |= GAMMA_UPLOAD_LINEMODE;
- break;
-
- case GL_POINT_SMOOTH:
- FLUSH_BATCH( gmesa );
- if ( state ) {
- gmesa->AntialiasMode |= AntialiasModeEnable;
- gmesa->PointMode |= PM_AntialiasEnable;
- } else {
- gmesa->AntialiasMode &= ~AntialiasModeEnable;
- gmesa->PointMode &= ~PM_AntialiasEnable;
- }
- gmesa->dirty |= GAMMA_UPLOAD_POINTMODE;
- break;
-
- case GL_POLYGON_SMOOTH:
- FLUSH_BATCH( gmesa );
- if ( state ) {
- gmesa->AntialiasMode |= AntialiasModeEnable;
- gmesa->TriangleMode |= TM_AntialiasEnable;
- } else {
- gmesa->AntialiasMode &= ~AntialiasModeEnable;
- gmesa->TriangleMode &= ~TM_AntialiasEnable;
- }
- gmesa->dirty |= GAMMA_UPLOAD_TRIMODE;
- break;
-
- case GL_SCISSOR_TEST:
- FLUSH_BATCH( gmesa );
- gmesa->new_state |= GAMMA_NEW_CLIP;
- break;
-
- case GL_POLYGON_OFFSET_FILL:
- case GL_POLYGON_OFFSET_POINT:
- case GL_POLYGON_OFFSET_LINE:
- FLUSH_BATCH( gmesa );
- gmesa->new_state |= GAMMA_NEW_POLYGON;
- break;
-
- case GL_LINE_STIPPLE:
- FLUSH_BATCH( gmesa );
- if ( state )
- gmesa->LineMode |= LM_StippleEnable;
- else
- gmesa->LineMode &= ~LM_StippleEnable;
- gmesa->dirty |= GAMMA_UPLOAD_LINEMODE;
- break;
-
- case GL_POLYGON_STIPPLE:
- FLUSH_BATCH( gmesa );
- gmesa->new_state |= GAMMA_NEW_STIPPLE;
- break;
-
- default:
- return;
- }
-}
-
-/* =============================================================
- * State initialization, management
- */
-
-
-/*
- * Load the current context's state into the hardware.
- *
- * NOTE: Be VERY careful about ensuring the context state is marked for
- * upload, the only place it shouldn't be uploaded is when the setup
- * state has changed in ReducedPrimitiveChange as this comes right after
- * a state update.
- *
- * Blits of any type should always upload the context and masks after
- * they are done.
- */
-void gammaEmitHwState( gammaContextPtr gmesa )
-{
- if (!gmesa->driDrawable) return;
-
- if (!gmesa->dirty) return;
-
-#ifdef DO_VALIDATE
- /* Flush any partially filled buffers */
- FLUSH_DMA_BUFFER(gmesa);
-
- DRM_SPINLOCK(&gmesa->driScreen->pSAREA->drawable_lock,
- gmesa->driScreen->drawLockID);
- VALIDATE_DRAWABLE_INFO_NO_LOCK(gmesa);
-#endif
-
- if (gmesa->dirty & GAMMA_UPLOAD_VIEWPORT) {
- gmesa->dirty &= ~GAMMA_UPLOAD_VIEWPORT;
- CHECK_DMA_BUFFER(gmesa, 6);
- WRITEF(gmesa->buf, ViewPortOffsetX, gmesa->ViewportOffsetX);
- WRITEF(gmesa->buf, ViewPortOffsetY, gmesa->ViewportOffsetY);
- WRITEF(gmesa->buf, ViewPortOffsetZ, gmesa->ViewportOffsetZ);
- WRITEF(gmesa->buf, ViewPortScaleX, gmesa->ViewportScaleX);
- WRITEF(gmesa->buf, ViewPortScaleY, gmesa->ViewportScaleY);
- WRITEF(gmesa->buf, ViewPortScaleZ, gmesa->ViewportScaleZ);
- }
- if ( (gmesa->dirty & GAMMA_UPLOAD_POINTMODE) ||
- (gmesa->dirty & GAMMA_UPLOAD_LINEMODE) ||
- (gmesa->dirty & GAMMA_UPLOAD_TRIMODE) ) {
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, AntialiasMode, gmesa->AntialiasMode);
- }
- if (gmesa->dirty & GAMMA_UPLOAD_POINTMODE) {
- gmesa->dirty &= ~GAMMA_UPLOAD_POINTMODE;
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, PointMode, gmesa->PointMode);
- }
- if (gmesa->dirty & GAMMA_UPLOAD_LINEMODE) {
- gmesa->dirty &= ~GAMMA_UPLOAD_LINEMODE;
- CHECK_DMA_BUFFER(gmesa, 2);
- WRITE(gmesa->buf, LineMode, gmesa->LineMode);
- WRITE(gmesa->buf, LineStippleMode, gmesa->LineMode);
- }
- if (gmesa->dirty & GAMMA_UPLOAD_TRIMODE) {
- gmesa->dirty &= ~GAMMA_UPLOAD_TRIMODE;
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, TriangleMode, gmesa->TriangleMode);
- }
- if (gmesa->dirty & GAMMA_UPLOAD_FOG) {
- GLchan c[3], col;
- UNCLAMPED_FLOAT_TO_RGB_CHAN( c, gmesa->glCtx->Fog.Color );
- col = gammaPackColor(4, c[0], c[1], c[2], 0);
- gmesa->dirty &= ~GAMMA_UPLOAD_FOG;
- CHECK_DMA_BUFFER(gmesa, 5);
-#if 0
- WRITE(gmesa->buf, FogMode, gmesa->FogMode);
- WRITE(gmesa->buf, FogColor, col);
- WRITEF(gmesa->buf, FStart, gmesa->glCtx->Fog.Start);
-#endif
- WRITEF(gmesa->buf, FogEnd, gmesa->glCtx->Fog.End);
- WRITEF(gmesa->buf, FogDensity, gmesa->glCtx->Fog.Density);
- WRITEF(gmesa->buf, FogScale,
- 1.0f/(gmesa->glCtx->Fog.End - gmesa->glCtx->Fog.Start));
- }
- if (gmesa->dirty & GAMMA_UPLOAD_DITHER) {
- gmesa->dirty &= ~GAMMA_UPLOAD_DITHER;
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, DitherMode, gmesa->DitherMode);
- }
- if (gmesa->dirty & GAMMA_UPLOAD_LOGICOP) {
- gmesa->dirty &= ~GAMMA_UPLOAD_LOGICOP;
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, LogicalOpMode, gmesa->LogicalOpMode);
- }
- if (gmesa->dirty & GAMMA_UPLOAD_CLIP) {
- gmesa->dirty &= ~GAMMA_UPLOAD_CLIP;
- CHECK_DMA_BUFFER(gmesa, 3);
- WRITE(gmesa->buf, ScissorMinXY, gmesa->ScissorMinXY);
- WRITE(gmesa->buf, ScissorMaxXY, gmesa->ScissorMaxXY);
- WRITE(gmesa->buf, ScissorMode, gmesa->ScissorMode);
- }
- if (gmesa->dirty & GAMMA_UPLOAD_MASKS) {
- gmesa->dirty &= ~GAMMA_UPLOAD_MASKS;
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, FBHardwareWriteMask, gmesa->FBHardwareWriteMask);
- }
- if (gmesa->dirty & GAMMA_UPLOAD_ALPHA) {
- gmesa->dirty &= ~GAMMA_UPLOAD_ALPHA;
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, AlphaTestMode, gmesa->AlphaTestMode);
- }
- if (gmesa->dirty & GAMMA_UPLOAD_BLEND) {
- gmesa->dirty &= ~GAMMA_UPLOAD_BLEND;
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, AlphaBlendMode, gmesa->AlphaBlendMode);
- }
- CHECK_DMA_BUFFER(gmesa, 1);
- if (gmesa->glCtx->Color.BlendEnabled || gmesa->glCtx->Color.AlphaEnabled) {
- WRITE(gmesa->buf, FBReadMode, gmesa->FBReadMode | gmesa->AB_FBReadMode_Save);
- } else {
- WRITE(gmesa->buf, FBReadMode, gmesa->FBReadMode);
- }
- if (gmesa->dirty & GAMMA_UPLOAD_LIGHT) {
- gmesa->dirty &= ~GAMMA_UPLOAD_LIGHT;
- CHECK_DMA_BUFFER(gmesa, 2);
- WRITE(gmesa->buf, LightingMode, gmesa->LightingMode);
- WRITE(gmesa->buf, MaterialMode, gmesa->MaterialMode);
- }
- if (gmesa->dirty & GAMMA_UPLOAD_SHADE) {
- gmesa->dirty &= ~GAMMA_UPLOAD_SHADE;
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, ColorDDAMode, gmesa->ColorDDAMode);
- }
- if (gmesa->dirty & GAMMA_UPLOAD_POLYGON) {
- gmesa->dirty &= ~GAMMA_UPLOAD_POLYGON;
- CHECK_DMA_BUFFER(gmesa, 2);
- WRITEF(gmesa->buf, PolygonOffsetBias, gmesa->glCtx->Polygon.OffsetUnits);
- WRITEF(gmesa->buf, PolygonOffsetFactor, gmesa->glCtx->Polygon.OffsetFactor);
- }
- if (gmesa->dirty & GAMMA_UPLOAD_STIPPLE) {
- gmesa->dirty &= ~GAMMA_UPLOAD_STIPPLE;
- CHECK_DMA_BUFFER(gmesa, 33);
- WRITE(gmesa->buf, AreaStippleMode, gmesa->AreaStippleMode);
- WRITE(gmesa->buf, AreaStipplePattern0, gmesa->glCtx->PolygonStipple[0]);
- WRITE(gmesa->buf, AreaStipplePattern1, gmesa->glCtx->PolygonStipple[1]);
- WRITE(gmesa->buf, AreaStipplePattern2, gmesa->glCtx->PolygonStipple[2]);
- WRITE(gmesa->buf, AreaStipplePattern3, gmesa->glCtx->PolygonStipple[3]);
- WRITE(gmesa->buf, AreaStipplePattern4, gmesa->glCtx->PolygonStipple[4]);
- WRITE(gmesa->buf, AreaStipplePattern5, gmesa->glCtx->PolygonStipple[5]);
- WRITE(gmesa->buf, AreaStipplePattern6, gmesa->glCtx->PolygonStipple[6]);
- WRITE(gmesa->buf, AreaStipplePattern7, gmesa->glCtx->PolygonStipple[7]);
- WRITE(gmesa->buf, AreaStipplePattern8, gmesa->glCtx->PolygonStipple[8]);
- WRITE(gmesa->buf, AreaStipplePattern9, gmesa->glCtx->PolygonStipple[9]);
- WRITE(gmesa->buf, AreaStipplePattern10, gmesa->glCtx->PolygonStipple[10]);
- WRITE(gmesa->buf, AreaStipplePattern11, gmesa->glCtx->PolygonStipple[11]);
- WRITE(gmesa->buf, AreaStipplePattern12, gmesa->glCtx->PolygonStipple[12]);
- WRITE(gmesa->buf, AreaStipplePattern13, gmesa->glCtx->PolygonStipple[13]);
- WRITE(gmesa->buf, AreaStipplePattern14, gmesa->glCtx->PolygonStipple[14]);
- WRITE(gmesa->buf, AreaStipplePattern15, gmesa->glCtx->PolygonStipple[15]);
- WRITE(gmesa->buf, AreaStipplePattern16, gmesa->glCtx->PolygonStipple[16]);
- WRITE(gmesa->buf, AreaStipplePattern17, gmesa->glCtx->PolygonStipple[17]);
- WRITE(gmesa->buf, AreaStipplePattern18, gmesa->glCtx->PolygonStipple[18]);
- WRITE(gmesa->buf, AreaStipplePattern19, gmesa->glCtx->PolygonStipple[19]);
- WRITE(gmesa->buf, AreaStipplePattern20, gmesa->glCtx->PolygonStipple[20]);
- WRITE(gmesa->buf, AreaStipplePattern21, gmesa->glCtx->PolygonStipple[21]);
- WRITE(gmesa->buf, AreaStipplePattern22, gmesa->glCtx->PolygonStipple[22]);
- WRITE(gmesa->buf, AreaStipplePattern23, gmesa->glCtx->PolygonStipple[23]);
- WRITE(gmesa->buf, AreaStipplePattern24, gmesa->glCtx->PolygonStipple[24]);
- WRITE(gmesa->buf, AreaStipplePattern25, gmesa->glCtx->PolygonStipple[25]);
- WRITE(gmesa->buf, AreaStipplePattern26, gmesa->glCtx->PolygonStipple[26]);
- WRITE(gmesa->buf, AreaStipplePattern27, gmesa->glCtx->PolygonStipple[27]);
- WRITE(gmesa->buf, AreaStipplePattern28, gmesa->glCtx->PolygonStipple[28]);
- WRITE(gmesa->buf, AreaStipplePattern29, gmesa->glCtx->PolygonStipple[29]);
- WRITE(gmesa->buf, AreaStipplePattern30, gmesa->glCtx->PolygonStipple[30]);
- WRITE(gmesa->buf, AreaStipplePattern31, gmesa->glCtx->PolygonStipple[31]);
- }
- if (gmesa->dirty & GAMMA_UPLOAD_DEPTH) {
- gmesa->dirty &= ~GAMMA_UPLOAD_DEPTH;
- CHECK_DMA_BUFFER(gmesa, 4);
- WRITE(gmesa->buf, DepthMode, gmesa->DepthMode);
- WRITE(gmesa->buf, DeltaMode, gmesa->DeltaMode);
- WRITE(gmesa->buf, GLINTWindow,gmesa->Window | (gmesa->FrameCount << 9));
- WRITE(gmesa->buf, LBReadMode, gmesa->LBReadMode);
- }
- if (gmesa->dirty & GAMMA_UPLOAD_GEOMETRY) {
- gmesa->dirty &= ~GAMMA_UPLOAD_GEOMETRY;
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, GeometryMode, gmesa->GeometryMode);
- }
- if (gmesa->dirty & GAMMA_UPLOAD_TRANSFORM) {
- gmesa->dirty &= ~GAMMA_UPLOAD_TRANSFORM;
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, TransformMode, gmesa->TransformMode);
- }
- if (gmesa->dirty & GAMMA_UPLOAD_TEX0) {
- gammaTextureObjectPtr curTex = gmesa->CurrentTexObj[0];
- gmesa->dirty &= ~GAMMA_UPLOAD_TEX0;
- if (curTex) {
- CHECK_DMA_BUFFER(gmesa, 21);
- WRITE(gmesa->buf, GeometryMode, gmesa->GeometryMode | GM_TextureEnable);
- WRITE(gmesa->buf, DeltaMode, gmesa->DeltaMode | DM_TextureEnable);
- WRITE(gmesa->buf, TextureAddressMode, curTex->TextureAddressMode);
- WRITE(gmesa->buf, TextureReadMode, curTex->TextureReadMode);
- WRITE(gmesa->buf, TextureColorMode, curTex->TextureColorMode);
- WRITE(gmesa->buf, TextureFilterMode, curTex->TextureFilterMode);
- WRITE(gmesa->buf, TextureFormat, curTex->TextureFormat);
- WRITE(gmesa->buf, GLINTBorderColor, curTex->TextureBorderColor);
- WRITE(gmesa->buf, TxBaseAddr0, curTex->TextureBaseAddr[0]);
- WRITE(gmesa->buf, TxBaseAddr1, curTex->TextureBaseAddr[1]);
- WRITE(gmesa->buf, TxBaseAddr2, curTex->TextureBaseAddr[2]);
- WRITE(gmesa->buf, TxBaseAddr3, curTex->TextureBaseAddr[3]);
- WRITE(gmesa->buf, TxBaseAddr4, curTex->TextureBaseAddr[4]);
- WRITE(gmesa->buf, TxBaseAddr5, curTex->TextureBaseAddr[5]);
- WRITE(gmesa->buf, TxBaseAddr6, curTex->TextureBaseAddr[6]);
- WRITE(gmesa->buf, TxBaseAddr7, curTex->TextureBaseAddr[7]);
- WRITE(gmesa->buf, TxBaseAddr8, curTex->TextureBaseAddr[8]);
- WRITE(gmesa->buf, TxBaseAddr9, curTex->TextureBaseAddr[9]);
- WRITE(gmesa->buf, TxBaseAddr10, curTex->TextureBaseAddr[10]);
- WRITE(gmesa->buf, TxBaseAddr11, curTex->TextureBaseAddr[11]);
- WRITE(gmesa->buf, TextureCacheControl, (TCC_Enable | TCC_Invalidate));
- } else {
- CHECK_DMA_BUFFER(gmesa, 6);
- WRITE(gmesa->buf, GeometryMode, gmesa->GeometryMode);
- WRITE(gmesa->buf, DeltaMode, gmesa->DeltaMode);
- WRITE(gmesa->buf, TextureAddressMode, TextureAddressModeDisable);
- WRITE(gmesa->buf, TextureReadMode, TextureReadModeDisable);
- WRITE(gmesa->buf, TextureFilterMode, TextureFilterModeDisable);
- WRITE(gmesa->buf, TextureColorMode, TextureColorModeDisable);
- }
- }
-#ifdef DO_VALIDATE
- PROCESS_DMA_BUFFER_TOP_HALF(gmesa);
-
- DRM_SPINUNLOCK(&gmesa->driScreen->pSAREA->drawable_lock,
- gmesa->driScreen->drawLockID);
- VALIDATE_DRAWABLE_INFO_NO_LOCK_POST(gmesa);
-
- PROCESS_DMA_BUFFER_BOTTOM_HALF(gmesa);
-#endif
-}
-
-void gammaDDUpdateHWState( GLcontext *ctx )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
- int new_state = gmesa->new_state;
-
- if ( new_state )
- {
- FLUSH_BATCH( gmesa );
-
- gmesa->new_state = 0;
-
- /* Update the various parts of the context's state.
- */
- if ( new_state & GAMMA_NEW_ALPHA )
- gammaUpdateAlphaMode( ctx );
-
- if ( new_state & GAMMA_NEW_DEPTH )
- gammaUpdateZMode( ctx );
-
- if ( new_state & GAMMA_NEW_FOG )
- gammaUpdateFogAttrib( ctx );
-
- if ( new_state & GAMMA_NEW_CLIP )
- gammaUpdateClipping( ctx );
-
- if ( new_state & GAMMA_NEW_POLYGON )
- gammaUpdatePolygon( ctx );
-
- if ( new_state & GAMMA_NEW_CULL )
- gammaUpdateCull( ctx );
-
- if ( new_state & GAMMA_NEW_MASKS )
- gammaUpdateMasks( ctx );
-
- if ( new_state & GAMMA_NEW_WINDOW )
- gammaUpdateWindow( ctx );
-
- if ( new_state & GAMMA_NEW_STIPPLE )
- gammaUpdateStipple( ctx );
- }
-
- /* HACK ! */
-
- gammaEmitHwState( gmesa );
-}
-
-
-static void gammaDDUpdateState( GLcontext *ctx, GLuint new_state )
-{
- _swrast_InvalidateState( ctx, new_state );
- _swsetup_InvalidateState( ctx, new_state );
- _vbo_InvalidateState( ctx, new_state );
- _tnl_InvalidateState( ctx, new_state );
- GAMMA_CONTEXT(ctx)->new_gl_state |= new_state;
-}
-
-
-/* Initialize the context's hardware state.
- */
-void gammaDDInitState( gammaContextPtr gmesa )
-{
- gmesa->new_state = 0;
-}
-
-/* Initialize the driver's state functions.
- */
-void gammaDDInitStateFuncs( GLcontext *ctx )
-{
- ctx->Driver.UpdateState = gammaDDUpdateState;
-
- ctx->Driver.Clear = gammaDDClear;
- ctx->Driver.ClearIndex = NULL;
- ctx->Driver.ClearColor = gammaDDClearColor;
- ctx->Driver.DrawBuffer = gammaDDDrawBuffer;
- ctx->Driver.ReadBuffer = gammaDDReadBuffer;
-
- ctx->Driver.IndexMask = NULL;
- ctx->Driver.ColorMask = gammaDDColorMask;
-
- ctx->Driver.AlphaFunc = gammaDDAlphaFunc;
- ctx->Driver.BlendEquationSeparate = gammaDDBlendEquationSeparate;
- ctx->Driver.BlendFuncSeparate = gammaDDBlendFuncSeparate;
- ctx->Driver.ClearDepth = gammaDDClearDepth;
- ctx->Driver.CullFace = gammaDDCullFace;
- ctx->Driver.FrontFace = gammaDDFrontFace;
- ctx->Driver.DepthFunc = gammaDDDepthFunc;
- ctx->Driver.DepthMask = gammaDDDepthMask;
- ctx->Driver.DepthRange = gammaDDDepthRange;
- ctx->Driver.Enable = gammaDDEnable;
- ctx->Driver.Finish = gammaDDFinish;
- ctx->Driver.Flush = gammaDDFlush;
-#if 0
- ctx->Driver.Fogfv = gammaDDFogfv;
-#endif
- ctx->Driver.Hint = NULL;
- ctx->Driver.LineWidth = gammaDDLineWidth;
- ctx->Driver.LineStipple = gammaDDLineStipple;
-#if ENABLELIGHTING
- ctx->Driver.Lightfv = gammaDDLightfv;
- ctx->Driver.LightModelfv = gammaDDLightModelfv;
-#endif
- ctx->Driver.LogicOpcode = gammaDDLogicalOpcode;
- ctx->Driver.PointSize = gammaDDPointSize;
- ctx->Driver.PolygonMode = gammaDDPolygonMode;
- ctx->Driver.PolygonStipple = gammaDDPolygonStipple;
- ctx->Driver.Scissor = gammaDDScissor;
- ctx->Driver.ShadeModel = gammaDDShadeModel;
- ctx->Driver.Viewport = gammaDDViewport;
-}
diff --git a/src/mesa/drivers/dri/gamma/gamma_tex.c b/src/mesa/drivers/dri/gamma/gamma_tex.c
deleted file mode 100644
index bef8cf27dbc..00000000000
--- a/src/mesa/drivers/dri/gamma/gamma_tex.c
+++ /dev/null
@@ -1,434 +0,0 @@
-
-#include "main/glheader.h"
-#include "main/mtypes.h"
-#include "main/colormac.h"
-#include "main/imports.h"
-#include "main/simple_list.h"
-#include "main/enums.h"
-#include "main/mm.h"
-#include "main/texstore.h"
-#include "main/teximage.h"
-#include "main/texobj.h"
-
-#include "swrast/swrast.h"
-
-#include "gamma_context.h"
-
-
-/*
- * Compute the 'S2.4' lod bias factor from the floating point OpenGL bias.
- */
-#if 0
-static GLuint gammaComputeLodBias(GLfloat bias)
-{
- return bias;
-}
-#endif
-
-static void gammaSetTexWrapping(gammaTextureObjectPtr t,
- GLenum wraps, GLenum wrapt)
-{
- uint32_t t1 = t->TextureAddressMode;
- uint32_t t2 = t->TextureReadMode;
-
- t1 &= ~(TAM_SWrap_Mask | TAM_TWrap_Mask);
- t2 &= ~(TRM_UWrap_Mask | TRM_VWrap_Mask);
-
- if (wraps != GL_CLAMP) {
- t1 |= TAM_SWrap_Repeat;
- t2 |= TRM_UWrap_Repeat;
- }
-
- if (wrapt != GL_CLAMP) {
- t1 |= TAM_TWrap_Repeat;
- t2 |= TRM_VWrap_Repeat;
- }
-
- t->TextureAddressMode = t1;
- t->TextureReadMode = t2;
-}
-
-
-static void gammaSetTexFilter(gammaContextPtr gmesa,
- gammaTextureObjectPtr t,
- GLenum minf, GLenum magf,
- GLfloat bias)
-{
- uint32_t t1 = t->TextureAddressMode;
- uint32_t t2 = t->TextureReadMode;
-
- t2 &= ~(TRM_Mag_Mask | TRM_Min_Mask);
-
- switch (minf) {
- case GL_NEAREST:
- t1 &= ~TAM_LODEnable;
- t2 &= ~TRM_MipMapEnable;
- t2 |= TRM_Min_Nearest;
- break;
- case GL_LINEAR:
- t1 &= ~TAM_LODEnable;
- t2 &= ~TRM_MipMapEnable;
- t2 |= TRM_Min_Linear;
- break;
- case GL_NEAREST_MIPMAP_NEAREST:
- t2 |= TRM_Min_NearestMMNearest;
- break;
- case GL_LINEAR_MIPMAP_NEAREST:
- t2 |= TRM_Min_LinearMMNearest;
- break;
- case GL_NEAREST_MIPMAP_LINEAR:
- t2 |= TRM_Min_NearestMMLinear;
- break;
- case GL_LINEAR_MIPMAP_LINEAR:
- t2 |= TRM_Min_LinearMMLinear;
- break;
- default:
- break;
- }
-
- switch (magf) {
- case GL_NEAREST:
- t2 |= TRM_Mag_Nearest;
- break;
- case GL_LINEAR:
- t2 |= TRM_Mag_Linear;
- break;
- default:
- break;
- }
-
- t->TextureAddressMode = t1;
- t->TextureReadMode = t2;
-}
-
-
-static void gammaSetTexBorderColor(gammaContextPtr gmesa,
- gammaTextureObjectPtr t,
- const GLfloat color[4])
-{
- GLubyte c[4];
- CLAMPED_FLOAT_TO_UBYTE(c[0], color[0]);
- CLAMPED_FLOAT_TO_UBYTE(c[1], color[1]);
- CLAMPED_FLOAT_TO_UBYTE(c[2], color[2]);
- CLAMPED_FLOAT_TO_UBYTE(c[3], color[3]);
- t->TextureBorderColor = PACK_COLOR_8888(c[0], c[1], c[2], c[3]);
-}
-
-
-static void gammaTexParameter( GLcontext *ctx, GLenum target,
- struct gl_texture_object *tObj,
- GLenum pname, const GLfloat *params )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
- gammaTextureObjectPtr t = (gammaTextureObjectPtr) tObj->DriverData;
- if (!t)
- return;
-
- /* Can't do the update now as we don't know whether to flush
- * vertices or not. Setting gmesa->new_state means that
- * gammaUpdateTextureState() will be called before any triangles are
- * rendered. If a statechange has occurred, it will be detected at
- * that point, and buffered vertices flushed.
- */
- switch (pname) {
- case GL_TEXTURE_MIN_FILTER:
- case GL_TEXTURE_MAG_FILTER:
- {
- GLfloat bias = ctx->Texture.Unit[ctx->Texture.CurrentUnit].LodBias;
- gammaSetTexFilter( gmesa, t, tObj->MinFilter, tObj->MagFilter, bias );
- }
- break;
-
- case GL_TEXTURE_WRAP_S:
- case GL_TEXTURE_WRAP_T:
- gammaSetTexWrapping( t, tObj->WrapS, tObj->WrapT );
- break;
-
- case GL_TEXTURE_BORDER_COLOR:
- gammaSetTexBorderColor( gmesa, t, tObj->BorderColor.f );
- break;
-
- case GL_TEXTURE_BASE_LEVEL:
- case GL_TEXTURE_MAX_LEVEL:
- case GL_TEXTURE_MIN_LOD:
- case GL_TEXTURE_MAX_LOD:
- /* This isn't the most efficient solution but there doesn't appear to
- * be a nice alternative for Radeon. Since there's no LOD clamping,
- * we just have to rely on loading the right subset of mipmap levels
- * to simulate a clamped LOD.
- */
- gammaSwapOutTexObj( gmesa, t );
- break;
-
- default:
- return;
- }
-
- if (t == gmesa->CurrentTexObj[0])
- gmesa->dirty |= GAMMA_UPLOAD_TEX0;
-
-#if 0
- if (t == gmesa->CurrentTexObj[1]) {
- gmesa->dirty |= GAMMA_UPLOAD_TEX1;
- }
-#endif
-}
-
-
-static void gammaTexEnv( GLcontext *ctx, GLenum target,
- GLenum pname, const GLfloat *param )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT( ctx );
- GLuint unit = ctx->Texture.CurrentUnit;
-
- /* Only one env color. Need a fallback if env colors are different
- * and texture setup references env color in both units.
- */
- switch (pname) {
- case GL_TEXTURE_ENV_COLOR: {
- struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit];
- GLfloat *fc = texUnit->EnvColor;
- GLuint r, g, b, a, col;
- CLAMPED_FLOAT_TO_UBYTE(r, fc[0]);
- CLAMPED_FLOAT_TO_UBYTE(g, fc[1]);
- CLAMPED_FLOAT_TO_UBYTE(b, fc[2]);
- CLAMPED_FLOAT_TO_UBYTE(a, fc[3]);
-
- col = ((a << 24) |
- (r << 16) |
- (g << 8) |
- (b << 0));
-
- break;
- }
- case GL_TEXTURE_ENV_MODE:
- gmesa->TexEnvImageFmt[unit] = 0; /* force recalc of env state */
- break;
-
- case GL_TEXTURE_LOD_BIAS_EXT:
-#if 0 /* ?!?!?! */
- {
- struct gl_texture_object *tObj = ctx->Texture.Unit[unit]._Current;
- gammaTextureObjectPtr t = (gammaTextureObjectPtr) tObj->DriverData;
- (void) t;
- /* XXX Looks like there's something missing here */
- }
-#endif
- break;
-
- default:
- break;
- }
-}
-
-#if 0
-static void gammaTexImage1D( GLcontext *ctx, GLenum target, GLint level,
- GLint internalFormat,
- GLint width, GLint border,
- GLenum format, GLenum type,
- const GLvoid *pixels,
- const struct gl_pixelstore_attrib *pack,
- struct gl_texture_object *texObj,
- struct gl_texture_image *texImage )
-{
- gammaTextureObjectPtr t = (gammaTextureObjectPtr) texObj->DriverData;
- if (t) {
- gammaSwapOutTexObj( GAMMA_CONTEXT(ctx), t );
- }
- _mesa_store_teximage1d( ctx, target, level, internalFormat,
- width, border, format, type,
- pixels, pack, texObj, texImage );
-}
-#endif
-
-#if 0
-static void gammaTexSubImage1D( GLcontext *ctx,
- GLenum target,
- GLint level,
- GLint xoffset,
- GLsizei width,
- GLenum format, GLenum type,
- const GLvoid *pixels,
- const struct gl_pixelstore_attrib *pack,
- struct gl_texture_object *texObj,
- struct gl_texture_image *texImage )
-{
- gammaTextureObjectPtr t = (gammaTextureObjectPtr) texObj->DriverData;
- if (t) {
- gammaSwapOutTexObj( GAMMA_CONTEXT(ctx), t );
- }
- _mesa_store_texsubimage1d(ctx, target, level, xoffset, width,
- format, type, pixels, pack, texObj,
- texImage);
-}
-#endif
-
-static void gammaTexImage2D( GLcontext *ctx, GLenum target, GLint level,
- GLint internalFormat,
- GLint width, GLint height, GLint border,
- GLenum format, GLenum type, const GLvoid *pixels,
- const struct gl_pixelstore_attrib *packing,
- struct gl_texture_object *texObj,
- struct gl_texture_image *texImage )
-{
- gammaTextureObjectPtr t = (gammaTextureObjectPtr) texObj->DriverData;
- if (t) {
- gammaSwapOutTexObj( GAMMA_CONTEXT(ctx), t );
- }
- _mesa_store_teximage2d( ctx, target, level, internalFormat,
- width, height, border, format, type,
- pixels, packing, texObj, texImage );
-}
-
-static void gammaTexSubImage2D( GLcontext *ctx,
- GLenum target,
- GLint level,
- GLint xoffset, GLint yoffset,
- GLsizei width, GLsizei height,
- GLenum format, GLenum type,
- const GLvoid *pixels,
- const struct gl_pixelstore_attrib *packing,
- struct gl_texture_object *texObj,
- struct gl_texture_image *texImage )
-{
- gammaTextureObjectPtr t = (gammaTextureObjectPtr) texObj->DriverData;
- if (t) {
- gammaSwapOutTexObj( GAMMA_CONTEXT(ctx), t );
- }
- _mesa_store_texsubimage2d(ctx, target, level, xoffset, yoffset, width,
- height, format, type, pixels, packing, texObj,
- texImage);
-}
-
-static void gammaBindTexture( GLcontext *ctx, GLenum target,
- struct gl_texture_object *tObj )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT( ctx );
- gammaTextureObjectPtr t = (gammaTextureObjectPtr) tObj->DriverData;
-
- if (!t) {
- GLfloat bias = ctx->Texture.Unit[ctx->Texture.CurrentUnit].LodBias;
- t = CALLOC_STRUCT(gamma_texture_object_t);
-
- /* Initialize non-image-dependent parts of the state:
- */
- t->globj = tObj;
-
- t->TextureAddressMode = TextureAddressModeEnable | TAM_Operation_3D |
- TAM_DY_Enable | TAM_LODEnable;
- t->TextureReadMode = TextureReadModeEnable | TRM_PrimaryCacheEnable |
- TRM_MipMapEnable | TRM_BorderClamp | TRM_Border;
- t->TextureColorMode = TextureColorModeEnable;
- t->TextureFilterMode = TextureFilterModeEnable;
-
- if (target == GL_TEXTURE_2D) {
- t->TextureAddressMode |= TAM_TexMapType_2D;
- t->TextureReadMode |= TRM_TexMapType_2D;
- }
- else if (target == GL_TEXTURE_1D) {
- t->TextureAddressMode |= TAM_TexMapType_1D;
- t->TextureReadMode |= TRM_TexMapType_1D;
- }
-
- t->TextureColorMode = TextureColorModeEnable;
-
- t->TextureFilterMode = TextureFilterModeEnable;
-
-#ifdef MESA_LITTLE_ENDIAN
- t->TextureFormat = (TF_LittleEndian |
-#else
- t->TextureFormat = (TF_BigEndian |
-#endif
- TF_ColorOrder_RGB |
- TF_OutputFmt_Texel);
-
- t->dirty_images = ~0;
-
- tObj->DriverData = t;
- make_empty_list( t );
-
- gammaSetTexWrapping( t, tObj->WrapS, tObj->WrapT );
- gammaSetTexFilter( gmesa, t, tObj->MinFilter, tObj->MagFilter, bias );
- gammaSetTexBorderColor( gmesa, t, tObj->BorderColor.f );
- }
-}
-
-static void gammaDeleteTexture( GLcontext *ctx, struct gl_texture_object *tObj )
-{
- gammaTextureObjectPtr t = (gammaTextureObjectPtr)tObj->DriverData;
-
- if (t) {
- gammaContextPtr gmesa = GAMMA_CONTEXT( ctx );
-#if 0
- if (gmesa)
- GAMMA_FIREVERTICES( gmesa );
-#endif
- gammaDestroyTexObj( gmesa, t );
- tObj->DriverData = 0;
- }
- /* Free mipmap images and the texture object itself */
- _mesa_delete_texture_object(ctx, tObj);
-}
-
-static GLboolean gammaIsTextureResident( GLcontext *ctx,
- struct gl_texture_object *tObj )
-{
- gammaTextureObjectPtr t = (gammaTextureObjectPtr)tObj->DriverData;
- return t && t->MemBlock;
-}
-
-#ifdef UNUSED
-/**
- * Allocate a new texture object.
- * Called via ctx->Driver.NewTextureObject.
- * Note: this function will be called during context creation to
- * allocate the default texture objects.
- * Note: we could use containment here to 'derive' the driver-specific
- * texture object from the core mesa gl_texture_object. Not done at this time.
- */
-static struct gl_texture_object *
-gammaNewTextureObject( GLcontext *ctx, GLuint name, GLenum target )
-{
- struct gl_texture_object *obj;
- obj = _mesa_new_texture_object(ctx, name, target);
- return obj;
-}
-#endif
-
-void gammaInitTextureObjects( GLcontext *ctx )
-{
- struct gl_texture_object *texObj;
- GLuint tmp = ctx->Texture.CurrentUnit;
-
- ctx->Texture.CurrentUnit = 0;
-
- texObj = ctx->Texture.Unit[0].CurrentTex[TEXTURE_1D_INDEX];
- gammaBindTexture( ctx, GL_TEXTURE_1D, texObj );
-
- texObj = ctx->Texture.Unit[0].CurrentTex[TEXTURE_2D_INDEX];
- gammaBindTexture( ctx, GL_TEXTURE_2D, texObj );
-
-#if 0
- ctx->Texture.CurrentUnit = 1;
-
- texObj = ctx->Texture.Unit[1].CurrentTex[TEXTURE_1D_INDEX];
- gammaBindTexture( ctx, GL_TEXTURE_1D, texObj );
-
- texObj = ctx->Texture.Unit[1].CurrentTex[TEXTURE_2D_INDEX];
- gammaBindTexture( ctx, GL_TEXTURE_2D, texObj );
-#endif
-
- ctx->Texture.CurrentUnit = tmp;
-}
-
-
-void gammaDDInitTextureFuncs( struct dd_function_table *functions )
-{
- functions->TexEnv = gammaTexEnv;
- functions->TexImage2D = gammaTexImage2D;
- functions->TexSubImage2D = gammaTexSubImage2D;
- functions->BindTexture = gammaBindTexture;
- functions->DeleteTexture = gammaDeleteTexture;
- functions->TexParameter = gammaTexParameter;
- functions->IsTextureResident = gammaIsTextureResident;
-}
diff --git a/src/mesa/drivers/dri/gamma/gamma_texmem.c b/src/mesa/drivers/dri/gamma/gamma_texmem.c
deleted file mode 100644
index 45a0c0148e3..00000000000
--- a/src/mesa/drivers/dri/gamma/gamma_texmem.c
+++ /dev/null
@@ -1,535 +0,0 @@
-
-#include <stdlib.h>
-#include <stdio.h>
-
-#include "main/glheader.h"
-#include "main/colormac.h"
-#include "main/macros.h"
-#include "main/mtypes.h"
-#include "main/simple_list.h"
-#include "main/enums.h"
-
-#include "main/mm.h"
-#include "glint_dri.h"
-#include "gamma_context.h"
-#include "gamma_lock.h"
-#include "gamma_macros.h"
-
-void gammaDestroyTexObj(gammaContextPtr gmesa, gammaTextureObjectPtr t)
-{
- if (!t) return;
-
- /* This is sad - need to sync *in case* we upload a texture
- * to this newly free memory...
- */
- if (t->MemBlock) {
- mmFreeMem(t->MemBlock);
- t->MemBlock = 0;
-
- if (gmesa && t->age > gmesa->dirtyAge)
- gmesa->dirtyAge = t->age;
- }
-
- if (t->globj)
- t->globj->DriverData = 0;
-
- if (gmesa) {
- if (gmesa->CurrentTexObj[0] == t) {
- gmesa->CurrentTexObj[0] = 0;
- gmesa->dirty &= ~GAMMA_UPLOAD_TEX0;
- }
-
-#if 0
- if (gmesa->CurrentTexObj[1] == t) {
- gmesa->CurrentTexObj[1] = 0;
- gmesa->dirty &= ~GAMMA_UPLOAD_TEX1;
- }
-#endif
- }
-
- remove_from_list(t);
- free(t);
-}
-
-
-void gammaSwapOutTexObj(gammaContextPtr gmesa, gammaTextureObjectPtr t)
-{
-/* fprintf(stderr, "%s\n", __FUNCTION__); */
-
- if (t->MemBlock) {
- mmFreeMem(t->MemBlock);
- t->MemBlock = 0;
-
- if (t->age > gmesa->dirtyAge)
- gmesa->dirtyAge = t->age;
- }
-
- t->dirty_images = ~0;
- move_to_tail(&(gmesa->SwappedOut), t);
-}
-
-
-
-/* Upload an image from mesa's internal copy.
- */
-static void gammaUploadTexLevel( gammaContextPtr gmesa, gammaTextureObjectPtr t, int level )
-{
- const struct gl_texture_image *image = t->image[level].image;
- int i,j;
- int l2d;
-#if 0
- int offset = 0;
-#endif
- int words, depthLog2;
-
- /* fprintf(stderr, "%s\n", __FUNCTION__); */
-
- l2d = 5; /* 32bits per texel == 1<<5 */
-
- if (level == 0) {
- t->TextureAddressMode &= ~(TAM_WidthMask | TAM_HeightMask);
- t->TextureAddressMode |= (image->WidthLog2 << 9) |
- (image->HeightLog2 << 13);
- t->TextureReadMode &= ~(TRM_WidthMask | TRM_HeightMask |
- TRM_DepthMask | TRM_Border |
- TRM_Patch);
- t->TextureReadMode |= (image->WidthLog2 << 1) |
- (image->HeightLog2 << 5) |
- (l2d << 9);
- t->TextureFormat &= ~(TF_CompnentsMask | TF_OneCompFmt_Mask);
- }
-
- t->TextureBaseAddr[level] = /* ??? */
- (unsigned long)(t->image[level].offset + t->BufAddr) << 5;
-
- CALC_LOG2(depthLog2, 1<<l2d);
- words = (image->Width * image->Height) >> (5-depthLog2);
-
- CHECK_DMA_BUFFER(gmesa, 3);
- WRITE(gmesa->buf, LBWindowBase, t->TextureBaseAddr[level] >> 5);
- WRITE(gmesa->buf, TextureCacheControl, (TCC_Enable | TCC_Invalidate));
- WRITE(gmesa->buf, WaitForCompletion, 0);
- FLUSH_DMA_BUFFER(gmesa);
-
- switch (t->image[level].internalFormat) {
- case GL_RGB:
- case 3:
- {
- GLubyte *src = (GLubyte *)image->Data;
-
- if (level == 0)
- t->TextureFormat |= TF_Compnents_3;
-
-#if 0 /* This is the texture download code we SHOULD be using */
- /* In the routines below, but this causes an DMA overrun - WHY ? */
- while (offset < words) {
- int count = gmesa->bufSize;
- int i;
- count -= 3;
- if (count > words-offset) count = words-offset;
-
- gmesa->buf->i = GlintTextureDownloadOffsetTag;
- gmesa->buf++;
- gmesa->buf->i = offset;
- gmesa->buf++;
- gmesa->buf->i = (GlintTextureDataTag | ((count-1) << 16));
- gmesa->buf++;
-
- for (i = 0; i < count; i++) {
- gmesa->buf->i = PACK_COLOR_565(src[0],src[1],src[2]);
- gmesa->buf++;
- src += 3;
- }
-
- gmesa->bufCount = count+3; /* texture data + 3 values */
- offset += count;
-
- FLUSH_DMA_BUFFER(gmesa);
- }
-#else
- /* The UGLY way, and SLOW !, but the above sometimes causes
- * a DMA overrun error ??? FIXME ! */
-
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, TextureDownloadOffset, 0);
- for (i = 0; i < words; i++) {
- unsigned int data;
- data = PACK_COLOR_565(src[0],src[1],src[2]);
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, TextureData, data);
- src += 3;
- }
- FLUSH_DMA_BUFFER(gmesa);
-#endif
- }
- break;
-
- case GL_RGBA:
- case 4:
- {
- GLubyte *src = (GLubyte *)image->Data;
-
- if (level == 0)
- t->TextureFormat |= TF_Compnents_4;
-
- /* The UGLY way, and SLOW !, but the above sometimes causes
- * a DMA overrun error ??? FIXME ! */
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, TextureDownloadOffset, 0);
- for (i = 0; i < words; i++) {
- unsigned int data;
- data = PACK_COLOR_8888(src[0],src[1],src[2],src[3]);
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, TextureData, data);
- src += 4;
- }
- FLUSH_DMA_BUFFER(gmesa);
- }
- break;
-
- case GL_LUMINANCE:
- {
- GLubyte *src = (GLubyte *)image->Data;
-
- if (level == 0)
- t->TextureFormat |= TF_Compnents_1 | TF_OneCompFmt_Lum;
-
- /* The UGLY way, and SLOW !, but the above sometimes causes
- * a DMA overrun error ??? FIXME ! */
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, TextureDownloadOffset, 0);
- for (i = 0; i < words; i++) {
- unsigned int data;
- data = PACK_COLOR_888(src[0],src[0],src[0]);
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, TextureData, data);
- src ++;
- }
- FLUSH_DMA_BUFFER(gmesa);
- }
- break;
-
- case GL_INTENSITY:
- {
- GLubyte *src = (GLubyte *)image->Data;
-
- if (level == 0)
- t->TextureFormat |= TF_Compnents_1 | TF_OneCompFmt_Intensity;
-
- /* The UGLY way, and SLOW !, but the above sometimes causes
- * a DMA overrun error ??? FIXME ! */
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, TextureDownloadOffset, 0);
- for (i = 0; i < words; i++) {
- unsigned int data;
- data = PACK_COLOR_8888(src[0],src[0],src[0],src[0]);
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, TextureData, data);
- src ++;
- }
- FLUSH_DMA_BUFFER(gmesa);
- }
- break;
-
- case GL_LUMINANCE_ALPHA:
- {
- GLubyte *src = (GLubyte *)image->Data;
-
- if (level == 0)
- t->TextureFormat |= TF_Compnents_2;
-
- /* The UGLY way, and SLOW !, but the above sometimes causes
- * a DMA overrun error ??? FIXME ! */
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, TextureDownloadOffset, 0);
- for (i = 0; i < words; i++) {
- unsigned int data;
- data = PACK_COLOR_8888(src[0],src[0],src[0],src[1]);
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, TextureData, data);
- src += 2;
- }
- FLUSH_DMA_BUFFER(gmesa);
- }
- break;
-
- case GL_ALPHA:
- {
- GLubyte *src = (GLubyte *)image->Data;
-
- if (level == 0)
- t->TextureFormat |= TF_Compnents_1 | TF_OneCompFmt_Alpha;
-
- /* The UGLY way, and SLOW !, but the above sometimes causes
- * a DMA overrun error ??? FIXME ! */
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, TextureDownloadOffset, 0);
- for (i = 0; i < words; i++) {
- unsigned int data;
- data = PACK_COLOR_8888(255,255,255,src[0]);
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, TextureData, data);
- src += 1;
- }
- FLUSH_DMA_BUFFER(gmesa);
- }
- break;
-
- /* TODO: Translate color indices *now*:
- */
- case GL_COLOR_INDEX:
- {
- GLubyte *dst = (GLubyte *)(t->BufAddr + t->image[level].offset);
- GLubyte *src = (GLubyte *)image->Data;
-
- for (j = 0 ; j < image->Height ; j++, dst += t->Pitch) {
- for (i = 0 ; i < image->Width ; i++) {
- dst[i] = src[0];
- src += 1;
- }
- }
- }
- break;
-
- default:
- fprintf(stderr, "Not supported texture format %s\n",
- _mesa_lookup_enum_by_nr(image->Format));
- }
-
- CHECK_DMA_BUFFER(gmesa, 2);
- WRITE(gmesa->buf, WaitForCompletion, 0);
- WRITE(gmesa->buf, LBWindowBase, gmesa->LBWindowBase);
-}
-
-void gammaPrintLocalLRU( gammaContextPtr gmesa )
-{
- gammaTextureObjectPtr t;
- int sz = 1 << (gmesa->gammaScreen->logTextureGranularity);
-
- foreach( t, &gmesa->TexObjList ) {
- if (!t->globj)
- fprintf(stderr, "Placeholder %d at %x sz %x\n",
- t->MemBlock->ofs / sz,
- t->MemBlock->ofs,
- t->MemBlock->size);
- else
- fprintf(stderr, "Texture at %x sz %x\n",
- t->MemBlock->ofs,
- t->MemBlock->size);
-
- }
-}
-
-void gammaPrintGlobalLRU( gammaContextPtr gmesa )
-{
- int i, j;
- GAMMATextureRegionPtr list = gmesa->sarea->texList;
-
- for (i = 0, j = GAMMA_NR_TEX_REGIONS ; i < GAMMA_NR_TEX_REGIONS ; i++) {
- fprintf(stderr, "list[%d] age %d next %d prev %d\n",
- j, list[j].age, list[j].next, list[j].prev);
- j = list[j].next;
- if (j == GAMMA_NR_TEX_REGIONS) break;
- }
-
- if (j != GAMMA_NR_TEX_REGIONS)
- fprintf(stderr, "Loop detected in global LRU\n");
-}
-
-
-void gammaResetGlobalLRU( gammaContextPtr gmesa )
-{
- GAMMATextureRegionPtr list = gmesa->sarea->texList;
- int sz = 1 << gmesa->gammaScreen->logTextureGranularity;
- int i;
-
- /* (Re)initialize the global circular LRU list. The last element
- * in the array (GAMMA_NR_TEX_REGIONS) is the sentinal. Keeping it
- * at the end of the array allows it to be addressed rationally
- * when looking up objects at a particular location in texture
- * memory.
- */
- for (i = 0 ; (i+1) * sz <= gmesa->gammaScreen->textureSize ; i++) {
- list[i].prev = i-1;
- list[i].next = i+1;
- list[i].age = 0;
- }
-
- i--;
- list[0].prev = GAMMA_NR_TEX_REGIONS;
- list[i].prev = i-1;
- list[i].next = GAMMA_NR_TEX_REGIONS;
- list[GAMMA_NR_TEX_REGIONS].prev = i;
- list[GAMMA_NR_TEX_REGIONS].next = 0;
- gmesa->sarea->texAge = 0;
-}
-
-
-void gammaUpdateTexLRU( gammaContextPtr gmesa, gammaTextureObjectPtr t )
-{
- int i;
- int logsz = gmesa->gammaScreen->logTextureGranularity;
- int start = t->MemBlock->ofs >> logsz;
- int end = (t->MemBlock->ofs + t->MemBlock->size - 1) >> logsz;
- GAMMATextureRegionPtr list = gmesa->sarea->texList;
-
- gmesa->texAge = ++gmesa->sarea->texAge;
-
- /* Update our local LRU
- */
- move_to_head( &(gmesa->TexObjList), t );
-
- /* Update the global LRU
- */
- for (i = start ; i <= end ; i++) {
-
- list[i].in_use = 1;
- list[i].age = gmesa->texAge;
-
- /* remove_from_list(i)
- */
- list[(unsigned)list[i].next].prev = list[i].prev;
- list[(unsigned)list[i].prev].next = list[i].next;
-
- /* insert_at_head(list, i)
- */
- list[i].prev = GAMMA_NR_TEX_REGIONS;
- list[i].next = list[GAMMA_NR_TEX_REGIONS].next;
- list[(unsigned)list[GAMMA_NR_TEX_REGIONS].next].prev = i;
- list[GAMMA_NR_TEX_REGIONS].next = i;
- }
-}
-
-
-/* Called for every shared texture region which has increased in age
- * since we last held the lock.
- *
- * Figures out which of our textures have been ejected by other clients,
- * and pushes a placeholder texture onto the LRU list to represent
- * the other client's textures.
- */
-void gammaTexturesGone( gammaContextPtr gmesa,
- GLuint offset,
- GLuint size,
- GLuint in_use )
-{
- gammaTextureObjectPtr t, tmp;
-
- foreach_s ( t, tmp, &gmesa->TexObjList ) {
-
- if (t->MemBlock->ofs >= offset + size ||
- t->MemBlock->ofs + t->MemBlock->size <= offset)
- continue;
-
- /* It overlaps - kick it off. Need to hold onto the currently bound
- * objects, however.
- */
- gammaSwapOutTexObj( gmesa, t );
- }
-
- if (in_use) {
- t = (gammaTextureObjectPtr) calloc(1,sizeof(*t));
- if (!t) return;
-
- t->MemBlock = mmAllocMem( gmesa->texHeap, size, 0, offset);
- insert_at_head( &gmesa->TexObjList, t );
- }
-
- /* Reload any lost textures referenced by current vertex buffer.
- */
-#if 0
- if (gmesa->vertex_buffer) {
- int i, j;
-
- fprintf(stderr, "\n\nreload tex\n");
-
- for (i = 0 ; i < gmesa->statenr ; i++) {
- for (j = 0 ; j < 2 ; j++) {
- gammaTextureObjectPtr t = gmesa->state_tex[j][i];
- if (t) {
- if (t->MemBlock == 0)
- gammaUploadTexImages( gmesa, t );
- }
- }
- }
-
- /* Hard to do this with the lock held:
- */
-/* GAMMA_FIREVERTICES( gmesa ); */
- }
-#endif
-}
-
-
-
-
-
-/* This is called with the lock held. May have to eject our own and/or
- * other client's texture objects to make room for the upload.
- */
-void gammaUploadTexImages( gammaContextPtr gmesa, gammaTextureObjectPtr t )
-{
- int i;
- int ofs;
- int numLevels;
-
- /* /fprintf(stderr, "%s\n", __FUNCTION__); */
-#if 0
- LOCK_HARDWARE( gmesa );
-#endif
-
- /* Do we need to eject LRU texture objects?
- */
- if (!t->MemBlock) {
- while (1)
- {
- t->MemBlock = mmAllocMem( gmesa->texHeap, t->totalSize, 12, 0 );
- if (t->MemBlock)
- break;
-
- if (gmesa->TexObjList.prev == gmesa->CurrentTexObj[0] ||
- gmesa->TexObjList.prev == gmesa->CurrentTexObj[1]) {
- fprintf(stderr, "Hit bound texture in upload\n");
- gammaPrintLocalLRU( gmesa );
- return;
- }
-
- if (gmesa->TexObjList.prev == &(gmesa->TexObjList)) {
- fprintf(stderr, "Failed to upload texture, sz %d\n", t->totalSize);
- mmDumpMemInfo( gmesa->texHeap );
- return;
- }
-
- gammaSwapOutTexObj( gmesa, gmesa->TexObjList.prev );
- }
-
- ofs = t->MemBlock->ofs;
- t->BufAddr = (char *)(unsigned long)(gmesa->LBWindowBase + ofs); /* ??? */
-
- if (t == gmesa->CurrentTexObj[0])
- gmesa->dirty |= GAMMA_UPLOAD_TEX0;
-
-#if 0
- if (t == gmesa->CurrentTexObj[1])
- gmesa->dirty |= GAMMA_UPLOAD_TEX1;
-#endif
-
- gammaUpdateTexLRU( gmesa, t );
- }
-
-#if 0
- if (gmesa->dirtyAge >= GET_DISPATCH_AGE(gmesa))
- gammaWaitAgeLocked( gmesa, gmesa->dirtyAge );
-#endif
-
- numLevels = t->lastLevel - t->firstLevel + 1;
- for (i = 0 ; i < numLevels ; i++)
- if (t->dirty_images & (1<<i))
- gammaUploadTexLevel( gmesa, t, i );
-
- t->dirty_images = 0;
-
-#if 0
- UNLOCK_HARDWARE( gmesa );
-#endif
-}
diff --git a/src/mesa/drivers/dri/gamma/gamma_texstate.c b/src/mesa/drivers/dri/gamma/gamma_texstate.c
deleted file mode 100644
index 46f39135dc6..00000000000
--- a/src/mesa/drivers/dri/gamma/gamma_texstate.c
+++ /dev/null
@@ -1,215 +0,0 @@
-
-#include <stdlib.h>
-#include <stdio.h>
-
-#include "main/glheader.h"
-#include "main/macros.h"
-#include "main/mtypes.h"
-#include "main/simple_list.h"
-#include "main/enums.h"
-
-#include "main/mm.h"
-#include "gamma_context.h"
-
-static void gammaSetTexImages( gammaContextPtr gmesa,
- struct gl_texture_object *tObj )
-{
- GLuint height, width, pitch, i, log_pitch;
- gammaTextureObjectPtr t = (gammaTextureObjectPtr) tObj->DriverData;
- const struct gl_texture_image *baseImage = tObj->Image[0][tObj->BaseLevel];
- GLint firstLevel, lastLevel, numLevels;
- GLint log2Width, log2Height;
-
- /* fprintf(stderr, "%s\n", __FUNCTION__); */
-
- t->texelBytes = 2;
-
- /* Compute which mipmap levels we really want to send to the hardware.
- * This depends on the base image size, GL_TEXTURE_MIN_LOD,
- * GL_TEXTURE_MAX_LOD, GL_TEXTURE_BASE_LEVEL, and GL_TEXTURE_MAX_LEVEL.
- * Yes, this looks overly complicated, but it's all needed.
- */
- if (tObj->MinFilter == GL_LINEAR || tObj->MinFilter == GL_NEAREST) {
- firstLevel = lastLevel = tObj->BaseLevel;
- }
- else {
- firstLevel = tObj->BaseLevel + (GLint) (tObj->MinLod + 0.5);
- firstLevel = MAX2(firstLevel, tObj->BaseLevel);
- lastLevel = tObj->BaseLevel + (GLint) (tObj->MaxLod + 0.5);
- lastLevel = MAX2(lastLevel, tObj->BaseLevel);
- lastLevel = MIN2(lastLevel, tObj->BaseLevel + baseImage->MaxLog2);
- lastLevel = MIN2(lastLevel, tObj->MaxLevel);
- lastLevel = MAX2(firstLevel, lastLevel); /* need at least one level */
- }
-
- /* save these values */
- t->firstLevel = firstLevel;
- t->lastLevel = lastLevel;
-
- numLevels = lastLevel - firstLevel + 1;
-
- log2Width = tObj->Image[0][firstLevel]->WidthLog2;
- log2Height = tObj->Image[0][firstLevel]->HeightLog2;
-
-
- /* Figure out the amount of memory required to hold all the mipmap
- * levels. Choose the smallest pitch to accomodate the largest
- * mipmap:
- */
- width = tObj->Image[0][firstLevel]->Width * t->texelBytes;
- for (pitch = 32, log_pitch=2 ; pitch < width ; pitch *= 2 )
- log_pitch++;
-
- /* All images must be loaded at this pitch. Count the number of
- * lines required:
- */
- for ( height = i = 0 ; i < numLevels ; i++ ) {
- t->image[i].image = tObj->Image[0][firstLevel + i];
- t->image[i].offset = height * pitch;
- t->image[i].internalFormat = baseImage->Format;
- height += t->image[i].image->Height;
- t->TextureBaseAddr[i] = /* ??? */
- (unsigned long)(t->image[i].offset + t->BufAddr) << 5;
-
- }
-
- t->Pitch = pitch;
- t->totalSize = height*pitch;
- t->max_level = i-1;
- gmesa->dirty |= GAMMA_UPLOAD_TEX0 /* | GAMMA_UPLOAD_TEX1*/;
-
- gammaUploadTexImages( gmesa, t );
-}
-
-static void gammaUpdateTexEnv( GLcontext *ctx, GLuint unit )
-{
- const struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit];
- const struct gl_texture_object *tObj = texUnit->_Current;
- const GLuint format = tObj->Image[0][tObj->BaseLevel]->Format;
- gammaTextureObjectPtr t = (gammaTextureObjectPtr)tObj->DriverData;
- GLuint tc;
-
- /* fprintf(stderr, "%s\n", __FUNCTION__); */
-
- tc = t->TextureColorMode & ~(TCM_BaseFormatMask | TCM_ApplicationMask);
-
- switch (format) {
- case GL_RGB:
- tc |= TCM_BaseFormat_RGB;
- break;
- case GL_LUMINANCE:
- tc |= TCM_BaseFormat_Lum;
- break;
- case GL_ALPHA:
- tc |= TCM_BaseFormat_Alpha;
- break;
- case GL_LUMINANCE_ALPHA:
- tc |= TCM_BaseFormat_LumAlpha;
- break;
- case GL_INTENSITY:
- tc |= TCM_BaseFormat_Intensity;
- break;
- case GL_RGBA:
- tc |= TCM_BaseFormat_RGBA;
- break;
- case GL_COLOR_INDEX:
- break;
- }
-
- switch (texUnit->EnvMode) {
- case GL_REPLACE:
- tc |= TCM_Replace;
- break;
- case GL_MODULATE:
- tc |= TCM_Modulate;
- break;
- case GL_ADD:
- /* do nothing ???*/
- break;
- case GL_DECAL:
- tc |= TCM_Decal;
- break;
- case GL_BLEND:
- tc |= TCM_Blend;
- break;
- default:
- fprintf(stderr, "unknown tex env mode");
- return;
- }
-
- t->TextureColorMode = tc;
-}
-
-
-
-
-static void gammaUpdateTexUnit( GLcontext *ctx, GLuint unit )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
- struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit];
-
- /* fprintf(stderr, "%s\n", __FUNCTION__); */
-
- if (texUnit->_ReallyEnabled == TEXTURE_2D_BIT)
- {
- struct gl_texture_object *tObj = texUnit->_Current;
- gammaTextureObjectPtr t = (gammaTextureObjectPtr)tObj->DriverData;
-
- /* Upload teximages (not pipelined)
- */
- if (t->dirty_images) {
- gammaSetTexImages( gmesa, tObj );
- if (!t->MemBlock) {
- FALLBACK( gmesa, GAMMA_FALLBACK_TEXTURE, GL_TRUE );
- return;
- }
- }
-
-#if 0
- if (tObj->Image[0][tObj->BaseLevel]->Border > 0) {
- FALLBACK( gmesa, GAMMA_FALLBACK_TEXTURE, GL_TRUE );
- return;
- }
-#endif
-
- /* Update state if this is a different texture object to last
- * time.
- */
- if (gmesa->CurrentTexObj[unit] != t) {
- gmesa->dirty |= GAMMA_UPLOAD_TEX0 /* << unit */;
- gmesa->CurrentTexObj[unit] = t;
- gammaUpdateTexLRU( gmesa, t ); /* done too often */
- }
-
- /* Update texture environment if texture object image format or
- * texture environment state has changed.
- */
- if (tObj->Image[0][tObj->BaseLevel]->Format != gmesa->TexEnvImageFmt[unit]) {
- gmesa->TexEnvImageFmt[unit] = tObj->Image[0][tObj->BaseLevel]->Format;
- gammaUpdateTexEnv( ctx, unit );
- }
- }
- else if (texUnit->_ReallyEnabled) {
- FALLBACK( gmesa, GAMMA_FALLBACK_TEXTURE, GL_TRUE );
- }
- else /*if (gmesa->CurrentTexObj[unit])*/ {
- gmesa->CurrentTexObj[unit] = 0;
- gmesa->TexEnvImageFmt[unit] = 0;
- gmesa->dirty &= ~(GAMMA_UPLOAD_TEX0<<unit);
- }
-}
-
-
-void gammaUpdateTextureState( GLcontext *ctx )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
- /* fprintf(stderr, "%s\n", __FUNCTION__); */
- FALLBACK( gmesa, GAMMA_FALLBACK_TEXTURE, GL_FALSE );
- gammaUpdateTexUnit( ctx, 0 );
-#if 0
- gammaUpdateTexUnit( ctx, 1 );
-#endif
-}
-
-
-
diff --git a/src/mesa/drivers/dri/gamma/gamma_tris.c b/src/mesa/drivers/dri/gamma/gamma_tris.c
deleted file mode 100644
index babe964951b..00000000000
--- a/src/mesa/drivers/dri/gamma/gamma_tris.c
+++ /dev/null
@@ -1,660 +0,0 @@
-/*
- * Copyright 2001 by Alan Hourihane.
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Alan Hourihane not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Alan Hourihane makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * ALAN HOURIHANE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL ALAN HOURIHANE BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- * Authors: Alan Hourihane, <[email protected]>
- * Keith Whitwell, <[email protected]>
- *
- * 3DLabs Gamma driver.
- */
-
-#include "gamma_context.h"
-#include "gamma_macros.h"
-#include "gamma_vb.h"
-#include "gamma_tris.h"
-
-#include "main/glheader.h"
-#include "main/mtypes.h"
-#include "main/macros.h"
-#include "main/colormac.h"
-
-#include "swrast/swrast.h"
-#include "swrast_setup/swrast_setup.h"
-#include "tnl/tnl.h"
-#include "tnl/t_context.h"
-#include "tnl/t_pipeline.h"
-
-
-/***********************************************************************
- * Build hardware rasterization functions *
- ***********************************************************************/
-
-#define GAMMA_RAST_ALPHA_BIT 0x01
-#define GAMMA_RAST_TEX_BIT 0x02
-#define GAMMA_RAST_FLAT_BIT 0x04
-
-static gamma_point_func gamma_point_tab[0x8];
-static gamma_line_func gamma_line_tab[0x8];
-static gamma_tri_func gamma_tri_tab[0x8];
-static gamma_quad_func gamma_quad_tab[0x8];
-
-#define IND (0)
-#define TAG(x) x
-#include "gamma_tritmp.h"
-
-#define IND (GAMMA_RAST_ALPHA_BIT)
-#define TAG(x) x##_alpha
-#include "gamma_tritmp.h"
-
-#define IND (GAMMA_RAST_TEX_BIT)
-#define TAG(x) x##_tex
-#include "gamma_tritmp.h"
-
-#define IND (GAMMA_RAST_ALPHA_BIT|GAMMA_RAST_TEX_BIT)
-#define TAG(x) x##_alpha_tex
-#include "gamma_tritmp.h"
-
-#define IND (GAMMA_RAST_FLAT_BIT)
-#define TAG(x) x##_flat
-#include "gamma_tritmp.h"
-
-#define IND (GAMMA_RAST_ALPHA_BIT|GAMMA_RAST_FLAT_BIT)
-#define TAG(x) x##_alpha_flat
-#include "gamma_tritmp.h"
-
-#define IND (GAMMA_RAST_TEX_BIT|GAMMA_RAST_FLAT_BIT)
-#define TAG(x) x##_tex_flat
-#include "gamma_tritmp.h"
-
-#define IND (GAMMA_RAST_ALPHA_BIT|GAMMA_RAST_TEX_BIT|GAMMA_RAST_FLAT_BIT)
-#define TAG(x) x##_alpha_tex_flat
-#include "gamma_tritmp.h"
-
-
-static void init_rast_tab( void )
-{
- gamma_init();
- gamma_init_alpha();
- gamma_init_tex();
- gamma_init_alpha_tex();
- gamma_init_flat();
- gamma_init_alpha_flat();
- gamma_init_tex_flat();
- gamma_init_alpha_tex_flat();
-}
-
-/***********************************************************************
- * Rasterization fallback helpers *
- ***********************************************************************/
-
-
-/* This code is hit only when a mix of accelerated and unaccelerated
- * primitives are being drawn, and only for the unaccelerated
- * primitives.
- */
-static void
-gamma_fallback_quad( gammaContextPtr gmesa,
- const gammaVertex *v0,
- const gammaVertex *v1,
- const gammaVertex *v2,
- const gammaVertex *v3 )
-{
- GLcontext *ctx = gmesa->glCtx;
- SWvertex v[4];
- gamma_translate_vertex( ctx, v0, &v[0] );
- gamma_translate_vertex( ctx, v1, &v[1] );
- gamma_translate_vertex( ctx, v2, &v[2] );
- gamma_translate_vertex( ctx, v3, &v[3] );
- _swrast_Quad( ctx, &v[0], &v[1], &v[2], &v[3] );
-}
-
-static void
-gamma_fallback_tri( gammaContextPtr gmesa,
- const gammaVertex *v0,
- const gammaVertex *v1,
- const gammaVertex *v2 )
-{
- GLcontext *ctx = gmesa->glCtx;
- SWvertex v[3];
- gamma_translate_vertex( ctx, v0, &v[0] );
- gamma_translate_vertex( ctx, v1, &v[1] );
- gamma_translate_vertex( ctx, v2, &v[2] );
- _swrast_Triangle( ctx, &v[0], &v[1], &v[2] );
-}
-
-static void
-gamma_fallback_line( gammaContextPtr gmesa,
- const gammaVertex *v0,
- const gammaVertex *v1 )
-{
- GLcontext *ctx = gmesa->glCtx;
- SWvertex v[2];
- gamma_translate_vertex( ctx, v0, &v[0] );
- gamma_translate_vertex( ctx, v1, &v[1] );
- _swrast_Line( ctx, &v[0], &v[1] );
-}
-
-
-#if 0
-static void
-gamma_fallback_point( gammaContextPtr gmesa,
- const gammaVertex *v0 )
-{
- GLcontext *ctx = gmesa->glCtx;
- SWvertex v[1];
- gamma_translate_vertex( ctx, v0, &v[0] );
- _swrast_Point( ctx, &v[0] );
-}
-#endif
-
-
-/***********************************************************************
- * Choose rasterization functions *
- ***********************************************************************/
-
-#define _GAMMA_NEW_RASTER_STATE (_NEW_FOG | \
- _NEW_TEXTURE | \
- _DD_NEW_TRI_SMOOTH | \
- _DD_NEW_LINE_SMOOTH | \
- _DD_NEW_POINT_SMOOTH | \
- _DD_NEW_TRI_STIPPLE | \
- _DD_NEW_LINE_STIPPLE)
-
-#define LINE_FALLBACK (0)
-#define TRI_FALLBACK (0)
-
-static void gammaChooseRasterState(GLcontext *ctx)
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
- GLuint flags = ctx->_TriangleCaps;
- GLuint ind = 0;
-
- if ( ctx->Line.SmoothFlag ||
- ctx->Polygon.SmoothFlag ||
- ctx->Point.SmoothFlag )
- gmesa->Begin |= B_AntiAliasEnable;
- else
- gmesa->Begin &= ~B_AntiAliasEnable;
-
- if ( ctx->Texture.Unit[0]._ReallyEnabled ) {
- ind |= GAMMA_RAST_TEX_BIT;
- gmesa->Begin |= B_TextureEnable;
- } else
- gmesa->Begin &= ~B_TextureEnable;
-
- if (flags & DD_LINE_STIPPLE)
- gmesa->Begin |= B_LineStippleEnable;
- else
- gmesa->Begin &= ~B_LineStippleEnable;
-
- if (flags & DD_TRI_STIPPLE)
- gmesa->Begin |= B_AreaStippleEnable;
- else
- gmesa->Begin &= ~B_AreaStippleEnable;
-
- if (ctx->Fog.Enabled)
- gmesa->Begin |= B_FogEnable;
- else
- gmesa->Begin &= ~B_FogEnable;
-
- if (ctx->Color.BlendEnabled || ctx->Color.AlphaEnabled)
- ind |= GAMMA_RAST_ALPHA_BIT;
-
- if ( flags & DD_FLATSHADE )
- ind |= GAMMA_RAST_FLAT_BIT;
-
- gmesa->draw_line = gamma_line_tab[ind];
- gmesa->draw_tri = gamma_tri_tab[ind];
- gmesa->draw_quad = gamma_quad_tab[ind];
- gmesa->draw_point = gamma_point_tab[ind];
-
- /* Hook in fallbacks for specific primitives. CURRENTLY DISABLED
- */
- if (flags & LINE_FALLBACK)
- gmesa->draw_line = gamma_fallback_line;
-
- if (flags & TRI_FALLBACK) {
- gmesa->draw_tri = gamma_fallback_tri;
- gmesa->draw_quad = gamma_fallback_quad;
- }
-}
-
-
-
-
-/***********************************************************************
- * Macros for t_dd_tritmp.h to draw basic primitives *
- ***********************************************************************/
-
-#define TRI( a, b, c ) \
-do { \
- gmesa->draw_tri( gmesa, a, b, c ); \
-} while (0)
-
-#define QUAD( a, b, c, d ) \
-do { \
- gmesa->draw_quad( gmesa, a, b, c, d ); \
-} while (0)
-
-#define LINE( v0, v1 ) \
-do { \
- gmesa->draw_line( gmesa, v0, v1 ); \
-} while (0)
-
-#define POINT( v0 ) \
-do { \
- gmesa->draw_point( gmesa, v0 ); \
-} while (0)
-
-
-/***********************************************************************
- * Build render functions from dd templates *
- ***********************************************************************/
-
-#define GAMMA_OFFSET_BIT 0x01
-#define GAMMA_TWOSIDE_BIT 0x02
-#define GAMMA_UNFILLED_BIT 0x04
-#define GAMMA_FALLBACK_BIT 0x08
-#define GAMMA_MAX_TRIFUNC 0x10
-
-
-static struct {
- tnl_points_func points;
- tnl_line_func line;
- tnl_triangle_func triangle;
- tnl_quad_func quad;
-} rast_tab[GAMMA_MAX_TRIFUNC];
-
-
-#define DO_FALLBACK (IND & GAMMA_FALLBACK_BIT)
-#define DO_OFFSET 0 /* (IND & GAMMA_OFFSET_BIT) */
-#define DO_UNFILLED 0 /* (IND & GAMMA_UNFILLED_BIT) */
-#define DO_TWOSIDE (IND & GAMMA_TWOSIDE_BIT)
-#define DO_FLAT 0
-#define DO_TRI 1
-#define DO_QUAD 1
-#define DO_LINE 1
-#define DO_POINTS 1
-#define DO_FULL_QUAD 1
-
-#define HAVE_RGBA 1
-#define HAVE_SPEC 0
-#define HAVE_BACK_COLORS 0
-#define HAVE_HW_FLATSHADE 1
-#define VERTEX gammaVertex
-#define TAB rast_tab
-
-#define DEPTH_SCALE 1.0
-#define UNFILLED_TRI unfilled_tri
-#define UNFILLED_QUAD unfilled_quad
-#define VERT_X(_v) _v->v.x
-#define VERT_Y(_v) _v->v.y
-#define VERT_Z(_v) _v->v.z
-#define AREA_IS_CCW( a ) (a > 0)
-#define GET_VERTEX(e) (gmesa->verts + (e * gmesa->vertex_size * sizeof(int)))
-
-#define VERT_SET_RGBA( v, c ) \
-do { \
- UNCLAMPED_FLOAT_TO_UBYTE(v->ub4[4][0], (c)[0]); \
- UNCLAMPED_FLOAT_TO_UBYTE(v->ub4[4][1], (c)[1]); \
- UNCLAMPED_FLOAT_TO_UBYTE(v->ub4[4][2], (c)[2]); \
- UNCLAMPED_FLOAT_TO_UBYTE(v->ub4[4][3], (c)[3]); \
-} while (0)
-#define VERT_COPY_RGBA( v0, v1 ) v0->ui[4] = v1->ui[4]
-#define VERT_SAVE_RGBA( idx ) color[idx] = v[idx]->ui[4]
-#define VERT_RESTORE_RGBA( idx ) v[idx]->ui[4] = color[idx]
-
-#define LOCAL_VARS(n) \
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx); \
- GLuint color[n] = { 0 }; \
- (void) color;
-
-
-/***********************************************************************
- * Helpers for rendering unfilled primitives *
- ***********************************************************************/
-
-static const GLuint hw_prim[GL_POLYGON+1] = {
- B_PrimType_Points,
- B_PrimType_Lines,
- B_PrimType_Lines,
- B_PrimType_Lines,
- B_PrimType_Triangles,
- B_PrimType_Triangles,
- B_PrimType_Triangles,
- B_PrimType_Triangles,
- B_PrimType_Triangles,
- B_PrimType_Triangles
-};
-
-static void gammaResetLineStipple( GLcontext *ctx );
-static void gammaRasterPrimitive( GLcontext *ctx, GLuint hwprim );
-static void gammaRenderPrimitive( GLcontext *ctx, GLenum prim );
-
-#define RASTERIZE(x) if (gmesa->hw_primitive != hw_prim[x]) \
- gammaRasterPrimitive( ctx, hw_prim[x] )
-#define RENDER_PRIMITIVE gmesa->render_primitive
-#define TAG(x) x
-#define IND GAMMA_FALLBACK_BIT
-#include "tnl_dd/t_dd_unfilled.h"
-#undef IND
-
-/***********************************************************************
- * Generate GL render functions *
- ***********************************************************************/
-
-#define IND (0)
-#define TAG(x) x
-#include "tnl_dd/t_dd_tritmp.h"
-
-#define IND (GAMMA_OFFSET_BIT)
-#define TAG(x) x##_offset
-#include "tnl_dd/t_dd_tritmp.h"
-
-#define IND (GAMMA_TWOSIDE_BIT)
-#define TAG(x) x##_twoside
-#include "tnl_dd/t_dd_tritmp.h"
-
-#define IND (GAMMA_TWOSIDE_BIT|GAMMA_OFFSET_BIT)
-#define TAG(x) x##_twoside_offset
-#include "tnl_dd/t_dd_tritmp.h"
-
-#define IND (GAMMA_UNFILLED_BIT)
-#define TAG(x) x##_unfilled
-#include "tnl_dd/t_dd_tritmp.h"
-
-#define IND (GAMMA_OFFSET_BIT|GAMMA_UNFILLED_BIT)
-#define TAG(x) x##_offset_unfilled
-#include "tnl_dd/t_dd_tritmp.h"
-
-#define IND (GAMMA_TWOSIDE_BIT|GAMMA_UNFILLED_BIT)
-#define TAG(x) x##_twoside_unfilled
-#include "tnl_dd/t_dd_tritmp.h"
-
-#define IND (GAMMA_TWOSIDE_BIT|GAMMA_OFFSET_BIT|GAMMA_UNFILLED_BIT)
-#define TAG(x) x##_twoside_offset_unfilled
-#include "tnl_dd/t_dd_tritmp.h"
-
-
-
-static void init_render_tab( void )
-{
- init();
- init_offset();
- init_twoside();
- init_twoside_offset();
- init_unfilled();
- init_offset_unfilled();
- init_twoside_unfilled();
- init_twoside_offset_unfilled();
-}
-
-
-/**********************************************************************/
-/* Render unclipped begin/end objects */
-/**********************************************************************/
-
-#define VERT(x) (gammaVertex *)(gammaverts + (x * size * sizeof(int)))
-#define RENDER_POINTS( start, count ) \
- for ( ; start < count ; start++) \
- gmesa->draw_point( gmesa, VERT(start) )
-#define RENDER_LINE( v0, v1 ) \
- gmesa->draw_line( gmesa, VERT(v0), VERT(v1) )
-#define RENDER_TRI( v0, v1, v2 ) \
- gmesa->draw_tri( gmesa, VERT(v0), VERT(v1), VERT(v2) )
-#define RENDER_QUAD( v0, v1, v2, v3 ) \
- gmesa->draw_quad( gmesa, VERT(v0), VERT(v1), VERT(v2), VERT(v3) )
-#define INIT(x) gammaRenderPrimitive( ctx, x );
-#undef LOCAL_VARS
-#define LOCAL_VARS \
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx); \
- const GLuint size = gmesa->vertex_size; \
- const char *gammaverts = (char *)gmesa->verts; \
- const GLboolean stipple = ctx->Line.StippleFlag; \
- (void) stipple;
-#define RESET_STIPPLE if ( stipple ) gammaResetLineStipple( ctx );
-#define RESET_OCCLUSION
-#define PRESERVE_VB_DEFS
-#define ELT(x) (x)
-#define TAG(x) gamma_##x##_verts
-#include "tnl/t_vb_rendertmp.h"
-
-
-/**********************************************************************/
-/* Render clipped primitives */
-/**********************************************************************/
-
-static void gammaRenderClippedPoly( GLcontext *ctx, const GLuint *elts,
- GLuint n )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
- struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
- TNLcontext *tnl = TNL_CONTEXT(ctx);
- GLuint prim = gmesa->render_primitive;
-
- /* Render the new vertices as an unclipped polygon.
- */
- {
- GLuint *tmp = VB->Elts;
- VB->Elts = (GLuint *)elts;
- tnl->Driver.Render.PrimTabElts[GL_POLYGON]( ctx, 0, n, PRIM_BEGIN|PRIM_END );
- VB->Elts = tmp;
- }
-
- /* Restore the render primitive
- */
- if (prim != GL_POLYGON)
- tnl->Driver.Render.PrimitiveNotify( ctx, prim );
-}
-
-static void gammaRenderClippedLine( GLcontext *ctx, GLuint ii, GLuint jj )
-{
- TNLcontext *tnl = TNL_CONTEXT(ctx);
- tnl->Driver.Render.Line( ctx, ii, jj );
-}
-
-
-/**********************************************************************/
-/* Choose render functions */
-/**********************************************************************/
-
-
-
-#define _GAMMA_NEW_RENDERSTATE (_DD_NEW_TRI_UNFILLED | \
- _DD_NEW_TRI_LIGHT_TWOSIDE | \
- _DD_NEW_TRI_OFFSET)
-
-#define ANY_RASTER_FLAGS (DD_TRI_LIGHT_TWOSIDE|DD_TRI_OFFSET|DD_TRI_UNFILLED)
-
-static void gammaChooseRenderState(GLcontext *ctx)
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
- TNLcontext *tnl = TNL_CONTEXT(ctx);
- GLuint flags = ctx->_TriangleCaps;
- GLuint index = 0;
-
- if (flags & ANY_RASTER_FLAGS) {
- if (flags & DD_TRI_LIGHT_TWOSIDE) index |= GAMMA_TWOSIDE_BIT;
- if (flags & DD_TRI_OFFSET) index |= GAMMA_OFFSET_BIT;
- if (flags & DD_TRI_UNFILLED) index |= GAMMA_UNFILLED_BIT;
- }
-
- if (gmesa->RenderIndex != index) {
- gmesa->RenderIndex = index;
-
- tnl->Driver.Render.Points = rast_tab[index].points;
- tnl->Driver.Render.Line = rast_tab[index].line;
- tnl->Driver.Render.Triangle = rast_tab[index].triangle;
- tnl->Driver.Render.Quad = rast_tab[index].quad;
-
- if (gmesa->RenderIndex == 0)
- tnl->Driver.Render.PrimTabVerts = gamma_render_tab_verts;
- else
- tnl->Driver.Render.PrimTabVerts = _tnl_render_tab_verts;
- tnl->Driver.Render.PrimTabElts = _tnl_render_tab_elts;
- tnl->Driver.Render.ClippedLine = gammaRenderClippedLine;
- tnl->Driver.Render.ClippedPolygon = gammaRenderClippedPoly;
- }
-}
-
-
-/**********************************************************************/
-/* High level hooks for t_vb_render.c */
-/**********************************************************************/
-
-
-
-/* Determine the rasterized primitive when not drawing unfilled
- * polygons.
- *
- * Used only for the default render stage which always decomposes
- * primitives to trianges/lines/points. For the accelerated stage,
- * which renders strips as strips, the equivalent calculations are
- * performed in gammarender.c.
- */
-
-static void gammaRasterPrimitive( GLcontext *ctx, GLuint hwprim )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
- if (gmesa->hw_primitive != hwprim)
- gmesa->hw_primitive = hwprim;
-}
-
-static void gammaRenderPrimitive( GLcontext *ctx, GLenum prim )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
- gmesa->render_primitive = prim;
-}
-
-static void gammaRunPipeline( GLcontext *ctx )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
-
- if ( gmesa->new_state )
- gammaDDUpdateHWState( ctx );
-
- if (gmesa->new_gl_state) {
- if (gmesa->new_gl_state & _NEW_TEXTURE)
- gammaUpdateTextureState( ctx );
-
- if (!gmesa->Fallback) {
- if (gmesa->new_gl_state & _GAMMA_NEW_VERTEX)
- gammaChooseVertexState( ctx );
-
- if (gmesa->new_gl_state & _GAMMA_NEW_RASTER_STATE)
- gammaChooseRasterState( ctx );
-
- if (gmesa->new_gl_state & _GAMMA_NEW_RENDERSTATE)
- gammaChooseRenderState( ctx );
- }
-
- gmesa->new_gl_state = 0;
- }
-
- _tnl_run_pipeline( ctx );
-}
-
-static void gammaRenderStart( GLcontext *ctx )
-{
- /* Check for projective texturing. Make sure all texcoord
- * pointers point to something. (fix in mesa?)
- */
- gammaCheckTexSizes( ctx );
-}
-
-static void gammaRenderFinish( GLcontext *ctx )
-{
- if (0)
- _swrast_flush( ctx ); /* never needed */
-}
-
-static void gammaResetLineStipple( GLcontext *ctx )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
-
- /* Reset the hardware stipple counter.
- */
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, UpdateLineStippleCounters, 0);
-}
-
-
-/**********************************************************************/
-/* Transition to/from hardware rasterization. */
-/**********************************************************************/
-
-
-void gammaFallback( gammaContextPtr gmesa, GLuint bit, GLboolean mode )
-{
- GLcontext *ctx = gmesa->glCtx;
- TNLcontext *tnl = TNL_CONTEXT(ctx);
- GLuint oldfallback = gmesa->Fallback;
-
- if (mode) {
- gmesa->Fallback |= bit;
- if (oldfallback == 0) {
- _swsetup_Wakeup( ctx );
- _tnl_need_projected_coords( ctx, GL_TRUE );
- gmesa->RenderIndex = ~0;
- }
- }
- else {
- gmesa->Fallback &= ~bit;
- if (oldfallback == bit) {
- _swrast_flush( ctx );
- tnl->Driver.Render.Start = gammaRenderStart;
- tnl->Driver.Render.PrimitiveNotify = gammaRenderPrimitive;
- tnl->Driver.Render.Finish = gammaRenderFinish;
- tnl->Driver.Render.BuildVertices = gammaBuildVertices;
- tnl->Driver.Render.ResetLineStipple = gammaResetLineStipple;
- gmesa->new_gl_state |= (_GAMMA_NEW_RENDERSTATE|
- _GAMMA_NEW_RASTER_STATE|
- _GAMMA_NEW_VERTEX);
- }
- }
-}
-
-
-/**********************************************************************/
-/* Initialization. */
-/**********************************************************************/
-
-
-void gammaDDInitTriFuncs( GLcontext *ctx )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
- TNLcontext *tnl = TNL_CONTEXT(ctx);
- static int firsttime = 1;
-
- if (firsttime) {
- init_rast_tab();
- init_render_tab();
- firsttime = 0;
- }
-
- gmesa->RenderIndex = ~0;
-
- tnl->Driver.RunPipeline = gammaRunPipeline;
- tnl->Driver.Render.Start = gammaRenderStart;
- tnl->Driver.Render.Finish = gammaRenderFinish;
- tnl->Driver.Render.PrimitiveNotify = gammaRenderPrimitive;
- tnl->Driver.Render.ResetLineStipple = gammaResetLineStipple;
- tnl->Driver.Render.BuildVertices = gammaBuildVertices;
-}
diff --git a/src/mesa/drivers/dri/gamma/gamma_tris.h b/src/mesa/drivers/dri/gamma/gamma_tris.h
deleted file mode 100644
index 02bec286903..00000000000
--- a/src/mesa/drivers/dri/gamma/gamma_tris.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright 2001 by Alan Hourihane.
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Alan Hourihane not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Alan Hourihane makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * ALAN HOURIHANE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL ALAN HOURIHANE BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- * Authors: Alan Hourihane, <[email protected]>
- * Keith Whitwell, <[email protected]>
- *
- * 3DLabs Gamma driver.
- */
-
-#ifndef _GAMMA_TRIS_H
-#define _GAMMA_TRIS_H
-
-extern void gammaDDTrifuncInit(void);
-extern void gammaDDChooseTriRenderState(GLcontext *);
-
-
-
-#endif /* !(_GAMMA_TRIS_H) */
diff --git a/src/mesa/drivers/dri/gamma/gamma_tritmp.h b/src/mesa/drivers/dri/gamma/gamma_tritmp.h
deleted file mode 100644
index bea2508d4a2..00000000000
--- a/src/mesa/drivers/dri/gamma/gamma_tritmp.h
+++ /dev/null
@@ -1,496 +0,0 @@
-
-static void TAG(gamma_point)( gammaContextPtr gmesa,
- const gammaVertex *v0 )
-{
- uint32_t vColor;
- uint32_t vBegin;
-
- vBegin = gmesa->Begin | B_PrimType_Points;
-
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, Begin, vBegin);
-
-#if (IND & GAMMA_RAST_ALPHA_BIT)
- vColor = (v0->v.color.alpha << 24) |
- (v0->v.color.blue << 16) |
- (v0->v.color.green << 8) |
- (v0->v.color.red << 0);
-
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, PackedColor4, vColor);
-#else
- vColor = (v0->v.color.blue << 16) |
- (v0->v.color.green << 8) |
- (v0->v.color.red << 0);
-
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, PackedColor3, vColor);
-#endif
-
-#if (IND & GAMMA_RAST_TEX_BIT)
- CHECK_DMA_BUFFER(gmesa, 6);
- WRITEF(gmesa->buf, Tt2, v0->v.u0);
- WRITEF(gmesa->buf, Ts2, v0->v.v0);
- WRITEF(gmesa->buf, Vw, v0->v.w);
- WRITEF(gmesa->buf, Vz, v0->v.z);
- WRITEF(gmesa->buf, Vy, v0->v.y);
- WRITEF(gmesa->buf, Vx4, v0->v.x);
-#else
- CHECK_DMA_BUFFER(gmesa, 4);
- WRITEF(gmesa->buf, Vw, v0->v.w);
- WRITEF(gmesa->buf, Vz, v0->v.z);
- WRITEF(gmesa->buf, Vy, v0->v.y);
- WRITEF(gmesa->buf, Vx4, v0->v.x);
-#endif
-
-#if !(IND & GAMMA_RAST_FLAT_BIT)
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, FlushSpan, 0);
-#endif
-
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, End, 0);
-}
-
-static void TAG(gamma_line)( gammaContextPtr gmesa,
- const gammaVertex *v0,
- const gammaVertex *v1 )
-{
- uint32_t vColor;
- uint32_t vBegin;
-
- vBegin = gmesa->Begin | B_PrimType_Lines;
-
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, Begin, vBegin);
-
-#if !(IND & GAMMA_RAST_FLAT_BIT)
-#if (IND & GAMMA_RAST_ALPHA_BIT)
- vColor = (v0->v.color.alpha << 24) |
- (v0->v.color.blue << 16) |
- (v0->v.color.green << 8) |
- (v0->v.color.red << 0);
-
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, PackedColor4, vColor);
-#else
- vColor = (v0->v.color.blue << 16) |
- (v0->v.color.green << 8) |
- (v0->v.color.red << 0);
-
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, PackedColor3, vColor);
-#endif
-#else
-#if (IND & GAMMA_RAST_ALPHA_BIT)
- vColor = (v1->v.color.alpha << 24) |
- (v1->v.color.blue << 16) |
- (v1->v.color.green << 8) |
- (v1->v.color.red << 0);
-
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, PackedColor4, vColor);
-#else
- vColor = (v1->v.color.blue << 16) |
- (v1->v.color.green << 8) |
- (v1->v.color.red << 0);
-
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, PackedColor3, vColor);
-#endif
-#endif
-
-#if (IND & GAMMA_RAST_TEX_BIT)
- CHECK_DMA_BUFFER(gmesa, 6);
- WRITEF(gmesa->buf, Tt2, v0->v.u0);
- WRITEF(gmesa->buf, Ts2, v0->v.v0);
- WRITEF(gmesa->buf, Vw, v0->v.w);
- WRITEF(gmesa->buf, Vz, v0->v.z);
- WRITEF(gmesa->buf, Vy, v0->v.y);
- WRITEF(gmesa->buf, Vx4, v0->v.x);
-#else
- CHECK_DMA_BUFFER(gmesa, 4);
- WRITEF(gmesa->buf, Vw, v0->v.w);
- WRITEF(gmesa->buf, Vz, v0->v.z);
- WRITEF(gmesa->buf, Vy, v0->v.y);
- WRITEF(gmesa->buf, Vx4, v0->v.x);
-#endif
-
-#if !(IND & GAMMA_RAST_FLAT_BIT)
-#if (IND & GAMMA_RAST_ALPHA_BIT)
- vColor = (v1->v.color.alpha << 24) |
- (v1->v.color.blue << 16) |
- (v1->v.color.green << 8) |
- (v1->v.color.red << 0);
-
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, PackedColor4, vColor);
-#else
- vColor = (v1->v.color.blue << 16) |
- (v1->v.color.green << 8) |
- (v1->v.color.red << 0);
-
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, PackedColor3, vColor);
-#endif
-#endif
-
-#if (IND & GAMMA_RAST_TEX_BIT)
- CHECK_DMA_BUFFER(gmesa, 6);
- WRITEF(gmesa->buf, Tt2, v1->v.u0);
- WRITEF(gmesa->buf, Ts2, v1->v.v0);
- WRITEF(gmesa->buf, Vw, v1->v.w);
- WRITEF(gmesa->buf, Vz, v1->v.z);
- WRITEF(gmesa->buf, Vy, v1->v.y);
- WRITEF(gmesa->buf, Vx4, v1->v.x);
-#else
- CHECK_DMA_BUFFER(gmesa, 4);
- WRITEF(gmesa->buf, Vw, v1->v.w);
- WRITEF(gmesa->buf, Vz, v1->v.z);
- WRITEF(gmesa->buf, Vy, v1->v.y);
- WRITEF(gmesa->buf, Vx4, v1->v.x);
-#endif
-
-#if !(IND & GAMMA_RAST_FLAT_BIT)
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, FlushSpan, 0);
-#endif
-
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, End, 0);
-}
-
-static void TAG(gamma_triangle)( gammaContextPtr gmesa,
- const gammaVertex *v0,
- const gammaVertex *v1,
- const gammaVertex *v2 )
-{
- uint32_t vColor;
- uint32_t vBegin;
-
- vBegin = gmesa->Begin | B_PrimType_Triangles;
-
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, Begin, vBegin);
-
-#if !(IND & GAMMA_RAST_FLAT_BIT)
-#if (IND & GAMMA_RAST_ALPHA_BIT)
- vColor = (v0->v.color.alpha << 24) |
- (v0->v.color.blue << 16) |
- (v0->v.color.green << 8) |
- (v0->v.color.red << 0);
-
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, PackedColor4, vColor);
-#else
- vColor = (v0->v.color.blue << 16) |
- (v0->v.color.green << 8) |
- (v0->v.color.red << 0);
-
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, PackedColor3, vColor);
-#endif
-#else
-#if (IND & GAMMA_RAST_ALPHA_BIT)
- vColor = (v2->v.color.alpha << 24) |
- (v2->v.color.blue << 16) |
- (v2->v.color.green << 8) |
- (v2->v.color.red << 0);
-
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, PackedColor4, vColor);
-#else
- vColor = (v2->v.color.blue << 16) |
- (v2->v.color.green << 8) |
- (v2->v.color.red << 0);
-
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, PackedColor3, vColor);
-#endif
-#endif
-
-#if (IND & GAMMA_RAST_TEX_BIT)
- CHECK_DMA_BUFFER(gmesa, 6);
- WRITEF(gmesa->buf, Tt2, v0->v.u0);
- WRITEF(gmesa->buf, Ts2, v0->v.v0);
- WRITEF(gmesa->buf, Vw, v0->v.w);
- WRITEF(gmesa->buf, Vz, v0->v.z);
- WRITEF(gmesa->buf, Vy, v0->v.y);
- WRITEF(gmesa->buf, Vx4, v0->v.x);
-#else
- CHECK_DMA_BUFFER(gmesa, 4);
- WRITEF(gmesa->buf, Vw, v0->v.w);
- WRITEF(gmesa->buf, Vz, v0->v.z);
- WRITEF(gmesa->buf, Vy, v0->v.y);
- WRITEF(gmesa->buf, Vx4, v0->v.x);
-#endif
-
-#if !(IND & GAMMA_RAST_FLAT_BIT)
-#if (IND & GAMMA_RAST_ALPHA_BIT)
- vColor = (v1->v.color.alpha << 24) |
- (v1->v.color.blue << 16) |
- (v1->v.color.green << 8) |
- (v1->v.color.red << 0);
-
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, PackedColor4, vColor);
-#else
- vColor = (v1->v.color.blue << 16) |
- (v1->v.color.green << 8) |
- (v1->v.color.red << 0);
-
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, PackedColor3, vColor);
-#endif
-#endif
-
-#if (IND & GAMMA_RAST_TEX_BIT)
- CHECK_DMA_BUFFER(gmesa, 6);
- WRITEF(gmesa->buf, Tt2, v1->v.u0);
- WRITEF(gmesa->buf, Ts2, v1->v.v0);
- WRITEF(gmesa->buf, Vw, v1->v.w);
- WRITEF(gmesa->buf, Vz, v1->v.z);
- WRITEF(gmesa->buf, Vy, v1->v.y);
- WRITEF(gmesa->buf, Vx4, v1->v.x);
-#else
- CHECK_DMA_BUFFER(gmesa, 4);
- WRITEF(gmesa->buf, Vw, v1->v.w);
- WRITEF(gmesa->buf, Vz, v1->v.z);
- WRITEF(gmesa->buf, Vy, v1->v.y);
- WRITEF(gmesa->buf, Vx4, v1->v.x);
-#endif
-
-#if !(IND & GAMMA_RAST_FLAT_BIT)
-#if (IND & GAMMA_RAST_ALPHA_BIT)
- vColor = (v2->v.color.alpha << 24) |
- (v2->v.color.blue << 16) |
- (v2->v.color.green << 8) |
- (v2->v.color.red << 0);
-
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, PackedColor4, vColor);
-#else
- vColor = (v2->v.color.blue << 16) |
- (v2->v.color.green << 8) |
- (v2->v.color.red << 0);
-
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, PackedColor3, vColor);
-#endif
-#endif
-
-#if (IND & GAMMA_RAST_TEX_BIT)
- CHECK_DMA_BUFFER(gmesa, 6);
- WRITEF(gmesa->buf, Tt2, v2->v.u0);
- WRITEF(gmesa->buf, Ts2, v2->v.v0);
- WRITEF(gmesa->buf, Vw, v2->v.w);
- WRITEF(gmesa->buf, Vz, v2->v.z);
- WRITEF(gmesa->buf, Vy, v2->v.y);
- WRITEF(gmesa->buf, Vx4, v2->v.x);
-#else
- CHECK_DMA_BUFFER(gmesa, 4);
- WRITEF(gmesa->buf, Vw, v2->v.w);
- WRITEF(gmesa->buf, Vz, v2->v.z);
- WRITEF(gmesa->buf, Vy, v2->v.y);
- WRITEF(gmesa->buf, Vx4, v2->v.x);
-#endif
-
-#if !(IND & GAMMA_RAST_FLAT_BIT)
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, FlushSpan, 0);
-#endif
-
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, End, 0);
-}
-
-static void TAG(gamma_quad)( gammaContextPtr gmesa,
- const gammaVertex *v0,
- const gammaVertex *v1,
- const gammaVertex *v2,
- const gammaVertex *v3 )
-{
- uint32_t vColor;
- uint32_t vBegin;
-
- vBegin = gmesa->Begin | B_PrimType_Quads;
-
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, Begin, vBegin);
-
-#if !(IND & GAMMA_RAST_FLAT_BIT)
-#if (IND & GAMMA_RAST_ALPHA_BIT)
- vColor = (v0->v.color.alpha << 24) |
- (v0->v.color.blue << 16) |
- (v0->v.color.green << 8) |
- (v0->v.color.red << 0);
-
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, PackedColor4, vColor);
-#else
- vColor = (v0->v.color.blue << 16) |
- (v0->v.color.green << 8) |
- (v0->v.color.red << 0);
-
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, PackedColor3, vColor);
-#endif
-#else
-#if (IND & GAMMA_RAST_ALPHA_BIT)
- vColor = (v3->v.color.alpha << 24) |
- (v3->v.color.blue << 16) |
- (v3->v.color.green << 8) |
- (v3->v.color.red << 0);
-
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, PackedColor4, vColor);
-#else
- vColor = (v3->v.color.blue << 16) |
- (v3->v.color.green << 8) |
- (v3->v.color.red << 0);
-
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, PackedColor3, vColor);
-#endif
-#endif
-
-#if (IND & GAMMA_RAST_TEX_BIT)
- CHECK_DMA_BUFFER(gmesa, 6);
- WRITEF(gmesa->buf, Tt2, v0->v.u0);
- WRITEF(gmesa->buf, Ts2, v0->v.v0);
- WRITEF(gmesa->buf, Vw, v0->v.w);
- WRITEF(gmesa->buf, Vz, v0->v.z);
- WRITEF(gmesa->buf, Vy, v0->v.y);
- WRITEF(gmesa->buf, Vx4, v0->v.x);
-#else
- CHECK_DMA_BUFFER(gmesa, 4);
- WRITEF(gmesa->buf, Vw, v0->v.w);
- WRITEF(gmesa->buf, Vz, v0->v.z);
- WRITEF(gmesa->buf, Vy, v0->v.y);
- WRITEF(gmesa->buf, Vx4, v0->v.x);
-#endif
-
-#if !(IND & GAMMA_RAST_FLAT_BIT)
-#if (IND & GAMMA_RAST_ALPHA_BIT)
- vColor = (v1->v.color.alpha << 24) |
- (v1->v.color.blue << 16) |
- (v1->v.color.green << 8) |
- (v1->v.color.red << 0);
-
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, PackedColor4, vColor);
-#else
- vColor = (v1->v.color.blue << 16) |
- (v1->v.color.green << 8) |
- (v1->v.color.red << 0);
-
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, PackedColor3, vColor);
-#endif
-#endif
-
-#if (IND & GAMMA_RAST_TEX_BIT)
- CHECK_DMA_BUFFER(gmesa, 6);
- WRITEF(gmesa->buf, Tt2, v1->v.u0);
- WRITEF(gmesa->buf, Ts2, v1->v.v0);
- WRITEF(gmesa->buf, Vw, v1->v.w);
- WRITEF(gmesa->buf, Vz, v1->v.z);
- WRITEF(gmesa->buf, Vy, v1->v.y);
- WRITEF(gmesa->buf, Vx4, v1->v.x);
-#else
- CHECK_DMA_BUFFER(gmesa, 4);
- WRITEF(gmesa->buf, Vw, v1->v.w);
- WRITEF(gmesa->buf, Vz, v1->v.z);
- WRITEF(gmesa->buf, Vy, v1->v.y);
- WRITEF(gmesa->buf, Vx4, v1->v.x);
-#endif
-
-#if !(IND & GAMMA_RAST_FLAT_BIT)
-#if (IND & GAMMA_RAST_ALPHA_BIT)
- vColor = (v2->v.color.alpha << 24) |
- (v2->v.color.blue << 16) |
- (v2->v.color.green << 8) |
- (v2->v.color.red << 0);
-
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, PackedColor4, vColor);
-#else
- vColor = (v2->v.color.blue << 16) |
- (v2->v.color.green << 8) |
- (v2->v.color.red << 0);
-
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, PackedColor3, vColor);
-#endif
-#endif
-
-#if (IND & GAMMA_RAST_TEX_BIT)
- CHECK_DMA_BUFFER(gmesa, 6);
- WRITEF(gmesa->buf, Tt2, v2->v.u0);
- WRITEF(gmesa->buf, Ts2, v2->v.v0);
- WRITEF(gmesa->buf, Vw, v2->v.w);
- WRITEF(gmesa->buf, Vz, v2->v.z);
- WRITEF(gmesa->buf, Vy, v2->v.y);
- WRITEF(gmesa->buf, Vx4, v2->v.x);
-#else
- CHECK_DMA_BUFFER(gmesa, 4);
- WRITEF(gmesa->buf, Vw, v2->v.w);
- WRITEF(gmesa->buf, Vz, v2->v.z);
- WRITEF(gmesa->buf, Vy, v2->v.y);
- WRITEF(gmesa->buf, Vx4, v2->v.x);
-#endif
-
-#if !(IND & GAMMA_RAST_FLAT_BIT)
-#if (IND & GAMMA_RAST_ALPHA_BIT)
- vColor = (v3->v.color.alpha << 24) |
- (v3->v.color.blue << 16) |
- (v3->v.color.green << 8) |
- (v3->v.color.red << 0);
-
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, PackedColor4, vColor);
-#else
- vColor = (v3->v.color.blue << 16) |
- (v3->v.color.green << 8) |
- (v3->v.color.red << 0);
-
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, PackedColor3, vColor);
-#endif
-#endif
-
-#if (IND & GAMMA_RAST_TEX_BIT)
- CHECK_DMA_BUFFER(gmesa, 6);
- WRITEF(gmesa->buf, Tt2, v3->v.u0);
- WRITEF(gmesa->buf, Ts2, v3->v.v0);
- WRITEF(gmesa->buf, Vw, v3->v.w);
- WRITEF(gmesa->buf, Vz, v3->v.z);
- WRITEF(gmesa->buf, Vy, v3->v.y);
- WRITEF(gmesa->buf, Vx4, v3->v.x);
-#else
- CHECK_DMA_BUFFER(gmesa, 4);
- WRITEF(gmesa->buf, Vw, v3->v.w);
- WRITEF(gmesa->buf, Vz, v3->v.z);
- WRITEF(gmesa->buf, Vy, v3->v.y);
- WRITEF(gmesa->buf, Vx4, v3->v.x);
-#endif
-
-#if !(IND & GAMMA_RAST_FLAT_BIT)
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, FlushSpan, 0);
-#endif
-
- CHECK_DMA_BUFFER(gmesa, 1);
- WRITE(gmesa->buf, End, 0);
-}
-
-static void TAG(gamma_init)(void)
-{
- gamma_point_tab[IND] = TAG(gamma_point);
- gamma_line_tab[IND] = TAG(gamma_line);
- gamma_tri_tab[IND] = TAG(gamma_triangle);
- gamma_quad_tab[IND] = TAG(gamma_quad);
-}
-
-#undef IND
-#undef TAG
diff --git a/src/mesa/drivers/dri/gamma/gamma_vb.c b/src/mesa/drivers/dri/gamma/gamma_vb.c
deleted file mode 100644
index c9c1ebf62a6..00000000000
--- a/src/mesa/drivers/dri/gamma/gamma_vb.c
+++ /dev/null
@@ -1,361 +0,0 @@
-/*
- * Copyright 2001 by Alan Hourihane.
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Alan Hourihane not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Alan Hourihane makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * ALAN HOURIHANE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL ALAN HOURIHANE BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- * Authors: Alan Hourihane, <[email protected]>
- * Keith Whitwell, <[email protected]>
- *
- * 3DLabs Gamma driver.
- */
-
-#include "main/glheader.h"
-#include "main/mtypes.h"
-#include "main/imports.h"
-#include "main/macros.h"
-#include "main/colormac.h"
-
-#include "swrast_setup/swrast_setup.h"
-#include "tnl/t_context.h"
-#include "tnl/tnl.h"
-
-#include "gamma_context.h"
-#include "gamma_vb.h"
-#include "gamma_tris.h"
-
-
-#define GAMMA_TEX0_BIT 0x1
-#define GAMMA_RGBA_BIT 0x2
-#define GAMMA_XYZW_BIT 0x4
-#define GAMMA_PTEX_BIT 0x8
-#define GAMMA_FOG_BIT 0x10
-#define GAMMA_SPEC_BIT 0x20
-#define GAMMA_MAX_SETUP 0x40
-
-static struct {
- void (*emit)( GLcontext *, GLuint, GLuint, void *, GLuint );
- tnl_interp_func interp;
- tnl_copy_pv_func copy_pv;
- GLboolean (*check_tex_sizes)( GLcontext *ctx );
- GLuint vertex_size;
- GLuint vertex_format;
-} setup_tab[GAMMA_MAX_SETUP];
-
-#define TINY_VERTEX_FORMAT 1
-#define NOTEX_VERTEX_FORMAT 2
-#define TEX0_VERTEX_FORMAT 3
-#define TEX1_VERTEX_FORMAT 0
-#define PROJ_TEX1_VERTEX_FORMAT 0
-#define TEX2_VERTEX_FORMAT 0
-#define TEX3_VERTEX_FORMAT 0
-#define PROJ_TEX3_VERTEX_FORMAT 0
-
-#define DO_XYZW (IND & GAMMA_XYZW_BIT)
-#define DO_RGBA (IND & GAMMA_RGBA_BIT)
-#define DO_SPEC (IND & GAMMA_SPEC_BIT)
-#define DO_FOG (IND & GAMMA_FOG_BIT)
-#define DO_TEX0 (IND & GAMMA_TEX0_BIT)
-#define DO_TEX1 0
-#define DO_TEX2 0
-#define DO_TEX3 0
-#define DO_PTEX (IND & GAMMA_PTEX_BIT)
-
-#define VERTEX gammaVertex
-#define VERTEX_COLOR gamma_color_t
-#define GET_VIEWPORT_MAT() 0
-#define GET_TEXSOURCE(n) n
-#define GET_VERTEX_FORMAT() GAMMA_CONTEXT(ctx)->vertex_format
-#define GET_VERTEX_STORE() GAMMA_CONTEXT(ctx)->verts
-#define GET_VERTEX_SIZE() GAMMA_CONTEXT(ctx)->vertex_size * sizeof(GLuint)
-#define INVALIDATE_STORED_VERTICES()
-
-#define HAVE_HW_VIEWPORT 1
-#define HAVE_HW_DIVIDE 1
-#define HAVE_RGBA_COLOR 0 /* we're BGRA */
-#define HAVE_TINY_VERTICES 1
-#define HAVE_NOTEX_VERTICES 1
-#define HAVE_TEX0_VERTICES 1
-#define HAVE_TEX1_VERTICES 0
-#define HAVE_TEX2_VERTICES 0
-#define HAVE_TEX3_VERTICES 0
-#define HAVE_PTEX_VERTICES 1
-
-#define PTEX_FALLBACK() /* never needed */
-
-#define INTERP_VERTEX setup_tab[GAMMA_CONTEXT(ctx)->SetupIndex].interp
-#define COPY_PV_VERTEX setup_tab[GAMMA_CONTEXT(ctx)->SetupIndex].copy_pv
-
-
-
-/***********************************************************************
- * Generate pv-copying and translation functions *
- ***********************************************************************/
-
-#define TAG(x) gamma_##x
-#include "tnl_dd/t_dd_vb.c"
-
-/***********************************************************************
- * Generate vertex emit and interp functions *
- ***********************************************************************/
-
-#define IND (GAMMA_XYZW_BIT|GAMMA_RGBA_BIT)
-#define TAG(x) x##_wg
-#include "tnl_dd/t_dd_vbtmp.h"
-
-#define IND (GAMMA_XYZW_BIT|GAMMA_RGBA_BIT|GAMMA_SPEC_BIT)
-#define TAG(x) x##_wgs
-#include "tnl_dd/t_dd_vbtmp.h"
-
-#define IND (GAMMA_XYZW_BIT|GAMMA_RGBA_BIT|GAMMA_TEX0_BIT)
-#define TAG(x) x##_wgt0
-#include "tnl_dd/t_dd_vbtmp.h"
-
-#define IND (GAMMA_XYZW_BIT|GAMMA_RGBA_BIT|GAMMA_TEX0_BIT|GAMMA_PTEX_BIT)
-#define TAG(x) x##_wgpt0
-#include "tnl_dd/t_dd_vbtmp.h"
-
-#define IND (GAMMA_XYZW_BIT|GAMMA_RGBA_BIT|GAMMA_SPEC_BIT|GAMMA_TEX0_BIT)
-#define TAG(x) x##_wgst0
-#include "tnl_dd/t_dd_vbtmp.h"
-
-#define IND (GAMMA_XYZW_BIT|GAMMA_RGBA_BIT|GAMMA_SPEC_BIT|GAMMA_TEX0_BIT|\
- GAMMA_PTEX_BIT)
-#define TAG(x) x##_wgspt0
-#include "tnl_dd/t_dd_vbtmp.h"
-
-#define IND (GAMMA_XYZW_BIT|GAMMA_RGBA_BIT|GAMMA_FOG_BIT)
-#define TAG(x) x##_wgf
-#include "tnl_dd/t_dd_vbtmp.h"
-
-#define IND (GAMMA_XYZW_BIT|GAMMA_RGBA_BIT|GAMMA_FOG_BIT|GAMMA_SPEC_BIT)
-#define TAG(x) x##_wgfs
-#include "tnl_dd/t_dd_vbtmp.h"
-
-#define IND (GAMMA_XYZW_BIT|GAMMA_RGBA_BIT|GAMMA_FOG_BIT|GAMMA_TEX0_BIT)
-#define TAG(x) x##_wgft0
-#include "tnl_dd/t_dd_vbtmp.h"
-
-#define IND (GAMMA_XYZW_BIT|GAMMA_RGBA_BIT|GAMMA_FOG_BIT|GAMMA_TEX0_BIT|\
- GAMMA_PTEX_BIT)
-#define TAG(x) x##_wgfpt0
-#include "tnl_dd/t_dd_vbtmp.h"
-
-#define IND (GAMMA_XYZW_BIT|GAMMA_RGBA_BIT|GAMMA_FOG_BIT|GAMMA_SPEC_BIT|\
- GAMMA_TEX0_BIT)
-#define TAG(x) x##_wgfst0
-#include "tnl_dd/t_dd_vbtmp.h"
-
-#define IND (GAMMA_XYZW_BIT|GAMMA_RGBA_BIT|GAMMA_FOG_BIT|GAMMA_SPEC_BIT|\
- GAMMA_TEX0_BIT|GAMMA_PTEX_BIT)
-#define TAG(x) x##_wgfspt0
-#include "tnl_dd/t_dd_vbtmp.h"
-
-#define IND (GAMMA_TEX0_BIT)
-#define TAG(x) x##_t0
-#include "tnl_dd/t_dd_vbtmp.h"
-
-#define IND (GAMMA_FOG_BIT)
-#define TAG(x) x##_f
-#include "tnl_dd/t_dd_vbtmp.h"
-
-#define IND (GAMMA_FOG_BIT|GAMMA_TEX0_BIT)
-#define TAG(x) x##_ft0
-#include "tnl_dd/t_dd_vbtmp.h"
-
-#define IND (GAMMA_RGBA_BIT)
-#define TAG(x) x##_g
-#include "tnl_dd/t_dd_vbtmp.h"
-
-#define IND (GAMMA_RGBA_BIT|GAMMA_SPEC_BIT)
-#define TAG(x) x##_gs
-#include "tnl_dd/t_dd_vbtmp.h"
-
-#define IND (GAMMA_RGBA_BIT|GAMMA_TEX0_BIT)
-#define TAG(x) x##_gt0
-#include "tnl_dd/t_dd_vbtmp.h"
-
-#define IND (GAMMA_RGBA_BIT|GAMMA_SPEC_BIT|GAMMA_TEX0_BIT)
-#define TAG(x) x##_gst0
-#include "tnl_dd/t_dd_vbtmp.h"
-
-#define IND (GAMMA_RGBA_BIT|GAMMA_FOG_BIT)
-#define TAG(x) x##_gf
-#include "tnl_dd/t_dd_vbtmp.h"
-
-#define IND (GAMMA_RGBA_BIT|GAMMA_FOG_BIT|GAMMA_SPEC_BIT)
-#define TAG(x) x##_gfs
-#include "tnl_dd/t_dd_vbtmp.h"
-
-#define IND (GAMMA_RGBA_BIT|GAMMA_FOG_BIT|GAMMA_TEX0_BIT)
-#define TAG(x) x##_gft0
-#include "tnl_dd/t_dd_vbtmp.h"
-
-#define IND (GAMMA_RGBA_BIT|GAMMA_FOG_BIT|GAMMA_SPEC_BIT|GAMMA_TEX0_BIT)
-#define TAG(x) x##_gfst0
-#include "tnl_dd/t_dd_vbtmp.h"
-
-static void init_setup_tab( void )
-{
- init_wg();
- init_wgs();
- init_wgt0();
- init_wgpt0();
- init_wgst0();
- init_wgspt0();
- init_wgf();
- init_wgfs();
- init_wgft0();
- init_wgfpt0();
- init_wgfst0();
- init_wgfspt0();
- init_t0();
- init_f();
- init_ft0();
- init_g();
- init_gs();
- init_gt0();
- init_gst0();
- init_gf();
- init_gfs();
- init_gft0();
- init_gfst0();
-}
-
-void gammaCheckTexSizes( GLcontext *ctx )
-{
- TNLcontext *tnl = TNL_CONTEXT(ctx);
- gammaContextPtr gmesa = GAMMA_CONTEXT( ctx );
-
- if (!setup_tab[gmesa->SetupIndex].check_tex_sizes(ctx)) {
- /* Invalidate stored verts
- */
- gmesa->SetupNewInputs = ~0;
- gmesa->SetupIndex |= GAMMA_PTEX_BIT;
-
- if (!(ctx->_TriangleCaps & (DD_TRI_LIGHT_TWOSIDE|DD_TRI_UNFILLED))) {
- tnl->Driver.Render.Interp = setup_tab[gmesa->SetupIndex].interp;
- tnl->Driver.Render.CopyPV = setup_tab[gmesa->SetupIndex].copy_pv;
- }
- }
-}
-
-void gammaBuildVertices( GLcontext *ctx,
- GLuint start,
- GLuint count,
- GLuint newinputs )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT( ctx );
- GLuint stride = gmesa->vertex_size * sizeof(int);
- GLubyte *v = ((GLubyte *)gmesa->verts + (start * stride));
-
- newinputs |= gmesa->SetupNewInputs;
- gmesa->SetupNewInputs = 0;
-
- if (!newinputs)
- return;
-
- if (newinputs & VERT_BIT_POS) {
- setup_tab[gmesa->SetupIndex].emit( ctx, start, count, v, stride );
- } else {
- GLuint ind = 0;
-
- if (newinputs & VERT_BIT_COLOR0)
- ind |= GAMMA_RGBA_BIT;
-
- if (newinputs & VERT_BIT_COLOR1)
- ind |= GAMMA_SPEC_BIT;
-
- if (newinputs & VERT_BIT_TEX0)
- ind |= GAMMA_TEX0_BIT;
-
- if (newinputs & VERT_BIT_FOG)
- ind |= GAMMA_FOG_BIT;
-
- if (gmesa->SetupIndex & GAMMA_PTEX_BIT)
- ind = ~0;
-
- ind &= gmesa->SetupIndex;
-
- if (ind) {
- setup_tab[ind].emit( ctx, start, count, v, stride );
- }
- }
-}
-
-void gammaChooseVertexState( GLcontext *ctx )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT( ctx );
- TNLcontext *tnl = TNL_CONTEXT(ctx);
- GLuint ind = GAMMA_XYZW_BIT|GAMMA_RGBA_BIT;
-
- if (ctx->_TriangleCaps & DD_SEPARATE_SPECULAR)
- ind |= GAMMA_SPEC_BIT;
-
- if (ctx->Fog.Enabled)
- ind |= GAMMA_FOG_BIT;
-
- if (ctx->Texture.Unit[0]._ReallyEnabled) {
- _tnl_need_projected_coords( ctx, GL_FALSE );
- ind |= GAMMA_TEX0_BIT;
- } else
- _tnl_need_projected_coords( ctx, GL_FALSE );
-
- gmesa->SetupIndex = ind;
-
- if (setup_tab[ind].vertex_format != gmesa->vertex_format) {
- gmesa->vertex_format = setup_tab[ind].vertex_format;
- gmesa->vertex_size = setup_tab[ind].vertex_size;
- }
-
- if (ctx->_TriangleCaps & (DD_TRI_LIGHT_TWOSIDE|DD_TRI_UNFILLED)) {
- tnl->Driver.Render.Interp = gamma_interp_extras;
- tnl->Driver.Render.CopyPV = gamma_copy_pv_extras;
- } else {
- tnl->Driver.Render.Interp = setup_tab[ind].interp;
- tnl->Driver.Render.CopyPV = setup_tab[ind].copy_pv;
- }
-}
-
-
-void gammaInitVB( GLcontext *ctx )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
- GLuint size = TNL_CONTEXT(ctx)->vb.Size;
-
- gmesa->verts = (GLubyte *)_mesa_align_malloc(size * 4 * 16, 32);
-
- {
- static int firsttime = 1;
- if (firsttime) {
- init_setup_tab();
- firsttime = 0;
- gmesa->vertex_size = 16; /* FIXME - only one vertex setup */
- }
- }
-}
-
-
-void gammaFreeVB( GLcontext *ctx )
-{
- gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);
- if (gmesa->verts) {
- _mesa_align_free(gmesa->verts);
- gmesa->verts = 0;
- }
-}
diff --git a/src/mesa/drivers/dri/gamma/gamma_vb.h b/src/mesa/drivers/dri/gamma/gamma_vb.h
deleted file mode 100644
index 8701226f590..00000000000
--- a/src/mesa/drivers/dri/gamma/gamma_vb.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright 2001 by Alan Hourihane.
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Alan Hourihane not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Alan Hourihane makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * ALAN HOURIHANE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL ALAN HOURIHANE BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- * Authors: Alan Hourihane, <[email protected]>
- * Keith Whitwell, <[email protected]>
- *
- * 3DLabs Gamma driver.
- */
-
-#ifndef GAMMAVB_INC
-#define GAMMAVB_INC
-
-#include "main/mtypes.h"
-#include "swrast/swrast.h"
-
-#define _GAMMA_NEW_VERTEX (_NEW_TEXTURE | \
- _DD_NEW_TRI_UNFILLED | \
- _DD_NEW_TRI_LIGHT_TWOSIDE)
-
-
-extern void gammaChooseVertexState( GLcontext *ctx );
-extern void gammaCheckTexSizes( GLcontext *ctx );
-extern void gammaBuildVertices( GLcontext *ctx,
- GLuint start,
- GLuint count,
- GLuint newinputs );
-
-
-extern void gamma_import_float_colors( GLcontext *ctx );
-extern void gamma_import_float_spec_colors( GLcontext *ctx );
-
-extern void gamma_translate_vertex( GLcontext *ctx,
- const gammaVertex *src,
- SWvertex *dst );
-
-extern void gammaInitVB( GLcontext *ctx );
-extern void gammaFreeVB( GLcontext *ctx );
-
-extern void gamma_print_vertex( GLcontext *ctx, const gammaVertex *v );
-extern void gammaPrintSetupFlags(char *msg, GLuint flags );
-
-#endif
diff --git a/src/mesa/drivers/dri/gamma/gamma_xmesa.c b/src/mesa/drivers/dri/gamma/gamma_xmesa.c
deleted file mode 100644
index 622121eed46..00000000000
--- a/src/mesa/drivers/dri/gamma/gamma_xmesa.c
+++ /dev/null
@@ -1,273 +0,0 @@
-/*
- * Copyright 2001 by Alan Hourihane.
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Alan Hourihane not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Alan Hourihane makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * ALAN HOURIHANE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL ALAN HOURIHANE BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- * Authors: Alan Hourihane, <[email protected]>
- *
- * 3DLabs Gamma driver
- */
-
-#include "gamma_context.h"
-#include "gamma_macros.h"
-#include "gamma_vb.h"
-#include "main/context.h"
-#include "main/matrix.h"
-#include "glint_dri.h"
-
-#include "swrast/swrast.h"
-#include "swrast_setup/swrast_setup.h"
-#include "tnl/tnl.h"
-#include "vbo/vbo.h"
-
-static GLboolean
-gammaInitDriver(__DRIscreen *sPriv)
-{
- sPriv->private = (void *) gammaCreateScreen( sPriv );
-
- if (!sPriv->private) {
- gammaDestroyScreen( sPriv );
- return GL_FALSE;
- }
-
- return GL_TRUE;
-}
-
-static void
-gammaDestroyContext(__DRIcontext *driContextPriv)
-{
- gammaContextPtr gmesa = (gammaContextPtr)driContextPriv->driverPrivate;
-
- if (gmesa) {
- _swsetup_DestroyContext( gmesa->glCtx );
- _tnl_DestroyContext( gmesa->glCtx );
- _vbo_DestroyContext( gmesa->glCtx );
- _swrast_DestroyContext( gmesa->glCtx );
-
- gammaFreeVB( gmesa->glCtx );
-
- /* free the Mesa context */
- gmesa->glCtx->DriverCtx = NULL;
- _mesa_destroy_context(gmesa->glCtx);
-
- FREE(gmesa);
- driContextPriv->driverPrivate = NULL;
- }
-}
-
-
-static GLboolean
-gammaCreateBuffer( __DRIscreen *driScrnPriv,
- __DRIdrawable *driDrawPriv,
- const __GLcontextModes *mesaVis,
- GLboolean isPixmap )
-{
- if (isPixmap) {
- return GL_FALSE; /* not implemented */
- }
- else {
- driDrawPriv->driverPrivate = (void *)
- _mesa_create_framebuffer(mesaVis,
- GL_FALSE, /* software depth buffer? */
- mesaVis->stencilBits > 0,
- mesaVis->accumRedBits > 0,
- mesaVis->alphaBits > 0
- );
- return (driDrawPriv->driverPrivate != NULL);
- }
-}
-
-
-static void
-gammaDestroyBuffer(__DRIdrawable *driDrawPriv)
-{
- _mesa_reference_framebuffer((GLframebuffer **)(&(driDrawPriv->driverPrivate)), NULL);
-}
-
-static void
-gammaSwapBuffers( __DRIdrawable *dPriv )
-{
- if (dPriv->driContextPriv && dPriv->driContextPriv->driverPrivate) {
- gammaContextPtr gmesa;
- __DRIscreen *driScrnPriv;
- GLcontext *ctx;
-
- gmesa = (gammaContextPtr) dPriv->driContextPriv->driverPrivate;
- ctx = gmesa->glCtx;
- driScrnPriv = gmesa->driScreen;
-
- _mesa_notifySwapBuffers(ctx);
-
- VALIDATE_DRAWABLE_INFO(gmesa);
-
- /* Flush any partially filled buffers */
- FLUSH_DMA_BUFFER(gmesa);
-
- DRM_SPINLOCK(&driScrnPriv->pSAREA->drawable_lock,
- driScrnPriv->drawLockID);
- VALIDATE_DRAWABLE_INFO_NO_LOCK(gmesa);
-
- if (gmesa->EnabledFlags & GAMMA_BACK_BUFFER) {
- int src, dst, x0, y0, x1, h;
- int i;
- int nRect = dPriv->numClipRects;
- drm_clip_rect_t *pRect = dPriv->pClipRects;
- __DRIscreen *driScrnPriv = gmesa->driScreen;
- GLINTDRIPtr gDRIPriv = (GLINTDRIPtr)driScrnPriv->pDevPriv;
-
- CHECK_DMA_BUFFER(gmesa, 2);
- WRITE(gmesa->buf, FBReadMode, (gmesa->FBReadMode |
- FBReadSrcEnable));
- WRITE(gmesa->buf, LBWriteMode, LBWriteModeDisable);
-
- for (i = 0; i < nRect; i++, pRect++) {
- x0 = pRect->x1;
- x1 = pRect->x2;
- h = pRect->y2 - pRect->y1;
-
- y0 = driScrnPriv->fbHeight - (pRect->y1+h);
- if (gDRIPriv->numMultiDevices == 2)
- src = (y0/2)*driScrnPriv->fbWidth+x0;
- else
- src = y0*driScrnPriv->fbWidth+x0;
-
- y0 += driScrnPriv->fbHeight;
- if (gDRIPriv->numMultiDevices == 2)
- dst = (y0/2)*driScrnPriv->fbWidth+x0;
- else
- dst = y0*driScrnPriv->fbWidth+x0;
-
- CHECK_DMA_BUFFER(gmesa, 9);
- WRITE(gmesa->buf, StartXDom, x0<<16); /* X0dest */
- WRITE(gmesa->buf, StartY, y0<<16); /* Y0dest */
- WRITE(gmesa->buf, StartXSub, x1<<16); /* X1dest */
- WRITE(gmesa->buf, GLINTCount, h); /* H */
- WRITE(gmesa->buf, dY, 1<<16); /* ydir */
- WRITE(gmesa->buf, dXDom, 0<<16);
- WRITE(gmesa->buf, dXSub, 0<<16);
- WRITE(gmesa->buf, FBSourceOffset, (dst-src));
- WRITE(gmesa->buf, Render, 0x00040048); /* NOT_DONE */
- }
-
- /*
- ** NOTE: FBSourceOffset (above) is backwards from what is
- ** described in the manual (i.e., dst-src instead of src-dst)
- ** due to our using the bottom-left window origin instead of the
- ** top-left window origin.
- */
-
- /* Restore FBReadMode */
- CHECK_DMA_BUFFER(gmesa, 2);
- WRITE(gmesa->buf, FBReadMode, (gmesa->FBReadMode |
- gmesa->AB_FBReadMode));
- WRITE(gmesa->buf, LBWriteMode, LBWriteModeEnable);
- }
-
- if (gmesa->EnabledFlags & GAMMA_BACK_BUFFER)
- PROCESS_DMA_BUFFER_TOP_HALF(gmesa);
-
- DRM_SPINUNLOCK(&driScrnPriv->pSAREA->drawable_lock,
- driScrnPriv->drawLockID);
- VALIDATE_DRAWABLE_INFO_NO_LOCK_POST(gmesa);
-
- if (gmesa->EnabledFlags & GAMMA_BACK_BUFFER)
- PROCESS_DMA_BUFFER_BOTTOM_HALF(gmesa);
- } else {
- _mesa_problem(NULL, "gammaSwapBuffers: drawable has no context!\n");
- }
-}
-
-static GLboolean
-gammaMakeCurrent(__DRIcontext *driContextPriv,
- __DRIdrawable *driDrawPriv,
- __DRIdrawable *driReadPriv)
-{
- if (driContextPriv) {
- GET_CURRENT_CONTEXT(ctx);
- gammaContextPtr oldGammaCtx = ctx ? GAMMA_CONTEXT(ctx) : NULL;
- gammaContextPtr newGammaCtx = (gammaContextPtr) driContextPriv->driverPrivate;
-
- if ( newGammaCtx != oldGammaCtx ) {
- newGammaCtx->dirty = ~0;
- }
-
- if (newGammaCtx->driDrawable != driDrawPriv) {
- newGammaCtx->driDrawable = driDrawPriv;
- gammaUpdateWindow ( newGammaCtx->glCtx );
- gammaUpdateViewportOffset( newGammaCtx->glCtx );
- }
-
-#if 0
- newGammaCtx->Window &= ~W_GIDMask;
- newGammaCtx->Window |= (driDrawPriv->index << 5);
- CHECK_DMA_BUFFER(newGammaCtx,1);
- WRITE(newGammaCtx->buf, GLINTWindow, newGammaCtx->Window);
-#endif
-
-newGammaCtx->new_state |= GAMMA_NEW_WINDOW; /* FIXME */
-
- _mesa_make_current2( newGammaCtx->glCtx,
- (GLframebuffer *) driDrawPriv->driverPrivate,
- (GLframebuffer *) driReadPriv->driverPrivate );
- } else {
- _mesa_make_current( 0, 0 );
- }
- return GL_TRUE;
-}
-
-
-static GLboolean
-gammaUnbindContext( __DRIcontext *driContextPriv )
-{
- return GL_TRUE;
-}
-
-const struct __DriverAPIRec driDriverAPI = {
- gammaInitDriver,
- gammaDestroyScreen,
- gammaCreateContext,
- gammaDestroyContext,
- gammaCreateBuffer,
- gammaDestroyBuffer,
- gammaSwapBuffers,
- gammaMakeCurrent,
- gammaUnbindContext
-};
-
-
-
-/*
- * This is the bootstrap function for the driver.
- * The __driCreateScreen name is the symbol that libGL.so fetches.
- * Return: pointer to a __DRIscreen.
- */
-void *__driCreateScreen(Display *dpy, int scrn, __DRIscreen *psc,
- int numConfigs, __GLXvisualConfig *config)
-{
- __DRIscreen *psp;
- psp = __driUtilCreateScreen(dpy, scrn, psc, numConfigs, config, &gammaAPI);
- return (void *) psp;
-}
-
-/* This is the table of extensions that the loader will dlsym() for. */
-PUBLIC const __DRIextension *__driDriverExtensions[] = {
- &driCoreExtension.base,
- &driLegacyExtension.base,
- NULL
-};
diff --git a/src/mesa/drivers/dri/gamma/server/glint_common.h b/src/mesa/drivers/dri/gamma/server/glint_common.h
deleted file mode 100644
index 36554e4ac22..00000000000
--- a/src/mesa/drivers/dri/gamma/server/glint_common.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* glint_common.h -- common header definitions for Gamma 2D/3D/DRM suite
- *
- * Copyright 2002 Tungsten Graphics, Inc., Cedar Park, Texas.
- * 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.
- *
- * Converted to common header format:
- * Jens Owen <[email protected]>
- *
- *
- */
-
-#ifndef _GLINT_COMMON_H_
-#define _GLINT_COMMON_H_
-
-/*
- * WARNING: If you change any of these defines, make sure to change
- * the kernel include file as well (gamma_drm.h)
- */
-
-/* Driver specific DRM command indices
- * NOTE: these are not OS specific, but they are driver specific
- */
-#define DRM_GAMMA_INIT 0x00
-#define DRM_GAMMA_COPY 0x01
-
-typedef struct {
- enum {
- GAMMA_INIT_DMA = 0x01,
- GAMMA_CLEANUP_DMA = 0x02
- } func;
- int sarea_priv_offset;
- int pcimode;
- unsigned int mmio0;
- unsigned int mmio1;
- unsigned int mmio2;
- unsigned int mmio3;
- unsigned int buffers_offset;
- int num_rast;
-} drmGAMMAInit;
-
-extern int drmGAMMAInitDMA( int fd, drmGAMMAInit *info );
-extern int drmGAMMACleanupDMA( int fd );
-
-#endif
diff --git a/src/mesa/drivers/dri/gamma/server/glint_dri.h b/src/mesa/drivers/dri/gamma/server/glint_dri.h
deleted file mode 100644
index df1992a5d1e..00000000000
--- a/src/mesa/drivers/dri/gamma/server/glint_dri.h
+++ /dev/null
@@ -1,122 +0,0 @@
-/**************************************************************************
-
-Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
-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, sub license, 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 NON-INFRINGEMENT.
-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.
-
-**************************************************************************/
-
-/*
- * Author:
- * Jens Owen <[email protected]>
- *
- */
-
-#ifndef _GLINT_DRI_H_
-#define _GLINT_DRI_H_
-
-#include "xf86drm.h"
-#include "glint_common.h"
-
-typedef struct {
- unsigned int GDeltaMode;
- unsigned int GDepthMode;
- unsigned int GGeometryMode;
- unsigned int GTransformMode;
-} GAMMAContextRegionRec, *GAMMAContextRegionPtr;
-
-typedef struct {
- unsigned char next, prev; /* indices to form a circular LRU */
- unsigned char in_use; /* owned by a client, or free? */
- int age; /* tracked by clients to update local LRU's */
-} GAMMATextureRegionRec, *GAMMATextureRegionPtr;
-
-typedef struct {
- GAMMAContextRegionRec context_state;
-
- unsigned int dirty;
-
- /* Maintain an LRU of contiguous regions of texture space. If
- * you think you own a region of texture memory, and it has an
- * age different to the one you set, then you are mistaken and
- * it has been stolen by another client. If global texAge
- * hasn't changed, there is no need to walk the list.
- *
- * These regions can be used as a proxy for the fine-grained
- * texture information of other clients - by maintaining them
- * in the same lru which is used to age their own textures,
- * clients have an approximate lru for the whole of global
- * texture space, and can make informed decisions as to which
- * areas to kick out. There is no need to choose whether to
- * kick out your own texture or someone else's - simply eject
- * them all in LRU order.
- */
-
-#define GAMMA_NR_TEX_REGIONS 64
- GAMMATextureRegionRec texList[GAMMA_NR_TEX_REGIONS+1];
- /* Last elt is sentinal */
- int texAge; /* last time texture was uploaded */
- int last_enqueue; /* last time a buffer was enqueued */
- int last_dispatch; /* age of the most recently dispatched buffer */
- int last_quiescent; /* */
- int ctxOwner; /* last context to upload state */
-
- int vertex_prim;
-} GLINTSAREADRIRec, *GLINTSAREADRIPtr;
-
-/*
- * Glint specific record passed back to client driver
- * via DRIGetDeviceInfo request
- */
-typedef struct {
- drmRegion registers0;
- drmRegion registers1;
- drmRegion registers2;
- drmRegion registers3;
- int numMultiDevices;
- int pprod;
- int cpp;
- int frontOffset;
- int frontPitch;
- int backOffset;
- int backPitch;
- int backX;
- int backY;
- int depthOffset;
- int depthPitch;
- int textureSize;
- int logTextureGranularity;
-} GLINTDRIRec, *GLINTDRIPtr;
-
-#define GLINT_DRI_BUF_COUNT 256
-#define GLINT_DRI_BUF_SIZE 4096
-
-#define GAMMA_NR_TEX_REGIONS 64
-
-#define DMA_WRITE(val,reg) \
-do { \
- pGlint->buf2D++ = Glint##reg##Tag; \
- pGlint->buf2D++ = val; \
-} while (0)
-
-#endif /* _GLINT_DRI_H_ */