aboutsummaryrefslogtreecommitdiff
path: root/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome
diff options
context:
space:
mode:
authorMike Gabriel <mike.gabriel@das-netzwerkteam.de>2015-02-02 15:02:49 +0100
committerMike Gabriel <mike.gabriel@das-netzwerkteam.de>2015-02-02 15:02:49 +0100
commitb16b9e4656e7199c2aec74a4c8ebc7a875d3ba73 (patch)
tree4361edef0d42d5bf5ac984ef72b4fac35426eae7 /nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome
parent0d5a83e986f39982c0924652a3662e60b1f23162 (diff)
downloadnx-libs-b16b9e4656e7199c2aec74a4c8ebc7a875d3ba73.tar.gz
nx-libs-b16b9e4656e7199c2aec74a4c8ebc7a875d3ba73.tar.bz2
nx-libs-b16b9e4656e7199c2aec74a4c8ebc7a875d3ba73.zip
massive reduction of unneeded files
Diffstat (limited to 'nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome')
-rw-r--r--nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/Makefile32
-rw-r--r--nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/server/via.h11
-rw-r--r--nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/server/via_dri.c1252
-rw-r--r--nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/server/via_dri.h78
-rw-r--r--nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/server/via_driver.h309
-rw-r--r--nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/server/via_priv.h70
-rw-r--r--nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/server/via_regs.h197
-rw-r--r--nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_3d_reg.h1652
-rw-r--r--nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_context.c782
-rw-r--r--nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_context.h412
-rw-r--r--nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_drmclient.h29
-rw-r--r--nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_fb.c243
-rw-r--r--nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_fb.h42
-rw-r--r--nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_ioctl.c970
-rw-r--r--nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_ioctl.h135
-rw-r--r--nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_memcpy.c138
-rw-r--r--nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_render.c131
-rw-r--r--nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_screen.c491
-rw-r--r--nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_screen.h95
-rw-r--r--nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_span.c289
-rw-r--r--nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_span.h37
-rw-r--r--nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_state.c1550
-rw-r--r--nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_state.h39
-rw-r--r--nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_tex.c970
-rw-r--r--nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_tex.h41
-rw-r--r--nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_texcombine.c424
-rw-r--r--nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_tris.c1190
-rw-r--r--nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_tris.h35
28 files changed, 0 insertions, 11644 deletions
diff --git a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/Makefile b/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/Makefile
deleted file mode 100644
index 5fe00c1bd..000000000
--- a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/Makefile
+++ /dev/null
@@ -1,32 +0,0 @@
-# src/mesa/drivers/dri/unichrome/Makefile
-
-TOP = ../../../../..
-include $(TOP)/configs/current
-
-LIBNAME = unichrome_dri.so
-
-MINIGLX_SOURCES = server/via_dri.c
-
-DRIVER_SOURCES = \
- via_context.c \
- via_fb.c \
- via_tex.c \
- via_ioctl.c \
- via_memcpy.c \
- via_render.c \
- via_screen.c \
- via_span.c \
- via_state.c \
- via_texcombine.c \
- via_tris.c
-
-C_SOURCES = \
- $(COMMON_SOURCES) \
- $(DRIVER_SOURCES)
-
-ASM_SOURCES =
-
-
-include ../Makefile.template
-
-symlinks:
diff --git a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/server/via.h b/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/server/via.h
deleted file mode 100644
index 2cfe6631e..000000000
--- a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/server/via.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#ifndef __VIA_H__
-#define __VIA_H__
-
-typedef struct VIAInfo
-{
- size_t registerSize;
- void * registerHandle;
- void * data;
-} * VIAInfoPtr;
-
-#endif /* __VIA_H__ */
diff --git a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/server/via_dri.c b/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/server/via_dri.c
deleted file mode 100644
index d7217d205..000000000
--- a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/server/via_dri.c
+++ /dev/null
@@ -1,1252 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/via/via_dri.c,v 1.4 2003/09/24 02:43:30 dawes Exp $ */
-/*
- * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved.
- * Copyright 2001-2003 S3 Graphics, Inc. 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
- * VIA, S3 GRAPHICS, 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.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-#include <unistd.h>
-
-#include "driver.h"
-#include "drm.h"
-#include "imports.h"
-
-#include "dri_util.h"
-
-#include "via_context.h"
-#include "via_dri.h"
-#include "via_driver.h"
-#include "via_common.h"
-#include "xf86drm.h"
-
-static void VIAEnableMMIO(DRIDriverContext * ctx);
-static void VIADisableMMIO(DRIDriverContext * ctx);
-static void VIADisableExtendedFIFO(DRIDriverContext *ctx);
-static void VIAEnableExtendedFIFO(DRIDriverContext *ctx);
-static void VIAInitialize2DEngine(DRIDriverContext *ctx);
-static void VIAInitialize3DEngine(DRIDriverContext *ctx);
-
-static int VIADRIScreenInit(DRIDriverContext * ctx);
-static void VIADRICloseScreen(DRIDriverContext * ctx);
-static int VIADRIFinishScreenInit(DRIDriverContext * ctx);
-
-/* _SOLO : missing macros normally defined by X code */
-#define xf86DrvMsg(a, b, ...) fprintf(stderr, __VA_ARGS__)
-#define MMIO_IN8(base, addr) ((*(((volatile u_int8_t*)base)+(addr)))+0)
-#define MMIO_OUT8(base, addr, val) ((*(((volatile u_int8_t*)base)+(addr)))=((u_int8_t)val))
-#define MMIO_OUT16(base, addr, val) ((*(volatile u_int16_t*)(((u_int8_t*)base)+(addr)))=((u_int16_t)val))
-
-#define VIDEO 0
-#define AGP 1
-#define AGP_PAGE_SIZE 4096
-#define AGP_PAGES 8192
-#define AGP_SIZE (AGP_PAGE_SIZE * AGP_PAGES)
-#define AGP_CMDBUF_PAGES 512
-#define AGP_CMDBUF_SIZE (AGP_PAGE_SIZE * AGP_CMDBUF_PAGES)
-
-static char VIAKernelDriverName[] = "via";
-static char VIAClientDriverName[] = "unichrome";
-
-static int VIADRIAgpInit(const DRIDriverContext *ctx, VIAPtr pVia);
-static int VIADRIPciInit(DRIDriverContext * ctx, VIAPtr pVia);
-static int VIADRIFBInit(DRIDriverContext * ctx, VIAPtr pVia);
-static int VIADRIKernelInit(DRIDriverContext * ctx, VIAPtr pVia);
-static int VIADRIMapInit(DRIDriverContext * ctx, VIAPtr pVia);
-
-static void VIADRIIrqInit( DRIDriverContext *ctx )
-{
- VIAPtr pVia = VIAPTR(ctx);
- VIADRIPtr pVIADRI = pVia->devPrivate;
-
- pVIADRI->irqEnabled = drmGetInterruptFromBusID(pVia->drmFD,
- ctx->pciBus,
- ctx->pciDevice,
- ctx->pciFunc);
-
- if ((drmCtlInstHandler(pVia->drmFD, pVIADRI->irqEnabled))) {
- xf86DrvMsg(pScreen->myNum, X_WARNING,
- "[drm] Failure adding irq handler. "
- "Falling back to irq-free operation.\n");
- pVIADRI->irqEnabled = 0;
- }
-
- if (pVIADRI->irqEnabled)
- xf86DrvMsg(pScreen->myNum, X_INFO,
- "[drm] Irq handler installed, using IRQ %d.\n",
- pVIADRI->irqEnabled);
-}
-
-static void VIADRIIrqExit( DRIDriverContext *ctx ) {
- VIAPtr pVia = VIAPTR(ctx);
- VIADRIPtr pVIADRI = pVia->devPrivate;
-
- if (pVIADRI->irqEnabled) {
- if (drmCtlUninstHandler(pVia->drmFD)) {
- xf86DrvMsg(pScreen-myNum, X_INFO,"[drm] Irq handler uninstalled.\n");
- } else {
- xf86DrvMsg(pScreen->myNum, X_ERROR,
- "[drm] Could not uninstall irq handler.\n");
- }
- }
-}
-
-static void VIADRIRingBufferCleanup(DRIDriverContext *ctx)
-{
- VIAPtr pVia = VIAPTR(ctx);
- VIADRIPtr pVIADRI = pVia->devPrivate;
- drm_via_dma_init_t ringBufInit;
-
- if (pVIADRI->ringBufActive) {
- xf86DrvMsg(pScreen->myNum, X_INFO,
- "[drm] Cleaning up DMA ring-buffer.\n");
- ringBufInit.func = VIA_CLEANUP_DMA;
- if (drmCommandWrite(pVia->drmFD, DRM_VIA_DMA_INIT, &ringBufInit,
- sizeof(ringBufInit))) {
- xf86DrvMsg(pScreen->myNum, X_WARNING,
- "[drm] Failed to clean up DMA ring-buffer: %d\n", errno);
- }
- pVIADRI->ringBufActive = 0;
- }
-}
-
-static int VIADRIRingBufferInit(DRIDriverContext *ctx)
-{
- VIAPtr pVia = VIAPTR(ctx);
- VIADRIPtr pVIADRI = pVia->devPrivate;
- drm_via_dma_init_t ringBufInit;
- drmVersionPtr drmVer;
-
- pVIADRI->ringBufActive = 0;
-
- if (NULL == (drmVer = drmGetVersion(pVia->drmFD))) {
- return GL_FALSE;
- }
-
- if (((drmVer->version_major <= 1) && (drmVer->version_minor <= 3))) {
- return GL_FALSE;
- }
-
- /*
- * Info frome code-snippet on DRI-DEVEL list; Erdi Chen.
- */
-
- switch (pVia->ChipId) {
- case PCI_CHIP_VT3259:
- ringBufInit.reg_pause_addr = 0x40c;
- break;
- default:
- ringBufInit.reg_pause_addr = 0x418;
- break;
- }
-
- ringBufInit.offset = pVia->agpSize;
- ringBufInit.size = AGP_CMDBUF_SIZE;
- ringBufInit.func = VIA_INIT_DMA;
- if (drmCommandWrite(pVia->drmFD, DRM_VIA_DMA_INIT, &ringBufInit,
- sizeof(ringBufInit))) {
- xf86DrvMsg(pScreen->myNum, X_ERROR,
- "[drm] Failed to initialize DMA ring-buffer: %d\n", errno);
- return GL_FALSE;
- }
- xf86DrvMsg(pScreen->myNum, X_INFO,
- "[drm] Initialized AGP ring-buffer, size 0x%lx at AGP offset 0x%lx.\n",
- ringBufInit.size, ringBufInit.offset);
-
- pVIADRI->ringBufActive = 1;
- return GL_TRUE;
-}
-
-static int VIADRIAgpInit(const DRIDriverContext *ctx, VIAPtr pVia)
-{
- unsigned long agp_phys;
- drmAddress agpaddr;
- VIADRIPtr pVIADRI;
- pVIADRI = pVia->devPrivate;
- pVia->agpSize = 0;
-
- if (drmAgpAcquire(pVia->drmFD) < 0) {
- xf86DrvMsg(pScreen->myNum, X_ERROR, "[drm] drmAgpAcquire failed %d\n", errno);
- return GL_FALSE;
- }
-
- if (drmAgpEnable(pVia->drmFD, drmAgpGetMode(pVia->drmFD)&~0x0) < 0) {
- xf86DrvMsg(pScreen->myNum, X_ERROR, "[drm] drmAgpEnable failed\n");
- return GL_FALSE;
- }
-
- xf86DrvMsg(pScreen->myNum, X_INFO, "[drm] drmAgpEnabled succeeded\n");
-
- if (drmAgpAlloc(pVia->drmFD, AGP_SIZE, 0, &agp_phys, &pVia->agpHandle) < 0) {
- xf86DrvMsg(pScreen->myNum, X_ERROR,
- "[drm] drmAgpAlloc failed\n");
- drmAgpRelease(pVia->drmFD);
- return GL_FALSE;
- }
-
- if (drmAgpBind(pVia->drmFD, pVia->agpHandle, 0) < 0) {
- xf86DrvMsg(pScreen->myNum, X_ERROR,
- "[drm] drmAgpBind failed\n");
- drmAgpFree(pVia->drmFD, pVia->agpHandle);
- drmAgpRelease(pVia->drmFD);
-
- return GL_FALSE;
- }
-
- /*
- * Place the ring-buffer last in the AGP region, and restrict the
- * public map not to include the buffer for security reasons.
- */
-
- pVia->agpSize = AGP_SIZE - AGP_CMDBUF_SIZE;
- pVia->agpAddr = drmAgpBase(pVia->drmFD);
- xf86DrvMsg(pScreen->myNum, X_INFO,
- "[drm] agpAddr = 0x%08lx\n",pVia->agpAddr);
-
- pVIADRI->agp.size = pVia->agpSize;
- if (drmAddMap(pVia->drmFD, (drm_handle_t)0,
- pVIADRI->agp.size, DRM_AGP, 0,
- &pVIADRI->agp.handle) < 0) {
- xf86DrvMsg(pScreen->myNum, X_ERROR,
- "[drm] Failed to map public agp area\n");
- pVIADRI->agp.size = 0;
- return GL_FALSE;
- }
- /* Map AGP from kernel to Xserver - Not really needed */
- drmMap(pVia->drmFD, pVIADRI->agp.handle,pVIADRI->agp.size, &agpaddr);
-
- xf86DrvMsg(pScreen->myNum, X_INFO,
- "[drm] agpAddr = 0x%08lx\n", pVia->agpAddr);
- xf86DrvMsg(pScreen->myNum, X_INFO,
- "[drm] agpSize = 0x%08lx\n", pVia->agpSize);
- xf86DrvMsg(pScreen->myNum, X_INFO,
- "[drm] agp physical addr = 0x%08lx\n", agp_phys);
-
- {
- drm_via_agp_t agp;
- agp.offset = 0;
- agp.size = AGP_SIZE-AGP_CMDBUF_SIZE;
- if (drmCommandWrite(pVia->drmFD, DRM_VIA_AGP_INIT, &agp,
- sizeof(drm_via_agp_t)) < 0) {
- drmUnmap(&agpaddr,pVia->agpSize);
- drmRmMap(pVia->drmFD,pVIADRI->agp.handle);
- drmAgpUnbind(pVia->drmFD, pVia->agpHandle);
- drmAgpFree(pVia->drmFD, pVia->agpHandle);
- drmAgpRelease(pVia->drmFD);
- return GL_FALSE;
- }
- }
-
- return GL_TRUE;
-}
-
-static int VIADRIFBInit(DRIDriverContext * ctx, VIAPtr pVia)
-{
- int FBSize = pVia->FBFreeEnd-pVia->FBFreeStart;
- int FBOffset = pVia->FBFreeStart;
- VIADRIPtr pVIADRI = pVia->devPrivate;
- pVIADRI->fbOffset = FBOffset;
- pVIADRI->fbSize = pVia->videoRambytes;
-
- {
- drm_via_fb_t fb;
- fb.offset = FBOffset;
- fb.size = FBSize;
-
- if (drmCommandWrite(pVia->drmFD, DRM_VIA_FB_INIT, &fb,
- sizeof(drm_via_fb_t)) < 0) {
- xf86DrvMsg(pScreen->myNum, X_ERROR,
- "[drm] failed to init frame buffer area\n");
- return GL_FALSE;
- } else {
- xf86DrvMsg(pScreen->myNum, X_INFO,
- "[drm] FBFreeStart= 0x%08x FBFreeEnd= 0x%08x "
- "FBSize= 0x%08x\n",
- pVia->FBFreeStart, pVia->FBFreeEnd, FBSize);
- return GL_TRUE;
- }
- }
-}
-
-static int VIADRIPciInit(DRIDriverContext * ctx, VIAPtr pVia)
-{
- return GL_TRUE;
-}
-
-static int VIADRIScreenInit(DRIDriverContext * ctx)
-{
- VIAPtr pVia = VIAPTR(ctx);
- VIADRIPtr pVIADRI;
- int err;
-
-#if 0
- ctx->shared.SAREASize = ((sizeof(drm_sarea_t) + 0xfff) & 0x1000);
-#else
- if (sizeof(drm_sarea_t)+sizeof(drm_via_sarea_t) > SAREA_MAX) {
- xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
- "Data does not fit in SAREA\n");
- return GL_FALSE;
- }
- ctx->shared.SAREASize = SAREA_MAX;
-#endif
-
- ctx->drmFD = drmOpen(VIAKernelDriverName, NULL);
- if (ctx->drmFD < 0) {
- fprintf(stderr, "[drm] drmOpen failed\n");
- return 0;
- }
- pVia->drmFD = ctx->drmFD;
-
- err = drmSetBusid(ctx->drmFD, ctx->pciBusID);
- if (err < 0) {
- fprintf(stderr, "[drm] drmSetBusid failed (%d, %s), %s\n",
- ctx->drmFD, ctx->pciBusID, strerror(-err));
- return 0;
- }
-
- err = drmAddMap(ctx->drmFD, 0, ctx->shared.SAREASize, DRM_SHM,
- DRM_CONTAINS_LOCK, &ctx->shared.hSAREA);
- if (err < 0) {
- fprintf(stderr, "[drm] drmAddMap failed\n");
- return 0;
- }
- fprintf(stderr, "[drm] added %d byte SAREA at 0x%08lx\n",
- ctx->shared.SAREASize, 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",
- 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",
- ctx->shared.hFrameBuffer);
-
- pVIADRI = (VIADRIPtr) CALLOC(sizeof(VIADRIRec));
- if (!pVIADRI) {
- drmClose(ctx->drmFD);
- return GL_FALSE;
- }
- pVia->devPrivate = pVIADRI;
- ctx->driverClientMsg = pVIADRI;
- ctx->driverClientMsgSize = sizeof(*pVIADRI);
-
- /* DRIScreenInit doesn't add all the common mappings. Add additional mappings here. */
- if (!VIADRIMapInit(ctx, pVia)) {
- VIADRICloseScreen(ctx);
- return GL_FALSE;
- }
-
- pVIADRI->regs.size = VIA_MMIO_REGSIZE;
- pVIADRI->regs.handle = pVia->registerHandle;
- xf86DrvMsg(pScreen->myNum, X_INFO, "[drm] mmio Registers = 0x%08lx\n",
- pVIADRI->regs.handle);
-
- if (drmMap(pVia->drmFD,
- pVIADRI->regs.handle,
- pVIADRI->regs.size,
- (drmAddress *)&pVia->MapBase) != 0)
- {
- VIADRICloseScreen(ctx);
- return GL_FALSE;
- }
-
- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "[dri] mmio mapped.\n" );
-
- VIAEnableMMIO(ctx);
-
- /* Get video memory clock. */
- VGAOUT8(0x3D4, 0x3D);
- pVia->MemClk = (VGAIN8(0x3D5) & 0xF0) >> 4;
- xf86DrvMsg(0, X_INFO, "[dri] MemClk (0x%x)\n", pVia->MemClk);
-
- /* 3D rendering has noise if not enabled. */
- VIAEnableExtendedFIFO(ctx);
-
- VIAInitialize2DEngine(ctx);
-
- /* Must disable MMIO or 3D won't work. */
- VIADisableMMIO(ctx);
-
- VIAInitialize3DEngine(ctx);
-
- pVia->IsPCI = !VIADRIAgpInit(ctx, pVia);
-
- if (pVia->IsPCI) {
- VIADRIPciInit(ctx, pVia);
- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "[dri] use pci.\n" );
- }
- else
- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "[dri] use agp.\n" );
-
- if (!(VIADRIFBInit(ctx, pVia))) {
- VIADRICloseScreen(ctx);
- xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "[dri] frame buffer initialize fail .\n" );
- return GL_FALSE;
- }
-
- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "[dri] frame buffer initialized.\n" );
-
- return VIADRIFinishScreenInit(ctx);
-}
-
-static void
-VIADRICloseScreen(DRIDriverContext * ctx)
-{
- VIAPtr pVia = VIAPTR(ctx);
- VIADRIPtr pVIADRI=(VIADRIPtr)pVia->devPrivate;
-
- VIADRIRingBufferCleanup(ctx);
-
- if (pVia->MapBase) {
- xf86DrvMsg(pScreen->myNum, X_INFO, "[drm] Unmapping MMIO registers\n");
- drmUnmap(pVia->MapBase, pVIADRI->regs.size);
- }
-
- if (pVia->agpSize) {
- xf86DrvMsg(pScreen->myNum, X_INFO, "[drm] Freeing agp memory\n");
- drmAgpFree(pVia->drmFD, pVia->agpHandle);
- xf86DrvMsg(pScreen->myNum, X_INFO, "[drm] Releasing agp module\n");
- drmAgpRelease(pVia->drmFD);
- }
-
-#if 0
- if (pVia->DRIIrqEnable)
-#endif
- VIADRIIrqExit(ctx);
-}
-
-static int
-VIADRIFinishScreenInit(DRIDriverContext * ctx)
-{
- VIAPtr pVia = VIAPTR(ctx);
- VIADRIPtr pVIADRI;
- int err;
-
- err = drmCreateContext(ctx->drmFD, &ctx->serverContext);
- if (err != 0) {
- fprintf(stderr, "%s: drmCreateContext failed %d\n", __FUNCTION__, err);
- return GL_FALSE;
- }
-
- DRM_LOCK(ctx->drmFD, ctx->pSAREA, ctx->serverContext, 0);
-
-
- if (!VIADRIKernelInit(ctx, pVia)) {
- VIADRICloseScreen(ctx);
- return GL_FALSE;
- }
- xf86DrvMsg(pScreen->myNum, X_INFO, "[dri] kernel data initialized.\n");
-
- /* set SAREA value */
- {
- drm_via_sarea_t *saPriv;
-
- saPriv=(drm_via_sarea_t*)(((char*)ctx->pSAREA) +
- sizeof(drm_sarea_t));
- assert(saPriv);
- memset(saPriv, 0, sizeof(*saPriv));
- saPriv->ctxOwner = -1;
- }
- pVIADRI=(VIADRIPtr)pVia->devPrivate;
- pVIADRI->deviceID=pVia->Chipset;
- pVIADRI->width=ctx->shared.virtualWidth;
- pVIADRI->height=ctx->shared.virtualHeight;
- pVIADRI->mem=ctx->shared.fbSize;
- pVIADRI->bytesPerPixel= (ctx->bpp+7) / 8;
- pVIADRI->sarea_priv_offset = sizeof(drm_sarea_t);
- /* TODO */
- pVIADRI->scrnX=pVIADRI->width;
- pVIADRI->scrnY=pVIADRI->height;
-
- /* Initialize IRQ */
-#if 0
- if (pVia->DRIIrqEnable)
-#endif
- VIADRIIrqInit(ctx);
-
- pVIADRI->ringBufActive = 0;
- VIADRIRingBufferInit(ctx);
-
- return GL_TRUE;
-}
-
-/* Initialize the kernel data structures. */
-static int VIADRIKernelInit(DRIDriverContext * ctx, VIAPtr pVia)
-{
- drm_via_init_t drmInfo;
- memset(&drmInfo, 0, sizeof(drm_via_init_t));
- drmInfo.sarea_priv_offset = sizeof(drm_sarea_t);
- drmInfo.func = VIA_INIT_MAP;
- drmInfo.fb_offset = pVia->FrameBufferBase;
- drmInfo.mmio_offset = pVia->registerHandle;
- if (pVia->IsPCI)
- drmInfo.agpAddr = (u_int32_t)NULL;
- else
- drmInfo.agpAddr = (u_int32_t)pVia->agpAddr;
-
- if ((drmCommandWrite(pVia->drmFD, DRM_VIA_MAP_INIT,&drmInfo,
- sizeof(drm_via_init_t))) < 0)
- return GL_FALSE;
-
- return GL_TRUE;
-}
-/* Add a map for the MMIO registers */
-static int VIADRIMapInit(DRIDriverContext * ctx, VIAPtr pVia)
-{
- int flags = 0;
-
- if (drmAddMap(pVia->drmFD, pVia->MmioBase, VIA_MMIO_REGSIZE,
- DRM_REGISTERS, flags, &pVia->registerHandle) < 0) {
- return GL_FALSE;
- }
-
- xf86DrvMsg(pScreen->myNum, X_INFO,
- "[drm] register handle = 0x%08lx\n", pVia->registerHandle);
-
- return GL_TRUE;
-}
-
-static int viaValidateMode(const DRIDriverContext *ctx)
-{
- VIAPtr pVia = VIAPTR(ctx);
-
- return 1;
-}
-
-static int viaPostValidateMode(const DRIDriverContext *ctx)
-{
- VIAPtr pVia = VIAPTR(ctx);
-
- return 1;
-}
-
-static void VIAEnableMMIO(DRIDriverContext * ctx)
-{
- /*vgaHWPtr hwp = VGAHWPTR(ctx);*/
- VIAPtr pVia = VIAPTR(ctx);
- unsigned char val;
-
-#if 0
- if (xf86IsPrimaryPci(pVia->PciInfo)) {
- /* If we are primary card, we still use std vga port. If we use
- * MMIO, system will hang in vgaHWSave when our card used in
- * PLE and KLE (integrated Trident MVP4)
- */
- vgaHWSetStdFuncs(hwp);
- }
- else {
- vgaHWSetMmioFuncs(hwp, pVia->MapBase, 0x8000);
- }
-#endif
-
- val = VGAIN8(0x3c3);
- VGAOUT8(0x3c3, val | 0x01);
- val = VGAIN8(0x3cc);
- VGAOUT8(0x3c2, val | 0x01);
-
- /* Unlock Extended IO Space */
- VGAOUT8(0x3c4, 0x10);
- VGAOUT8(0x3c5, 0x01);
-
- /* Enable MMIO */
- if(!pVia->IsSecondary) {
- VGAOUT8(0x3c4, 0x1a);
- val = VGAIN8(0x3c5);
-#ifdef DEBUG
- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "primary val = %x\n", val);
-#endif
- VGAOUT8(0x3c5, val | 0x68);
- }
- else {
- VGAOUT8(0x3c4, 0x1a);
- val = VGAIN8(0x3c5);
-#ifdef DEBUG
- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "secondary val = %x\n", val);
-#endif
- VGAOUT8(0x3c5, val | 0x38);
- }
-
- /* Unlock CRTC registers */
- VGAOUT8(0x3d4, 0x47);
- VGAOUT8(0x3d5, 0x00);
-
- return;
-}
-
-static void VIADisableMMIO(DRIDriverContext * ctx)
-{
- VIAPtr pVia = VIAPTR(ctx);
- unsigned char val;
-
- VGAOUT8(0x3c4, 0x1a);
- val = VGAIN8(0x3c5);
- VGAOUT8(0x3c5, val & 0x97);
-
- return;
-}
-
-static void VIADisableExtendedFIFO(DRIDriverContext *ctx)
-{
- VIAPtr pVia = VIAPTR(ctx);
- u_int32_t dwGE230, dwGE298;
-
- /* Cause of exit XWindow will dump back register value, others chipset no
- * need to set extended fifo value */
- if (pVia->Chipset == VIA_CLE266 && pVia->ChipRev < 15 &&
- (ctx->shared.virtualWidth > 1024 || pVia->HasSecondary)) {
- /* Turn off Extend FIFO */
- /* 0x298[29] */
- dwGE298 = VIAGETREG(0x298);
- VIASETREG(0x298, dwGE298 | 0x20000000);
- /* 0x230[21] */
- dwGE230 = VIAGETREG(0x230);
- VIASETREG(0x230, dwGE230 & ~0x00200000);
- /* 0x298[29] */
- dwGE298 = VIAGETREG(0x298);
- VIASETREG(0x298, dwGE298 & ~0x20000000);
- }
-}
-
-static void VIAEnableExtendedFIFO(DRIDriverContext *ctx)
-{
- VIAPtr pVia = VIAPTR(ctx);
- u_int8_t bRegTemp;
- u_int32_t dwGE230, dwGE298;
-
- switch (pVia->Chipset) {
- case VIA_CLE266:
- if (pVia->ChipRev > 14) { /* For 3123Cx */
- if (pVia->HasSecondary) { /* SAMM or DuoView case */
- if (ctx->shared.virtualWidth >= 1024)
- {
- /* 3c5.16[0:5] */
- VGAOUT8(0x3C4, 0x16);
- bRegTemp = VGAIN8(0x3C5);
- bRegTemp &= ~0x3F;
- bRegTemp |= 0x1C;
- VGAOUT8(0x3C5, bRegTemp);
- /* 3c5.17[0:6] */
- VGAOUT8(0x3C4, 0x17);
- bRegTemp = VGAIN8(0x3C5);
- bRegTemp &= ~0x7F;
- bRegTemp |= 0x3F;
- VGAOUT8(0x3C5, bRegTemp);
- pVia->EnableExtendedFIFO = GL_TRUE;
- }
- }
- else /* Single view or Simultaneoue case */
- {
- if (ctx->shared.virtualWidth > 1024)
- {
- /* 3c5.16[0:5] */
- VGAOUT8(0x3C4, 0x16);
- bRegTemp = VGAIN8(0x3C5);
- bRegTemp &= ~0x3F;
- bRegTemp |= 0x17;
- VGAOUT8(0x3C5, bRegTemp);
- /* 3c5.17[0:6] */
- VGAOUT8(0x3C4, 0x17);
- bRegTemp = VGAIN8(0x3C5);
- bRegTemp &= ~0x7F;
- bRegTemp |= 0x2F;
- VGAOUT8(0x3C5, bRegTemp);
- pVia->EnableExtendedFIFO = GL_TRUE;
- }
- }
- /* 3c5.18[0:5] */
- VGAOUT8(0x3C4, 0x18);
- bRegTemp = VGAIN8(0x3C5);
- bRegTemp &= ~0x3F;
- bRegTemp |= 0x17;
- bRegTemp |= 0x40; /* force the preq always higher than treq */
- VGAOUT8(0x3C5, bRegTemp);
- }
- else { /* for 3123Ax */
- if (ctx->shared.virtualWidth > 1024 || pVia->HasSecondary) {
- /* Turn on Extend FIFO */
- /* 0x298[29] */
- dwGE298 = VIAGETREG(0x298);
- VIASETREG(0x298, dwGE298 | 0x20000000);
- /* 0x230[21] */
- dwGE230 = VIAGETREG(0x230);
- VIASETREG(0x230, dwGE230 | 0x00200000);
- /* 0x298[29] */
- dwGE298 = VIAGETREG(0x298);
- VIASETREG(0x298, dwGE298 & ~0x20000000);
-
- /* 3c5.16[0:5] */
- VGAOUT8(0x3C4, 0x16);
- bRegTemp = VGAIN8(0x3C5);
- bRegTemp &= ~0x3F;
- bRegTemp |= 0x17;
- /* bRegTemp |= 0x10; */
- VGAOUT8(0x3C5, bRegTemp);
- /* 3c5.17[0:6] */
- VGAOUT8(0x3C4, 0x17);
- bRegTemp = VGAIN8(0x3C5);
- bRegTemp &= ~0x7F;
- bRegTemp |= 0x2F;
- /*bRegTemp |= 0x1F;*/
- VGAOUT8(0x3C5, bRegTemp);
- /* 3c5.18[0:5] */
- VGAOUT8(0x3C4, 0x18);
- bRegTemp = VGAIN8(0x3C5);
- bRegTemp &= ~0x3F;
- bRegTemp |= 0x17;
- bRegTemp |= 0x40; /* force the preq always higher than treq */
- VGAOUT8(0x3C5, bRegTemp);
- pVia->EnableExtendedFIFO = GL_TRUE;
- }
- }
- break;
- case VIA_KM400:
- if (pVia->HasSecondary) { /* SAMM or DuoView case */
- if ((ctx->shared.virtualWidth >= 1600) &&
- (pVia->MemClk <= VIA_MEM_DDR200)) {
- /* enable CRT extendded FIFO */
- VGAOUT8(0x3C4, 0x17);
- VGAOUT8(0x3C5, 0x1C);
- /* revise second display queue depth and read threshold */
- VGAOUT8(0x3C4, 0x16);
- bRegTemp = VGAIN8(0x3C5);
- bRegTemp &= ~0x3F;
- bRegTemp = (bRegTemp) | (0x09);
- VGAOUT8(0x3C5, bRegTemp);
- }
- else {
- /* enable CRT extendded FIFO */
- VGAOUT8(0x3C4, 0x17);
- VGAOUT8(0x3C5,0x3F);
- /* revise second display queue depth and read threshold */
- VGAOUT8(0x3C4, 0x16);
- bRegTemp = VGAIN8(0x3C5);
- bRegTemp &= ~0x3F;
- bRegTemp = (bRegTemp) | (0x1C);
- VGAOUT8(0x3C5, bRegTemp);
- }
- /* 3c5.18[0:5] */
- VGAOUT8(0x3C4, 0x18);
- bRegTemp = VGAIN8(0x3C5);
- bRegTemp &= ~0x3F;
- bRegTemp |= 0x17;
- bRegTemp |= 0x40; /* force the preq always higher than treq */
- VGAOUT8(0x3C5, bRegTemp);
- pVia->EnableExtendedFIFO = GL_TRUE;
- }
- else {
- if ( (ctx->shared.virtualWidth > 1024) && (ctx->shared.virtualWidth <= 1280) )
- {
- /* enable CRT extendded FIFO */
- VGAOUT8(0x3C4, 0x17);
- VGAOUT8(0x3C5, 0x3F);
- /* revise second display queue depth and read threshold */
- VGAOUT8(0x3C4, 0x16);
- bRegTemp = VGAIN8(0x3C5);
- bRegTemp &= ~0x3F;
- bRegTemp = (bRegTemp) | (0x17);
- VGAOUT8(0x3C5, bRegTemp);
- pVia->EnableExtendedFIFO = GL_TRUE;
- }
- else if ((ctx->shared.virtualWidth > 1280))
- {
- /* enable CRT extendded FIFO */
- VGAOUT8(0x3C4, 0x17);
- VGAOUT8(0x3C5, 0x3F);
- /* revise second display queue depth and read threshold */
- VGAOUT8(0x3C4, 0x16);
- bRegTemp = VGAIN8(0x3C5);
- bRegTemp &= ~0x3F;
- bRegTemp = (bRegTemp) | (0x1C);
- VGAOUT8(0x3C5, bRegTemp);
- pVia->EnableExtendedFIFO = GL_TRUE;
- }
- else
- {
- /* enable CRT extendded FIFO */
- VGAOUT8(0x3C4, 0x17);
- VGAOUT8(0x3C5, 0x3F);
- /* revise second display queue depth and read threshold */
- VGAOUT8(0x3C4, 0x16);
- bRegTemp = VGAIN8(0x3C5);
- bRegTemp &= ~0x3F;
- bRegTemp = (bRegTemp) | (0x10);
- VGAOUT8(0x3C5, bRegTemp);
- }
- /* 3c5.18[0:5] */
- VGAOUT8(0x3C4, 0x18);
- bRegTemp = VGAIN8(0x3C5);
- bRegTemp &= ~0x3F;
- bRegTemp |= 0x17;
- bRegTemp |= 0x40; /* force the preq always higher than treq */
- VGAOUT8(0x3C5, bRegTemp);
- }
- break;
- case VIA_K8M800:
- /*=* R1 Display FIFO depth (384 /8 -1 -> 0xbf) SR17[7:0] (8bits) *=*/
- VGAOUT8(0x3c4, 0x17);
- VGAOUT8(0x3c5, 0xbf);
-
- /*=* R2 Display fetch datum threshold value (328/4 -> 0x52)
- SR16[5:0], SR16[7] (7bits) *=*/
- VGAOUT8(0x3c4, 0x16);
- bRegTemp = VGAIN8(0x3c5) & ~0xBF;
- bRegTemp |= (0x52 & 0x3F);
- bRegTemp |= ((0x52 & 0x40) << 1);
- VGAOUT8(0x3c5, bRegTemp);
-
- /*=* R3 Switch to the highest agent threshold value (74 -> 0x4a)
- SR18[5:0], SR18[7] (7bits) *=*/
- VGAOUT8(0x3c4, 0x18);
- bRegTemp = VGAIN8(0x3c5) & ~0xBF;
- bRegTemp |= (0x4a & 0x3F);
- bRegTemp |= ((0x4a & 0x40) << 1);
- VGAOUT8(0x3c5, bRegTemp);
-#if 0
- /*=* R4 Fetch Number for a scan line (unit: 8 bytes)
- SR1C[7:0], SR1D[1:0] (10bits) *=*/
- wRegTemp = (pBIOSInfo->offsetWidthByQWord >> 1) + 4;
- VGAOUT8(0x3c4, 0x1c);
- VGAOUT8(0x3c5, (u_int8_t)(wRegTemp & 0xFF));
- VGAOUT8(0x3c4, 0x1d);
- bRegTemp = VGAIN8(0x3c5) & ~0x03;
- VGAOUT8(0x3c5, bRegTemp | ((wRegTemp & 0x300) >> 8));
-#endif
- if (ctx->shared.virtualWidth >= 1400 && ctx->bpp == 32)
- {
- /*=* Max. length for a request SR22[4:0] (64/4 -> 0x10) *=*/
- VGAOUT8(0x3c4, 0x22);
- bRegTemp = VGAIN8(0x3c5) & ~0x1F;
- VGAOUT8(0x3c5, bRegTemp | 0x10);
- }
- else
- {
- /*=* Max. length for a request SR22[4:0]
- (128/4 -> over flow 0x0) *=*/
- VGAOUT8(0x3c4, 0x22);
- bRegTemp = VGAIN8(0x3c5) & ~0x1F;
- VGAOUT8(0x3c5, bRegTemp);
- }
- break;
- case VIA_PM800:
- /*=* R1 Display FIFO depth (96-1 -> 0x5f) SR17[7:0] (8bits) *=*/
- VGAOUT8(0x3c4, 0x17);
- VGAOUT8(0x3c5, 0x5f);
-
- /*=* R2 Display fetch datum threshold value (32 -> 0x20)
- SR16[5:0], SR16[7] (7bits) *=*/
- VGAOUT8(0x3c4, 0x16);
- bRegTemp = VGAIN8(0x3c5) & ~0xBF;
- bRegTemp |= (0x20 & 0x3F);
- bRegTemp |= ((0x20 & 0x40) << 1);
- VGAOUT8(0x3c5, bRegTemp);
-
- /*=* R3 Switch to the highest agent threshold value (16 -> 0x10)
- SR18[5:0], SR18[7] (7bits) *=*/
- VGAOUT8(0x3c4, 0x18);
- bRegTemp = VGAIN8(0x3c5) & ~0xBF;
- bRegTemp |= (0x10 & 0x3F);
- bRegTemp |= ((0x10 & 0x40) << 1);
- VGAOUT8(0x3c5, bRegTemp);
-#if 0
- /*=* R4 Fetch Number for a scan line (unit: 8 bytes)
- SR1C[7:0], SR1D[1:0] (10bits) *=*/
- wRegTemp = (pBIOSInfo->offsetWidthByQWord >> 1) + 4;
- VGAOUT8(0x3c4, 0x1c);
- VGAOUT8(0x3c5, (u_int8_t)(wRegTemp & 0xFF));
- VGAOUT8(0x3c4, 0x1d);
- bRegTemp = VGAIN8(0x3c5) & ~0x03;
- VGAOUT8(0x3c5, bRegTemp | ((wRegTemp & 0x300) >> 8));
-#endif
- if (ctx->shared.virtualWidth >= 1400 && ctx->bpp == 32)
- {
- /*=* Max. length for a request SR22[4:0] (64/4 -> 0x10) *=*/
- VGAOUT8(0x3c4, 0x22);
- bRegTemp = VGAIN8(0x3c5) & ~0x1F;
- VGAOUT8(0x3c5, bRegTemp | 0x10);
- }
- else
- {
- /*=* Max. length for a request SR22[4:0] (0x1F) *=*/
- VGAOUT8(0x3c4, 0x22);
- bRegTemp = VGAIN8(0x3c5) & ~0x1F;
- VGAOUT8(0x3c5, bRegTemp | 0x1F);
- }
- break;
- default:
- break;
- }
-}
-
-static void VIAInitialize2DEngine(DRIDriverContext *ctx)
-{
- VIAPtr pVia = VIAPTR(ctx);
- u_int32_t dwVQStartAddr, dwVQEndAddr;
- u_int32_t dwVQLen, dwVQStartL, dwVQEndL, dwVQStartEndH;
- u_int32_t dwGEMode;
-
- /* init 2D engine regs to reset 2D engine */
- VIASETREG(0x04, 0x0);
- VIASETREG(0x08, 0x0);
- VIASETREG(0x0c, 0x0);
- VIASETREG(0x10, 0x0);
- VIASETREG(0x14, 0x0);
- VIASETREG(0x18, 0x0);
- VIASETREG(0x1c, 0x0);
- VIASETREG(0x20, 0x0);
- VIASETREG(0x24, 0x0);
- VIASETREG(0x28, 0x0);
- VIASETREG(0x2c, 0x0);
- VIASETREG(0x30, 0x0);
- VIASETREG(0x34, 0x0);
- VIASETREG(0x38, 0x0);
- VIASETREG(0x3c, 0x0);
- VIASETREG(0x40, 0x0);
-
- VIADisableMMIO(ctx);
-
- /* Init AGP and VQ regs */
- VIASETREG(0x43c, 0x00100000);
- VIASETREG(0x440, 0x00000000);
- VIASETREG(0x440, 0x00333004);
- VIASETREG(0x440, 0x60000000);
- VIASETREG(0x440, 0x61000000);
- VIASETREG(0x440, 0x62000000);
- VIASETREG(0x440, 0x63000000);
- VIASETREG(0x440, 0x64000000);
- VIASETREG(0x440, 0x7D000000);
-
- VIASETREG(0x43c, 0xfe020000);
- VIASETREG(0x440, 0x00000000);
-
- if (pVia->VQStart != 0) {
- /* Enable VQ */
- dwVQStartAddr = pVia->VQStart;
- dwVQEndAddr = pVia->VQEnd;
- dwVQStartL = 0x50000000 | (dwVQStartAddr & 0xFFFFFF);
- dwVQEndL = 0x51000000 | (dwVQEndAddr & 0xFFFFFF);
- dwVQStartEndH = 0x52000000 | ((dwVQStartAddr & 0xFF000000) >> 24) |
- ((dwVQEndAddr & 0xFF000000) >> 16);
- dwVQLen = 0x53000000 | (VIA_VQ_SIZE >> 3);
-
- VIASETREG(0x43c, 0x00fe0000);
- VIASETREG(0x440, 0x080003fe);
- VIASETREG(0x440, 0x0a00027c);
- VIASETREG(0x440, 0x0b000260);
- VIASETREG(0x440, 0x0c000274);
- VIASETREG(0x440, 0x0d000264);
- VIASETREG(0x440, 0x0e000000);
- VIASETREG(0x440, 0x0f000020);
- VIASETREG(0x440, 0x1000027e);
- VIASETREG(0x440, 0x110002fe);
- VIASETREG(0x440, 0x200f0060);
-
- VIASETREG(0x440, 0x00000006);
- VIASETREG(0x440, 0x40008c0f);
- VIASETREG(0x440, 0x44000000);
- VIASETREG(0x440, 0x45080c04);
- VIASETREG(0x440, 0x46800408);
-
- VIASETREG(0x440, dwVQStartEndH);
- VIASETREG(0x440, dwVQStartL);
- VIASETREG(0x440, dwVQEndL);
- VIASETREG(0x440, dwVQLen);
- }
- else {
- /* Diable VQ */
- VIASETREG(0x43c, 0x00fe0000);
- VIASETREG(0x440, 0x00000004);
- VIASETREG(0x440, 0x40008c0f);
- VIASETREG(0x440, 0x44000000);
- VIASETREG(0x440, 0x45080c04);
- VIASETREG(0x440, 0x46800408);
- }
-
- dwGEMode = 0;
-
- switch (ctx->bpp) {
- case 16:
- dwGEMode |= VIA_GEM_16bpp;
- break;
- case 32:
- dwGEMode |= VIA_GEM_32bpp;
- break;
- default:
- dwGEMode |= VIA_GEM_8bpp;
- break;
- }
-
-#if 0
- switch (ctx->shared.virtualWidth) {
- case 800:
- dwGEMode |= VIA_GEM_800;
- break;
- case 1024:
- dwGEMode |= VIA_GEM_1024;
- break;
- case 1280:
- dwGEMode |= VIA_GEM_1280;
- break;
- case 1600:
- dwGEMode |= VIA_GEM_1600;
- break;
- case 2048:
- dwGEMode |= VIA_GEM_2048;
- break;
- default:
- dwGEMode |= VIA_GEM_640;
- break;
- }
-#endif
-
- VIAEnableMMIO(ctx);
-
- /* Set BPP and Pitch */
- VIASETREG(VIA_REG_GEMODE, dwGEMode);
-
- /* Set Src and Dst base address and pitch, pitch is qword */
- VIASETREG(VIA_REG_SRCBASE, 0x0);
- VIASETREG(VIA_REG_DSTBASE, 0x0);
- VIASETREG(VIA_REG_PITCH, VIA_PITCH_ENABLE |
- ((ctx->shared.virtualWidth * ctx->bpp >> 3) >> 3) |
- (((ctx->shared.virtualWidth * ctx->bpp >> 3) >> 3) << 16));
-}
-
-static int b3DRegsInitialized = 0;
-
-static void VIAInitialize3DEngine(DRIDriverContext *ctx)
-{
- VIAPtr pVia = VIAPTR(ctx);
- int i;
-
- if (!b3DRegsInitialized)
- {
-
- VIASETREG(0x43C, 0x00010000);
-
- for (i = 0; i <= 0x7D; i++)
- {
- VIASETREG(0x440, (u_int32_t) i << 24);
- }
-
- VIASETREG(0x43C, 0x00020000);
-
- for (i = 0; i <= 0x94; i++)
- {
- VIASETREG(0x440, (u_int32_t) i << 24);
- }
-
- VIASETREG(0x440, 0x82400000);
-
- VIASETREG(0x43C, 0x01020000);
-
-
- for (i = 0; i <= 0x94; i++)
- {
- VIASETREG(0x440, (u_int32_t) i << 24);
- }
-
- VIASETREG(0x440, 0x82400000);
- VIASETREG(0x43C, 0xfe020000);
-
- for (i = 0; i <= 0x03; i++)
- {
- VIASETREG(0x440, (u_int32_t) i << 24);
- }
-
- VIASETREG(0x43C, 0x00030000);
-
- for (i = 0; i <= 0xff; i++)
- {
- VIASETREG(0x440, 0);
- }
- VIASETREG(0x43C, 0x00100000);
- VIASETREG(0x440, 0x00333004);
- VIASETREG(0x440, 0x10000002);
- VIASETREG(0x440, 0x60000000);
- VIASETREG(0x440, 0x61000000);
- VIASETREG(0x440, 0x62000000);
- VIASETREG(0x440, 0x63000000);
- VIASETREG(0x440, 0x64000000);
-
- VIASETREG(0x43C, 0x00fe0000);
-
- if (pVia->ChipRev >= 3 )
- VIASETREG(0x440,0x40008c0f);
- else
- VIASETREG(0x440,0x4000800f);
-
- VIASETREG(0x440,0x44000000);
- VIASETREG(0x440,0x45080C04);
- VIASETREG(0x440,0x46800408);
- VIASETREG(0x440,0x50000000);
- VIASETREG(0x440,0x51000000);
- VIASETREG(0x440,0x52000000);
- VIASETREG(0x440,0x53000000);
-
- b3DRegsInitialized = 1;
- xf86DrvMsg(pScrn->scrnIndex, X_INFO,
- "3D Engine has been initialized.\n");
- }
-
- VIASETREG(0x43C,0x00fe0000);
- VIASETREG(0x440,0x08000001);
- VIASETREG(0x440,0x0A000183);
- VIASETREG(0x440,0x0B00019F);
- VIASETREG(0x440,0x0C00018B);
- VIASETREG(0x440,0x0D00019B);
- VIASETREG(0x440,0x0E000000);
- VIASETREG(0x440,0x0F000000);
- VIASETREG(0x440,0x10000000);
- VIASETREG(0x440,0x11000000);
- VIASETREG(0x440,0x20000000);
-}
-
-static int
-WaitIdleCLE266(VIAPtr pVia)
-{
- int loop = 0;
-
- /*mem_barrier();*/
-
- while (!(VIAGETREG(VIA_REG_STATUS) & VIA_VR_QUEUE_BUSY) && (loop++ < MAXLOOP))
- ;
-
- while ((VIAGETREG(VIA_REG_STATUS) &
- (VIA_CMD_RGTR_BUSY | VIA_2D_ENG_BUSY | VIA_3D_ENG_BUSY)) &&
- (loop++ < MAXLOOP))
- ;
-
- return loop >= MAXLOOP;
-}
-
-static int viaInitFBDev(DRIDriverContext *ctx)
-{
- VIAPtr pVia = CALLOC(sizeof(*pVia));
-
- ctx->driverPrivate = (void *)pVia;
-
- switch (ctx->chipset) {
- case PCI_CHIP_CLE3122:
- case PCI_CHIP_CLE3022:
- pVia->Chipset = VIA_CLE266;
- break;
- case PCI_CHIP_VT7205:
- case PCI_CHIP_VT3205:
- pVia->Chipset = VIA_KM400;
- break;
- case PCI_CHIP_VT3204:
- pVia->Chipset = VIA_K8M800;
- break;
- case PCI_CHIP_VT3259:
- pVia->Chipset = VIA_PM800;
- break;
- default:
- xf86DrvMsg(0, X_ERROR, "VIA: Unknown device ID (0x%x)\n", ctx->chipset);
- }
-
- /* _SOLO TODO XXX need to read ChipRev too */
- pVia->ChipRev = 0;
-
- pVia->videoRambytes = ctx->shared.fbSize;
- pVia->MmioBase = ctx->MMIOStart;
- pVia->FrameBufferBase = ctx->FBStart & 0xfc000000;
-
- pVia->FBFreeStart = ctx->shared.virtualWidth * ctx->cpp *
- ctx->shared.virtualHeight;
-
-#if 1
- /* Alloc a second framebuffer for the second head */
- pVia->FBFreeStart += ctx->shared.virtualWidth * ctx->cpp *
- ctx->shared.virtualHeight;
-#endif
-
- pVia->VQStart = pVia->FBFreeStart;
- pVia->VQEnd = pVia->FBFreeStart + VIA_VQ_SIZE - 1;
-
- pVia->FBFreeStart += VIA_VQ_SIZE;
-
- pVia->FBFreeEnd = pVia->videoRambytes;
-
- if (!VIADRIScreenInit(ctx))
- return 0;
-
- return 1;
-}
-
-static void viaHaltFBDev(DRIDriverContext *ctx)
-{
- drmUnmap( ctx->pSAREA, ctx->shared.SAREASize );
- drmClose(ctx->drmFD);
-
- if (ctx->driverPrivate) {
- free(ctx->driverPrivate);
- ctx->driverPrivate = 0;
- }
-}
-
-static int viaEngineShutdown(const DRIDriverContext *ctx)
-{
- return 1;
-}
-
-static int viaEngineRestore(const DRIDriverContext *ctx)
-{
- return 1;
-}
-
-const struct DRIDriverRec __driDriver =
-{
- viaValidateMode,
- viaPostValidateMode,
- viaInitFBDev,
- viaHaltFBDev,
- viaEngineShutdown,
- viaEngineRestore,
- 0,
-};
-
diff --git a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/server/via_dri.h b/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/server/via_dri.h
deleted file mode 100644
index b47397d57..000000000
--- a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/server/via_dri.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved.
- * Copyright 2001-2003 S3 Graphics, Inc. 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
- * THE AUTHORS OR COPYRIGHT HOLDERS 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.
- */
-/*
- * Keep this file in perfect sync between the ddx and dri drivers.
- * At least bump the VIA_DRIDDX_VERSION defines appropriately.
- *
- */
-#ifndef _VIA_DRI_H_
-#define _VIA_DRI_H_ 1
-
-#define VIA_MAX_DRAWABLES 256
-
-#define VIA_DRIDDX_VERSION_MAJOR 5
-#define VIA_DRIDDX_VERSION_MINOR 0
-#define VIA_DRIDDX_VERSION_PATCH 0
-
-#ifndef XFree86Server
-typedef int Bool;
-#endif
-
-typedef struct {
- drm_handle_t handle;
- drmSize size;
-} viaRegion, *viaRegionPtr;
-
-typedef struct {
- viaRegion regs, agp;
- int deviceID;
- int width;
- int height;
- int mem;
- int bytesPerPixel;
- int priv1;
- int priv2;
- int fbOffset;
- int fbSize;
- Bool drixinerama;
- int backOffset;
- int depthOffset;
- int textureOffset;
- int textureSize;
- int irqEnabled;
- unsigned int scrnX, scrnY;
- int sarea_priv_offset;
- int ringBufActive;
- unsigned int reg_pause_addr;
-} VIADRIRec, *VIADRIPtr;
-
-typedef struct {
- int dummy;
-} VIAConfigPrivRec, *VIAConfigPrivPtr;
-
-typedef struct {
- int dummy;
-} VIADRIContextRec, *VIADRIContextPtr;
-
-#endif /* _VIA_DRI_H_ */
diff --git a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/server/via_driver.h b/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/server/via_driver.h
deleted file mode 100644
index 997b2e41a..000000000
--- a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/server/via_driver.h
+++ /dev/null
@@ -1,309 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/via/via_driver.h,v 1.7 2003/11/06 18:38:11 tsi Exp $ */
-/*
- * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved.
- * Copyright 2001-2003 S3 Graphics, Inc. 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
- * VIA, S3 GRAPHICS, 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.
- */
-
-#ifndef _VIA_DRIVER_H
-#define _VIA_DRIVER_H
-
-#if 0 /* DEBUG is use in VIA DRI code as a flag */
-/* #define DEBUG_PRINT */
-#ifdef DEBUG_PRINT
-#define DEBUG(x) x
-#else
-#define DEBUG(x)
-#endif
-#endif
-
-#if 0
-#include "vgaHW.h"
-#include "xf86.h"
-#include "xf86Resources.h"
-#include "xf86_ansic.h"
-#include "xf86Pci.h"
-#include "xf86PciInfo.h"
-#include "xf86_OSproc.h"
-#include "compiler.h"
-#include "xf86Cursor.h"
-#include "mipointer.h"
-#include "micmap.h"
-
-#define USE_FB
-#ifdef USE_FB
-#include "fb.h"
-#else
-#include "cfb.h"
-#include "cfb16.h"
-#include "cfb32.h"
-#endif
-
-#include "xf86cmap.h"
-#include "vbe.h"
-#include "xaa.h"
-
-#include "via_regs.h"
-#include "via_bios.h"
-#include "via_gpioi2c.h"
-#include "via_priv.h"
-#include "ginfo.h"
-
-#ifdef XF86DRI
-#define _XF86DRI_SERVER_
-#include "sarea.h"
-#include "dri.h"
-#include "GL/glxint.h"
-#include "via_dri.h"
-#endif
-#else
-#include "via_regs.h"
-
-#include "GL/internal/dri_interface.h"
-#include "via_dri.h"
-#endif
-
-/* _SOLO : copied from via_bios.h */
-/* System Memory CLK */
-#define VIA_MEM_SDR66 0x00
-#define VIA_MEM_SDR100 0x01
-#define VIA_MEM_SDR133 0x02
-#define VIA_MEM_DDR200 0x03
-#define VIA_MEM_DDR266 0x04
-#define VIA_MEM_DDR333 0x05
-#define VIA_MEM_DDR400 0x06
-
-#define DRIVER_NAME "via"
-#define DRIVER_VERSION "4.1.0"
-#define VERSION_MAJOR 4
-#define VERSION_MINOR 1
-#define PATCHLEVEL 41
-#define VIA_VERSION ((VERSION_MAJOR<<24) | (VERSION_MINOR<<16) | PATCHLEVEL)
-
-#define VGAIN8(addr) MMIO_IN8(pVia->MapBase+0x8000, addr)
-#define VGAIN16(addr) MMIO_IN16(pVia->MapBase+0x8000, addr)
-#define VGAIN(addr) MMIO_IN32(pVia->MapBase+0x8000, addr)
-
-#define VGAOUT8(addr, val) MMIO_OUT8(pVia->MapBase+0x8000, addr, val)
-#define VGAOUT16(addr, val) MMIO_OUT16(pVia->MapBase+0x8000, addr, val)
-#define VGAOUT(addr, val) MMIO_OUT32(pVia->MapBase+0x8000, addr, val)
-
-#define INREG(addr) MMIO_IN32(pVia->MapBase, addr)
-#define OUTREG(addr, val) MMIO_OUT32(pVia->MapBase, addr, val)
-#define INREG16(addr) MMIO_IN16(pVia->MapBase, addr)
-#define OUTREG16(addr, val) MMIO_OUT16(pVia->MapBase, addr, val)
-
-#define VIA_PIXMAP_CACHE_SIZE (256 * 1024)
-#define VIA_CURSOR_SIZE (4 * 1024)
-#define VIA_VQ_SIZE (256 * 1024)
-
-typedef struct {
- unsigned int mode, refresh, resMode;
- int countWidthByQWord;
- int offsetWidthByQWord;
- unsigned char SR08, SR0A, SR0F;
-
- /* extended Sequencer registers */
- unsigned char SR10, SR11, SR12, SR13,SR14,SR15,SR16;
- unsigned char SR17, SR18, SR19, SR1A,SR1B,SR1C,SR1D,SR1E;
- unsigned char SR1F, SR20, SR21, SR22,SR23,SR24,SR25,SR26;
- unsigned char SR27, SR28, SR29, SR2A,SR2B,SR2C,SR2D,SR2E;
- unsigned char SR2F, SR30, SR31, SR32,SR33,SR34,SR40,SR41;
- unsigned char SR42, SR43, SR44, SR45,SR46,SR47;
-
- unsigned char Clock;
-
- /* extended CRTC registers */
- unsigned char CR13, CR30, CR31, CR32, CR33, CR34, CR35, CR36;
- unsigned char CR37, CR38, CR39, CR3A, CR40, CR41, CR42, CR43;
- unsigned char CR44, CR45, CR46, CR47, CR48, CR49, CR4A;
- unsigned char CRTCRegs[83];
- unsigned char TVRegs[0xCF];
- unsigned char TVRegs2[0xCF];
-/* unsigned char LCDRegs[0x40];*/
-
-} VIARegRec, *VIARegPtr;
-
-
-typedef struct _VIA {
- VIARegRec SavedReg;
- VIARegRec ModeReg;
-#if 0
- xf86CursorInfoPtr CursorInfoRec;
- int stateMode;
- VIAModeInfoPtr VIAModeList;
-#endif
- int ModeStructInit;
- int Bpp, Bpl, ScissB;
- unsigned PlaneMask;
-
- unsigned long videoRambytes;
- int videoRamKbytes;
- int FBFreeStart;
- int FBFreeEnd;
- int CursorStart;
- int VQStart;
- int VQEnd;
-
- /* These are physical addresses. */
- unsigned long FrameBufferBase;
- unsigned long MmioBase;
-
- /* These are linear addresses. */
- unsigned char* MapBase;
- unsigned char* VidMapBase;
- unsigned char* BltBase;
- unsigned char* MapBaseDense;
- unsigned char* FBBase;
- unsigned char* FBStart;
-
- int PrimaryVidMapped;
- int dacSpeedBpp;
- int minClock, maxClock;
- int MCLK, REFCLK, LCDclk;
- double refclk_fact;
-
- /* Here are all the Options */
- int VQEnable;
- int pci_burst;
- int NoPCIRetry;
- int hwcursor;
- int NoAccel;
- int shadowFB;
- int NoDDCValue;
- int rotate;
-
-#if 0
- CloseScreenProcPtr CloseScreen;
- pciVideoPtr PciInfo;
- PCITAG PciTag;
-#endif
- int Chipset;
- int ChipId;
- int ChipRev;
- /*vbeInfoPtr pVbe;*/
- int EntityIndex;
-
- /* Support for shadowFB and rotation */
- unsigned char* ShadowPtr;
- int ShadowPitch;
- void (*PointerMoved)(int index, int x, int y);
-
- /* Support for XAA acceleration */
-#if 0
- XAAInfoRecPtr AccelInfoRec;
- xRectangle Rect;
-#endif
- u_int32_t SavedCmd;
- u_int32_t SavedFgColor;
- u_int32_t SavedBgColor;
- u_int32_t SavedPattern0;
- u_int32_t SavedPattern1;
- u_int32_t SavedPatternAddr;
-
-#if 0
- /* Support for Int10 processing */
- xf86Int10InfoPtr pInt10;
-
- /* BIOS Info Ptr */
- VIABIOSInfoPtr pBIOSInfo;
- VGABIOSVERPtr pBIOSVer;
-#endif
-
- /* Support for DGA */
- int numDGAModes;
- /*DGAModePtr DGAModes;*/
- int DGAactive;
- int DGAViewportStatus;
-
- /* The various wait handlers. */
- int (*myWaitIdle)(struct _VIA*);
-
-#if 0
- /* I2C & DDC */
- I2CBusPtr I2C_Port1;
- I2CBusPtr I2C_Port2;
- xf86MonPtr DDC1;
- xf86MonPtr DDC2;
-#endif
-
- /* MHS */
- int IsSecondary;
- int HasSecondary;
-
-#if 0
- /* Capture information */
- VIACAPINFO CapInfo[2]; /* 2 capture information */
-#endif
-
-/*
- u_int32_t Cap0_Deinterlace;
- u_int32_t Cap1_Deinterlace;
-
- int Cap0_FieldSwap;
- int NoCap0_HFilter;
- int Capture_OverScanOff;
- int NoMPEGHQV_VFilter;
-*/
-#ifdef XF86DRI
- int directRenderingEnabled;
- DRIInfoPtr pDRIInfo;
- int drmFD;
- int numVisualConfigs;
- __GLXvisualConfig* pVisualConfigs;
- VIAConfigPrivPtr pVisualConfigsPriv;
- unsigned long agpHandle;
- unsigned long registerHandle;
- u_int32_t agpAddr;
- unsigned char *agpBase;
- unsigned int agpSize;
- int IsPCI;
- int drixinerama;
-#else
- int drmFD;
- unsigned long agpHandle;
- unsigned long registerHandle;
- unsigned long agpAddr;
- unsigned char *agpBase;
- unsigned int agpSize;
- int IsPCI;
-#endif
-
- int V4LEnabled;
- u_int16_t ActiveDevice; /* if SAMM, non-equal pBIOSInfo->ActiveDevice */
- unsigned char *CursorImage;
- u_int32_t CursorFG;
- u_int32_t CursorBG;
- u_int32_t CursorMC;
-
- unsigned char MemClk;
- int EnableExtendedFIFO;
- VIADRIPtr devPrivate;
-} VIARec, *VIAPtr;
-
-
-/* Shortcuts. These depend on a local symbol "pVia". */
-
-#define WaitIdle() pVia->myWaitIdle(pVia)
-#define VIAPTR(p) ((VIAPtr)((p)->driverPrivate))
-
-#endif /* _VIA_DRIVER_H */
-
diff --git a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/server/via_priv.h b/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/server/via_priv.h
deleted file mode 100644
index 587531b37..000000000
--- a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/server/via_priv.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/via/via_priv.h,v 1.3 2003/08/27 15:16:12 tsi Exp $ */
-
-#ifndef _VIA_PRIV_H_
-#define _VIA_PRIV_H_ 1
-
-//#include "ddmpeg.h"
-#include "via_common.h"
-
-#define MEM_BLOCKS 4
-
-typedef struct {
- unsigned long base; /* Offset into fb */
- int pool; /* Pool we drew from */
- int drm_fd; /* Fd in DRM mode */
- drm_via_mem_t drm; /* DRM management object */
- int slot; /* Pool 3 slot */
- void *pVia; /* VIA driver pointer */
- //FBLinearPtr linear; /* X linear pool info ptr */
-} VIAMem;
-
-typedef VIAMem *VIAMemPtr;
-
-
-
-#if 0
-typedef struct {
- unsigned long gdwVideoFlagTV1;
- unsigned long gdwVideoFlagSW;
- unsigned long gdwVideoFlagMPEG;
- unsigned long gdwAlphaEnabled; /* For Alpha blending use*/
-
- VIAMem SWOVMem;
- VIAMem HQVMem;
- VIAMem SWfbMem;
-
- DDPIXELFORMAT DPFsrc;
- DDUPDATEOVERLAY UpdateOverlayBackup; /* For HQVcontrol func use
- // To save MPEG updateoverlay info.*/
-
-/* device struct */
- SWDEVICE SWDevice;
- SUBDEVICE SUBDevice;
- MPGDEVICE MPGDevice;
- OVERLAYRECORD overlayRecordV1;
- OVERLAYRECORD overlayRecordV3;
-
- BoxRec AvailFBArea;
- FBLinearPtr SWOVlinear;
-
- int MPEG_ON;
- int SWVideo_ON;
-
-/*To solve the bandwidth issue */
- unsigned long gdwUseExtendedFIFO;
-
-/* For panning mode use */
- int panning_old_x;
- int panning_old_y;
- int panning_x;
- int panning_y;
-
-/*To solve the bandwidth issue */
- unsigned char Save_3C4_16;
- unsigned char Save_3C4_17;
- unsigned char Save_3C4_18;
-
-} swovRec, *swovPtr;
-#endif
-
-#endif /* _VIA_PRIV_H_ */
diff --git a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/server/via_regs.h b/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/server/via_regs.h
deleted file mode 100644
index 5c5eecbe8..000000000
--- a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/server/via_regs.h
+++ /dev/null
@@ -1,197 +0,0 @@
-/*
- * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved.
- * Copyright 2001-2003 S3 Graphics, Inc. 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
- * VIA, S3 GRAPHICS, 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.
- */
-
-/*************************************************************************
- *
- * File: via_regs.c
- * Content: The defines of Via registers
- *
- ************************************************************************/
-
-#ifndef _VIA_REGS_H
-#define _VIA_REGS_H
-
-#include "via_driver.h"
-
-/*#define VIA_SERIES(chip) (chip == VIA_CLE266)*/
-
-#define PCI_VIA_VENDOR_ID 0x1106
-
-#define PCI_CHIP_CLE3122 0x3122
-#define PCI_CHIP_CLE3022 0x3022
-#define PCI_CHIP_VT3205 0x3205
-#define PCI_CHIP_VT7205 0x7205
-#define PCI_CHIP_VT3204 0x3108
-#define PCI_CHIP_VT3259 0x3118
-
-
-#define BIOS_BSIZE 1024
-#define BIOS_BASE 0xc0000
-
-
-#define VIA_MMIO_REGSIZE 0x9000
-#define VIA_MMIO_REGBASE 0x0
-#define VIA_MMIO_VGABASE 0x8000
-#define VIA_MMIO_BLTBASE 0x200000
-#define VIA_MMIO_BLTSIZE 0x10000
-
-
-/* defines for VIA 2D registers */
-#define VIA_REG_GECMD 0x000
-#define VIA_REG_GEMODE 0x004
-#define VIA_REG_GESTATUS 0x004 /* as same as VIA_REG_GEMODE */
-#define VIA_REG_SRCPOS 0x008
-#define VIA_REG_DSTPOS 0x00C
-#define VIA_REG_LINE_K1K2 0x008
-#define VIA_REG_LINE_XY 0x00C
-#define VIA_REG_DIMENSION 0x010 /* width and height */
-#define VIA_REG_PATADDR 0x014
-#define VIA_REG_FGCOLOR 0x018
-#define VIA_REG_DSTCOLORKEY 0x018 /* as same as VIA_REG_FG */
-#define VIA_REG_BGCOLOR 0x01C
-#define VIA_REG_SRCCOLORKEY 0x01C /* as same as VIA_REG_BG */
-#define VIA_REG_CLIPTL 0x020 /* top and left of clipping */
-#define VIA_REG_CLIPBR 0x024 /* bottom and right of clipping */
-#define VIA_REG_OFFSET 0x028
-#define VIA_REG_LINE_ERROR 0x028
-#define VIA_REG_KEYCONTROL 0x02C /* color key control */
-#define VIA_REG_SRCBASE 0x030
-#define VIA_REG_DSTBASE 0x034
-#define VIA_REG_PITCH 0x038 /* pitch of src and dst */
-#define VIA_REG_MONOPAT0 0x03C
-#define VIA_REG_MONOPAT1 0x040
-#define VIA_REG_COLORPAT 0x100 /* from 0x100 to 0x1ff */
-
-
-
-/* defines for VIA video registers */
-#define VIA_REG_INTERRUPT 0x200
-#define VIA_REG_CRTCSTART 0x214
-
-
-/* defines for VIA HW cursor registers */
-#define VIA_REG_CURSOR_MODE 0x2D0
-#define VIA_REG_CURSOR_POS 0x2D4
-#define VIA_REG_CURSOR_ORG 0x2D8
-#define VIA_REG_CURSOR_BG 0x2DC
-#define VIA_REG_CURSOR_FG 0x2E0
-
-
-/* defines for VIA 3D registers */
-#define VIA_REG_STATUS 0x400
-#define VIA_REG_TRANSET 0x43C
-#define VIA_REG_TRANSPACE 0x440
-
-/* VIA_REG_STATUS(0x400): Engine Status */
-#define VIA_CMD_RGTR_BUSY 0x00000080 /* Command Regulator is busy */
-#define VIA_2D_ENG_BUSY 0x00000001 /* 2D Engine is busy */
-#define VIA_3D_ENG_BUSY 0x00000002 /* 3D Engine is busy */
-#define VIA_VR_QUEUE_BUSY 0x00020000 /* Virtual Queue is busy */
-
-
-/* VIA_REG_GECMD(0x00): 2D Engine Command */
-#define VIA_GEC_NOOP 0x00000000
-#define VIA_GEC_BLT 0x00000001
-#define VIA_GEC_LINE 0x00000005
-
-#define VIA_GEC_SRC_XY 0x00000000
-#define VIA_GEC_SRC_LINEAR 0x00000010
-#define VIA_GEC_DST_XY 0x00000000
-#define VIA_GEC_DST_LINRAT 0x00000020
-
-#define VIA_GEC_SRC_FB 0x00000000
-#define VIA_GEC_SRC_SYS 0x00000040
-#define VIA_GEC_DST_FB 0x00000000
-#define VIA_GEC_DST_SYS 0x00000080
-
-#define VIA_GEC_SRC_MONO 0x00000100 /* source is mono */
-#define VIA_GEC_PAT_MONO 0x00000200 /* pattern is mono */
-
-#define VIA_GEC_MSRC_OPAQUE 0x00000000 /* mono src is opaque */
-#define VIA_GEC_MSRC_TRANS 0x00000400 /* mono src is transparent */
-
-#define VIA_GEC_PAT_FB 0x00000000 /* pattern is in frame buffer */
-#define VIA_GEC_PAT_REG 0x00000800 /* pattern is from reg setting */
-
-#define VIA_GEC_CLIP_DISABLE 0x00000000
-#define VIA_GEC_CLIP_ENABLE 0x00001000
-
-#define VIA_GEC_FIXCOLOR_PAT 0x00002000
-
-#define VIA_GEC_INCX 0x00000000
-#define VIA_GEC_DECY 0x00004000
-#define VIA_GEC_INCY 0x00000000
-#define VIA_GEC_DECX 0x00008000
-
-#define VIA_GEC_MPAT_OPAQUE 0x00000000 /* mono pattern is opaque */
-#define VIA_GEC_MPAT_TRANS 0x00010000 /* mono pattern is transparent */
-
-#define VIA_GEC_MONO_UNPACK 0x00000000
-#define VIA_GEC_MONO_PACK 0x00020000
-#define VIA_GEC_MONO_DWORD 0x00000000
-#define VIA_GEC_MONO_WORD 0x00040000
-#define VIA_GEC_MONO_BYTE 0x00080000
-
-#define VIA_GEC_LASTPIXEL_ON 0x00000000
-#define VIA_GEC_LASTPIXEL_OFF 0x00100000
-#define VIA_GEC_X_MAJOR 0x00000000
-#define VIA_GEC_Y_MAJOR 0x00200000
-#define VIA_GEC_QUICK_START 0x00800000
-
-
-/* VIA_REG_GEMODE(0x04): GE mode */
-#define VIA_GEM_8bpp 0x00000000
-#define VIA_GEM_16bpp 0x00000100
-#define VIA_GEM_32bpp 0x00000300
-
-#define VIA_GEM_640 0x00000000 /* 640*480 */
-#define VIA_GEM_800 0x00000400 /* 800*600 */
-#define VIA_GEM_1024 0x00000800 /* 1024*768 */
-#define VIA_GEM_1280 0x00000C00 /* 1280*1024 */
-#define VIA_GEM_1600 0x00001000 /* 1600*1200 */
-#define VIA_GEM_2048 0x00001400 /* 2048*1536 */
-
-/* VIA_REG_PITCH(0x38): Pitch Setting */
-#define VIA_PITCH_ENABLE 0x80000000
-
-
-#define MAXLOOP 0xffffff
-
-
-#define VerticalRetraceWait() \
-{ \
- VGAOUT8(vgaCRIndex, 0x17); \
- if (VGAIN8(vgaCRReg) & 0x80) { \
- while ((VGAIN8(vgaIOBase + 0x0a) & 0x08) == 0x00) ; \
- while ((VGAIN8(vgaIOBase + 0x0a) & 0x08) == 0x08) ; \
- while ((VGAIN8(vgaIOBase + 0x0a) & 0x08) == 0x00) ; \
- } \
-}
-
-
-#define VIASETREG(addr, data) *(volatile unsigned int *)(pVia->MapBase + (addr)) = (data)
-#define VIAGETREG(addr) *(volatile unsigned int *)(pVia->MapBase + (addr))
-
-
-#endif /* _VIA_REGS_H */
diff --git a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_3d_reg.h b/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_3d_reg.h
deleted file mode 100644
index 77b24dc61..000000000
--- a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_3d_reg.h
+++ /dev/null
@@ -1,1652 +0,0 @@
-/*
- * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved.
- * Copyright 2001-2003 S3 Graphics, Inc. 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
- * VIA, S3 GRAPHICS, 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.
- */
-
-#ifndef VIA_3D_REG_H
-#define VIA_3D_REG_H
-#define HC_REG_BASE 0x0400
-
-#define HC_ParaN_MASK 0xffffffff
-#define HC_Para_MASK 0x00ffffff
-#define HC_SubA_MASK 0xff000000
-#define HC_SubA_SHIFT 24
-/* Transmission Setting
- */
-#define HC_REG_TRANS_SET 0x003c
-#define HC_ParaSubType_MASK 0xff000000
-#define HC_ParaType_MASK 0x00ff0000
-#define HC_ParaOS_MASK 0x0000ff00
-#define HC_ParaAdr_MASK 0x000000ff
-#define HC_ParaSubType_SHIFT 24
-#define HC_ParaType_SHIFT 16
-#define HC_ParaOS_SHIFT 8
-#define HC_ParaAdr_SHIFT 0
-
-#define HC_ParaType_CmdVdata 0x0000
-#define HC_ParaType_NotTex 0x0001
-#define HC_ParaType_Tex 0x0002
-#define HC_ParaType_Palette 0x0003
-#define HC_ParaType_PreCR 0x0010
-#define HC_ParaType_Auto 0x00fe
-
-/* Transmission Space
- */
-#define HC_REG_Hpara0 0x0040
-#define HC_REG_HpataAF 0x02fc
-
-/* Read
- */
-#define HC_REG_HREngSt 0x0000
-#define HC_REG_HRFIFOempty 0x0004
-#define HC_REG_HRFIFOfull 0x0008
-#define HC_REG_HRErr 0x000c
-#define HC_REG_FIFOstatus 0x0010
-/* HC_REG_HREngSt 0x0000
- */
-#define HC_HDASZC_MASK 0x00010000
-#define HC_HSGEMI_MASK 0x0000f000
-#define HC_HLGEMISt_MASK 0x00000f00
-#define HC_HCRSt_MASK 0x00000080
-#define HC_HSE0St_MASK 0x00000040
-#define HC_HSE1St_MASK 0x00000020
-#define HC_HPESt_MASK 0x00000010
-#define HC_HXESt_MASK 0x00000008
-#define HC_HBESt_MASK 0x00000004
-#define HC_HE2St_MASK 0x00000002
-#define HC_HE3St_MASK 0x00000001
-/* HC_REG_HRFIFOempty 0x0004
- */
-#define HC_HRZDempty_MASK 0x00000010
-#define HC_HRTXAempty_MASK 0x00000008
-#define HC_HRTXDempty_MASK 0x00000004
-#define HC_HWZDempty_MASK 0x00000002
-#define HC_HWCDempty_MASK 0x00000001
-/* HC_REG_HRFIFOfull 0x0008
- */
-#define HC_HRZDfull_MASK 0x00000010
-#define HC_HRTXAfull_MASK 0x00000008
-#define HC_HRTXDfull_MASK 0x00000004
-#define HC_HWZDfull_MASK 0x00000002
-#define HC_HWCDfull_MASK 0x00000001
-/* HC_REG_HRErr 0x000c
- */
-#define HC_HAGPCMErr_MASK 0x80000000
-#define HC_HAGPCMErrC_MASK 0x70000000
-/* HC_REG_FIFOstatus 0x0010
- */
-#define HC_HRFIFOATall_MASK 0x80000000
-#define HC_HRFIFOATbusy_MASK 0x40000000
-#define HC_HRATFGMDo_MASK 0x00000100
-#define HC_HRATFGMDi_MASK 0x00000080
-#define HC_HRATFRZD_MASK 0x00000040
-#define HC_HRATFRTXA_MASK 0x00000020
-#define HC_HRATFRTXD_MASK 0x00000010
-#define HC_HRATFWZD_MASK 0x00000008
-#define HC_HRATFWCD_MASK 0x00000004
-#define HC_HRATTXTAG_MASK 0x00000002
-#define HC_HRATTXCH_MASK 0x00000001
-
-/* AGP Command Setting
- */
-#define HC_SubA_HAGPBstL 0x0060
-#define HC_SubA_HAGPBendL 0x0061
-#define HC_SubA_HAGPCMNT 0x0062
-#define HC_SubA_HAGPBpL 0x0063
-#define HC_SubA_HAGPBpH 0x0064
-/* HC_SubA_HAGPCMNT 0x0062
- */
-#define HC_HAGPCMNT_MASK 0x00800000
-#define HC_HCmdErrClr_MASK 0x00400000
-#define HC_HAGPBendH_MASK 0x0000ff00
-#define HC_HAGPBstH_MASK 0x000000ff
-#define HC_HAGPBendH_SHIFT 8
-#define HC_HAGPBstH_SHIFT 0
-/* HC_SubA_HAGPBpL 0x0063
- */
-#define HC_HAGPBpL_MASK 0x00fffffc
-#define HC_HAGPBpID_MASK 0x00000003
-#define HC_HAGPBpID_PAUSE 0x00000000
-#define HC_HAGPBpID_JUMP 0x00000001
-#define HC_HAGPBpID_STOP 0x00000002
-/* HC_SubA_HAGPBpH 0x0064
- */
-#define HC_HAGPBpH_MASK 0x00ffffff
-
-/* Miscellaneous Settings
- */
-#define HC_SubA_HClipTB 0x0070
-#define HC_SubA_HClipLR 0x0071
-#define HC_SubA_HFPClipTL 0x0072
-#define HC_SubA_HFPClipBL 0x0073
-#define HC_SubA_HFPClipLL 0x0074
-#define HC_SubA_HFPClipRL 0x0075
-#define HC_SubA_HFPClipTBH 0x0076
-#define HC_SubA_HFPClipLRH 0x0077
-#define HC_SubA_HLP 0x0078
-#define HC_SubA_HLPRF 0x0079
-#define HC_SubA_HSolidCL 0x007a
-#define HC_SubA_HPixGC 0x007b
-#define HC_SubA_HSPXYOS 0x007c
-#define HC_SubA_HVertexCNT 0x007d
-
-#define HC_HClipT_MASK 0x00fff000
-#define HC_HClipT_SHIFT 12
-#define HC_HClipB_MASK 0x00000fff
-#define HC_HClipB_SHIFT 0
-#define HC_HClipL_MASK 0x00fff000
-#define HC_HClipL_SHIFT 12
-#define HC_HClipR_MASK 0x00000fff
-#define HC_HClipR_SHIFT 0
-#define HC_HFPClipBH_MASK 0x0000ff00
-#define HC_HFPClipBH_SHIFT 8
-#define HC_HFPClipTH_MASK 0x000000ff
-#define HC_HFPClipTH_SHIFT 0
-#define HC_HFPClipRH_MASK 0x0000ff00
-#define HC_HFPClipRH_SHIFT 8
-#define HC_HFPClipLH_MASK 0x000000ff
-#define HC_HFPClipLH_SHIFT 0
-#define HC_HSolidCH_MASK 0x000000ff
-#define HC_HPixGC_MASK 0x00800000
-#define HC_HSPXOS_MASK 0x00fff000
-#define HC_HSPXOS_SHIFT 12
-#define HC_HSPYOS_MASK 0x00000fff
-
-/* Command
- * Command A
- */
-#define HC_HCmdHeader_MASK 0xfe000000 /*0xffe00000*/
-#define HC_HE3Fire_MASK 0x00100000
-#define HC_HPMType_MASK 0x000f0000
-#define HC_HEFlag_MASK 0x0000e000
-#define HC_HShading_MASK 0x00001c00
-#define HC_HPMValidN_MASK 0x00000200
-#define HC_HPLEND_MASK 0x00000100
-#define HC_HVCycle_MASK 0x000000ff
-#define HC_HVCycle_Style_MASK 0x000000c0
-#define HC_HVCycle_ChgA_MASK 0x00000030
-#define HC_HVCycle_ChgB_MASK 0x0000000c
-#define HC_HVCycle_ChgC_MASK 0x00000003
-#define HC_HPMType_Point 0x00000000
-#define HC_HPMType_Line 0x00010000
-#define HC_HPMType_Tri 0x00020000
-#define HC_HPMType_TriWF 0x00040000
-#define HC_HEFlag_NoAA 0x00000000
-#define HC_HEFlag_ab 0x00008000
-#define HC_HEFlag_bc 0x00004000
-#define HC_HEFlag_ca 0x00002000
-#define HC_HShading_Solid 0x00000000
-#define HC_HShading_FlatA 0x00000400
-#define HC_HShading_FlatB 0x00000800
-#define HC_HShading_FlatC 0x00000c00
-#define HC_HShading_Gouraud 0x00001000
-#define HC_HVCycle_Full 0x00000000
-#define HC_HVCycle_AFP 0x00000040
-#define HC_HVCycle_One 0x000000c0
-#define HC_HVCycle_NewA 0x00000000
-#define HC_HVCycle_AA 0x00000010
-#define HC_HVCycle_AB 0x00000020
-#define HC_HVCycle_AC 0x00000030
-#define HC_HVCycle_NewB 0x00000000
-#define HC_HVCycle_BA 0x00000004
-#define HC_HVCycle_BB 0x00000008
-#define HC_HVCycle_BC 0x0000000c
-#define HC_HVCycle_NewC 0x00000000
-#define HC_HVCycle_CA 0x00000001
-#define HC_HVCycle_CB 0x00000002
-#define HC_HVCycle_CC 0x00000003
-
-/* Command B
- */
-#define HC_HLPrst_MASK 0x00010000
-#define HC_HLLastP_MASK 0x00008000
-#define HC_HVPMSK_MASK 0x00007f80
-#define HC_HBFace_MASK 0x00000040
-#define HC_H2nd1VT_MASK 0x0000003f
-#define HC_HVPMSK_X 0x00004000
-#define HC_HVPMSK_Y 0x00002000
-#define HC_HVPMSK_Z 0x00001000
-#define HC_HVPMSK_W 0x00000800
-#define HC_HVPMSK_Cd 0x00000400
-#define HC_HVPMSK_Cs 0x00000200
-#define HC_HVPMSK_S 0x00000100
-#define HC_HVPMSK_T 0x00000080
-
-/* Enable Setting
- */
-#define HC_SubA_HEnable 0x0000
-#define HC_HenTXEnvMap_MASK 0x00200000
-#define HC_HenVertexCNT_MASK 0x00100000
-#define HC_HenCPUDAZ_MASK 0x00080000
-#define HC_HenDASZWC_MASK 0x00040000
-#define HC_HenFBCull_MASK 0x00020000
-#define HC_HenCW_MASK 0x00010000
-#define HC_HenAA_MASK 0x00008000
-#define HC_HenST_MASK 0x00004000
-#define HC_HenZT_MASK 0x00002000
-#define HC_HenZW_MASK 0x00001000
-#define HC_HenAT_MASK 0x00000800
-#define HC_HenAW_MASK 0x00000400
-#define HC_HenSP_MASK 0x00000200
-#define HC_HenLP_MASK 0x00000100
-#define HC_HenTXCH_MASK 0x00000080
-#define HC_HenTXMP_MASK 0x00000040
-#define HC_HenTXPP_MASK 0x00000020
-#define HC_HenTXTR_MASK 0x00000010
-#define HC_HenCS_MASK 0x00000008
-#define HC_HenFOG_MASK 0x00000004
-#define HC_HenABL_MASK 0x00000002
-#define HC_HenDT_MASK 0x00000001
-
-/* Z Setting
- */
-#define HC_SubA_HZWBBasL 0x0010
-#define HC_SubA_HZWBBasH 0x0011
-#define HC_SubA_HZWBType 0x0012
-#define HC_SubA_HZBiasL 0x0013
-#define HC_SubA_HZWBend 0x0014
-#define HC_SubA_HZWTMD 0x0015
-#define HC_SubA_HZWCDL 0x0016
-#define HC_SubA_HZWCTAGnum 0x0017
-#define HC_SubA_HZCYNum 0x0018
-#define HC_SubA_HZWCFire 0x0019
-/* HC_SubA_HZWBType
- */
-#define HC_HZWBType_MASK 0x00800000
-#define HC_HZBiasedWB_MASK 0x00400000
-#define HC_HZONEasFF_MASK 0x00200000
-#define HC_HZOONEasFF_MASK 0x00100000
-#define HC_HZWBFM_MASK 0x00030000
-#define HC_HZWBLoc_MASK 0x0000c000
-#define HC_HZWBPit_MASK 0x00003fff
-#define HC_HZWBFM_16 0x00000000
-#define HC_HZWBFM_32 0x00020000
-#define HC_HZWBFM_24 0x00030000
-#define HC_HZWBLoc_Local 0x00000000
-#define HC_HZWBLoc_SyS 0x00004000
-/* HC_SubA_HZWBend
- */
-#define HC_HZWBend_MASK 0x00ffe000
-#define HC_HZBiasH_MASK 0x000000ff
-#define HC_HZWBend_SHIFT 10
-/* HC_SubA_HZWTMD
- */
-#define HC_HZWTMD_MASK 0x00070000
-#define HC_HEBEBias_MASK 0x00007f00
-#define HC_HZNF_MASK 0x000000ff
-#define HC_HZWTMD_NeverPass 0x00000000
-#define HC_HZWTMD_LT 0x00010000
-#define HC_HZWTMD_EQ 0x00020000
-#define HC_HZWTMD_LE 0x00030000
-#define HC_HZWTMD_GT 0x00040000
-#define HC_HZWTMD_NE 0x00050000
-#define HC_HZWTMD_GE 0x00060000
-#define HC_HZWTMD_AllPass 0x00070000
-#define HC_HEBEBias_SHIFT 8
-/* HC_SubA_HZWCDL 0x0016
- */
-#define HC_HZWCDL_MASK 0x00ffffff
-/* HC_SubA_HZWCTAGnum 0x0017
- */
-#define HC_HZWCTAGnum_MASK 0x00ff0000
-#define HC_HZWCTAGnum_SHIFT 16
-#define HC_HZWCDH_MASK 0x000000ff
-#define HC_HZWCDH_SHIFT 0
-/* HC_SubA_HZCYNum 0x0018
- */
-#define HC_HZCYNum_MASK 0x00030000
-#define HC_HZCYNum_SHIFT 16
-#define HC_HZWCQWnum_MASK 0x00003fff
-#define HC_HZWCQWnum_SHIFT 0
-/* HC_SubA_HZWCFire 0x0019
- */
-#define HC_ZWCFire_MASK 0x00010000
-#define HC_HZWCQWnumLast_MASK 0x00003fff
-#define HC_HZWCQWnumLast_SHIFT 0
-
-/* Stencil Setting
- */
-#define HC_SubA_HSTREF 0x0023
-#define HC_SubA_HSTMD 0x0024
-/* HC_SubA_HSBFM
- */
-#define HC_HSBFM_MASK 0x00030000
-#define HC_HSBLoc_MASK 0x0000c000
-#define HC_HSBPit_MASK 0x00003fff
-/* HC_SubA_HSTREF
- */
-#define HC_HSTREF_MASK 0x00ff0000
-#define HC_HSTOPMSK_MASK 0x0000ff00
-#define HC_HSTBMSK_MASK 0x000000ff
-#define HC_HSTREF_SHIFT 16
-#define HC_HSTOPMSK_SHIFT 8
-/* HC_SubA_HSTMD
- */
-#define HC_HSTMD_MASK 0x00070000
-#define HC_HSTOPSF_MASK 0x000001c0
-#define HC_HSTOPSPZF_MASK 0x00000038
-#define HC_HSTOPSPZP_MASK 0x00000007
-#define HC_HSTMD_NeverPass 0x00000000
-#define HC_HSTMD_LT 0x00010000
-#define HC_HSTMD_EQ 0x00020000
-#define HC_HSTMD_LE 0x00030000
-#define HC_HSTMD_GT 0x00040000
-#define HC_HSTMD_NE 0x00050000
-#define HC_HSTMD_GE 0x00060000
-#define HC_HSTMD_AllPass 0x00070000
-#define HC_HSTOPSF_KEEP 0x00000000
-#define HC_HSTOPSF_ZERO 0x00000040
-#define HC_HSTOPSF_REPLACE 0x00000080
-#define HC_HSTOPSF_INCRSAT 0x000000c0
-#define HC_HSTOPSF_DECRSAT 0x00000100
-#define HC_HSTOPSF_INVERT 0x00000140
-#define HC_HSTOPSF_INCR 0x00000180
-#define HC_HSTOPSF_DECR 0x000001c0
-#define HC_HSTOPSPZF_KEEP 0x00000000
-#define HC_HSTOPSPZF_ZERO 0x00000008
-#define HC_HSTOPSPZF_REPLACE 0x00000010
-#define HC_HSTOPSPZF_INCRSAT 0x00000018
-#define HC_HSTOPSPZF_DECRSAT 0x00000020
-#define HC_HSTOPSPZF_INVERT 0x00000028
-#define HC_HSTOPSPZF_INCR 0x00000030
-#define HC_HSTOPSPZF_DECR 0x00000038
-#define HC_HSTOPSPZP_KEEP 0x00000000
-#define HC_HSTOPSPZP_ZERO 0x00000001
-#define HC_HSTOPSPZP_REPLACE 0x00000002
-#define HC_HSTOPSPZP_INCRSAT 0x00000003
-#define HC_HSTOPSPZP_DECRSAT 0x00000004
-#define HC_HSTOPSPZP_INVERT 0x00000005
-#define HC_HSTOPSPZP_INCR 0x00000006
-#define HC_HSTOPSPZP_DECR 0x00000007
-
-/* Alpha Setting
- */
-#define HC_SubA_HABBasL 0x0030
-#define HC_SubA_HABBasH 0x0031
-#define HC_SubA_HABFM 0x0032
-#define HC_SubA_HATMD 0x0033
-#define HC_SubA_HABLCsat 0x0034
-#define HC_SubA_HABLCop 0x0035
-#define HC_SubA_HABLAsat 0x0036
-#define HC_SubA_HABLAop 0x0037
-#define HC_SubA_HABLRCa 0x0038
-#define HC_SubA_HABLRFCa 0x0039
-#define HC_SubA_HABLRCbias 0x003a
-#define HC_SubA_HABLRCb 0x003b
-#define HC_SubA_HABLRFCb 0x003c
-#define HC_SubA_HABLRAa 0x003d
-#define HC_SubA_HABLRAb 0x003e
-/* HC_SubA_HABFM
- */
-#define HC_HABFM_MASK 0x00030000
-#define HC_HABLoc_MASK 0x0000c000
-#define HC_HABPit_MASK 0x000007ff
-/* HC_SubA_HATMD
- */
-#define HC_HATMD_MASK 0x00000700
-#define HC_HATREF_MASK 0x000000ff
-#define HC_HATMD_NeverPass 0x00000000
-#define HC_HATMD_LT 0x00000100
-#define HC_HATMD_EQ 0x00000200
-#define HC_HATMD_LE 0x00000300
-#define HC_HATMD_GT 0x00000400
-#define HC_HATMD_NE 0x00000500
-#define HC_HATMD_GE 0x00000600
-#define HC_HATMD_AllPass 0x00000700
-/* HC_SubA_HABLCsat
- */
-#define HC_HABLCsat_MASK 0x00010000
-#define HC_HABLCa_MASK 0x0000fc00
-#define HC_HABLCa_C_MASK 0x0000c000
-#define HC_HABLCa_OPC_MASK 0x00003c00
-#define HC_HABLFCa_MASK 0x000003f0
-#define HC_HABLFCa_C_MASK 0x00000300
-#define HC_HABLFCa_OPC_MASK 0x000000f0
-#define HC_HABLCbias_MASK 0x0000000f
-#define HC_HABLCbias_C_MASK 0x00000008
-#define HC_HABLCbias_OPC_MASK 0x00000007
-/*-- Define the input color.
- */
-#define HC_XC_Csrc 0x00000000
-#define HC_XC_Cdst 0x00000001
-#define HC_XC_Asrc 0x00000002
-#define HC_XC_Adst 0x00000003
-#define HC_XC_Fog 0x00000004
-#define HC_XC_HABLRC 0x00000005
-#define HC_XC_minSrcDst 0x00000006
-#define HC_XC_maxSrcDst 0x00000007
-#define HC_XC_mimAsrcInvAdst 0x00000008
-#define HC_XC_OPC 0x00000000
-#define HC_XC_InvOPC 0x00000010
-#define HC_XC_OPCp5 0x00000020
-/*-- Define the input Alpha
- */
-#define HC_XA_OPA 0x00000000
-#define HC_XA_InvOPA 0x00000010
-#define HC_XA_OPAp5 0x00000020
-#define HC_XA_0 0x00000000
-#define HC_XA_Asrc 0x00000001
-#define HC_XA_Adst 0x00000002
-#define HC_XA_Fog 0x00000003
-#define HC_XA_minAsrcFog 0x00000004
-#define HC_XA_minAsrcAdst 0x00000005
-#define HC_XA_maxAsrcFog 0x00000006
-#define HC_XA_maxAsrcAdst 0x00000007
-#define HC_XA_HABLRA 0x00000008
-#define HC_XA_minAsrcInvAdst 0x00000008
-#define HC_XA_HABLFRA 0x00000009
-/*--
- */
-#define HC_HABLCa_OPC (HC_XC_OPC << 10)
-#define HC_HABLCa_InvOPC (HC_XC_InvOPC << 10)
-#define HC_HABLCa_OPCp5 (HC_XC_OPCp5 << 10)
-#define HC_HABLCa_Csrc (HC_XC_Csrc << 10)
-#define HC_HABLCa_Cdst (HC_XC_Cdst << 10)
-#define HC_HABLCa_Asrc (HC_XC_Asrc << 10)
-#define HC_HABLCa_Adst (HC_XC_Adst << 10)
-#define HC_HABLCa_Fog (HC_XC_Fog << 10)
-#define HC_HABLCa_HABLRCa (HC_XC_HABLRC << 10)
-#define HC_HABLCa_minSrcDst (HC_XC_minSrcDst << 10)
-#define HC_HABLCa_maxSrcDst (HC_XC_maxSrcDst << 10)
-#define HC_HABLFCa_OPC (HC_XC_OPC << 4)
-#define HC_HABLFCa_InvOPC (HC_XC_InvOPC << 4)
-#define HC_HABLFCa_OPCp5 (HC_XC_OPCp5 << 4)
-#define HC_HABLFCa_Csrc (HC_XC_Csrc << 4)
-#define HC_HABLFCa_Cdst (HC_XC_Cdst << 4)
-#define HC_HABLFCa_Asrc (HC_XC_Asrc << 4)
-#define HC_HABLFCa_Adst (HC_XC_Adst << 4)
-#define HC_HABLFCa_Fog (HC_XC_Fog << 4)
-#define HC_HABLFCa_HABLRCa (HC_XC_HABLRC << 4)
-#define HC_HABLFCa_minSrcDst (HC_XC_minSrcDst << 4)
-#define HC_HABLFCa_maxSrcDst (HC_XC_maxSrcDst << 4)
-#define HC_HABLFCa_mimAsrcInvAdst (HC_XC_mimAsrcInvAdst << 4)
-#define HC_HABLCbias_HABLRCbias 0x00000000
-#define HC_HABLCbias_Asrc 0x00000001
-#define HC_HABLCbias_Adst 0x00000002
-#define HC_HABLCbias_Fog 0x00000003
-#define HC_HABLCbias_Cin 0x00000004
-/* HC_SubA_HABLCop 0x0035
- */
-#define HC_HABLdot_MASK 0x00010000
-#define HC_HABLCop_MASK 0x00004000
-#define HC_HABLCb_MASK 0x00003f00
-#define HC_HABLCb_C_MASK 0x00003000
-#define HC_HABLCb_OPC_MASK 0x00000f00
-#define HC_HABLFCb_MASK 0x000000fc
-#define HC_HABLFCb_C_MASK 0x000000c0
-#define HC_HABLFCb_OPC_MASK 0x0000003c
-#define HC_HABLCshift_MASK 0x00000003
-#define HC_HABLCb_OPC (HC_XC_OPC << 8)
-#define HC_HABLCb_InvOPC (HC_XC_InvOPC << 8)
-#define HC_HABLCb_OPCp5 (HC_XC_OPCp5 << 8)
-#define HC_HABLCb_Csrc (HC_XC_Csrc << 8)
-#define HC_HABLCb_Cdst (HC_XC_Cdst << 8)
-#define HC_HABLCb_Asrc (HC_XC_Asrc << 8)
-#define HC_HABLCb_Adst (HC_XC_Adst << 8)
-#define HC_HABLCb_Fog (HC_XC_Fog << 8)
-#define HC_HABLCb_HABLRCa (HC_XC_HABLRC << 8)
-#define HC_HABLCb_minSrcDst (HC_XC_minSrcDst << 8)
-#define HC_HABLCb_maxSrcDst (HC_XC_maxSrcDst << 8)
-#define HC_HABLFCb_OPC (HC_XC_OPC << 2)
-#define HC_HABLFCb_InvOPC (HC_XC_InvOPC << 2)
-#define HC_HABLFCb_OPCp5 (HC_XC_OPCp5 << 2)
-#define HC_HABLFCb_Csrc (HC_XC_Csrc << 2)
-#define HC_HABLFCb_Cdst (HC_XC_Cdst << 2)
-#define HC_HABLFCb_Asrc (HC_XC_Asrc << 2)
-#define HC_HABLFCb_Adst (HC_XC_Adst << 2)
-#define HC_HABLFCb_Fog (HC_XC_Fog << 2)
-#define HC_HABLFCb_HABLRCb (HC_XC_HABLRC << 2)
-#define HC_HABLFCb_minSrcDst (HC_XC_minSrcDst << 2)
-#define HC_HABLFCb_maxSrcDst (HC_XC_maxSrcDst << 2)
-#define HC_HABLFCb_mimAsrcInvAdst (HC_XC_mimAsrcInvAdst << 2)
-/* HC_SubA_HABLAsat 0x0036
- */
-#define HC_HABLAsat_MASK 0x00010000
-#define HC_HABLAa_MASK 0x0000fc00
-#define HC_HABLAa_A_MASK 0x0000c000
-#define HC_HABLAa_OPA_MASK 0x00003c00
-#define HC_HABLFAa_MASK 0x000003f0
-#define HC_HABLFAa_A_MASK 0x00000300
-#define HC_HABLFAa_OPA_MASK 0x000000f0
-#define HC_HABLAbias_MASK 0x0000000f
-#define HC_HABLAbias_A_MASK 0x00000008
-#define HC_HABLAbias_OPA_MASK 0x00000007
-#define HC_HABLAa_OPA (HC_XA_OPA << 10)
-#define HC_HABLAa_InvOPA (HC_XA_InvOPA << 10)
-#define HC_HABLAa_OPAp5 (HC_XA_OPAp5 << 10)
-#define HC_HABLAa_0 (HC_XA_0 << 10)
-#define HC_HABLAa_Asrc (HC_XA_Asrc << 10)
-#define HC_HABLAa_Adst (HC_XA_Adst << 10)
-#define HC_HABLAa_Fog (HC_XA_Fog << 10)
-#define HC_HABLAa_minAsrcFog (HC_XA_minAsrcFog << 10)
-#define HC_HABLAa_minAsrcAdst (HC_XA_minAsrcAdst << 10)
-#define HC_HABLAa_maxAsrcFog (HC_XA_maxAsrcFog << 10)
-#define HC_HABLAa_maxAsrcAdst (HC_XA_maxAsrcAdst << 10)
-#define HC_HABLAa_HABLRA (HC_XA_HABLRA << 10)
-#define HC_HABLFAa_OPA (HC_XA_OPA << 4)
-#define HC_HABLFAa_InvOPA (HC_XA_InvOPA << 4)
-#define HC_HABLFAa_OPAp5 (HC_XA_OPAp5 << 4)
-#define HC_HABLFAa_0 (HC_XA_0 << 4)
-#define HC_HABLFAa_Asrc (HC_XA_Asrc << 4)
-#define HC_HABLFAa_Adst (HC_XA_Adst << 4)
-#define HC_HABLFAa_Fog (HC_XA_Fog << 4)
-#define HC_HABLFAa_minAsrcFog (HC_XA_minAsrcFog << 4)
-#define HC_HABLFAa_minAsrcAdst (HC_XA_minAsrcAdst << 4)
-#define HC_HABLFAa_maxAsrcFog (HC_XA_maxAsrcFog << 4)
-#define HC_HABLFAa_maxAsrcAdst (HC_XA_maxAsrcAdst << 4)
-#define HC_HABLFAa_minAsrcInvAdst (HC_XA_minAsrcInvAdst << 4)
-#define HC_HABLFAa_HABLFRA (HC_XA_HABLFRA << 4)
-#define HC_HABLAbias_HABLRAbias 0x00000000
-#define HC_HABLAbias_Asrc 0x00000001
-#define HC_HABLAbias_Adst 0x00000002
-#define HC_HABLAbias_Fog 0x00000003
-#define HC_HABLAbias_Aaa 0x00000004
-/* HC_SubA_HABLAop 0x0037
- */
-#define HC_HABLAop_MASK 0x00004000
-#define HC_HABLAb_MASK 0x00003f00
-#define HC_HABLAb_OPA_MASK 0x00000f00
-#define HC_HABLFAb_MASK 0x000000fc
-#define HC_HABLFAb_OPA_MASK 0x0000003c
-#define HC_HABLAshift_MASK 0x00000003
-#define HC_HABLAb_OPA (HC_XA_OPA << 8)
-#define HC_HABLAb_InvOPA (HC_XA_InvOPA << 8)
-#define HC_HABLAb_OPAp5 (HC_XA_OPAp5 << 8)
-#define HC_HABLAb_0 (HC_XA_0 << 8)
-#define HC_HABLAb_Asrc (HC_XA_Asrc << 8)
-#define HC_HABLAb_Adst (HC_XA_Adst << 8)
-#define HC_HABLAb_Fog (HC_XA_Fog << 8)
-#define HC_HABLAb_minAsrcFog (HC_XA_minAsrcFog << 8)
-#define HC_HABLAb_minAsrcAdst (HC_XA_minAsrcAdst << 8)
-#define HC_HABLAb_maxAsrcFog (HC_XA_maxAsrcFog << 8)
-#define HC_HABLAb_maxAsrcAdst (HC_XA_maxAsrcAdst << 8)
-#define HC_HABLAb_HABLRA (HC_XA_HABLRA << 8)
-#define HC_HABLFAb_OPA (HC_XA_OPA << 2)
-#define HC_HABLFAb_InvOPA (HC_XA_InvOPA << 2)
-#define HC_HABLFAb_OPAp5 (HC_XA_OPAp5 << 2)
-#define HC_HABLFAb_0 (HC_XA_0 << 2)
-#define HC_HABLFAb_Asrc (HC_XA_Asrc << 2)
-#define HC_HABLFAb_Adst (HC_XA_Adst << 2)
-#define HC_HABLFAb_Fog (HC_XA_Fog << 2)
-#define HC_HABLFAb_minAsrcFog (HC_XA_minAsrcFog << 2)
-#define HC_HABLFAb_minAsrcAdst (HC_XA_minAsrcAdst << 2)
-#define HC_HABLFAb_maxAsrcFog (HC_XA_maxAsrcFog << 2)
-#define HC_HABLFAb_maxAsrcAdst (HC_XA_maxAsrcAdst << 2)
-#define HC_HABLFAb_minAsrcInvAdst (HC_XA_minAsrcInvAdst << 2)
-#define HC_HABLFAb_HABLFRA (HC_XA_HABLFRA << 2)
-/* HC_SubA_HABLRAa 0x003d
- */
-#define HC_HABLRAa_MASK 0x00ff0000
-#define HC_HABLRFAa_MASK 0x0000ff00
-#define HC_HABLRAbias_MASK 0x000000ff
-#define HC_HABLRAa_SHIFT 16
-#define HC_HABLRFAa_SHIFT 8
-/* HC_SubA_HABLRAb 0x003e
- */
-#define HC_HABLRAb_MASK 0x0000ff00
-#define HC_HABLRFAb_MASK 0x000000ff
-#define HC_HABLRAb_SHIFT 8
-
-/* Destination Setting
- */
-#define HC_SubA_HDBBasL 0x0040
-#define HC_SubA_HDBBasH 0x0041
-#define HC_SubA_HDBFM 0x0042
-#define HC_SubA_HFBBMSKL 0x0043
-#define HC_SubA_HROP 0x0044
-/* HC_SubA_HDBFM 0x0042
- */
-#define HC_HDBFM_MASK 0x001f0000
-#define HC_HDBLoc_MASK 0x0000c000
-#define HC_HDBPit_MASK 0x00003fff
-#define HC_HDBFM_RGB555 0x00000000
-#define HC_HDBFM_RGB565 0x00010000
-#define HC_HDBFM_ARGB4444 0x00020000
-#define HC_HDBFM_ARGB1555 0x00030000
-#define HC_HDBFM_BGR555 0x00040000
-#define HC_HDBFM_BGR565 0x00050000
-#define HC_HDBFM_ABGR4444 0x00060000
-#define HC_HDBFM_ABGR1555 0x00070000
-#define HC_HDBFM_ARGB0888 0x00080000
-#define HC_HDBFM_ARGB8888 0x00090000
-#define HC_HDBFM_ABGR0888 0x000a0000
-#define HC_HDBFM_ABGR8888 0x000b0000
-#define HC_HDBLoc_Local 0x00000000
-#define HC_HDBLoc_Sys 0x00004000
-/* HC_SubA_HROP 0x0044
- */
-#define HC_HROP_MASK 0x00000f00
-#define HC_HFBBMSKH_MASK 0x000000ff
-#define HC_HROP_BLACK 0x00000000
-#define HC_HROP_DPon 0x00000100
-#define HC_HROP_DPna 0x00000200
-#define HC_HROP_Pn 0x00000300
-#define HC_HROP_PDna 0x00000400
-#define HC_HROP_Dn 0x00000500
-#define HC_HROP_DPx 0x00000600
-#define HC_HROP_DPan 0x00000700
-#define HC_HROP_DPa 0x00000800
-#define HC_HROP_DPxn 0x00000900
-#define HC_HROP_D 0x00000a00
-#define HC_HROP_DPno 0x00000b00
-#define HC_HROP_P 0x00000c00
-#define HC_HROP_PDno 0x00000d00
-#define HC_HROP_DPo 0x00000e00
-#define HC_HROP_WHITE 0x00000f00
-
-/* Fog Setting
- */
-#define HC_SubA_HFogLF 0x0050
-#define HC_SubA_HFogCL 0x0051
-#define HC_SubA_HFogCH 0x0052
-#define HC_SubA_HFogStL 0x0053
-#define HC_SubA_HFogStH 0x0054
-#define HC_SubA_HFogOOdMF 0x0055
-#define HC_SubA_HFogOOdEF 0x0056
-#define HC_SubA_HFogEndL 0x0057
-#define HC_SubA_HFogDenst 0x0058
-/* HC_SubA_FogLF 0x0050
- */
-#define HC_FogLF_MASK 0x00000010
-#define HC_FogEq_MASK 0x00000008
-#define HC_FogMD_MASK 0x00000007
-#define HC_FogMD_LocalFog 0x00000000
-#define HC_FogMD_LinearFog 0x00000002
-#define HC_FogMD_ExponentialFog 0x00000004
-#define HC_FogMD_Exponential2Fog 0x00000005
-/* #define HC_FogMD_FogTable 0x00000003 */
-
-/* HC_SubA_HFogDenst 0x0058
- */
-#define HC_FogDenst_MASK 0x001fff00
-#define HC_FogEndL_MASK 0x000000ff
-
-/* Texture subtype definitions
- */
-#define HC_SubType_Tex0 0x00000000
-#define HC_SubType_Tex1 0x00000001
-#define HC_SubType_TexGeneral 0x000000fe
-
-/* Attribute of texture n
- */
-#define HC_SubA_HTXnL0BasL 0x0000
-#define HC_SubA_HTXnL1BasL 0x0001
-#define HC_SubA_HTXnL2BasL 0x0002
-#define HC_SubA_HTXnL3BasL 0x0003
-#define HC_SubA_HTXnL4BasL 0x0004
-#define HC_SubA_HTXnL5BasL 0x0005
-#define HC_SubA_HTXnL6BasL 0x0006
-#define HC_SubA_HTXnL7BasL 0x0007
-#define HC_SubA_HTXnL8BasL 0x0008
-#define HC_SubA_HTXnL9BasL 0x0009
-#define HC_SubA_HTXnLaBasL 0x000a
-#define HC_SubA_HTXnLbBasL 0x000b
-#define HC_SubA_HTXnLcBasL 0x000c
-#define HC_SubA_HTXnLdBasL 0x000d
-#define HC_SubA_HTXnLeBasL 0x000e
-#define HC_SubA_HTXnLfBasL 0x000f
-#define HC_SubA_HTXnL10BasL 0x0010
-#define HC_SubA_HTXnL11BasL 0x0011
-#define HC_SubA_HTXnL012BasH 0x0020
-#define HC_SubA_HTXnL345BasH 0x0021
-#define HC_SubA_HTXnL678BasH 0x0022
-#define HC_SubA_HTXnL9abBasH 0x0023
-#define HC_SubA_HTXnLcdeBasH 0x0024
-#define HC_SubA_HTXnLf1011BasH 0x0025
-#define HC_SubA_HTXnL0Pit 0x002b
-#define HC_SubA_HTXnL1Pit 0x002c
-#define HC_SubA_HTXnL2Pit 0x002d
-#define HC_SubA_HTXnL3Pit 0x002e
-#define HC_SubA_HTXnL4Pit 0x002f
-#define HC_SubA_HTXnL5Pit 0x0030
-#define HC_SubA_HTXnL6Pit 0x0031
-#define HC_SubA_HTXnL7Pit 0x0032
-#define HC_SubA_HTXnL8Pit 0x0033
-#define HC_SubA_HTXnL9Pit 0x0034
-#define HC_SubA_HTXnLaPit 0x0035
-#define HC_SubA_HTXnLbPit 0x0036
-#define HC_SubA_HTXnLcPit 0x0037
-#define HC_SubA_HTXnLdPit 0x0038
-#define HC_SubA_HTXnLePit 0x0039
-#define HC_SubA_HTXnLfPit 0x003a
-#define HC_SubA_HTXnL10Pit 0x003b
-#define HC_SubA_HTXnL11Pit 0x003c
-#define HC_SubA_HTXnL0_5WE 0x004b
-#define HC_SubA_HTXnL6_bWE 0x004c
-#define HC_SubA_HTXnLc_11WE 0x004d
-#define HC_SubA_HTXnL0_5HE 0x0051
-#define HC_SubA_HTXnL6_bHE 0x0052
-#define HC_SubA_HTXnLc_11HE 0x0053
-#define HC_SubA_HTXnL0OS 0x0077
-#define HC_SubA_HTXnTB 0x0078
-#define HC_SubA_HTXnMPMD 0x0079
-#define HC_SubA_HTXnCLODu 0x007a
-#define HC_SubA_HTXnFM 0x007b
-#define HC_SubA_HTXnTRCH 0x007c
-#define HC_SubA_HTXnTRCL 0x007d
-#define HC_SubA_HTXnTBC 0x007e
-#define HC_SubA_HTXnTRAH 0x007f
-#define HC_SubA_HTXnTBLCsat 0x0080
-#define HC_SubA_HTXnTBLCop 0x0081
-#define HC_SubA_HTXnTBLMPfog 0x0082
-#define HC_SubA_HTXnTBLAsat 0x0083
-#define HC_SubA_HTXnTBLRCa 0x0085
-#define HC_SubA_HTXnTBLRCb 0x0086
-#define HC_SubA_HTXnTBLRCc 0x0087
-#define HC_SubA_HTXnTBLRCbias 0x0088
-#define HC_SubA_HTXnTBLRAa 0x0089
-#define HC_SubA_HTXnTBLRFog 0x008a
-#define HC_SubA_HTXnBumpM00 0x0090
-#define HC_SubA_HTXnBumpM01 0x0091
-#define HC_SubA_HTXnBumpM10 0x0092
-#define HC_SubA_HTXnBumpM11 0x0093
-#define HC_SubA_HTXnLScale 0x0094
-#define HC_SubA_HTXSMD 0x0000
-/* HC_SubA_HTXnL012BasH 0x0020
- */
-#define HC_HTXnL0BasH_MASK 0x000000ff
-#define HC_HTXnL1BasH_MASK 0x0000ff00
-#define HC_HTXnL2BasH_MASK 0x00ff0000
-#define HC_HTXnL1BasH_SHIFT 8
-#define HC_HTXnL2BasH_SHIFT 16
-/* HC_SubA_HTXnL345BasH 0x0021
- */
-#define HC_HTXnL3BasH_MASK 0x000000ff
-#define HC_HTXnL4BasH_MASK 0x0000ff00
-#define HC_HTXnL5BasH_MASK 0x00ff0000
-#define HC_HTXnL4BasH_SHIFT 8
-#define HC_HTXnL5BasH_SHIFT 16
-/* HC_SubA_HTXnL678BasH 0x0022
- */
-#define HC_HTXnL6BasH_MASK 0x000000ff
-#define HC_HTXnL7BasH_MASK 0x0000ff00
-#define HC_HTXnL8BasH_MASK 0x00ff0000
-#define HC_HTXnL7BasH_SHIFT 8
-#define HC_HTXnL8BasH_SHIFT 16
-/* HC_SubA_HTXnL9abBasH 0x0023
- */
-#define HC_HTXnL9BasH_MASK 0x000000ff
-#define HC_HTXnLaBasH_MASK 0x0000ff00
-#define HC_HTXnLbBasH_MASK 0x00ff0000
-#define HC_HTXnLaBasH_SHIFT 8
-#define HC_HTXnLbBasH_SHIFT 16
-/* HC_SubA_HTXnLcdeBasH 0x0024
- */
-#define HC_HTXnLcBasH_MASK 0x000000ff
-#define HC_HTXnLdBasH_MASK 0x0000ff00
-#define HC_HTXnLeBasH_MASK 0x00ff0000
-#define HC_HTXnLdBasH_SHIFT 8
-#define HC_HTXnLeBasH_SHIFT 16
-/* HC_SubA_HTXnLcdeBasH 0x0025
- */
-#define HC_HTXnLfBasH_MASK 0x000000ff
-#define HC_HTXnL10BasH_MASK 0x0000ff00
-#define HC_HTXnL11BasH_MASK 0x00ff0000
-#define HC_HTXnL10BasH_SHIFT 8
-#define HC_HTXnL11BasH_SHIFT 16
-/* HC_SubA_HTXnL0Pit 0x002b
- */
-#define HC_HTXnLnPit_MASK 0x00003fff
-#define HC_HTXnEnPit_MASK 0x00080000
-#define HC_HTXnLnPitE_MASK 0x00f00000
-#define HC_HTXnLnPitE_SHIFT 20
-/* HC_SubA_HTXnL0_5WE 0x004b
- */
-#define HC_HTXnL0WE_MASK 0x0000000f
-#define HC_HTXnL1WE_MASK 0x000000f0
-#define HC_HTXnL2WE_MASK 0x00000f00
-#define HC_HTXnL3WE_MASK 0x0000f000
-#define HC_HTXnL4WE_MASK 0x000f0000
-#define HC_HTXnL5WE_MASK 0x00f00000
-#define HC_HTXnL1WE_SHIFT 4
-#define HC_HTXnL2WE_SHIFT 8
-#define HC_HTXnL3WE_SHIFT 12
-#define HC_HTXnL4WE_SHIFT 16
-#define HC_HTXnL5WE_SHIFT 20
-/* HC_SubA_HTXnL6_bWE 0x004c
- */
-#define HC_HTXnL6WE_MASK 0x0000000f
-#define HC_HTXnL7WE_MASK 0x000000f0
-#define HC_HTXnL8WE_MASK 0x00000f00
-#define HC_HTXnL9WE_MASK 0x0000f000
-#define HC_HTXnLaWE_MASK 0x000f0000
-#define HC_HTXnLbWE_MASK 0x00f00000
-#define HC_HTXnL7WE_SHIFT 4
-#define HC_HTXnL8WE_SHIFT 8
-#define HC_HTXnL9WE_SHIFT 12
-#define HC_HTXnLaWE_SHIFT 16
-#define HC_HTXnLbWE_SHIFT 20
-/* HC_SubA_HTXnLc_11WE 0x004d
- */
-#define HC_HTXnLcWE_MASK 0x0000000f
-#define HC_HTXnLdWE_MASK 0x000000f0
-#define HC_HTXnLeWE_MASK 0x00000f00
-#define HC_HTXnLfWE_MASK 0x0000f000
-#define HC_HTXnL10WE_MASK 0x000f0000
-#define HC_HTXnL11WE_MASK 0x00f00000
-#define HC_HTXnLdWE_SHIFT 4
-#define HC_HTXnLeWE_SHIFT 8
-#define HC_HTXnLfWE_SHIFT 12
-#define HC_HTXnL10WE_SHIFT 16
-#define HC_HTXnL11WE_SHIFT 20
-/* HC_SubA_HTXnL0_5HE 0x0051
- */
-#define HC_HTXnL0HE_MASK 0x0000000f
-#define HC_HTXnL1HE_MASK 0x000000f0
-#define HC_HTXnL2HE_MASK 0x00000f00
-#define HC_HTXnL3HE_MASK 0x0000f000
-#define HC_HTXnL4HE_MASK 0x000f0000
-#define HC_HTXnL5HE_MASK 0x00f00000
-#define HC_HTXnL1HE_SHIFT 4
-#define HC_HTXnL2HE_SHIFT 8
-#define HC_HTXnL3HE_SHIFT 12
-#define HC_HTXnL4HE_SHIFT 16
-#define HC_HTXnL5HE_SHIFT 20
-/* HC_SubA_HTXnL6_bHE 0x0052
- */
-#define HC_HTXnL6HE_MASK 0x0000000f
-#define HC_HTXnL7HE_MASK 0x000000f0
-#define HC_HTXnL8HE_MASK 0x00000f00
-#define HC_HTXnL9HE_MASK 0x0000f000
-#define HC_HTXnLaHE_MASK 0x000f0000
-#define HC_HTXnLbHE_MASK 0x00f00000
-#define HC_HTXnL7HE_SHIFT 4
-#define HC_HTXnL8HE_SHIFT 8
-#define HC_HTXnL9HE_SHIFT 12
-#define HC_HTXnLaHE_SHIFT 16
-#define HC_HTXnLbHE_SHIFT 20
-/* HC_SubA_HTXnLc_11HE 0x0053
- */
-#define HC_HTXnLcHE_MASK 0x0000000f
-#define HC_HTXnLdHE_MASK 0x000000f0
-#define HC_HTXnLeHE_MASK 0x00000f00
-#define HC_HTXnLfHE_MASK 0x0000f000
-#define HC_HTXnL10HE_MASK 0x000f0000
-#define HC_HTXnL11HE_MASK 0x00f00000
-#define HC_HTXnLdHE_SHIFT 4
-#define HC_HTXnLeHE_SHIFT 8
-#define HC_HTXnLfHE_SHIFT 12
-#define HC_HTXnL10HE_SHIFT 16
-#define HC_HTXnL11HE_SHIFT 20
-/* HC_SubA_HTXnL0OS 0x0077
- */
-#define HC_HTXnL0OS_MASK 0x003ff000
-#define HC_HTXnLVmax_MASK 0x00000fc0
-#define HC_HTXnLVmin_MASK 0x0000003f
-#define HC_HTXnL0OS_SHIFT 12
-#define HC_HTXnLVmax_SHIFT 6
-/* HC_SubA_HTXnTB 0x0078
- */
-#define HC_HTXnTB_MASK 0x00f00000
-#define HC_HTXnFLSe_MASK 0x0000e000
-#define HC_HTXnFLSs_MASK 0x00001c00
-#define HC_HTXnFLTe_MASK 0x00000380
-#define HC_HTXnFLTs_MASK 0x00000070
-#define HC_HTXnFLDs_MASK 0x0000000f
-#define HC_HTXnTB_NoTB 0x00000000
-#define HC_HTXnTB_TBC_S 0x00100000
-#define HC_HTXnTB_TBC_T 0x00200000
-#define HC_HTXnTB_TB_S 0x00400000
-#define HC_HTXnTB_TB_T 0x00800000
-
-/* The "S" in FLS? means the S texture coordinate, and a "T" means the T
- * texture coordinage. The "e" in FL?e means the magnification ("enlarge")
- * mode, and the "s" in FL?s means the minification ("shrink") mode.
- *
- * The "D" in FLD? means the intermipmap level mode. That means that the
- * GL_*_MIPMAP_LINEAR modes get FLDs_Linear, and the GL_*_MIPMAP_NEAREST modes
- * get FLDs_Nearest.
- */
-#define HC_HTXnFLSe_Nearest 0x00000000
-#define HC_HTXnFLSe_Linear 0x00002000
-#define HC_HTXnFLSe_NonLinear 0x00004000
-#define HC_HTXnFLSe_Sharp 0x00008000
-#define HC_HTXnFLSe_Flat_Gaussian_Cubic 0x0000c000
-#define HC_HTXnFLSs_Nearest 0x00000000
-#define HC_HTXnFLSs_Linear 0x00000400
-#define HC_HTXnFLSs_NonLinear 0x00000800
-#define HC_HTXnFLSs_Flat_Gaussian_Cubic 0x00001800
-#define HC_HTXnFLTe_Nearest 0x00000000
-#define HC_HTXnFLTe_Linear 0x00000080
-#define HC_HTXnFLTe_NonLinear 0x00000100
-#define HC_HTXnFLTe_Sharp 0x00000180
-#define HC_HTXnFLTe_Flat_Gaussian_Cubic 0x00000300
-#define HC_HTXnFLTs_Nearest 0x00000000
-#define HC_HTXnFLTs_Linear 0x00000010
-#define HC_HTXnFLTs_NonLinear 0x00000020
-#define HC_HTXnFLTs_Flat_Gaussian_Cubic 0x00000060
-#define HC_HTXnFLDs_Tex0 0x00000000
-#define HC_HTXnFLDs_Nearest 0x00000001
-#define HC_HTXnFLDs_Linear 0x00000002
-#define HC_HTXnFLDs_NonLinear 0x00000003
-#define HC_HTXnFLDs_Dither 0x00000004
-#define HC_HTXnFLDs_ConstLOD 0x00000005
-#define HC_HTXnFLDs_Ani 0x00000006
-#define HC_HTXnFLDs_AniDither 0x00000007
-
-/* HC_SubA_HTXnMPMD 0x0079
- */
-#define HC_HTXnMPMD_SMASK 0x00070000
-#define HC_HTXnMPMD_TMASK 0x00380000
-#define HC_HTXnLODDTf_MASK 0x00000007
-#define HC_HTXnXY2ST_MASK 0x00000008
-#define HC_HTXnMPMD_Tsingle 0x00000000
-#define HC_HTXnMPMD_Tclamp 0x00080000
-#define HC_HTXnMPMD_Trepeat 0x00100000
-#define HC_HTXnMPMD_Tmirror 0x00180000
-#define HC_HTXnMPMD_Twrap 0x00200000
-#define HC_HTXnMPMD_Ssingle 0x00000000
-#define HC_HTXnMPMD_Sclamp 0x00010000
-#define HC_HTXnMPMD_Srepeat 0x00020000
-#define HC_HTXnMPMD_Smirror 0x00030000
-#define HC_HTXnMPMD_Swrap 0x00040000
-/* HC_SubA_HTXnCLODu 0x007a
- */
-#define HC_HTXnCLODu_MASK 0x000ffc00
-#define HC_HTXnCLODd_MASK 0x000003ff
-#define HC_HTXnCLODu_SHIFT 10
-/* HC_SubA_HTXnFM 0x007b
- */
-#define HC_HTXnFM_MASK 0x00ff0000
-#define HC_HTXnLoc_MASK 0x00000003
-#define HC_HTXnFM_INDEX 0x00000000 /* 0 << 19 */
-#define HC_HTXnFM_Intensity 0x00080000 /* 1 << 19 */
-#define HC_HTXnFM_Lum 0x00100000 /* 2 << 19 */
-#define HC_HTXnFM_Alpha 0x00180000 /* 3 << 19 */
-#define HC_HTXnFM_DX 0x00280000 /* 5 << 19 */
-#define HC_HTXnFM_BUMPMAP 0x00380000 /* 7 << 19 */
-#define HC_HTXnFM_ARGB16 0x00880000 /* 17 << 19 */
-#define HC_HTXnFM_ARGB32 0x00980000 /* 19 << 19 */
-#define HC_HTXnFM_ABGR16 0x00a80000 /* 21 << 19 */
-#define HC_HTXnFM_ABGR32 0x00b80000 /* 23 << 19 */
-#define HC_HTXnFM_RGBA16 0x00c80000 /* 25 << 19 */
-#define HC_HTXnFM_RGBA32 0x00d80000 /* 27 << 19 */
-#define HC_HTXnFM_BGRA16 0x00e80000 /* 29 << 19 */
-#define HC_HTXnFM_BGRA32 0x00f80000 /* 31 << 19 */
-#define HC_HTXnFM_Index1 (HC_HTXnFM_INDEX | 0x00000000)
-#define HC_HTXnFM_Index2 (HC_HTXnFM_INDEX | 0x00010000)
-#define HC_HTXnFM_Index4 (HC_HTXnFM_INDEX | 0x00020000)
-#define HC_HTXnFM_Index8 (HC_HTXnFM_INDEX | 0x00030000)
-#define HC_HTXnFM_T1 (HC_HTXnFM_Intensity | 0x00000000)
-#define HC_HTXnFM_T2 (HC_HTXnFM_Intensity | 0x00010000)
-#define HC_HTXnFM_T4 (HC_HTXnFM_Intensity | 0x00020000)
-#define HC_HTXnFM_T8 (HC_HTXnFM_Intensity | 0x00030000)
-#define HC_HTXnFM_L1 (HC_HTXnFM_Lum | 0x00000000)
-#define HC_HTXnFM_L2 (HC_HTXnFM_Lum | 0x00010000)
-#define HC_HTXnFM_L4 (HC_HTXnFM_Lum | 0x00020000)
-#define HC_HTXnFM_L8 (HC_HTXnFM_Lum | 0x00030000)
-#define HC_HTXnFM_AL44 (HC_HTXnFM_Lum | 0x00040000)
-#define HC_HTXnFM_AL88 (HC_HTXnFM_Lum | 0x00050000)
-#define HC_HTXnFM_A1 (HC_HTXnFM_Alpha | 0x00000000)
-#define HC_HTXnFM_A2 (HC_HTXnFM_Alpha | 0x00010000)
-#define HC_HTXnFM_A4 (HC_HTXnFM_Alpha | 0x00020000)
-#define HC_HTXnFM_A8 (HC_HTXnFM_Alpha | 0x00030000)
-#define HC_HTXnFM_DX1 (HC_HTXnFM_DX | 0x00010000)
-#define HC_HTXnFM_DX23 (HC_HTXnFM_DX | 0x00020000)
-#define HC_HTXnFM_DX45 (HC_HTXnFM_DX | 0x00030000)
-#define HC_HTXnFM_RGB555 (HC_HTXnFM_ARGB16 | 0x00000000)
-#define HC_HTXnFM_RGB565 (HC_HTXnFM_ARGB16 | 0x00010000)
-#define HC_HTXnFM_ARGB1555 (HC_HTXnFM_ARGB16 | 0x00020000)
-#define HC_HTXnFM_ARGB4444 (HC_HTXnFM_ARGB16 | 0x00030000)
-#define HC_HTXnFM_ARGB0888 (HC_HTXnFM_ARGB32 | 0x00000000)
-#define HC_HTXnFM_ARGB8888 (HC_HTXnFM_ARGB32 | 0x00010000)
-#define HC_HTXnFM_BGR555 (HC_HTXnFM_ABGR16 | 0x00000000)
-#define HC_HTXnFM_BGR565 (HC_HTXnFM_ABGR16 | 0x00010000)
-#define HC_HTXnFM_ABGR1555 (HC_HTXnFM_ABGR16 | 0x00020000)
-#define HC_HTXnFM_ABGR4444 (HC_HTXnFM_ABGR16 | 0x00030000)
-#define HC_HTXnFM_ABGR0888 (HC_HTXnFM_ABGR32 | 0x00000000)
-#define HC_HTXnFM_ABGR8888 (HC_HTXnFM_ABGR32 | 0x00010000)
-#define HC_HTXnFM_RGBA5550 (HC_HTXnFM_RGBA16 | 0x00000000)
-#define HC_HTXnFM_RGBA5551 (HC_HTXnFM_RGBA16 | 0x00020000)
-#define HC_HTXnFM_RGBA4444 (HC_HTXnFM_RGBA16 | 0x00030000)
-#define HC_HTXnFM_RGBA8880 (HC_HTXnFM_RGBA32 | 0x00000000)
-#define HC_HTXnFM_RGBA8888 (HC_HTXnFM_RGBA32 | 0x00010000)
-#define HC_HTXnFM_BGRA5550 (HC_HTXnFM_BGRA16 | 0x00000000)
-#define HC_HTXnFM_BGRA5551 (HC_HTXnFM_BGRA16 | 0x00020000)
-#define HC_HTXnFM_BGRA4444 (HC_HTXnFM_BGRA16 | 0x00030000)
-#define HC_HTXnFM_BGRA8880 (HC_HTXnFM_BGRA32 | 0x00000000)
-#define HC_HTXnFM_BGRA8888 (HC_HTXnFM_BGRA32 | 0x00010000)
-#define HC_HTXnFM_VU88 (HC_HTXnFM_BUMPMAP | 0x00000000)
-#define HC_HTXnFM_LVU655 (HC_HTXnFM_BUMPMAP | 0x00010000)
-#define HC_HTXnFM_LVU888 (HC_HTXnFM_BUMPMAP | 0x00020000)
-#define HC_HTXnLoc_Local 0x00000000
-#define HC_HTXnLoc_Sys 0x00000002
-#define HC_HTXnLoc_AGP 0x00000003
-/* HC_SubA_HTXnTRAH 0x007f
- */
-#define HC_HTXnTRAH_MASK 0x00ff0000
-#define HC_HTXnTRAL_MASK 0x0000ff00
-#define HC_HTXnTBA_MASK 0x000000ff
-#define HC_HTXnTRAH_SHIFT 16
-#define HC_HTXnTRAL_SHIFT 8
-
-/*-- Define the input texture, for below
- */
-#define HC_XTC_TOPC 0x00000000
-#define HC_XTC_InvTOPC 0x00000010
-#define HC_XTC_TOPCp5 0x00000020
-#define HC_XTC_Cbias 0x00000000
-#define HC_XTC_InvCbias 0x00000010
-#define HC_XTC_0 0x00000000
-#define HC_XTC_Dif 0x00000001
-#define HC_XTC_Spec 0x00000002
-#define HC_XTC_Tex 0x00000003
-#define HC_XTC_Cur 0x00000004
-#define HC_XTC_Adif 0x00000005
-#define HC_XTC_Fog 0x00000006
-#define HC_XTC_Atex 0x00000007
-#define HC_XTC_Acur 0x00000008
-#define HC_XTC_HTXnTBLRC 0x00000009
-#define HC_XTC_Ctexnext 0x0000000a
-/** HC_SubA_HTXnTBLCsat 0x0080
- */
-#define HC_HTXnTBLCsat_MASK 0x00800000
-#define HC_HTXnTBLCa_MASK 0x000fc000
-#define HC_HTXnTBLCb_MASK 0x00001f80
-#define HC_HTXnTBLCc_MASK 0x0000003f
-#define HC_HTXnTBLCa_TOPC (HC_XTC_TOPC << 14)
-#define HC_HTXnTBLCa_InvTOPC (HC_XTC_InvTOPC << 14)
-#define HC_HTXnTBLCa_TOPCp5 (HC_XTC_TOPCp5 << 14)
-#define HC_HTXnTBLCa_0 (HC_XTC_0 << 14)
-#define HC_HTXnTBLCa_Dif (HC_XTC_Dif << 14)
-#define HC_HTXnTBLCa_Spec (HC_XTC_Spec << 14)
-#define HC_HTXnTBLCa_Tex (HC_XTC_Tex << 14)
-#define HC_HTXnTBLCa_Cur (HC_XTC_Cur << 14)
-#define HC_HTXnTBLCa_Adif (HC_XTC_Adif << 14)
-#define HC_HTXnTBLCa_Fog (HC_XTC_Fog << 14)
-#define HC_HTXnTBLCa_Atex (HC_XTC_Atex << 14)
-#define HC_HTXnTBLCa_Acur (HC_XTC_Acur << 14)
-#define HC_HTXnTBLCa_HTXnTBLRC (HC_XTC_HTXnTBLRC << 14)
-#define HC_HTXnTBLCa_Ctexnext (HC_XTC_Ctexnext << 14)
-#define HC_HTXnTBLCb_TOPC (HC_XTC_TOPC << 7)
-#define HC_HTXnTBLCb_InvTOPC (HC_XTC_InvTOPC << 7)
-#define HC_HTXnTBLCb_TOPCp5 (HC_XTC_TOPCp5 << 7)
-#define HC_HTXnTBLCb_0 (HC_XTC_0 << 7)
-#define HC_HTXnTBLCb_Dif (HC_XTC_Dif << 7)
-#define HC_HTXnTBLCb_Spec (HC_XTC_Spec << 7)
-#define HC_HTXnTBLCb_Tex (HC_XTC_Tex << 7)
-#define HC_HTXnTBLCb_Cur (HC_XTC_Cur << 7)
-#define HC_HTXnTBLCb_Adif (HC_XTC_Adif << 7)
-#define HC_HTXnTBLCb_Fog (HC_XTC_Fog << 7)
-#define HC_HTXnTBLCb_Atex (HC_XTC_Atex << 7)
-#define HC_HTXnTBLCb_Acur (HC_XTC_Acur << 7)
-#define HC_HTXnTBLCb_HTXnTBLRC (HC_XTC_HTXnTBLRC << 7)
-#define HC_HTXnTBLCb_Ctexnext (HC_XTC_Ctexnext << 7)
-#define HC_HTXnTBLCc_TOPC (HC_XTC_TOPC << 0)
-#define HC_HTXnTBLCc_InvTOPC (HC_XTC_InvTOPC << 0)
-#define HC_HTXnTBLCc_TOPCp5 (HC_XTC_TOPCp5 << 0)
-#define HC_HTXnTBLCc_0 (HC_XTC_0 << 0)
-#define HC_HTXnTBLCc_Dif (HC_XTC_Dif << 0)
-#define HC_HTXnTBLCc_Spec (HC_XTC_Spec << 0)
-#define HC_HTXnTBLCc_Tex (HC_XTC_Tex << 0)
-#define HC_HTXnTBLCc_Cur (HC_XTC_Cur << 0)
-#define HC_HTXnTBLCc_Adif (HC_XTC_Adif << 0)
-#define HC_HTXnTBLCc_Fog (HC_XTC_Fog << 0)
-#define HC_HTXnTBLCc_Atex (HC_XTC_Atex << 0)
-#define HC_HTXnTBLCc_Acur (HC_XTC_Acur << 0)
-#define HC_HTXnTBLCc_HTXnTBLRC (HC_XTC_HTXnTBLRC << 0)
-#define HC_HTXnTBLCc_Ctexnext (HC_XTC_Ctexnext << 0)
-/* HC_SubA_HTXnTBLCop 0x0081
- */
-#define HC_HTXnTBLdot_MASK 0x00c00000
-#define HC_HTXnTBLCop_MASK 0x00380000
-#define HC_HTXnTBLCbias_MASK 0x0007c000
-#define HC_HTXnTBLCshift_MASK 0x00001800
-#define HC_HTXnTBLAop_MASK 0x00000380
-#define HC_HTXnTBLAbias_MASK 0x00000078
-#define HC_HTXnTBLAshift_MASK 0x00000003
-#define HC_HTXnTBLDOT3 0x00800000
-#define HC_HTXnTBLDOT4 0x00c00000
-#define HC_HTXnTBLCop_Add 0x00000000
-#define HC_HTXnTBLCop_Sub 0x00080000
-#define HC_HTXnTBLCop_Min 0x00100000
-#define HC_HTXnTBLCop_Max 0x00180000
-#define HC_HTXnTBLCop_Mask 0x00200000
-#define HC_HTXnTBLCbias_Cbias (HC_XTC_Cbias << 14)
-#define HC_HTXnTBLCbias_InvCbias (HC_XTC_InvCbias << 14)
-#define HC_HTXnTBLCbias_0 (HC_XTC_0 << 14)
-#define HC_HTXnTBLCbias_Dif (HC_XTC_Dif << 14)
-#define HC_HTXnTBLCbias_Spec (HC_XTC_Spec << 14)
-#define HC_HTXnTBLCbias_Tex (HC_XTC_Tex << 14)
-#define HC_HTXnTBLCbias_Cur (HC_XTC_Cur << 14)
-#define HC_HTXnTBLCbias_Adif (HC_XTC_Adif << 14)
-#define HC_HTXnTBLCbias_Fog (HC_XTC_Fog << 14)
-#define HC_HTXnTBLCbias_Atex (HC_XTC_Atex << 14)
-#define HC_HTXnTBLCbias_Acur (HC_XTC_Acur << 14)
-#define HC_HTXnTBLCbias_HTXnTBLRC (HC_XTC_HTXnTBLRC << 14)
-#define HC_HTXnTBLCshift_1 0x00000000
-#define HC_HTXnTBLCshift_2 0x00000800
-#define HC_HTXnTBLCshift_No 0x00001000
-#define HC_HTXnTBLCshift_DotP 0x00001800
-#define HC_HTXnTBLAop_Add 0x00000000
-#define HC_HTXnTBLAop_Sub 0x00000080
-#define HC_HTXnTBLAop_Min 0x00000100
-#define HC_HTXnTBLAop_Max 0x00000180
-#define HC_HTXnTBLAop_Mask 0x00000200
-#define HC_HTXnTBLAbias_Inv 0x00000040
-#define HC_HTXnTBLAbias_Adif 0x00000000
-#define HC_HTXnTBLAbias_Fog 0x00000008
-#define HC_HTXnTBLAbias_Acur 0x00000010
-#define HC_HTXnTBLAbias_HTXnTBLRAbias 0x00000018
-#define HC_HTXnTBLAbias_Atex 0x00000020
-#define HC_HTXnTBLAshift_1 0x00000000
-#define HC_HTXnTBLAshift_2 0x00000001
-#define HC_HTXnTBLAshift_No 0x00000002
-#define HC_HTXnTBLAshift_DotP 0x00000003
-/* HC_SubA_HTXnTBLMPFog 0x0082
- */
-#define HC_HTXnTBLMPfog_MASK 0x00e00000
-#define HC_HTXnTBLMPfog_0 0x00000000
-#define HC_HTXnTBLMPfog_Adif 0x00200000
-#define HC_HTXnTBLMPfog_Fog 0x00400000
-#define HC_HTXnTBLMPfog_Atex 0x00600000
-#define HC_HTXnTBLMPfog_Acur 0x00800000
-#define HC_HTXnTBLMPfog_GHTXnTBLRFog 0x00a00000
-/* HC_SubA_HTXnTBLAsat 0x0083
- *-- Define the texture alpha input.
- */
-#define HC_XTA_TOPA 0x00000000
-#define HC_XTA_InvTOPA 0x00000008
-#define HC_XTA_TOPAp5 0x00000010
-#define HC_XTA_Adif 0x00000000
-#define HC_XTA_Fog 0x00000001
-#define HC_XTA_Acur 0x00000002
-#define HC_XTA_HTXnTBLRA 0x00000003
-#define HC_XTA_Atex 0x00000004
-#define HC_XTA_Atexnext 0x00000005
-/*--
- */
-#define HC_HTXnTBLAsat_MASK 0x00800000
-#define HC_HTXnTBLAMB_MASK 0x00700000
-#define HC_HTXnTBLAa_MASK 0x0007c000
-#define HC_HTXnTBLAb_MASK 0x00000f80
-#define HC_HTXnTBLAc_MASK 0x0000001f
-#define HC_HTXnTBLAMB_SHIFT 20
-#define HC_HTXnTBLAa_TOPA (HC_XTA_TOPA << 14)
-#define HC_HTXnTBLAa_InvTOPA (HC_XTA_InvTOPA << 14)
-#define HC_HTXnTBLAa_TOPAp5 (HC_XTA_TOPAp5 << 14)
-#define HC_HTXnTBLAa_Adif (HC_XTA_Adif << 14)
-#define HC_HTXnTBLAa_Fog (HC_XTA_Fog << 14)
-#define HC_HTXnTBLAa_Acur (HC_XTA_Acur << 14)
-#define HC_HTXnTBLAa_HTXnTBLRA (HC_XTA_HTXnTBLRA << 14)
-#define HC_HTXnTBLAa_Atex (HC_XTA_Atex << 14)
-#define HC_HTXnTBLAa_Atexnext (HC_XTA_Atexnext << 14)
-#define HC_HTXnTBLAb_TOPA (HC_XTA_TOPA << 7)
-#define HC_HTXnTBLAb_InvTOPA (HC_XTA_InvTOPA << 7)
-#define HC_HTXnTBLAb_TOPAp5 (HC_XTA_TOPAp5 << 7)
-#define HC_HTXnTBLAb_Adif (HC_XTA_Adif << 7)
-#define HC_HTXnTBLAb_Fog (HC_XTA_Fog << 7)
-#define HC_HTXnTBLAb_Acur (HC_XTA_Acur << 7)
-#define HC_HTXnTBLAb_HTXnTBLRA (HC_XTA_HTXnTBLRA << 7)
-#define HC_HTXnTBLAb_Atex (HC_XTA_Atex << 7)
-#define HC_HTXnTBLAb_Atexnext (HC_XTA_Atexnext << 7)
-#define HC_HTXnTBLAc_TOPA (HC_XTA_TOPA << 0)
-#define HC_HTXnTBLAc_InvTOPA (HC_XTA_InvTOPA << 0)
-#define HC_HTXnTBLAc_TOPAp5 (HC_XTA_TOPAp5 << 0)
-#define HC_HTXnTBLAc_Adif (HC_XTA_Adif << 0)
-#define HC_HTXnTBLAc_Fog (HC_XTA_Fog << 0)
-#define HC_HTXnTBLAc_Acur (HC_XTA_Acur << 0)
-#define HC_HTXnTBLAc_HTXnTBLRA (HC_XTA_HTXnTBLRA << 0)
-#define HC_HTXnTBLAc_Atex (HC_XTA_Atex << 0)
-#define HC_HTXnTBLAc_Atexnext (HC_XTA_Atexnext << 0)
-/* HC_SubA_HTXnTBLRAa 0x0089
- */
-#define HC_HTXnTBLRAa_MASK 0x00ff0000
-#define HC_HTXnTBLRAb_MASK 0x0000ff00
-#define HC_HTXnTBLRAc_MASK 0x000000ff
-#define HC_HTXnTBLRAa_SHIFT 16
-#define HC_HTXnTBLRAb_SHIFT 8
-#define HC_HTXnTBLRAc_SHIFT 0
-/* HC_SubA_HTXnTBLRFog 0x008a
- */
-#define HC_HTXnTBLRFog_MASK 0x0000ff00
-#define HC_HTXnTBLRAbias_MASK 0x000000ff
-#define HC_HTXnTBLRFog_SHIFT 8
-#define HC_HTXnTBLRAbias_SHIFT 0
-/* HC_SubA_HTXnLScale 0x0094
- */
-#define HC_HTXnLScale_MASK 0x0007fc00
-#define HC_HTXnLOff_MASK 0x000001ff
-#define HC_HTXnLScale_SHIFT 10
-/* HC_SubA_HTXSMD 0x0000
- */
-#define HC_HTXSMD_MASK 0x00000080
-#define HC_HTXTMD_MASK 0x00000040
-#define HC_HTXNum_MASK 0x00000038
-#define HC_HTXTRMD_MASK 0x00000006
-#define HC_HTXCHCLR_MASK 0x00000001
-#define HC_HTXNum_SHIFT 3
-
-/* Texture Palette n
- */
-#define HC_SubType_TexPalette0 0x00000000
-#define HC_SubType_TexPalette1 0x00000001
-#define HC_SubType_FogTable 0x00000010
-#define HC_SubType_Stipple 0x00000014
-/* HC_SubA_TexPalette0 0x0000
- */
-#define HC_HTPnA_MASK 0xff000000
-#define HC_HTPnR_MASK 0x00ff0000
-#define HC_HTPnG_MASK 0x0000ff00
-#define HC_HTPnB_MASK 0x000000ff
-/* HC_SubA_FogTable 0x0010
- */
-#define HC_HFPn3_MASK 0xff000000
-#define HC_HFPn2_MASK 0x00ff0000
-#define HC_HFPn1_MASK 0x0000ff00
-#define HC_HFPn_MASK 0x000000ff
-#define HC_HFPn3_SHIFT 24
-#define HC_HFPn2_SHIFT 16
-#define HC_HFPn1_SHIFT 8
-
-/* Auto Testing & Security
- */
-#define HC_SubA_HenFIFOAT 0x0000
-#define HC_SubA_HFBDrawFirst 0x0004
-#define HC_SubA_HFBBasL 0x0005
-#define HC_SubA_HFBDst 0x0006
-/* HC_SubA_HenFIFOAT 0x0000
- */
-#define HC_HenFIFOAT_MASK 0x00000020
-#define HC_HenGEMILock_MASK 0x00000010
-#define HC_HenFBASwap_MASK 0x00000008
-#define HC_HenOT_MASK 0x00000004
-#define HC_HenCMDQ_MASK 0x00000002
-#define HC_HenTXCTSU_MASK 0x00000001
-/* HC_SubA_HFBDrawFirst 0x0004
- */
-#define HC_HFBDrawFirst_MASK 0x00000800
-#define HC_HFBQueue_MASK 0x00000400
-#define HC_HFBLock_MASK 0x00000200
-#define HC_HEOF_MASK 0x00000100
-#define HC_HFBBasH_MASK 0x000000ff
-
-/* GEMI Setting
- */
-#define HC_SubA_HTArbRCM 0x0008
-#define HC_SubA_HTArbRZ 0x000a
-#define HC_SubA_HTArbWZ 0x000b
-#define HC_SubA_HTArbRTX 0x000c
-#define HC_SubA_HTArbRCW 0x000d
-#define HC_SubA_HTArbE2 0x000e
-#define HC_SubA_HArbRQCM 0x0010
-#define HC_SubA_HArbWQCM 0x0011
-#define HC_SubA_HGEMITout 0x0020
-#define HC_SubA_HFthRTXD 0x0040
-#define HC_SubA_HFthRTXA 0x0044
-#define HC_SubA_HCMDQstL 0x0050
-#define HC_SubA_HCMDQendL 0x0051
-#define HC_SubA_HCMDQLen 0x0052
-/* HC_SubA_HTArbRCM 0x0008
- */
-#define HC_HTArbRCM_MASK 0x0000ffff
-/* HC_SubA_HTArbRZ 0x000a
- */
-#define HC_HTArbRZ_MASK 0x0000ffff
-/* HC_SubA_HTArbWZ 0x000b
- */
-#define HC_HTArbWZ_MASK 0x0000ffff
-/* HC_SubA_HTArbRTX 0x000c
- */
-#define HC_HTArbRTX_MASK 0x0000ffff
-/* HC_SubA_HTArbRCW 0x000d
- */
-#define HC_HTArbRCW_MASK 0x0000ffff
-/* HC_SubA_HTArbE2 0x000e
- */
-#define HC_HTArbE2_MASK 0x0000ffff
-/* HC_SubA_HArbRQCM 0x0010
- */
-#define HC_HTArbRQCM_MASK 0x0000ffff
-/* HC_SubA_HArbWQCM 0x0011
- */
-#define HC_HArbWQCM_MASK 0x0000ffff
-/* HC_SubA_HGEMITout 0x0020
- */
-#define HC_HGEMITout_MASK 0x000f0000
-#define HC_HNPArbZC_MASK 0x0000ffff
-#define HC_HGEMITout_SHIFT 16
-/* HC_SubA_HFthRTXD 0x0040
- */
-#define HC_HFthRTXD_MASK 0x00ff0000
-#define HC_HFthRZD_MASK 0x0000ff00
-#define HC_HFthWZD_MASK 0x000000ff
-#define HC_HFthRTXD_SHIFT 16
-#define HC_HFthRZD_SHIFT 8
-/* HC_SubA_HFthRTXA 0x0044
- */
-#define HC_HFthRTXA_MASK 0x000000ff
-
-/******************************************************************************
-** Define the Halcyon Internal register access constants. For simulator only.
-******************************************************************************/
-#define HC_SIMA_HAGPBstL 0x0000
-#define HC_SIMA_HAGPBendL 0x0001
-#define HC_SIMA_HAGPCMNT 0x0002
-#define HC_SIMA_HAGPBpL 0x0003
-#define HC_SIMA_HAGPBpH 0x0004
-#define HC_SIMA_HClipTB 0x0005
-#define HC_SIMA_HClipLR 0x0006
-#define HC_SIMA_HFPClipTL 0x0007
-#define HC_SIMA_HFPClipBL 0x0008
-#define HC_SIMA_HFPClipLL 0x0009
-#define HC_SIMA_HFPClipRL 0x000a
-#define HC_SIMA_HFPClipTBH 0x000b
-#define HC_SIMA_HFPClipLRH 0x000c
-#define HC_SIMA_HLP 0x000d
-#define HC_SIMA_HLPRF 0x000e
-#define HC_SIMA_HSolidCL 0x000f
-#define HC_SIMA_HPixGC 0x0010
-#define HC_SIMA_HSPXYOS 0x0011
-#define HC_SIMA_HCmdA 0x0012
-#define HC_SIMA_HCmdB 0x0013
-#define HC_SIMA_HEnable 0x0014
-#define HC_SIMA_HZWBBasL 0x0015
-#define HC_SIMA_HZWBBasH 0x0016
-#define HC_SIMA_HZWBType 0x0017
-#define HC_SIMA_HZBiasL 0x0018
-#define HC_SIMA_HZWBend 0x0019
-#define HC_SIMA_HZWTMD 0x001a
-#define HC_SIMA_HZWCDL 0x001b
-#define HC_SIMA_HZWCTAGnum 0x001c
-#define HC_SIMA_HZCYNum 0x001d
-#define HC_SIMA_HZWCFire 0x001e
-/* #define HC_SIMA_HSBBasL 0x001d */
-/* #define HC_SIMA_HSBBasH 0x001e */
-/* #define HC_SIMA_HSBFM 0x001f */
-#define HC_SIMA_HSTREF 0x0020
-#define HC_SIMA_HSTMD 0x0021
-#define HC_SIMA_HABBasL 0x0022
-#define HC_SIMA_HABBasH 0x0023
-#define HC_SIMA_HABFM 0x0024
-#define HC_SIMA_HATMD 0x0025
-#define HC_SIMA_HABLCsat 0x0026
-#define HC_SIMA_HABLCop 0x0027
-#define HC_SIMA_HABLAsat 0x0028
-#define HC_SIMA_HABLAop 0x0029
-#define HC_SIMA_HABLRCa 0x002a
-#define HC_SIMA_HABLRFCa 0x002b
-#define HC_SIMA_HABLRCbias 0x002c
-#define HC_SIMA_HABLRCb 0x002d
-#define HC_SIMA_HABLRFCb 0x002e
-#define HC_SIMA_HABLRAa 0x002f
-#define HC_SIMA_HABLRAb 0x0030
-#define HC_SIMA_HDBBasL 0x0031
-#define HC_SIMA_HDBBasH 0x0032
-#define HC_SIMA_HDBFM 0x0033
-#define HC_SIMA_HFBBMSKL 0x0034
-#define HC_SIMA_HROP 0x0035
-#define HC_SIMA_HFogLF 0x0036
-#define HC_SIMA_HFogCL 0x0037
-#define HC_SIMA_HFogCH 0x0038
-#define HC_SIMA_HFogStL 0x0039
-#define HC_SIMA_HFogStH 0x003a
-#define HC_SIMA_HFogOOdMF 0x003b
-#define HC_SIMA_HFogOOdEF 0x003c
-#define HC_SIMA_HFogEndL 0x003d
-#define HC_SIMA_HFogDenst 0x003e
-/*---- start of texture 0 setting ----
- */
-#define HC_SIMA_HTX0L0BasL 0x0040
-#define HC_SIMA_HTX0L1BasL 0x0041
-#define HC_SIMA_HTX0L2BasL 0x0042
-#define HC_SIMA_HTX0L3BasL 0x0043
-#define HC_SIMA_HTX0L4BasL 0x0044
-#define HC_SIMA_HTX0L5BasL 0x0045
-#define HC_SIMA_HTX0L6BasL 0x0046
-#define HC_SIMA_HTX0L7BasL 0x0047
-#define HC_SIMA_HTX0L8BasL 0x0048
-#define HC_SIMA_HTX0L9BasL 0x0049
-#define HC_SIMA_HTX0LaBasL 0x004a
-#define HC_SIMA_HTX0LbBasL 0x004b
-#define HC_SIMA_HTX0LcBasL 0x004c
-#define HC_SIMA_HTX0LdBasL 0x004d
-#define HC_SIMA_HTX0LeBasL 0x004e
-#define HC_SIMA_HTX0LfBasL 0x004f
-#define HC_SIMA_HTX0L10BasL 0x0050
-#define HC_SIMA_HTX0L11BasL 0x0051
-#define HC_SIMA_HTX0L012BasH 0x0052
-#define HC_SIMA_HTX0L345BasH 0x0053
-#define HC_SIMA_HTX0L678BasH 0x0054
-#define HC_SIMA_HTX0L9abBasH 0x0055
-#define HC_SIMA_HTX0LcdeBasH 0x0056
-#define HC_SIMA_HTX0Lf1011BasH 0x0057
-#define HC_SIMA_HTX0L0Pit 0x0058
-#define HC_SIMA_HTX0L1Pit 0x0059
-#define HC_SIMA_HTX0L2Pit 0x005a
-#define HC_SIMA_HTX0L3Pit 0x005b
-#define HC_SIMA_HTX0L4Pit 0x005c
-#define HC_SIMA_HTX0L5Pit 0x005d
-#define HC_SIMA_HTX0L6Pit 0x005e
-#define HC_SIMA_HTX0L7Pit 0x005f
-#define HC_SIMA_HTX0L8Pit 0x0060
-#define HC_SIMA_HTX0L9Pit 0x0061
-#define HC_SIMA_HTX0LaPit 0x0062
-#define HC_SIMA_HTX0LbPit 0x0063
-#define HC_SIMA_HTX0LcPit 0x0064
-#define HC_SIMA_HTX0LdPit 0x0065
-#define HC_SIMA_HTX0LePit 0x0066
-#define HC_SIMA_HTX0LfPit 0x0067
-#define HC_SIMA_HTX0L10Pit 0x0068
-#define HC_SIMA_HTX0L11Pit 0x0069
-#define HC_SIMA_HTX0L0_5WE 0x006a
-#define HC_SIMA_HTX0L6_bWE 0x006b
-#define HC_SIMA_HTX0Lc_11WE 0x006c
-#define HC_SIMA_HTX0L0_5HE 0x006d
-#define HC_SIMA_HTX0L6_bHE 0x006e
-#define HC_SIMA_HTX0Lc_11HE 0x006f
-#define HC_SIMA_HTX0L0OS 0x0070
-#define HC_SIMA_HTX0TB 0x0071
-#define HC_SIMA_HTX0MPMD 0x0072
-#define HC_SIMA_HTX0CLODu 0x0073
-#define HC_SIMA_HTX0FM 0x0074
-#define HC_SIMA_HTX0TRCH 0x0075
-#define HC_SIMA_HTX0TRCL 0x0076
-#define HC_SIMA_HTX0TBC 0x0077
-#define HC_SIMA_HTX0TRAH 0x0078
-#define HC_SIMA_HTX0TBLCsat 0x0079
-#define HC_SIMA_HTX0TBLCop 0x007a
-#define HC_SIMA_HTX0TBLMPfog 0x007b
-#define HC_SIMA_HTX0TBLAsat 0x007c
-#define HC_SIMA_HTX0TBLRCa 0x007d
-#define HC_SIMA_HTX0TBLRCb 0x007e
-#define HC_SIMA_HTX0TBLRCc 0x007f
-#define HC_SIMA_HTX0TBLRCbias 0x0080
-#define HC_SIMA_HTX0TBLRAa 0x0081
-#define HC_SIMA_HTX0TBLRFog 0x0082
-#define HC_SIMA_HTX0BumpM00 0x0083
-#define HC_SIMA_HTX0BumpM01 0x0084
-#define HC_SIMA_HTX0BumpM10 0x0085
-#define HC_SIMA_HTX0BumpM11 0x0086
-#define HC_SIMA_HTX0LScale 0x0087
-/*---- end of texture 0 setting ---- 0x008f
- */
-#define HC_SIMA_TX0TX1_OFF 0x0050
-/*---- start of texture 1 setting ----
- */
-#define HC_SIMA_HTX1L0BasL (HC_SIMA_HTX0L0BasL + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1L1BasL (HC_SIMA_HTX0L1BasL + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1L2BasL (HC_SIMA_HTX0L2BasL + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1L3BasL (HC_SIMA_HTX0L3BasL + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1L4BasL (HC_SIMA_HTX0L4BasL + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1L5BasL (HC_SIMA_HTX0L5BasL + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1L6BasL (HC_SIMA_HTX0L6BasL + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1L7BasL (HC_SIMA_HTX0L7BasL + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1L8BasL (HC_SIMA_HTX0L8BasL + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1L9BasL (HC_SIMA_HTX0L9BasL + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1LaBasL (HC_SIMA_HTX0LaBasL + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1LbBasL (HC_SIMA_HTX0LbBasL + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1LcBasL (HC_SIMA_HTX0LcBasL + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1LdBasL (HC_SIMA_HTX0LdBasL + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1LeBasL (HC_SIMA_HTX0LeBasL + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1LfBasL (HC_SIMA_HTX0LfBasL + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1L10BasL (HC_SIMA_HTX0L10BasL + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1L11BasL (HC_SIMA_HTX0L11BasL + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1L012BasH (HC_SIMA_HTX0L012BasH + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1L345BasH (HC_SIMA_HTX0L345BasH + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1L678BasH (HC_SIMA_HTX0L678BasH + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1L9abBasH (HC_SIMA_HTX0L9abBasH + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1LcdeBasH (HC_SIMA_HTX0LcdeBasH + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1Lf1011BasH (HC_SIMA_HTX0Lf1011BasH + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1L0Pit (HC_SIMA_HTX0L0Pit + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1L1Pit (HC_SIMA_HTX0L1Pit + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1L2Pit (HC_SIMA_HTX0L2Pit + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1L3Pit (HC_SIMA_HTX0L3Pit + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1L4Pit (HC_SIMA_HTX0L4Pit + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1L5Pit (HC_SIMA_HTX0L5Pit + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1L6Pit (HC_SIMA_HTX0L6Pit + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1L7Pit (HC_SIMA_HTX0L7Pit + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1L8Pit (HC_SIMA_HTX0L8Pit + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1L9Pit (HC_SIMA_HTX0L9Pit + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1LaPit (HC_SIMA_HTX0LaPit + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1LbPit (HC_SIMA_HTX0LbPit + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1LcPit (HC_SIMA_HTX0LcPit + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1LdPit (HC_SIMA_HTX0LdPit + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1LePit (HC_SIMA_HTX0LePit + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1LfPit (HC_SIMA_HTX0LfPit + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1L10Pit (HC_SIMA_HTX0L10Pit + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1L11Pit (HC_SIMA_HTX0L11Pit + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1L0_5WE (HC_SIMA_HTX0L0_5WE + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1L6_bWE (HC_SIMA_HTX0L6_bWE + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1Lc_11WE (HC_SIMA_HTX0Lc_11WE + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1L0_5HE (HC_SIMA_HTX0L0_5HE + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1L6_bHE (HC_SIMA_HTX0L6_bHE + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1Lc_11HE (HC_SIMA_HTX0Lc_11HE + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1L0OS (HC_SIMA_HTX0L0OS + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1TB (HC_SIMA_HTX0TB + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1MPMD (HC_SIMA_HTX0MPMD + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1CLODu (HC_SIMA_HTX0CLODu + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1FM (HC_SIMA_HTX0FM + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1TRCH (HC_SIMA_HTX0TRCH + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1TRCL (HC_SIMA_HTX0TRCL + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1TBC (HC_SIMA_HTX0TBC + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1TRAH (HC_SIMA_HTX0TRAH + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1LTC (HC_SIMA_HTX0LTC + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1LTA (HC_SIMA_HTX0LTA + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1TBLCsat (HC_SIMA_HTX0TBLCsat + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1TBLCop (HC_SIMA_HTX0TBLCop + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1TBLMPfog (HC_SIMA_HTX0TBLMPfog + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1TBLAsat (HC_SIMA_HTX0TBLAsat + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1TBLRCa (HC_SIMA_HTX0TBLRCa + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1TBLRCb (HC_SIMA_HTX0TBLRCb + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1TBLRCc (HC_SIMA_HTX0TBLRCc + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1TBLRCbias (HC_SIMA_HTX0TBLRCbias + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1TBLRAa (HC_SIMA_HTX0TBLRAa + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1TBLRFog (HC_SIMA_HTX0TBLRFog + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1BumpM00 (HC_SIMA_HTX0BumpM00 + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1BumpM01 (HC_SIMA_HTX0BumpM01 + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1BumpM10 (HC_SIMA_HTX0BumpM10 + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1BumpM11 (HC_SIMA_HTX0BumpM11 + HC_SIMA_TX0TX1_OFF)
-#define HC_SIMA_HTX1LScale (HC_SIMA_HTX0LScale + HC_SIMA_TX0TX1_OFF)
-/*---- end of texture 1 setting ---- 0xaf
- */
-#define HC_SIMA_HTXSMD 0x00b0
-#define HC_SIMA_HenFIFOAT 0x00b1
-#define HC_SIMA_HFBDrawFirst 0x00b2
-#define HC_SIMA_HFBBasL 0x00b3
-#define HC_SIMA_HTArbRCM 0x00b4
-#define HC_SIMA_HTArbRZ 0x00b5
-#define HC_SIMA_HTArbWZ 0x00b6
-#define HC_SIMA_HTArbRTX 0x00b7
-#define HC_SIMA_HTArbRCW 0x00b8
-#define HC_SIMA_HTArbE2 0x00b9
-#define HC_SIMA_HGEMITout 0x00ba
-#define HC_SIMA_HFthRTXD 0x00bb
-#define HC_SIMA_HFthRTXA 0x00bc
-/* Define the texture palette 0
- */
-#define HC_SIMA_HTP0 0x0100
-#define HC_SIMA_HTP1 0x0200
-#define HC_SIMA_FOGTABLE 0x0300
-#define HC_SIMA_STIPPLE 0x0400
-#define HC_SIMA_HE3Fire 0x0440
-#define HC_SIMA_TRANS_SET 0x0441
-#define HC_SIMA_HREngSt 0x0442
-#define HC_SIMA_HRFIFOempty 0x0443
-#define HC_SIMA_HRFIFOfull 0x0444
-#define HC_SIMA_HRErr 0x0445
-#define HC_SIMA_FIFOstatus 0x0446
-
-/******************************************************************************
-** Define the AGP command header.
-******************************************************************************/
-#define HC_ACMD_MASK 0xfe000000
-#define HC_ACMD_SUB_MASK 0x0c000000
-#define HC_ACMD_HCmdA 0xee000000
-#define HC_ACMD_HCmdB 0xec000000
-#define HC_ACMD_HCmdC 0xea000000
-#define HC_ACMD_H1 0xf0000000
-#define HC_ACMD_H2 0xf2000000
-#define HC_ACMD_H3 0xf4000000
-#define HC_ACMD_H4 0xf6000000
-
-#define HC_ACMD_H1IO_MASK 0x000001ff
-#define HC_ACMD_H2IO1_MASK 0x001ff000
-#define HC_ACMD_H2IO2_MASK 0x000001ff
-#define HC_ACMD_H2IO1_SHIFT 12
-#define HC_ACMD_H2IO2_SHIFT 0
-#define HC_ACMD_H3IO_MASK 0x000001ff
-#define HC_ACMD_H3COUNT_MASK 0x01fff000
-#define HC_ACMD_H3COUNT_SHIFT 12
-#define HC_ACMD_H4ID_MASK 0x000001ff
-#define HC_ACMD_H4COUNT_MASK 0x01fffe00
-#define HC_ACMD_H4COUNT_SHIFT 9
-
-/********************************************************************************
-** Define Header
-********************************************************************************/
-#define HC_HEADER2 0xF210F110
-
-/********************************************************************************
-** Define Dummy Value
-********************************************************************************/
-#define HC_DUMMY 0xCCCCCCCC
-/********************************************************************************
-** Define for DMA use
-********************************************************************************/
-#define HALCYON_HEADER2 0XF210F110
-#define HALCYON_FIRECMD 0XEE100000
-#define HALCYON_FIREMASK 0XFFF00000
-#define HALCYON_CMDB 0XEC000000
-#define HALCYON_CMDBMASK 0XFFFE0000
-#define HALCYON_SUB_ADDR0 0X00000000
-#define HALCYON_HEADER1MASK 0XFFFFFF00
-#define HALCYON_HEADER1 0XF0000000
-#define HC_SubA_HAGPBstL 0x0060
-#define HC_SubA_HAGPBendL 0x0061
-#define HC_SubA_HAGPCMNT 0x0062
-#define HC_SubA_HAGPBpL 0x0063
-#define HC_SubA_HAGPBpH 0x0064
-#define HC_HAGPCMNT_MASK 0x00800000
-#define HC_HCmdErrClr_MASK 0x00400000
-#define HC_HAGPBendH_MASK 0x0000ff00
-#define HC_HAGPBstH_MASK 0x000000ff
-#define HC_HAGPBendH_SHIFT 8
-#define HC_HAGPBstH_SHIFT 0
-#define HC_HAGPBpL_MASK 0x00fffffc
-#define HC_HAGPBpID_MASK 0x00000003
-#define HC_HAGPBpID_PAUSE 0x00000000
-#define HC_HAGPBpID_JUMP 0x00000001
-#define HC_HAGPBpID_STOP 0x00000002
-#define HC_HAGPBpH_MASK 0x00ffffff
-
-#endif
diff --git a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_context.c b/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_context.c
deleted file mode 100644
index 4c18eba9b..000000000
--- a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_context.c
+++ /dev/null
@@ -1,782 +0,0 @@
-/*
- * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved.
- * Copyright 2001-2003 S3 Graphics, Inc. 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
- * VIA, S3 GRAPHICS, 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.
- */
-
-/**
- * \file via_context.c
- *
- * \author John Sheng (presumably of either VIA Technologies or S3 Graphics)
- * \author Others at VIA Technologies?
- * \author Others at S3 Graphics?
- */
-
-#include "glheader.h"
-#include "context.h"
-#include "matrix.h"
-#include "state.h"
-#include "simple_list.h"
-#include "extensions.h"
-#include "framebuffer.h"
-
-#include "swrast/swrast.h"
-#include "swrast_setup/swrast_setup.h"
-#include "tnl/tnl.h"
-#include "array_cache/acache.h"
-
-#include "tnl/t_pipeline.h"
-
-#include "drivers/common/driverfuncs.h"
-
-#include "via_screen.h"
-#include "via_dri.h"
-
-#include "via_state.h"
-#include "via_tex.h"
-#include "via_span.h"
-#include "via_tris.h"
-#include "via_ioctl.h"
-#include "via_fb.h"
-
-#include <stdio.h>
-#include "macros.h"
-
-#define need_GL_ARB_multisample
-#define need_GL_ARB_point_parameters
-#define need_GL_EXT_fog_coord
-#define need_GL_EXT_secondary_color
-#include "extension_helper.h"
-
-#define DRIVER_DATE "20050526"
-
-#include "vblank.h"
-#include "utils.h"
-
-GLuint VIA_DEBUG = 0;
-
-/**
- * Return various strings for \c glGetString.
- *
- * \sa glGetString
- */
-static const GLubyte *viaGetString(GLcontext *ctx, GLenum name)
-{
- static char buffer[128];
- unsigned offset;
-
-
- switch (name) {
- case GL_VENDOR:
- return (GLubyte *)"VIA Technology";
-
- case GL_RENDERER: {
- static const char * const chipset_names[] = {
- "UniChrome",
- "CastleRock (CLE266)",
- "UniChrome (KM400)",
- "UniChrome (K8M800)",
- "UniChrome (PM8x0/CN400)",
- };
- struct via_context *vmesa = VIA_CONTEXT(ctx);
- unsigned id = vmesa->viaScreen->deviceID;
-
- offset = driGetRendererString( buffer,
- chipset_names[(id > VIA_PM800) ? 0 : id],
- DRIVER_DATE, 0 );
- return (GLubyte *)buffer;
- }
-
- default:
- return NULL;
- }
-}
-
-
-/**
- * Calculate a width that satisfies the hardware's alignment requirements.
- * On the Unichrome hardware, each scanline must be aligned to a multiple of
- * 16 pixels.
- *
- * \param width Minimum buffer width, in pixels.
- *
- * \returns A pixel width that meets the alignment requirements.
- */
-static __inline__ unsigned
-buffer_align( unsigned width )
-{
- return (width + 0x0f) & ~0x0f;
-}
-
-
-/**
- * Calculate the framebuffer parameters for all buffers (front, back, depth,
- * and stencil) associated with the specified context.
- *
- * \warning
- * This function also calls \c AllocateBuffer to actually allocate the
- * buffers.
- *
- * \sa AllocateBuffer
- */
-static GLboolean
-calculate_buffer_parameters( struct via_context *vmesa )
-{
- const unsigned shift = vmesa->viaScreen->bitsPerPixel / 16;
- const unsigned extra = 32;
- unsigned w;
- unsigned h;
-
- /* Allocate front-buffer */
- if (vmesa->drawType == GLX_PBUFFER_BIT) {
- w = vmesa->driDrawable->w;
- h = vmesa->driDrawable->h;
-
- vmesa->front.bpp = vmesa->viaScreen->bitsPerPixel;
- vmesa->front.pitch = buffer_align( w ) << shift;
- vmesa->front.size = vmesa->front.pitch * h;
-
- if (vmesa->front.map)
- via_free_draw_buffer(vmesa, &vmesa->front);
- if (!via_alloc_draw_buffer(vmesa, &vmesa->front))
- return GL_FALSE;
-
- } else {
- w = vmesa->viaScreen->width;
- h = vmesa->viaScreen->height;
-
- vmesa->front.bpp = vmesa->viaScreen->bitsPerPixel;
- vmesa->front.pitch = buffer_align( w ) << shift;
- vmesa->front.size = vmesa->front.pitch * h;
- if (getenv("ALTERNATE_SCREEN"))
- vmesa->front.offset = vmesa->front.size;
- else
- vmesa->front.offset = 0;
- vmesa->front.map = (char *) vmesa->driScreen->pFB;
- }
-
-
- /* Allocate back-buffer */
- if (vmesa->hasBack) {
- vmesa->back.bpp = vmesa->viaScreen->bitsPerPixel;
- vmesa->back.pitch = (buffer_align( vmesa->driDrawable->w ) << shift);
- vmesa->back.pitch += extra;
- vmesa->back.pitch = MIN2(vmesa->back.pitch, vmesa->front.pitch);
- vmesa->back.size = vmesa->back.pitch * vmesa->driDrawable->h;
- if (vmesa->back.map)
- via_free_draw_buffer(vmesa, &vmesa->back);
- if (!via_alloc_draw_buffer(vmesa, &vmesa->back))
- return GL_FALSE;
- }
- else {
- if (vmesa->back.map)
- via_free_draw_buffer(vmesa, &vmesa->back);
- (void) memset( &vmesa->back, 0, sizeof( vmesa->back ) );
- }
-
-
- /* Allocate depth-buffer */
- if ( vmesa->hasStencil || vmesa->hasDepth ) {
- vmesa->depth.bpp = vmesa->depthBits;
- if (vmesa->depth.bpp == 24)
- vmesa->depth.bpp = 32;
-
- vmesa->depth.pitch = (buffer_align( vmesa->driDrawable->w ) *
- (vmesa->depth.bpp/8)) + extra;
- vmesa->depth.size = vmesa->depth.pitch * vmesa->driDrawable->h;
-
- if (vmesa->depth.map)
- via_free_draw_buffer(vmesa, &vmesa->depth);
- if (!via_alloc_draw_buffer(vmesa, &vmesa->depth)) {
- return GL_FALSE;
- }
- }
- else {
- if (vmesa->depth.map)
- via_free_draw_buffer(vmesa, &vmesa->depth);
- (void) memset( & vmesa->depth, 0, sizeof( vmesa->depth ) );
- }
-
- if( vmesa->viaScreen->width == vmesa->driDrawable->w &&
- vmesa->viaScreen->height == vmesa->driDrawable->h ) {
- vmesa->doPageFlip = vmesa->allowPageFlip;
- assert(vmesa->back.pitch == vmesa->front.pitch);
- }
- else
- vmesa->doPageFlip = GL_FALSE;
-
- return GL_TRUE;
-}
-
-
-void viaReAllocateBuffers(GLcontext *ctx, GLframebuffer *drawbuffer,
- GLuint width, GLuint height)
-{
- struct via_context *vmesa = VIA_CONTEXT(ctx);
-
-#if 0
- _swrast_alloc_buffers( drawbuffer );
-#else
- _mesa_resize_framebuffer(ctx, drawbuffer, width, height);
-#endif
-
- calculate_buffer_parameters( vmesa );
-}
-
-static void viaBufferSize(GLframebuffer *buffer, GLuint *width, GLuint *height)
-{
- GET_CURRENT_CONTEXT(ctx);
- struct via_context *vmesa = VIA_CONTEXT(ctx);
- *width = vmesa->driDrawable->w;
- *height = vmesa->driDrawable->h;
-}
-
-/* Extension strings exported by the Unichrome driver.
- */
-const struct dri_extension card_extensions[] =
-{
- { "GL_ARB_multisample", GL_ARB_multisample_functions },
- { "GL_ARB_multitexture", NULL },
- { "GL_ARB_point_parameters", GL_ARB_point_parameters_functions },
- { "GL_ARB_texture_env_add", NULL },
- { "GL_ARB_texture_env_combine", NULL },
-/* { "GL_ARB_texture_env_dot3", NULL }, */
- { "GL_ARB_texture_mirrored_repeat", NULL },
- { "GL_EXT_fog_coord", GL_EXT_fog_coord_functions },
- { "GL_EXT_secondary_color", GL_EXT_secondary_color_functions },
- { "GL_EXT_stencil_wrap", NULL },
- { "GL_EXT_texture_env_combine", NULL },
-/* { "GL_EXT_texture_env_dot3", NULL }, */
- { "GL_EXT_texture_lod_bias", NULL },
- { "GL_NV_blend_square", NULL },
- { NULL, NULL }
-};
-
-extern const struct tnl_pipeline_stage _via_fastrender_stage;
-extern const struct tnl_pipeline_stage _via_render_stage;
-
-static const struct tnl_pipeline_stage *via_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
- &_via_fastrender_stage, /* ADD: unclipped rastersetup-to-dma */
-#endif
- &_tnl_render_stage,
- 0,
-};
-
-
-static const struct dri_debug_control debug_control[] =
-{
- { "fall", DEBUG_FALLBACKS },
- { "tex", DEBUG_TEXTURE },
- { "ioctl", DEBUG_IOCTL },
- { "prim", DEBUG_PRIMS },
- { "vert", DEBUG_VERTS },
- { "state", DEBUG_STATE },
- { "verb", DEBUG_VERBOSE },
- { "dri", DEBUG_DRI },
- { "dma", DEBUG_DMA },
- { "san", DEBUG_SANITY },
- { "sync", DEBUG_SYNC },
- { "sleep", DEBUG_SLEEP },
- { "pix", DEBUG_PIXEL },
- { "2d", DEBUG_2D },
- { NULL, 0 }
-};
-
-
-static GLboolean
-AllocateDmaBuffer(struct via_context *vmesa)
-{
- if (vmesa->dma)
- via_free_dma_buffer(vmesa);
-
- if (!via_alloc_dma_buffer(vmesa))
- return GL_FALSE;
-
- vmesa->dmaLow = 0;
- vmesa->dmaCliprectAddr = ~0;
- return GL_TRUE;
-}
-
-static void
-FreeBuffer(struct via_context *vmesa)
-{
- if (vmesa->front.map && vmesa->drawType == GLX_PBUFFER_BIT)
- via_free_draw_buffer(vmesa, &vmesa->front);
-
- if (vmesa->back.map)
- via_free_draw_buffer(vmesa, &vmesa->back);
-
- if (vmesa->depth.map)
- via_free_draw_buffer(vmesa, &vmesa->depth);
-
- if (vmesa->breadcrumb.map)
- via_free_draw_buffer(vmesa, &vmesa->breadcrumb);
-
- if (vmesa->dma)
- via_free_dma_buffer(vmesa);
-}
-
-
-GLboolean
-viaCreateContext(const __GLcontextModes *visual,
- __DRIcontextPrivate *driContextPriv,
- void *sharedContextPrivate)
-{
- GLcontext *ctx, *shareCtx;
- struct via_context *vmesa;
- __DRIscreenPrivate *sPriv = driContextPriv->driScreenPriv;
- viaScreenPrivate *viaScreen = (viaScreenPrivate *)sPriv->private;
- drm_via_sarea_t *saPriv = (drm_via_sarea_t *)
- (((GLubyte *)sPriv->pSAREA) + viaScreen->sareaPrivOffset);
- struct dd_function_table functions;
-
- /* Allocate via context */
- vmesa = (struct via_context *) CALLOC_STRUCT(via_context);
- if (!vmesa) {
- return GL_FALSE;
- }
-
- /* Parse configuration files.
- */
- driParseConfigFiles (&vmesa->optionCache, &viaScreen->optionCache,
- sPriv->myNum, "via");
-
- /* pick back buffer */
- vmesa->hasBack = visual->doubleBufferMode;
-
- switch(visual->depthBits) {
- case 0:
- vmesa->hasDepth = GL_FALSE;
- vmesa->depthBits = 0;
- vmesa->depth_max = 1.0;
- break;
- case 16:
- vmesa->hasDepth = GL_TRUE;
- vmesa->depthBits = visual->depthBits;
- vmesa->have_hw_stencil = GL_FALSE;
- vmesa->depth_max = (GLfloat)0xffff;
- vmesa->depth_clear_mask = 0xf << 28;
- vmesa->ClearDepth = 0xffff;
- vmesa->polygon_offset_scale = 1.0 / vmesa->depth_max;
- break;
- case 24:
- vmesa->hasDepth = GL_TRUE;
- vmesa->depthBits = visual->depthBits;
- vmesa->depth_max = (GLfloat) 0xffffff;
- vmesa->depth_clear_mask = 0xe << 28;
- vmesa->ClearDepth = 0xffffff00;
-
- assert(visual->haveStencilBuffer);
- assert(visual->stencilBits == 8);
-
- vmesa->have_hw_stencil = GL_TRUE;
- vmesa->stencilBits = visual->stencilBits;
- vmesa->stencil_clear_mask = 0x1 << 28;
- vmesa->polygon_offset_scale = 2.0 / vmesa->depth_max;
- break;
- case 32:
- vmesa->hasDepth = GL_TRUE;
- vmesa->depthBits = visual->depthBits;
- assert(!visual->haveStencilBuffer);
- vmesa->have_hw_stencil = GL_FALSE;
- vmesa->depth_max = (GLfloat)0xffffffff;
- vmesa->depth_clear_mask = 0xf << 28;
- vmesa->ClearDepth = 0xffffffff;
- vmesa->polygon_offset_scale = 2.0 / vmesa->depth_max;
- break;
- default:
- assert(0);
- break;
- }
-
- make_empty_list(&vmesa->freed_tex_buffers);
- make_empty_list(&vmesa->tex_image_list[VIA_MEM_VIDEO]);
- make_empty_list(&vmesa->tex_image_list[VIA_MEM_AGP]);
- make_empty_list(&vmesa->tex_image_list[VIA_MEM_SYSTEM]);
-
- _mesa_init_driver_functions(&functions);
- viaInitTextureFuncs(&functions);
-
- /* Allocate the Mesa context */
- if (sharedContextPrivate)
- shareCtx = ((struct via_context *) sharedContextPrivate)->glCtx;
- else
- shareCtx = NULL;
-
- vmesa->glCtx = _mesa_create_context(visual, shareCtx, &functions,
- (void*) vmesa);
-
- vmesa->shareCtx = shareCtx;
-
- if (!vmesa->glCtx) {
- FREE(vmesa);
- return GL_FALSE;
- }
- driContextPriv->driverPrivate = vmesa;
-
- ctx = vmesa->glCtx;
-
- ctx->Const.MaxTextureLevels = 10;
- ctx->Const.MaxTextureUnits = 2;
- ctx->Const.MaxTextureImageUnits = ctx->Const.MaxTextureUnits;
- ctx->Const.MaxTextureCoordUnits = ctx->Const.MaxTextureUnits;
-
- 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.MinPointSize = 1.0;
- ctx->Const.MinPointSizeAA = 1.0;
- ctx->Const.MaxPointSize = 1.0;
- ctx->Const.MaxPointSizeAA = 1.0;
- ctx->Const.PointSizeGranularity = 1.0;
-
- ctx->Driver.GetBufferSize = viaBufferSize;
-/* ctx->Driver.ResizeBuffers = _swrast_alloc_buffers; *//* FIXME ?? */
- ctx->Driver.GetString = viaGetString;
-
- ctx->DriverCtx = (void *)vmesa;
- vmesa->glCtx = ctx;
-
- /* Initialize the software rasterizer and helper modules.
- */
- _swrast_CreateContext(ctx);
- _ac_CreateContext(ctx);
- _tnl_CreateContext(ctx);
- _swsetup_CreateContext(ctx);
-
- /* Install the customized pipeline:
- */
- _tnl_destroy_pipeline(ctx);
- _tnl_install_pipeline(ctx, via_pipeline);
-
- /* Configure swrast and T&L 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);
-
-/* vmesa->display = dpy; */
- vmesa->display = sPriv->display;
-
- vmesa->hHWContext = driContextPriv->hHWContext;
- vmesa->driFd = sPriv->fd;
- vmesa->driHwLock = &sPriv->pSAREA->lock;
-
- vmesa->viaScreen = viaScreen;
- vmesa->driScreen = sPriv;
- vmesa->sarea = saPriv;
-
- vmesa->renderIndex = ~0;
- vmesa->setupIndex = ~0;
- vmesa->hwPrimitive = GL_POLYGON+1;
-
- /* KW: Hardwire this. Was previously set bogusly in
- * viaCreateBuffer. Needs work before PBUFFER can be used:
- */
- vmesa->drawType = GLX_WINDOW_BIT;
-
-
- _math_matrix_ctr(&vmesa->ViewportMatrix);
-
- /* Do this early, before VIA_FLUSH_DMA can be called:
- */
- if (!AllocateDmaBuffer(vmesa)) {
- fprintf(stderr ,"AllocateDmaBuffer fail\n");
- FreeBuffer(vmesa);
- FREE(vmesa);
- return GL_FALSE;
- }
-
- /* Allocate a small piece of fb memory for synchronization:
- */
- vmesa->breadcrumb.bpp = 32;
- vmesa->breadcrumb.pitch = buffer_align( 64 ) << 2;
- vmesa->breadcrumb.size = vmesa->breadcrumb.pitch;
-
- if (!via_alloc_draw_buffer(vmesa, &vmesa->breadcrumb)) {
- fprintf(stderr ,"AllocateDmaBuffer fail\n");
- FreeBuffer(vmesa);
- FREE(vmesa);
- return GL_FALSE;
- }
-
- driInitExtensions( ctx, card_extensions, GL_TRUE );
- viaInitStateFuncs(ctx);
- viaInitTriFuncs(ctx);
- viaInitSpanFuncs(ctx);
- viaInitIoctlFuncs(ctx);
- viaInitState(ctx);
-
- if (getenv("VIA_DEBUG"))
- VIA_DEBUG = driParseDebugString( getenv( "VIA_DEBUG" ),
- debug_control );
-
- if (getenv("VIA_NO_RAST"))
- FALLBACK(vmesa, VIA_FALLBACK_USER_DISABLE, 1);
-
- /* I don't understand why this isn't working:
- */
- vmesa->vblank_flags =
- vmesa->viaScreen->irqEnabled ?
- driGetDefaultVBlankFlags(&vmesa->optionCache) : VBLANK_FLAG_NO_IRQ;
-
- /* Hack this up in its place:
- */
- vmesa->vblank_flags = (getenv("VIA_VSYNC") ?
- VBLANK_FLAG_SYNC : VBLANK_FLAG_NO_IRQ);
-
- if (getenv("VIA_PAGEFLIP"))
- vmesa->allowPageFlip = 1;
-
- (*dri_interface->getUST)( &vmesa->swap_ust );
-
-
- vmesa->regMMIOBase = (GLuint *)((unsigned long)viaScreen->reg);
- vmesa->pnGEMode = (GLuint *)((unsigned long)viaScreen->reg + 0x4);
- vmesa->regEngineStatus = (GLuint *)((unsigned long)viaScreen->reg + 0x400);
- vmesa->regTranSet = (GLuint *)((unsigned long)viaScreen->reg + 0x43C);
- vmesa->regTranSpace = (GLuint *)((unsigned long)viaScreen->reg + 0x440);
- vmesa->agpBase = viaScreen->agpBase;
-
-
- return GL_TRUE;
-}
-
-void
-viaDestroyContext(__DRIcontextPrivate *driContextPriv)
-{
- GET_CURRENT_CONTEXT(ctx);
- struct via_context *vmesa =
- (struct via_context *)driContextPriv->driverPrivate;
- struct via_context *current = ctx ? VIA_CONTEXT(ctx) : NULL;
- assert(vmesa); /* should never be null */
-
- /* check if we're deleting the currently bound context */
- if (vmesa == current) {
- VIA_FLUSH_DMA(vmesa);
- _mesa_make_current(NULL, NULL, NULL);
- }
-
- if (vmesa) {
- viaWaitIdle(vmesa, GL_FALSE);
- if (vmesa->doPageFlip) {
- LOCK_HARDWARE(vmesa);
- if (vmesa->pfCurrentOffset != 0) {
- fprintf(stderr, "%s - reset pf\n", __FUNCTION__);
- viaResetPageFlippingLocked(vmesa);
- }
- UNLOCK_HARDWARE(vmesa);
- }
-
- _swsetup_DestroyContext(vmesa->glCtx);
- _tnl_DestroyContext(vmesa->glCtx);
- _ac_DestroyContext(vmesa->glCtx);
- _swrast_DestroyContext(vmesa->glCtx);
- /* free the Mesa context */
- _mesa_destroy_context(vmesa->glCtx);
- /* release our data */
- FreeBuffer(vmesa);
-
- assert (is_empty_list(&vmesa->tex_image_list[VIA_MEM_AGP]));
- assert (is_empty_list(&vmesa->tex_image_list[VIA_MEM_VIDEO]));
- assert (is_empty_list(&vmesa->tex_image_list[VIA_MEM_SYSTEM]));
- assert (is_empty_list(&vmesa->freed_tex_buffers));
-
- FREE(vmesa);
- }
-}
-
-
-void viaXMesaWindowMoved(struct via_context *vmesa)
-{
- __DRIdrawablePrivate *dPriv = vmesa->driDrawable;
- GLuint bytePerPixel = vmesa->viaScreen->bitsPerPixel >> 3;
-
- if (!dPriv)
- return;
-
- switch (vmesa->glCtx->DrawBuffer->_ColorDrawBufferMask[0]) {
- case BUFFER_BIT_BACK_LEFT:
- if (dPriv->numBackClipRects == 0) {
- vmesa->numClipRects = dPriv->numClipRects;
- vmesa->pClipRects = dPriv->pClipRects;
- }
- else {
- vmesa->numClipRects = dPriv->numBackClipRects;
- vmesa->pClipRects = dPriv->pBackClipRects;
- }
- break;
- case BUFFER_BIT_FRONT_LEFT:
- vmesa->numClipRects = dPriv->numClipRects;
- vmesa->pClipRects = dPriv->pClipRects;
- break;
- default:
- vmesa->numClipRects = 0;
- break;
- }
-
- if (vmesa->drawW != dPriv->w ||
- vmesa->drawH != dPriv->h)
- calculate_buffer_parameters( vmesa );
-
- vmesa->drawXoff = (GLuint)(((dPriv->x * bytePerPixel) & 0x1f) /
- bytePerPixel);
- vmesa->drawX = dPriv->x - vmesa->drawXoff;
- vmesa->drawY = dPriv->y;
- vmesa->drawW = dPriv->w;
- vmesa->drawH = dPriv->h;
-
- vmesa->front.orig = (vmesa->front.offset +
- vmesa->drawY * vmesa->front.pitch +
- vmesa->drawX * bytePerPixel);
-
- vmesa->front.origMap = (vmesa->front.map +
- vmesa->drawY * vmesa->front.pitch +
- vmesa->drawX * bytePerPixel);
-
- vmesa->back.orig = vmesa->back.offset;
- vmesa->depth.orig = vmesa->depth.offset;
- vmesa->back.origMap = vmesa->back.map;
- vmesa->depth.origMap = vmesa->depth.map;
-
- viaCalcViewport(vmesa->glCtx);
-}
-
-GLboolean
-viaUnbindContext(__DRIcontextPrivate *driContextPriv)
-{
- return GL_TRUE;
-}
-
-GLboolean
-viaMakeCurrent(__DRIcontextPrivate *driContextPriv,
- __DRIdrawablePrivate *driDrawPriv,
- __DRIdrawablePrivate *driReadPriv)
-{
- if (VIA_DEBUG & DEBUG_DRI) {
- fprintf(stderr, "driContextPriv = %016lx\n", (unsigned long)driContextPriv);
- fprintf(stderr, "driDrawPriv = %016lx\n", (unsigned long)driDrawPriv);
- fprintf(stderr, "driReadPriv = %016lx\n", (unsigned long)driReadPriv);
- }
-
- if (driContextPriv) {
- struct via_context *vmesa =
- (struct via_context *)driContextPriv->driverPrivate;
- GLcontext *ctx = vmesa->glCtx;
-
- if ( vmesa->driDrawable != driDrawPriv ) {
- driDrawableInitVBlank( driDrawPriv, vmesa->vblank_flags );
- vmesa->driDrawable = driDrawPriv;
- if ( ! calculate_buffer_parameters( vmesa ) ) {
- return GL_FALSE;
- }
- }
-
- _mesa_make_current(vmesa->glCtx,
- (GLframebuffer *)driDrawPriv->driverPrivate,
- (GLframebuffer *)driReadPriv->driverPrivate);
-
-
- ctx->Driver.DrawBuffer( ctx, ctx->Color.DrawBuffer[0] );
-
- viaXMesaWindowMoved(vmesa);
- ctx->Driver.Scissor(vmesa->glCtx,
- vmesa->glCtx->Scissor.X,
- vmesa->glCtx->Scissor.Y,
- vmesa->glCtx->Scissor.Width,
- vmesa->glCtx->Scissor.Height);
- }
- else {
- _mesa_make_current(NULL, NULL, NULL);
- }
-
- return GL_TRUE;
-}
-
-void viaGetLock(struct via_context *vmesa, GLuint flags)
-{
- __DRIdrawablePrivate *dPriv = vmesa->driDrawable;
- __DRIscreenPrivate *sPriv = vmesa->driScreen;
-
- drmGetLock(vmesa->driFd, vmesa->hHWContext, flags);
-
- DRI_VALIDATE_DRAWABLE_INFO( sPriv, dPriv );
-
- if (vmesa->sarea->ctxOwner != vmesa->hHWContext) {
- vmesa->sarea->ctxOwner = vmesa->hHWContext;
- vmesa->newEmitState = ~0;
- }
-
- if (vmesa->lastStamp != dPriv->lastStamp) {
- viaXMesaWindowMoved(vmesa);
- vmesa->newEmitState = ~0;
- vmesa->lastStamp = dPriv->lastStamp;
- }
-
- if (vmesa->doPageFlip &&
- vmesa->pfCurrentOffset != vmesa->sarea->pfCurrentOffset) {
- fprintf(stderr, "%s - reset pf\n", __FUNCTION__);
- viaResetPageFlippingLocked(vmesa);
- }
-}
-
-
-void
-viaSwapBuffers(__DRIdrawablePrivate *drawablePrivate)
-{
- __DRIdrawablePrivate *dPriv = (__DRIdrawablePrivate *)drawablePrivate;
-
- if (dPriv &&
- dPriv->driContextPriv &&
- dPriv->driContextPriv->driverPrivate) {
- struct via_context *vmesa =
- (struct via_context *)dPriv->driContextPriv->driverPrivate;
- GLcontext *ctx = vmesa->glCtx;
-
- _mesa_notifySwapBuffers(ctx);
-
- if (ctx->Visual.doubleBufferMode) {
- if (vmesa->doPageFlip) {
- viaPageFlip(dPriv);
- }
- else {
- viaCopyBuffer(dPriv);
- }
- }
- else
- VIA_FLUSH_DMA(vmesa);
- }
- else {
- _mesa_problem(NULL, "viaSwapBuffers: drawable has no context!\n");
- }
-}
diff --git a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_context.h b/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_context.h
deleted file mode 100644
index e51ec48af..000000000
--- a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_context.h
+++ /dev/null
@@ -1,412 +0,0 @@
-/*
- * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved.
- * Copyright 2001-2003 S3 Graphics, Inc. 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
- * VIA, S3 GRAPHICS, 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.
- */
-
-
-#ifndef _VIACONTEXT_H
-#define _VIACONTEXT_H
-
-#include "dri_util.h"
-
-#include "mtypes.h"
-#include "drm.h"
-#include "mm.h"
-#include "tnl/t_vertex.h"
-
-#include "via_screen.h"
-#include "via_tex.h"
-#include "via_drm.h"
-
-struct via_context;
-
-/* Chip tags. These are used to group the adapters into
- * related families.
- */
-enum VIACHIPTAGS {
- VIA_UNKNOWN = 0,
- VIA_CLE266,
- VIA_KM400,
- VIA_K8M800,
- VIA_PM800,
- VIA_LAST
-};
-
-#define VIA_FALLBACK_TEXTURE 0x1
-#define VIA_FALLBACK_DRAW_BUFFER 0x2
-#define VIA_FALLBACK_READ_BUFFER 0x4
-#define VIA_FALLBACK_COLORMASK 0x8
-#define VIA_FALLBACK_SPECULAR 0x20
-#define VIA_FALLBACK_LOGICOP 0x40
-#define VIA_FALLBACK_RENDERMODE 0x80
-#define VIA_FALLBACK_STENCIL 0x100
-#define VIA_FALLBACK_BLEND_EQ 0x200
-#define VIA_FALLBACK_BLEND_FUNC 0x400
-#define VIA_FALLBACK_USER_DISABLE 0x800
-#define VIA_FALLBACK_PROJ_TEXTURE 0x1000
-#define VIA_FALLBACK_POLY_STIPPLE 0x2000
-
-#define VIA_DMA_BUFSIZ 4096
-#define VIA_DMA_HIGHWATER (VIA_DMA_BUFSIZ - 128)
-
-#define VIA_NO_CLIPRECTS 0x1
-
-
-/* Use the templated vertex formats:
- */
-#define TAG(x) via##x
-#include "tnl_dd/t_dd_vertex.h"
-#undef TAG
-
-typedef void (*via_tri_func)(struct via_context *, viaVertex *, viaVertex *,
- viaVertex *);
-typedef void (*via_line_func)(struct via_context *, viaVertex *, viaVertex *);
-typedef void (*via_point_func)(struct via_context *, viaVertex *);
-
-struct via_buffer {
- drm_handle_t handle;
- drmSize size;
- unsigned long offset;
- unsigned long index;
- GLuint pitch;
- GLuint bpp;
- char *map;
- GLuint orig; /* The drawing origin,
- * at (drawX,drawY) in screen space.
- */
- char *origMap;
-};
-
-
-#define VIA_MAX_TEXLEVELS 10
-
-struct via_tex_buffer {
- struct via_tex_buffer *next, *prev;
- struct via_texture_image *image;
- unsigned long index;
- unsigned long offset;
- GLuint size;
- GLuint memType;
- unsigned char *bufAddr;
- GLuint texBase;
- GLuint lastUsed;
-};
-
-
-
-struct via_texture_image {
- struct gl_texture_image image;
- struct via_tex_buffer *texMem;
- GLint pitchLog2;
-};
-
-struct via_texture_object {
- struct gl_texture_object obj; /* The "parent" object */
-
- GLuint texelBytes;
- GLuint memType;
-
- GLuint regTexFM;
- GLuint regTexWidthLog2[2];
- GLuint regTexHeightLog2[2];
- GLuint regTexBaseH[4];
- struct {
- GLuint baseL;
- GLuint pitchLog2;
- } regTexBaseAndPitch[12];
-
- GLint firstLevel, lastLevel; /* upload tObj->Image[first .. lastLevel] */
-};
-
-
-
-struct via_context {
- GLint refcount;
- GLcontext *glCtx;
- GLcontext *shareCtx;
-
- struct via_buffer front;
- struct via_buffer back;
- struct via_buffer depth;
- struct via_buffer breadcrumb;
-
- GLboolean hasBack;
- GLboolean hasDepth;
- GLboolean hasStencil;
- GLboolean hasAccum;
- GLuint depthBits;
- GLuint stencilBits;
-
- GLboolean have_hw_stencil;
- GLuint ClearDepth;
- GLuint depth_clear_mask;
- GLuint stencil_clear_mask;
- GLfloat depth_max;
- GLfloat polygon_offset_scale;
-
- GLubyte *dma;
- viaRegion tex;
-
- /* Bit flag to keep 0track of fallbacks.
- */
- GLuint Fallback;
-
- /* State for via_tris.c.
- */
- GLuint newState; /* _NEW_* flags */
- GLuint newEmitState; /* _NEW_* flags */
- GLuint newRenderState; /* _NEW_* flags */
-
- struct tnl_attr_map vertex_attrs[VERT_ATTRIB_MAX];
- GLuint vertex_attr_count;
-
- GLuint setupIndex;
- GLuint renderIndex;
- GLmatrix ViewportMatrix;
- GLenum renderPrimitive;
- GLenum hwPrimitive;
- GLenum hwShadeModel;
- unsigned char *verts;
-
- /* drmBufPtr dma_buffer;
- */
- GLuint dmaLow;
- GLuint dmaCliprectAddr;
- GLuint dmaLastPrim;
- GLboolean useAgp;
-
-
- /* Fallback rasterization functions
- */
- via_point_func drawPoint;
- via_line_func drawLine;
- via_tri_func drawTri;
-
- /* Hardware register
- */
- GLuint regCmdA_End;
- GLuint regCmdB;
-
- GLuint regEnable;
- GLuint regHFBBMSKL;
- GLuint regHROP;
-
- GLuint regHZWTMD;
- GLuint regHSTREF;
- GLuint regHSTMD;
-
- GLuint regHATMD;
- GLuint regHABLCsat;
- GLuint regHABLCop;
- GLuint regHABLAsat;
- GLuint regHABLAop;
- GLuint regHABLRCa;
- GLuint regHABLRFCa;
- GLuint regHABLRCbias;
- GLuint regHABLRCb;
- GLuint regHABLRFCb;
- GLuint regHABLRAa;
- GLuint regHABLRAb;
- GLuint regHFogLF;
- GLuint regHFogCL;
- GLuint regHFogCH;
-
- GLuint regHLP;
- GLuint regHLPRF;
-
- GLuint regHTXnCLOD[2];
- GLuint regHTXnTB[2];
- GLuint regHTXnMPMD[2];
- GLuint regHTXnTBLCsat[2];
- GLuint regHTXnTBLCop[2];
- GLuint regHTXnTBLMPfog[2];
- GLuint regHTXnTBLAsat[2];
- GLuint regHTXnTBLRCb[2];
- GLuint regHTXnTBLRAa[2];
- GLuint regHTXnTBLRFog[2];
- GLuint regHTXnTBLRCa[2];
- GLuint regHTXnTBLRCc[2];
- GLuint regHTXnTBLRCbias[2];
- GLuint regHTXnTBC[2];
- GLuint regHTXnTRAH[2];
-
- int vertexSize;
- int hwVertexSize;
- GLboolean ptexHack;
- int coloroffset;
- int specoffset;
-
- GLint lastStamp;
-
- GLuint ClearColor;
- GLuint ClearMask;
-
- /* DRI stuff
- */
- GLboolean doPageFlip;
-
- struct via_buffer *drawBuffer;
- struct via_buffer *readBuffer;
-
- int drawX; /* origin of drawable in draw buffer */
- int drawY;
- int drawW;
- int drawH;
-
- int drawXoff; /* drawX is 32byte aligned - this is
- * the delta to the real origin, in
- * pixel units.
- */
-
- GLuint numClipRects; /* cliprects for that buffer */
- drm_clip_rect_t *pClipRects;
-
- GLboolean scissor;
- drm_clip_rect_t drawRect;
- drm_clip_rect_t scissorRect;
-
- drm_context_t hHWContext;
- drm_hw_lock_t *driHwLock;
- int driFd;
- __DRInativeDisplay *display;
-
- __DRIdrawablePrivate *driDrawable;
- __DRIscreenPrivate *driScreen;
- viaScreenPrivate *viaScreen;
- drm_via_sarea_t *sarea;
- volatile GLuint* regMMIOBase;
- volatile GLuint* pnGEMode;
- volatile GLuint* regEngineStatus;
- volatile GLuint* regTranSet;
- volatile GLuint* regTranSpace;
- GLuint agpBase;
- GLuint drawType;
-
- GLuint nDoneFirstFlip;
- GLuint agpFullCount;
-
- GLboolean clearTexCache;
- GLboolean thrashing;
-
- /* Configuration cache
- */
- driOptionCache optionCache;
-
- GLuint vblank_flags;
- GLuint vbl_seq;
-
- int64_t swap_ust;
- int64_t swap_missed_ust;
-
- GLuint swap_count;
- GLuint swap_missed_count;
-
-
- GLuint pfCurrentOffset;
- GLboolean allowPageFlip;
-
- GLuint lastBreadcrumbRead;
- GLuint lastBreadcrumbWrite;
- GLuint lastSwap[2];
- GLuint lastDma;
-
- GLuint total_alloc[VIA_MEM_SYSTEM+1];
-
- struct via_tex_buffer tex_image_list[VIA_MEM_SYSTEM+1];
- struct via_tex_buffer freed_tex_buffers;
-
-};
-
-
-
-#define VIA_CONTEXT(ctx) ((struct via_context *)(ctx->DriverCtx))
-
-
-
-/* Lock the hardware and validate our state.
- */
-#define LOCK_HARDWARE(vmesa) \
- do { \
- char __ret = 0; \
- DRM_CAS(vmesa->driHwLock, vmesa->hHWContext, \
- (DRM_LOCK_HELD|vmesa->hHWContext), __ret); \
- if (__ret) \
- viaGetLock(vmesa, 0); \
- } while (0)
-
-
-/* Release the kernel lock.
- */
-#define UNLOCK_HARDWARE(vmesa) \
- DRM_UNLOCK(vmesa->driFd, vmesa->driHwLock, vmesa->hHWContext);
-
-
-
-extern GLuint VIA_DEBUG;
-
-#define DEBUG_TEXTURE 0x1
-#define DEBUG_STATE 0x2
-#define DEBUG_IOCTL 0x4
-#define DEBUG_PRIMS 0x8
-#define DEBUG_VERTS 0x10
-#define DEBUG_FALLBACKS 0x20
-#define DEBUG_VERBOSE 0x40
-#define DEBUG_DRI 0x80
-#define DEBUG_DMA 0x100
-#define DEBUG_SANITY 0x200
-#define DEBUG_SYNC 0x400
-#define DEBUG_SLEEP 0x800
-#define DEBUG_PIXEL 0x1000
-#define DEBUG_2D 0x2000
-
-
-extern void viaGetLock(struct via_context *vmesa, GLuint flags);
-extern void viaLock(struct via_context *vmesa, GLuint flags);
-extern void viaUnLock(struct via_context *vmesa, GLuint flags);
-extern void viaEmitHwStateLocked(struct via_context *vmesa);
-extern void viaEmitScissorValues(struct via_context *vmesa, int box_nr, int emit);
-extern void viaXMesaSetBackClipRects(struct via_context *vmesa);
-extern void viaXMesaSetFrontClipRects(struct via_context *vmesa);
-extern void viaReAllocateBuffers(GLcontext *ctx, GLframebuffer *drawbuffer, GLuint width, GLuint height);
-extern void viaXMesaWindowMoved(struct via_context *vmesa);
-
-extern GLboolean viaTexCombineState(struct via_context *vmesa,
- const struct gl_tex_env_combine_state * combine,
- unsigned unit );
-
-/* Via hw already adjusted for GL pixel centers:
- */
-#define SUBPIXEL_X 0
-#define SUBPIXEL_Y 0
-
-/* TODO XXX _SOLO temp defines to make code compilable */
-#ifndef GLX_PBUFFER_BIT
-#define GLX_PBUFFER_BIT 0x00000004
-#endif
-#ifndef GLX_WINDOW_BIT
-#define GLX_WINDOW_BIT 0x00000001
-#endif
-#ifndef VERT_BIT_CLIP
-#define VERT_BIT_CLIP 0x1000000
-#endif
-
-#endif
diff --git a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_drmclient.h b/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_drmclient.h
deleted file mode 100644
index 7beff9a9d..000000000
--- a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_drmclient.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- *
- * 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
- * THE AUTHOR(S) AND/OR THE COPYRIGHT HOLDER(S) 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 _VIA_DRMCLIENT_H_
-#define _VIA_DRMCLIENT_H_
-
-#define VIA_DMA_BUF_ORDER 12
-#define VIA_DMA_BUF_SZ (1 << VIA_DMA_BUF_ORDER)
-#define VIA_DMA_BUF_NR 256
-
-#endif /* _VIA_DRMCLIENT_H_ */
diff --git a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_fb.c b/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_fb.c
deleted file mode 100644
index faa669073..000000000
--- a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_fb.c
+++ /dev/null
@@ -1,243 +0,0 @@
-/*
- * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved.
- * Copyright 2001-2003 S3 Graphics, Inc. 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
- * VIA, S3 GRAPHICS, 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.
- */
-
-#include <assert.h>
-
-#include "via_context.h"
-#include "via_ioctl.h"
-#include "via_fb.h"
-#include "xf86drm.h"
-#include "imports.h"
-#include "simple_list.h"
-#include <sys/ioctl.h>
-
-GLboolean
-via_alloc_draw_buffer(struct via_context *vmesa, struct via_buffer *buf)
-{
- drm_via_mem_t mem;
- mem.context = vmesa->hHWContext;
- mem.size = buf->size;
- mem.type = VIA_MEM_VIDEO;
- mem.offset = 0;
- mem.index = 0;
-
- if (ioctl(vmesa->driFd, DRM_IOCTL_VIA_ALLOCMEM, &mem))
- return GL_FALSE;
-
-
- buf->offset = mem.offset;
- buf->map = (char *)vmesa->driScreen->pFB + mem.offset;
- buf->index = mem.index;
- return GL_TRUE;
-}
-
-void
-via_free_draw_buffer(struct via_context *vmesa, struct via_buffer *buf)
-{
- drm_via_mem_t mem;
-
- if (!vmesa) return;
-
- mem.context = vmesa->hHWContext;
- mem.index = buf->index;
- mem.type = VIA_MEM_VIDEO;
- mem.offset = buf->offset;
- mem.size = buf->size;
-
- ioctl(vmesa->driFd, DRM_IOCTL_VIA_FREEMEM, &mem);
- buf->map = NULL;
-}
-
-
-GLboolean
-via_alloc_dma_buffer(struct via_context *vmesa)
-{
- drm_via_dma_init_t init;
-
- vmesa->dma = (GLubyte *) malloc(VIA_DMA_BUFSIZ);
-
- /*
- * Check whether AGP DMA has been initialized.
- */
- memset(&init, 0, sizeof(init));
- init.func = VIA_DMA_INITIALIZED;
-
- vmesa->useAgp =
- ( 0 == drmCommandWrite(vmesa->driFd, DRM_VIA_DMA_INIT,
- &init, sizeof(init)));
- if (VIA_DEBUG & DEBUG_DMA) {
- if (vmesa->useAgp)
- fprintf(stderr, "unichrome_dri.so: Using AGP.\n");
- else
- fprintf(stderr, "unichrome_dri.so: Using PCI.\n");
- }
-
- return ((vmesa->dma) ? GL_TRUE : GL_FALSE);
-}
-
-void
-via_free_dma_buffer(struct via_context *vmesa)
-{
- if (!vmesa) return;
- free(vmesa->dma);
- vmesa->dma = 0;
-}
-
-
-/* These functions now allocate and free the via_tex_buffer struct as well:
- */
-struct via_tex_buffer *
-via_alloc_texture(struct via_context *vmesa,
- GLuint size,
- GLuint memType)
-{
- struct via_tex_buffer *t = CALLOC_STRUCT(via_tex_buffer);
-
- if (!t)
- goto cleanup;
-
- t->size = size;
- t->memType = memType;
- insert_at_tail(&vmesa->tex_image_list[memType], t);
-
- if (t->memType == VIA_MEM_AGP ||
- t->memType == VIA_MEM_VIDEO) {
- drm_via_mem_t fb;
-
- fb.context = vmesa->hHWContext;
- fb.size = t->size;
- fb.type = t->memType;
- fb.offset = 0;
- fb.index = 0;
-
- if (ioctl(vmesa->driFd, DRM_IOCTL_VIA_ALLOCMEM, &fb) != 0 ||
- fb.index == 0)
- goto cleanup;
-
- if (0)
- fprintf(stderr, "offset %lx index %lx\n", fb.offset, fb.index);
-
- t->offset = fb.offset;
- t->index = fb.index;
-
- if (t->memType == VIA_MEM_AGP) {
- t->bufAddr = (GLubyte *)((unsigned long)vmesa->viaScreen->agpLinearStart +
- fb.offset);
- t->texBase = vmesa->agpBase + fb.offset;
- }
- else {
- t->bufAddr = (GLubyte *)((unsigned long)vmesa->driScreen->pFB + fb.offset);
- t->texBase = fb.offset;
- }
-
- vmesa->total_alloc[t->memType] += t->size;
- return t;
- }
- else if (t->memType == VIA_MEM_SYSTEM) {
-
- t->bufAddr = _mesa_malloc(t->size);
- if (!t->bufAddr)
- goto cleanup;
-
- vmesa->total_alloc[t->memType] += t->size;
- return t;
- }
-
- cleanup:
- if (t) {
- remove_from_list(t);
- FREE(t);
- }
-
- return NULL;
-}
-
-
-static void
-via_do_free_texture(struct via_context *vmesa, struct via_tex_buffer *t)
-{
- drm_via_mem_t fb;
-
- remove_from_list( t );
-
- vmesa->total_alloc[t->memType] -= t->size;
-
- fb.context = vmesa->hHWContext;
- fb.index = t->index;
- fb.offset = t->offset;
- fb.type = t->memType;
- fb.size = t->size;
-
- if (ioctl(vmesa->driFd, DRM_IOCTL_VIA_FREEMEM, &fb)) {
- fprintf(stderr, "via_free_texture fail\n");
- }
-
- FREE(t);
-}
-
-
-/* Release textures which were potentially still being referenced by
- * hardware at the time when they were originally freed.
- */
-void
-via_release_pending_textures( struct via_context *vmesa )
-{
- struct via_tex_buffer *s, *tmp;
-
- foreach_s( s, tmp, &vmesa->freed_tex_buffers ) {
- if (!VIA_GEQ_WRAP(s->lastUsed, vmesa->lastBreadcrumbRead)) {
- if (VIA_DEBUG & DEBUG_TEXTURE)
- fprintf(stderr, "%s: release tex sz %d lastUsed %x\n",
- __FUNCTION__, s->size, s->lastUsed);
- via_do_free_texture(vmesa, s);
- }
- }
-}
-
-
-
-void
-via_free_texture(struct via_context *vmesa, struct via_tex_buffer *t)
-{
- if (!t) {
- return;
- }
- else if (t->memType == VIA_MEM_SYSTEM) {
- remove_from_list(t);
- vmesa->total_alloc[t->memType] -= t->size;
- _mesa_free(t->bufAddr);
- _mesa_free(t);
- }
- else if (t->index && viaCheckBreadcrumb(vmesa, t->lastUsed)) {
- via_do_free_texture( vmesa, t );
- }
- else {
- /* Close current breadcrumb so that we can free this eventually:
- */
- if (t->lastUsed == vmesa->lastBreadcrumbWrite)
- viaEmitBreadcrumb(vmesa);
-
- move_to_tail( &vmesa->freed_tex_buffers, t );
- }
-}
diff --git a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_fb.h b/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_fb.h
deleted file mode 100644
index 7ee153f47..000000000
--- a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_fb.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved.
- * Copyright 2001-2003 S3 Graphics, Inc. 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
- * VIA, S3 GRAPHICS, 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.
- */
-
-#ifndef _VIAFB_INC
-#define _VIAFB_INC
-
-#include "via_context.h"
-
-extern GLboolean via_alloc_draw_buffer(struct via_context *vmesa, struct via_buffer *buf);
-extern GLboolean via_alloc_dma_buffer(struct via_context *vmesa);
-
-struct via_tex_buffer *
-via_alloc_texture(struct via_context *vmesa,
- GLuint size,
- GLuint memType);
-
-extern void via_free_draw_buffer(struct via_context *vmesa, struct via_buffer *buf);
-extern void via_free_dma_buffer(struct via_context *vmesa);
-extern void via_free_texture(struct via_context *vmesa, struct via_tex_buffer *t);
-void via_release_pending_textures( struct via_context *vmesa );
-#endif
diff --git a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_ioctl.c b/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_ioctl.c
deleted file mode 100644
index e84f4294a..000000000
--- a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_ioctl.c
+++ /dev/null
@@ -1,970 +0,0 @@
-/*
- * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved.
- * Copyright 2001-2003 S3 Graphics, Inc. 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
- * VIA, S3 GRAPHICS, 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.
- */
-#include <stdio.h>
-#include <unistd.h>
-
-#include "glheader.h"
-#include "mtypes.h"
-#include "macros.h"
-#include "dd.h"
-#include "swrast/swrast.h"
-
-#include "mm.h"
-#include "via_context.h"
-#include "via_tris.h"
-#include "via_ioctl.h"
-#include "via_state.h"
-#include "via_fb.h"
-#include "via_3d_reg.h"
-
-#include "vblank.h"
-#include "drm.h"
-#include "xf86drm.h"
-#include <sys/ioctl.h>
-#include <errno.h>
-
-
-#define VIA_REG_STATUS 0x400
-#define VIA_REG_GEMODE 0x004
-#define VIA_REG_SRCBASE 0x030
-#define VIA_REG_DSTBASE 0x034
-#define VIA_REG_PITCH 0x038
-#define VIA_REG_SRCCOLORKEY 0x01C
-#define VIA_REG_KEYCONTROL 0x02C
-#define VIA_REG_SRCPOS 0x008
-#define VIA_REG_DSTPOS 0x00C
-#define VIA_REG_GECMD 0x000
-#define VIA_REG_DIMENSION 0x010 /* width and height */
-#define VIA_REG_FGCOLOR 0x018
-
-#define VIA_GEM_8bpp 0x00000000
-#define VIA_GEM_16bpp 0x00000100
-#define VIA_GEM_32bpp 0x00000300
-#define VIA_GEC_BLT 0x00000001
-#define VIA_PITCH_ENABLE 0x80000000
-#define VIA_GEC_INCX 0x00000000
-#define VIA_GEC_DECY 0x00004000
-#define VIA_GEC_INCY 0x00000000
-#define VIA_GEC_DECX 0x00008000
-#define VIA_GEC_FIXCOLOR_PAT 0x00002000
-
-
-#define VIA_BLIT_CLEAR 0x00
-#define VIA_BLIT_COPY 0xCC
-#define VIA_BLIT_FILL 0xF0
-#define VIA_BLIT_SET 0xFF
-
-static void dump_dma( struct via_context *vmesa )
-{
- GLuint i;
- GLuint *data = (GLuint *)vmesa->dma;
- for (i = 0; i < vmesa->dmaLow; i += 16) {
- fprintf(stderr, "%04x: ", i);
- fprintf(stderr, "%08x ", *data++);
- fprintf(stderr, "%08x ", *data++);
- fprintf(stderr, "%08x ", *data++);
- fprintf(stderr, "%08x\n", *data++);
- }
- fprintf(stderr, "******************************************\n");
-}
-
-
-void viaCheckDma(struct via_context *vmesa, GLuint bytes)
-{
- VIA_FINISH_PRIM( vmesa );
- if (vmesa->dmaLow + bytes > VIA_DMA_HIGHWATER) {
- viaFlushDma(vmesa);
- }
-}
-
-
-
-#define SetReg2DAGP(nReg, nData) do { \
- OUT_RING( ((nReg) >> 2) | 0xF0000000 ); \
- OUT_RING( nData ); \
-} while (0)
-
-
-static void viaBlit(struct via_context *vmesa, GLuint bpp,
- GLuint srcBase, GLuint srcPitch,
- GLuint dstBase, GLuint dstPitch,
- GLuint w, GLuint h,
- GLuint blitMode,
- GLuint color, GLuint nMask )
-{
-
- GLuint dwGEMode, srcX, dstX, cmd;
- RING_VARS;
-
- if (VIA_DEBUG & DEBUG_2D)
- fprintf(stderr,
- "%s bpp %d src %x/%x dst %x/%x w %d h %d "
- " mode: %x color: 0x%08x mask 0x%08x\n",
- __FUNCTION__, bpp, srcBase, srcPitch, dstBase,
- dstPitch, w,h, blitMode, color, nMask);
-
-
- if (!w || !h)
- return;
-
- switch (bpp) {
- case 16:
- dwGEMode = VIA_GEM_16bpp;
- srcX = (srcBase & 0x1f) >> 1;
- dstX = (dstBase & 0x1f) >> 1;
- break;
- case 32:
- dwGEMode = VIA_GEM_32bpp;
- srcX = (srcBase & 0x1f) >> 2;
- dstX = (dstBase & 0x1f) >> 2;
- break;
- default:
- return;
- }
-
- switch(blitMode) {
- case VIA_BLIT_FILL:
- cmd = VIA_GEC_BLT | VIA_GEC_FIXCOLOR_PAT | (VIA_BLIT_FILL << 24);
- break;
- case VIA_BLIT_COPY:
- cmd = VIA_GEC_BLT | (VIA_BLIT_COPY << 24);
- break;
- default:
- return;
- }
-
- BEGIN_RING(22);
- SetReg2DAGP( VIA_REG_GEMODE, dwGEMode);
- SetReg2DAGP( VIA_REG_FGCOLOR, color);
- SetReg2DAGP( 0x2C, nMask);
- SetReg2DAGP( VIA_REG_SRCBASE, (srcBase & ~0x1f) >> 3);
- SetReg2DAGP( VIA_REG_DSTBASE, (dstBase & ~0x1f) >> 3);
- SetReg2DAGP( VIA_REG_PITCH, VIA_PITCH_ENABLE |
- (srcPitch >> 3) | ((dstPitch >> 3) << 16));
- SetReg2DAGP( VIA_REG_SRCPOS, srcX);
- SetReg2DAGP( VIA_REG_DSTPOS, dstX);
- SetReg2DAGP( VIA_REG_DIMENSION, (((h - 1) << 16) | (w - 1)));
- SetReg2DAGP( VIA_REG_GECMD, cmd);
- SetReg2DAGP( 0x2C, 0x00000000);
- ADVANCE_RING();
-}
-
-static void viaFillBuffer(struct via_context *vmesa,
- struct via_buffer *buffer,
- drm_clip_rect_t *pbox,
- int nboxes,
- GLuint pixel,
- GLuint mask)
-{
- GLuint bytePerPixel = buffer->bpp >> 3;
- GLuint i;
-
- for (i = 0; i < nboxes ; i++) {
- int x = pbox[i].x1 - vmesa->drawX;
- int y = pbox[i].y1 - vmesa->drawY;
- int w = pbox[i].x2 - pbox[i].x1;
- int h = pbox[i].y2 - pbox[i].y1;
-
- int offset = (buffer->orig +
- y * buffer->pitch +
- x * bytePerPixel);
-
- viaBlit(vmesa,
- buffer->bpp,
- offset, buffer->pitch,
- offset, buffer->pitch,
- w, h,
- VIA_BLIT_FILL, pixel, mask);
- }
-}
-
-
-
-static void viaClear(GLcontext *ctx, GLbitfield mask, GLboolean all,
- GLint cx, GLint cy, GLint cw, GLint ch)
-{
- struct via_context *vmesa = VIA_CONTEXT(ctx);
- __DRIdrawablePrivate *dPriv = vmesa->driDrawable;
- int flag = 0;
- GLuint i = 0;
- GLuint clear_depth_mask = 0xf << 28;
- GLuint clear_depth = 0;
-
- VIA_FLUSH_DMA(vmesa);
-
- if (mask & BUFFER_BIT_FRONT_LEFT) {
- flag |= VIA_FRONT;
- mask &= ~BUFFER_BIT_FRONT_LEFT;
- }
-
- if (mask & BUFFER_BIT_BACK_LEFT) {
- flag |= VIA_BACK;
- mask &= ~BUFFER_BIT_BACK_LEFT;
- }
-
- if (mask & BUFFER_BIT_DEPTH) {
- flag |= VIA_DEPTH;
- clear_depth = (GLuint)(ctx->Depth.Clear * vmesa->ClearDepth);
- clear_depth_mask &= ~vmesa->depth_clear_mask;
- mask &= ~BUFFER_BIT_DEPTH;
- }
-
- if (mask & BUFFER_BIT_STENCIL) {
- if (vmesa->have_hw_stencil) {
- if (ctx->Stencil.WriteMask[0] == 0xff) {
- flag |= VIA_DEPTH;
- clear_depth &= ~0xff;
- clear_depth |= (ctx->Stencil.Clear & 0xff);
- clear_depth_mask &= ~vmesa->stencil_clear_mask;
- mask &= ~BUFFER_BIT_STENCIL;
- }
- else {
- if (VIA_DEBUG & DEBUG_2D)
- fprintf(stderr, "Clear stencil writemask %x\n",
- ctx->Stencil.WriteMask[0]);
- }
- }
- }
-
- /* 16bpp doesn't support masked clears */
- if (vmesa->viaScreen->bytesPerPixel == 2 &&
- vmesa->ClearMask & 0xf0000000) {
- if (flag & VIA_FRONT)
- mask |= BUFFER_BIT_FRONT_LEFT;
- if (flag & VIA_BACK)
- mask |= BUFFER_BIT_BACK_LEFT;
- flag &= ~(VIA_FRONT | VIA_BACK);
- }
-
- if (flag) {
- drm_clip_rect_t *boxes, *tmp_boxes = 0;
- int nr = 0;
-
- LOCK_HARDWARE(vmesa);
-
- /* flip top to bottom */
- cy = dPriv->h - cy - ch;
- cx += vmesa->drawX + vmesa->drawXoff;
- cy += vmesa->drawY;
-
- if (!all) {
- drm_clip_rect_t *b = vmesa->pClipRects;
-
- boxes = tmp_boxes =
- (drm_clip_rect_t *)malloc(vmesa->numClipRects *
- sizeof(drm_clip_rect_t));
- if (!boxes) {
- UNLOCK_HARDWARE(vmesa);
- return;
- }
-
- for (; i < vmesa->numClipRects; i++) {
- GLint x = b[i].x1;
- GLint y = b[i].y1;
- GLint w = b[i].x2 - x;
- GLint h = b[i].y2 - y;
-
- if (x < cx) w -= cx - x, x = cx;
- if (y < cy) h -= cy - y, y = cy;
- if (x + w > cx + cw) w = cx + cw - x;
- if (y + h > cy + ch) h = cy + ch - y;
- if (w <= 0) continue;
- if (h <= 0) continue;
-
- boxes[nr].x1 = x;
- boxes[nr].y1 = y;
- boxes[nr].x2 = x + w;
- boxes[nr].y2 = y + h;
- nr++;
- }
- }
- else {
- boxes = vmesa->pClipRects;
- nr = vmesa->numClipRects;
- }
-
- if (flag & VIA_FRONT) {
- viaFillBuffer(vmesa, &vmesa->front, boxes, nr, vmesa->ClearColor,
- vmesa->ClearMask);
- }
-
- if (flag & VIA_BACK) {
- viaFillBuffer(vmesa, &vmesa->back, boxes, nr, vmesa->ClearColor,
- vmesa->ClearMask);
- }
-
- if (flag & VIA_DEPTH) {
- viaFillBuffer(vmesa, &vmesa->depth, boxes, nr, clear_depth,
- clear_depth_mask);
- }
-
- viaFlushDmaLocked(vmesa, VIA_NO_CLIPRECTS);
- UNLOCK_HARDWARE(vmesa);
-
- if (tmp_boxes)
- free(tmp_boxes);
- }
-
- if (mask)
- _swrast_Clear(ctx, mask, all, cx, cy, cw, ch);
-}
-
-
-
-
-static void viaDoSwapBuffers(struct via_context *vmesa,
- drm_clip_rect_t *b,
- GLuint nbox)
-{
- GLuint bytePerPixel = vmesa->viaScreen->bitsPerPixel >> 3;
- struct via_buffer *front = &vmesa->front;
- struct via_buffer *back = &vmesa->back;
- GLuint i;
-
- for (i = 0; i < nbox; i++, b++) {
- GLint x = b->x1 - vmesa->drawX;
- GLint y = b->y1 - vmesa->drawY;
- GLint w = b->x2 - b->x1;
- GLint h = b->y2 - b->y1;
-
- GLuint src = back->orig + y * back->pitch + x * bytePerPixel;
- GLuint dest = front->orig + y * front->pitch + x * bytePerPixel;
-
- viaBlit(vmesa,
- bytePerPixel << 3,
- src, back->pitch,
- dest, front->pitch,
- w, h,
- VIA_BLIT_COPY, 0, 0);
- }
-
- viaFlushDmaLocked(vmesa, VIA_NO_CLIPRECTS); /* redundant */
-}
-
-
-static void viaEmitBreadcrumbLocked( struct via_context *vmesa )
-{
- struct via_buffer *buffer = &vmesa->breadcrumb;
- GLuint value = vmesa->lastBreadcrumbWrite + 1;
-
- if (VIA_DEBUG & DEBUG_IOCTL)
- fprintf(stderr, "%s %d\n", __FUNCTION__, value);
-
- assert(!vmesa->dmaLow);
-
- viaBlit(vmesa,
- buffer->bpp,
- buffer->offset, buffer->pitch,
- buffer->offset, buffer->pitch,
- 1, 1,
- VIA_BLIT_FILL, value, 0);
-
- viaFlushDmaLocked(vmesa, VIA_NO_CLIPRECTS); /* often redundant */
- vmesa->lastBreadcrumbWrite = value;
-}
-
-void viaEmitBreadcrumb( struct via_context *vmesa )
-{
- LOCK_HARDWARE(vmesa);
- if (vmesa->dmaLow)
- viaFlushDmaLocked(vmesa, 0);
-
- viaEmitBreadcrumbLocked( vmesa );
- UNLOCK_HARDWARE(vmesa);
-}
-
-static GLboolean viaCheckIdle( struct via_context *vmesa )
-{
- if ((vmesa->regEngineStatus[0] & 0xFFFEFFFF) == 0x00020000) {
- return GL_TRUE;
- }
- return GL_FALSE;
-}
-
-
-GLboolean viaCheckBreadcrumb( struct via_context *vmesa, GLuint value )
-{
- GLuint *buf = (GLuint *)vmesa->breadcrumb.map;
- vmesa->lastBreadcrumbRead = *buf;
-
- if (VIA_DEBUG & DEBUG_IOCTL)
- fprintf(stderr, "%s %d < %d: %d\n", __FUNCTION__, value,
- vmesa->lastBreadcrumbRead,
- !VIA_GEQ_WRAP(value, vmesa->lastBreadcrumbRead));
-
- return !VIA_GEQ_WRAP(value, vmesa->lastBreadcrumbRead);
-}
-
-static void viaWaitBreadcrumb( struct via_context *vmesa, GLuint value )
-{
- if (VIA_DEBUG & DEBUG_IOCTL)
- fprintf(stderr, "%s %d\n", __FUNCTION__, value);
-
- assert(!VIA_GEQ_WRAP(value, vmesa->lastBreadcrumbWrite));
-
- while (!viaCheckBreadcrumb( vmesa, value )) {
- viaSwapOutWork( vmesa );
- via_release_pending_textures( vmesa );
- }
-}
-
-
-void viaWaitIdle( struct via_context *vmesa, GLboolean light )
-{
- VIA_FLUSH_DMA(vmesa);
-
- if (VIA_DEBUG & DEBUG_IOCTL)
- fprintf(stderr, "%s lastDma %d lastBreadcrumbWrite %d\n",
- __FUNCTION__, vmesa->lastDma, vmesa->lastBreadcrumbWrite);
-
- /* Need to emit a new breadcrumb?
- */
- if (vmesa->lastDma == vmesa->lastBreadcrumbWrite) {
- LOCK_HARDWARE(vmesa);
- viaEmitBreadcrumbLocked( vmesa );
- UNLOCK_HARDWARE(vmesa);
- }
-
- /* Need to wait?
- */
- if (VIA_GEQ_WRAP(vmesa->lastDma, vmesa->lastBreadcrumbRead))
- viaWaitBreadcrumb( vmesa, vmesa->lastDma );
-
- if (light) return;
-
- LOCK_HARDWARE(vmesa);
- while(!viaCheckIdle(vmesa))
- ;
- UNLOCK_HARDWARE(vmesa);
- via_release_pending_textures(vmesa);
-}
-
-
-void viaWaitIdleLocked( struct via_context *vmesa, GLboolean light )
-{
- if (vmesa->dmaLow)
- viaFlushDmaLocked(vmesa, 0);
-
- if (VIA_DEBUG & DEBUG_IOCTL)
- fprintf(stderr, "%s lastDma %d lastBreadcrumbWrite %d\n",
- __FUNCTION__, vmesa->lastDma, vmesa->lastBreadcrumbWrite);
-
- /* Need to emit a new breadcrumb?
- */
- if (vmesa->lastDma == vmesa->lastBreadcrumbWrite) {
- viaEmitBreadcrumbLocked( vmesa );
- }
-
- /* Need to wait?
- */
- if (vmesa->lastDma >= vmesa->lastBreadcrumbRead)
- viaWaitBreadcrumb( vmesa, vmesa->lastDma );
-
- if (light) return;
-
- while(!viaCheckIdle(vmesa))
- ;
-
- via_release_pending_textures(vmesa);
-}
-
-
-
-/* Wait for command stream to be processed *and* the next vblank to
- * occur. Equivalent to calling WAIT_IDLE() and then WaitVBlank,
- * except that WAIT_IDLE() will spin the CPU polling, while this is
- * IRQ driven.
- */
-static void viaWaitIdleVBlank( const __DRIdrawablePrivate *dPriv,
- struct via_context *vmesa,
- GLuint value )
-{
- GLboolean missed_target;
-
- VIA_FLUSH_DMA(vmesa);
-
- if (!value)
- return;
-
- do {
- if (value < vmesa->lastBreadcrumbRead ||
- vmesa->thrashing)
- viaSwapOutWork(vmesa);
-
- driWaitForVBlank( dPriv, & vmesa->vbl_seq,
- vmesa->vblank_flags, & missed_target );
- if ( missed_target ) {
- vmesa->swap_missed_count++;
- (*dri_interface->getUST)( &vmesa->swap_missed_ust );
- }
- }
- while (!viaCheckBreadcrumb(vmesa, value));
-
- vmesa->thrashing = 0; /* reset flag on swap */
- vmesa->swap_count++;
- via_release_pending_textures( vmesa );
-}
-
-
-
-static void viaDoPageFlipLocked(struct via_context *vmesa, GLuint offset)
-{
- RING_VARS;
-
- if (VIA_DEBUG & DEBUG_2D)
- fprintf(stderr, "%s %x\n", __FUNCTION__, offset);
-
- if (!vmesa->nDoneFirstFlip) {
- vmesa->nDoneFirstFlip = GL_TRUE;
- BEGIN_RING(4);
- OUT_RING(HALCYON_HEADER2);
- OUT_RING(0x00fe0000);
- OUT_RING(0x0000000e);
- OUT_RING(0x0000000e);
- ADVANCE_RING();
- }
-
- BEGIN_RING(4);
- OUT_RING( HALCYON_HEADER2 );
- OUT_RING( 0x00fe0000 );
- OUT_RING((HC_SubA_HFBBasL << 24) | (offset & 0xFFFFF8) | 0x2);
- OUT_RING((HC_SubA_HFBDrawFirst << 24) |
- ((offset & 0xFF000000) >> 24) | 0x0100);
- ADVANCE_RING();
-
- vmesa->pfCurrentOffset = vmesa->sarea->pfCurrentOffset = offset;
-
- viaFlushDmaLocked(vmesa, VIA_NO_CLIPRECTS); /* often redundant */
-}
-
-void viaResetPageFlippingLocked(struct via_context *vmesa)
-{
- if (VIA_DEBUG & DEBUG_2D)
- fprintf(stderr, "%s\n", __FUNCTION__);
-
- viaDoPageFlipLocked( vmesa, 0 );
-
- if (vmesa->front.offset != 0) {
- struct via_buffer buffer_tmp;
- memcpy(&buffer_tmp, &vmesa->back, sizeof(struct via_buffer));
- memcpy(&vmesa->back, &vmesa->front, sizeof(struct via_buffer));
- memcpy(&vmesa->front, &buffer_tmp, sizeof(struct via_buffer));
- }
-
- assert(vmesa->front.offset == 0);
- vmesa->doPageFlip = vmesa->allowPageFlip = 0;
-}
-
-
-/*
- * Copy the back buffer to the front buffer.
- */
-void viaCopyBuffer(const __DRIdrawablePrivate *dPriv)
-{
- struct via_context *vmesa =
- (struct via_context *)dPriv->driContextPriv->driverPrivate;
-
- if (VIA_DEBUG & DEBUG_IOCTL)
- fprintf(stderr,
- "%s: lastSwap[1] %d lastSwap[0] %d lastWrite %d lastRead %d\n",
- __FUNCTION__,
- vmesa->lastSwap[1],
- vmesa->lastSwap[0],
- vmesa->lastBreadcrumbWrite,
- vmesa->lastBreadcrumbRead);
-
- VIA_FLUSH_DMA(vmesa);
-
- if (vmesa->vblank_flags == VBLANK_FLAG_SYNC &&
- vmesa->lastBreadcrumbWrite > 1)
- viaWaitIdleVBlank(dPriv, vmesa, vmesa->lastBreadcrumbWrite-1);
- else
- viaWaitIdleVBlank(dPriv, vmesa, vmesa->lastSwap[1]);
-
- LOCK_HARDWARE(vmesa);
-
- /* Catch and cleanup situation where we were pageflipping but have
- * stopped.
- */
- if (dPriv->numClipRects && vmesa->sarea->pfCurrentOffset != 0) {
- viaResetPageFlippingLocked(vmesa);
- UNLOCK_HARDWARE(vmesa);
- return;
- }
-
- viaDoSwapBuffers(vmesa, dPriv->pClipRects, dPriv->numClipRects);
- vmesa->lastSwap[1] = vmesa->lastSwap[0];
- vmesa->lastSwap[0] = vmesa->lastBreadcrumbWrite;
- viaEmitBreadcrumbLocked(vmesa);
- UNLOCK_HARDWARE(vmesa);
-
- (*dri_interface->getUST)( &vmesa->swap_ust );
-}
-
-
-void viaPageFlip(const __DRIdrawablePrivate *dPriv)
-{
- struct via_context *vmesa =
- (struct via_context *)dPriv->driContextPriv->driverPrivate;
- struct via_buffer buffer_tmp;
-
- VIA_FLUSH_DMA(vmesa);
- if (vmesa->vblank_flags == VBLANK_FLAG_SYNC &&
- vmesa->lastBreadcrumbWrite > 1)
- viaWaitIdleVBlank(dPriv, vmesa, vmesa->lastBreadcrumbWrite - 1);
- else
- viaWaitIdleVBlank(dPriv, vmesa, vmesa->lastSwap[0]);
-
- LOCK_HARDWARE(vmesa);
- viaDoPageFlipLocked(vmesa, vmesa->back.offset);
- vmesa->lastSwap[1] = vmesa->lastSwap[0];
- vmesa->lastSwap[0] = vmesa->lastBreadcrumbWrite;
- viaEmitBreadcrumbLocked(vmesa);
- UNLOCK_HARDWARE(vmesa);
-
- (*dri_interface->getUST)( &vmesa->swap_ust );
-
-
- /* KW: FIXME: When buffers are freed, could free frontbuffer by
- * accident:
- */
- memcpy(&buffer_tmp, &vmesa->back, sizeof(struct via_buffer));
- memcpy(&vmesa->back, &vmesa->front, sizeof(struct via_buffer));
- memcpy(&vmesa->front, &buffer_tmp, sizeof(struct via_buffer));
-}
-
-
-
-
-#define VIA_CMDBUF_MAX_LAG 50000
-
-static int fire_buffer(struct via_context *vmesa)
-{
- drm_via_cmdbuffer_t bufI;
- int ret;
-
- bufI.buf = (char *)vmesa->dma;
- bufI.size = vmesa->dmaLow;
-
- if (vmesa->useAgp) {
- drm_via_cmdbuf_size_t bSiz;
-
- /* Do the CMDBUF_SIZE ioctl:
- */
- bSiz.func = VIA_CMDBUF_LAG;
- bSiz.wait = 1;
- bSiz.size = VIA_CMDBUF_MAX_LAG;
- do {
- ret = drmCommandWriteRead(vmesa->driFd, DRM_VIA_CMDBUF_SIZE,
- &bSiz, sizeof(bSiz));
- } while (ret == -EAGAIN);
- if (ret) {
- UNLOCK_HARDWARE(vmesa);
- fprintf(stderr, "%s: DRM_VIA_CMDBUF_SIZE returned %d\n",
- __FUNCTION__, ret);
- abort();
- return ret;
- }
-
- /* Actually fire the buffer:
- */
- do {
- ret = drmCommandWrite(vmesa->driFd, DRM_VIA_CMDBUFFER,
- &bufI, sizeof(bufI));
- } while (ret == -EAGAIN);
- if (ret) {
- UNLOCK_HARDWARE(vmesa);
- fprintf(stderr, "%s: DRM_VIA_CMDBUFFER returned %d\n",
- __FUNCTION__, ret);
- abort();
- /* If this fails, the original code fell back to the PCI path.
- */
- }
- else
- return 0;
-
- /* Fall through to PCI handling?!?
- */
- viaWaitIdleLocked(vmesa, GL_FALSE);
- }
-
- ret = drmCommandWrite(vmesa->driFd, DRM_VIA_PCICMD, &bufI, sizeof(bufI));
- if (ret) {
- UNLOCK_HARDWARE(vmesa);
- dump_dma(vmesa);
- fprintf(stderr, "%s: DRM_VIA_PCICMD returned %d\n", __FUNCTION__, ret);
- abort();
- }
-
- return ret;
-}
-
-
-/* Inserts the surface addresss and active cliprects one at a time
- * into the head of the DMA buffer being flushed. Fires the buffer
- * for each cliprect.
- */
-static void via_emit_cliprect(struct via_context *vmesa,
- drm_clip_rect_t *b)
-{
- struct via_buffer *buffer = vmesa->drawBuffer;
- GLuint *vb = (GLuint *)(vmesa->dma + vmesa->dmaCliprectAddr);
-
- GLuint format = (vmesa->viaScreen->bitsPerPixel == 0x20
- ? HC_HDBFM_ARGB8888
- : HC_HDBFM_RGB565);
-
- GLuint pitch = buffer->pitch;
- GLuint offset = buffer->orig;
-
- if (0)
- fprintf(stderr, "emit cliprect for box %d,%d %d,%d\n",
- b->x1, b->y1, b->x2, b->y2);
-
- vb[0] = HC_HEADER2;
- vb[1] = (HC_ParaType_NotTex << 16);
-
- if (vmesa->driDrawable->w == 0 || vmesa->driDrawable->h == 0) {
- vb[2] = (HC_SubA_HClipTB << 24) | 0x0;
- vb[3] = (HC_SubA_HClipLR << 24) | 0x0;
- }
- else {
- vb[2] = (HC_SubA_HClipTB << 24) | (b->y1 << 12) | b->y2;
- vb[3] = (HC_SubA_HClipLR << 24) | (b->x1 << 12) | b->x2;
- }
-
- vb[4] = (HC_SubA_HDBBasL << 24) | (offset & 0xFFFFFF);
- vb[5] = (HC_SubA_HDBBasH << 24) | ((offset & 0xFF000000) >> 24);
-
- vb[6] = (HC_SubA_HSPXYOS << 24) | ((31-vmesa->drawXoff) << HC_HSPXOS_SHIFT);
- vb[7] = (HC_SubA_HDBFM << 24) | HC_HDBLoc_Local | format | pitch;
-}
-
-
-
-static int intersect_rect(drm_clip_rect_t *out,
- drm_clip_rect_t *a,
- drm_clip_rect_t *b)
-{
- *out = *a;
-
- if (0)
- fprintf(stderr, "intersect %d,%d %d,%d and %d,%d %d,%d\n",
- a->x1, a->y1, a->x2, a->y2,
- b->x1, b->y1, b->x2, b->y2);
-
- if (b->x1 > out->x1) out->x1 = b->x1;
- if (b->x2 < out->x2) out->x2 = b->x2;
- if (out->x1 >= out->x2) return 0;
-
- if (b->y1 > out->y1) out->y1 = b->y1;
- if (b->y2 < out->y2) out->y2 = b->y2;
- if (out->y1 >= out->y2) return 0;
-
- return 1;
-}
-
-void viaFlushDmaLocked(struct via_context *vmesa, GLuint flags)
-{
- int i;
- RING_VARS;
-
- if (VIA_DEBUG & (DEBUG_IOCTL|DEBUG_DMA))
- fprintf(stderr, "%s\n", __FUNCTION__);
-
- if (*(GLuint *)vmesa->driHwLock != (DRM_LOCK_HELD|vmesa->hHWContext) &&
- *(GLuint *)vmesa->driHwLock !=
- (DRM_LOCK_HELD|DRM_LOCK_CONT|vmesa->hHWContext)) {
- fprintf(stderr, "%s called without lock held\n", __FUNCTION__);
- abort();
- }
-
- if (vmesa->dmaLow == 0) {
- return;
- }
-
- assert(vmesa->dmaLastPrim == 0);
-
- /* viaFinishPrimitive can add up to 8 bytes beyond VIA_DMA_HIGHWATER:
- */
- if (vmesa->dmaLow > VIA_DMA_HIGHWATER + 8) {
- fprintf(stderr, "buffer overflow in Flush Prims = %d\n",vmesa->dmaLow);
- abort();
- }
-
- switch (vmesa->dmaLow & 0x1F) {
- case 8:
- BEGIN_RING_NOCHECK( 6 );
- OUT_RING( HC_HEADER2 );
- OUT_RING( (HC_ParaType_NotTex << 16) );
- OUT_RING( HC_DUMMY );
- OUT_RING( HC_DUMMY );
- OUT_RING( HC_DUMMY );
- OUT_RING( HC_DUMMY );
- ADVANCE_RING();
- break;
- case 16:
- BEGIN_RING_NOCHECK( 4 );
- OUT_RING( HC_HEADER2 );
- OUT_RING( (HC_ParaType_NotTex << 16) );
- OUT_RING( HC_DUMMY );
- OUT_RING( HC_DUMMY );
- ADVANCE_RING();
- break;
- case 24:
- BEGIN_RING_NOCHECK( 10 );
- OUT_RING( HC_HEADER2 );
- OUT_RING( (HC_ParaType_NotTex << 16) );
- OUT_RING( HC_DUMMY );
- OUT_RING( HC_DUMMY );
- OUT_RING( HC_DUMMY );
- OUT_RING( HC_DUMMY );
- OUT_RING( HC_DUMMY );
- OUT_RING( HC_DUMMY );
- OUT_RING( HC_DUMMY );
- OUT_RING( HC_DUMMY );
- ADVANCE_RING();
- break;
- case 0:
- break;
- default:
- if (VIA_DEBUG & DEBUG_IOCTL)
- fprintf(stderr, "%s: unaligned value for vmesa->dmaLow: %x\n",
- __FUNCTION__, vmesa->dmaLow);
- }
-
- vmesa->lastDma = vmesa->lastBreadcrumbWrite;
-
- if (VIA_DEBUG & DEBUG_DMA)
- dump_dma( vmesa );
-
- if (flags & VIA_NO_CLIPRECTS) {
- if (0) fprintf(stderr, "%s VIA_NO_CLIPRECTS\n", __FUNCTION__);
- assert(vmesa->dmaCliprectAddr == ~0);
- fire_buffer( vmesa );
- }
- else if (vmesa->dmaCliprectAddr == ~0) {
- /* Contains only state. Could just dump the packet?
- */
- if (0) fprintf(stderr, "%s: no dmaCliprectAddr\n", __FUNCTION__);
- if (0) fire_buffer( vmesa );
- }
- else if (vmesa->numClipRects) {
- drm_clip_rect_t *pbox = vmesa->pClipRects;
-
- for (i = 0; i < vmesa->numClipRects; i++) {
- drm_clip_rect_t b;
-
- b.x1 = pbox[i].x1 - (vmesa->drawX + vmesa->drawXoff);
- b.x2 = pbox[i].x2 - (vmesa->drawX + vmesa->drawXoff);
- b.y1 = pbox[i].y1 - vmesa->drawY;
- b.y2 = pbox[i].y2 - vmesa->drawY;
-
- if (vmesa->scissor &&
- !intersect_rect(&b, &b, &vmesa->scissorRect))
- continue;
-
- b.x1 += vmesa->drawXoff;
- b.x2 += vmesa->drawXoff;
-
- via_emit_cliprect(vmesa, &b);
-
- if (fire_buffer(vmesa) != 0) {
- dump_dma( vmesa );
- goto done;
- }
- }
- } else {
- if (0) fprintf(stderr, "%s: no cliprects\n", __FUNCTION__);
- UNLOCK_HARDWARE(vmesa);
- sched_yield();
- LOCK_HARDWARE(vmesa);
- }
-
- done:
- /* Reset vmesa vars:
- */
- vmesa->dmaLow = 0;
- vmesa->dmaCliprectAddr = ~0;
- vmesa->newEmitState = ~0;
-}
-
-void viaWrapPrimitive( struct via_context *vmesa )
-{
- GLenum renderPrimitive = vmesa->renderPrimitive;
- GLenum hwPrimitive = vmesa->hwPrimitive;
-
- if (VIA_DEBUG & DEBUG_PRIMS) fprintf(stderr, "%s\n", __FUNCTION__);
-
- if (vmesa->dmaLastPrim)
- viaFinishPrimitive( vmesa );
-
- viaFlushDma(vmesa);
-
- if (renderPrimitive != GL_POLYGON + 1)
- viaRasterPrimitive( vmesa->glCtx,
- renderPrimitive,
- hwPrimitive );
-
-}
-
-void viaFlushDma(struct via_context *vmesa)
-{
- if (vmesa->dmaLow) {
- assert(!vmesa->dmaLastPrim);
-
- LOCK_HARDWARE(vmesa);
- viaFlushDmaLocked(vmesa, 0);
- UNLOCK_HARDWARE(vmesa);
- }
-}
-
-static void viaFlush(GLcontext *ctx)
-{
- struct via_context *vmesa = VIA_CONTEXT(ctx);
- VIA_FLUSH_DMA(vmesa);
-}
-
-static void viaFinish(GLcontext *ctx)
-{
- struct via_context *vmesa = VIA_CONTEXT(ctx);
- VIA_FLUSH_DMA(vmesa);
- viaWaitIdle(vmesa, GL_FALSE);
-}
-
-static void viaClearStencil(GLcontext *ctx, int s)
-{
- return;
-}
-
-void viaInitIoctlFuncs(GLcontext *ctx)
-{
- ctx->Driver.Flush = viaFlush;
- ctx->Driver.Clear = viaClear;
- ctx->Driver.Finish = viaFinish;
- ctx->Driver.ClearStencil = viaClearStencil;
-}
-
-
-
diff --git a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_ioctl.h b/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_ioctl.h
deleted file mode 100644
index d5d95aa8f..000000000
--- a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_ioctl.h
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved.
- * Copyright 2001-2003 S3 Graphics, Inc. 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
- * VIA, S3 GRAPHICS, 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.
- */
-
-#ifndef _VIAIOCTL_H
-#define _VIAIOCTL_H
-
-#include "via_context.h"
-
-
-void viaFinishPrimitive(struct via_context *vmesa);
-void viaFlushDma(struct via_context *vmesa);
-void viaFlushDmaLocked(struct via_context *vmesa, GLuint flags);
-
-void viaInitIoctlFuncs(GLcontext *ctx);
-void viaCopyBuffer(const __DRIdrawablePrivate *dpriv);
-void viaPageFlip(const __DRIdrawablePrivate *dpriv);
-void viaCheckDma(struct via_context *vmesa, GLuint bytes);
-void viaResetPageFlippingLocked(struct via_context *vmesa);
-void viaWaitIdle(struct via_context *vmesa, GLboolean light);
-void viaWaitIdleLocked(struct via_context *vmesa, GLboolean light);
-
-GLboolean viaCheckBreadcrumb( struct via_context *vmesa, GLuint value );
-void viaEmitBreadcrumb( struct via_context *vmesa );
-
-
-#define VIA_FINISH_PRIM(vmesa) do { \
- if (vmesa->dmaLastPrim) \
- viaFinishPrimitive( vmesa ); \
-} while (0)
-
-#define VIA_FLUSH_DMA(vmesa) do { \
- VIA_FINISH_PRIM(vmesa); \
- if (vmesa->dmaLow) \
- viaFlushDma(vmesa); \
-} while (0)
-
-
-void viaWrapPrimitive( struct via_context *vmesa );
-
-static __inline__ GLuint *viaAllocDma(struct via_context *vmesa, int bytes)
-{
- if (vmesa->dmaLow + bytes > VIA_DMA_HIGHWATER) {
- viaFlushDma(vmesa);
- }
-
- {
- GLuint *start = (GLuint *)(vmesa->dma + vmesa->dmaLow);
- vmesa->dmaLow += bytes;
- return start;
- }
-}
-
-
-static GLuint __inline__ *viaExtendPrimitive(struct via_context *vmesa, int bytes)
-{
- if (vmesa->dmaLow + bytes > VIA_DMA_HIGHWATER) {
- viaWrapPrimitive(vmesa);
- }
-
- {
- GLuint *start = (GLuint *)(vmesa->dma + vmesa->dmaLow);
- vmesa->dmaLow += bytes;
- return start;
- }
-}
-
-
-
-
-#define RING_VARS GLuint *_vb = 0, _nr, _x;
-
-#define BEGIN_RING(n) do { \
- if (_vb != 0) abort(); \
- _vb = viaAllocDma(vmesa, (n) * sizeof(GLuint)); \
- _nr = (n); \
- _x = 0; \
-} while (0)
-
-#define BEGIN_RING_NOCHECK(n) do { \
- if (_vb != 0) abort(); \
- _vb = (GLuint *)(vmesa->dma + vmesa->dmaLow); \
- vmesa->dmaLow += (n) * sizeof(GLuint); \
- _nr = (n); \
- _x = 0; \
-} while (0)
-
-#define OUT_RING(n) _vb[_x++] = (n)
-
-#define ADVANCE_RING() do { \
- if (_x != _nr) abort(); \
- _vb = 0; \
-} while (0)
-
-#define ADVANCE_RING_VARIABLE() do { \
- if (_x > _nr) abort(); \
- vmesa->dmaLow -= (_nr - _x) * sizeof(GLuint); \
- _vb = 0; \
-} while (0)
-
-
-#define QWORD_PAD_RING() do { \
- if (vmesa->dmaLow & 0x4) { \
- BEGIN_RING(1); \
- OUT_RING(HC_DUMMY); \
- ADVANCE_RING(); \
- } \
-} while (0)
-
-#define VIA_GEQ_WRAP(left, right) \
- (((left) - (right)) < ( 1 << 23))
-
-
-
-#endif
diff --git a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_memcpy.c b/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_memcpy.c
deleted file mode 100644
index d7b05bcaa..000000000
--- a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_memcpy.c
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * Copyright (C) 2004 Thomas Hellstrom, 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
- * THE CODE SUPPLIER(S) 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.
- */
-
-/* Thomas' orginal gutted for mesa by Keith Whitwell
- */
-
-#include "via_tex.h"
-
-#if defined( USE_SSE_ASM )
-
-#define SSE_PREFETCH " prefetchnta "
-#define FENCE __asm__ __volatile__ ("sfence":::"memory");
-
-
-#define PREFETCH1(arch_prefetch,from) \
- __asm__ __volatile__ ( \
- "1: " arch_prefetch "(%0)\n" \
- arch_prefetch "32(%0)\n" \
- arch_prefetch "64(%0)\n" \
- arch_prefetch "96(%0)\n" \
- arch_prefetch "128(%0)\n" \
- arch_prefetch "160(%0)\n" \
- arch_prefetch "192(%0)\n" \
- arch_prefetch "256(%0)\n" \
- arch_prefetch "288(%0)\n" \
- "2:\n" \
- : : "r" (from) );
-
-
-
-#define small_memcpy(to,from,n) \
- { \
- __asm__ __volatile__( \
- "movl %2,%%ecx\n\t" \
- "sarl $2,%%ecx\n\t" \
- "rep ; movsl\n\t" \
- "testb $2,%b2\n\t" \
- "je 1f\n\t" \
- "movsw\n" \
- "1:\ttestb $1,%b2\n\t" \
- "je 2f\n\t" \
- "movsb\n" \
- "2:" \
- :"=&D" (to), "=&S" (from) \
- :"q" (n),"0" ((long) to),"1" ((long) from) \
- : "%ecx","memory"); \
- }
-
-
-#define SSE_CPY(prefetch,from,to,dummy,lcnt) \
- if ((unsigned long) from & 15) { \
- __asm__ __volatile__ ( \
- "1:\n" \
- prefetch "320(%1)\n" \
- " movups (%1), %%xmm0\n" \
- " movups 16(%1), %%xmm1\n" \
- " movntps %%xmm0, (%0)\n" \
- " movntps %%xmm1, 16(%0)\n" \
- prefetch "352(%1)\n" \
- " movups 32(%1), %%xmm2\n" \
- " movups 48(%1), %%xmm3\n" \
- " movntps %%xmm2, 32(%0)\n" \
- " movntps %%xmm3, 48(%0)\n" \
- " addl $64,%0\n" \
- " addl $64,%1\n" \
- " decl %2\n" \
- " jne 1b\n" \
- :"=&D"(to), "=&S"(from), "=&r"(dummy) \
- :"0" (to), "1" (from), "2" (lcnt): "memory"); \
- } else { \
- __asm__ __volatile__ ( \
- "2:\n" \
- prefetch "320(%1)\n" \
- " movaps (%1), %%xmm0\n" \
- " movaps 16(%1), %%xmm1\n" \
- " movntps %%xmm0, (%0)\n" \
- " movntps %%xmm1, 16(%0)\n" \
- prefetch "352(%1)\n" \
- " movaps 32(%1), %%xmm2\n" \
- " movaps 48(%1), %%xmm3\n" \
- " movntps %%xmm2, 32(%0)\n" \
- " movntps %%xmm3, 48(%0)\n" \
- " addl $64,%0\n" \
- " addl $64,%1\n" \
- " decl %2\n" \
- " jne 2b\n" \
- :"=&D"(to), "=&S"(from), "=&r"(dummy) \
- :"0" (to), "1" (from), "2" (lcnt): "memory"); \
- }
-
-
-
-/*
- */
-void via_sse_memcpy(void *to,
- const void *from,
- size_t sz)
-
-{
- int dummy;
- int lcnt = sz >> 6;
- int rest = sz & 63;
-
- PREFETCH1(SSE_PREFETCH,from);
-
- if (lcnt > 5) {
- lcnt -= 5;
- SSE_CPY(SSE_PREFETCH,from,to,dummy,lcnt);
- lcnt = 5;
- }
- if (lcnt) {
- SSE_CPY("#",from,to,dummy,lcnt);
- }
- if (rest) small_memcpy(to, from, rest);
- FENCE;
-}
-
-#endif /* defined( USE_SSE_ASM ) */
diff --git a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_render.c b/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_render.c
deleted file mode 100644
index 387473ef5..000000000
--- a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_render.c
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved.
- * Copyright 2001-2003 S3 Graphics, Inc. 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
- * VIA, S3 GRAPHICS, 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.
- */
-
-
-/*
- * Render unclipped vertex buffers by emitting vertices directly to
- * dma buffers. Use strip/fan hardware acceleration where possible.
- *
- */
-#include "glheader.h"
-#include "context.h"
-#include "macros.h"
-#include "mtypes.h"
-
-#include "tnl/t_context.h"
-
-#include "via_context.h"
-#include "via_tris.h"
-#include "via_state.h"
-#include "via_ioctl.h"
-
-/*
- * Render unclipped vertex buffers by emitting vertices directly to
- * dma buffers. Use strip/fan hardware primitives where possible.
- * Try to simulate missing primitives with indexed vertices.
- */
-#define HAVE_POINTS 1
-#define HAVE_LINES 1
-#define HAVE_LINE_STRIPS 1
-#define HAVE_LINE_LOOP 1
-#define HAVE_TRIANGLES 1
-#define HAVE_TRI_STRIPS 1
-#define HAVE_TRI_STRIP_1 0
-#define HAVE_TRI_FANS 1
-#define HAVE_POLYGONS 1
-#define HAVE_QUADS 0
-#define HAVE_QUAD_STRIPS 0
-
-#define HAVE_ELTS 0
-
-#define LOCAL_VARS struct via_context *vmesa = VIA_CONTEXT(ctx)
-#define INIT(prim) do { \
- viaRasterPrimitive(ctx, prim, prim); \
-} while (0)
-#define GET_CURRENT_VB_MAX_VERTS() \
- ((VIA_DMA_BUF_SZ - (512 + (int)vmesa->dmaLow)) / (vmesa->vertexSize * 4))
-#define GET_SUBSEQUENT_VB_MAX_VERTS() \
- (VIA_DMA_BUF_SZ - 512) / (vmesa->vertexSize * 4)
-
-#define ALLOC_VERTS( nr ) \
- viaExtendPrimitive( vmesa, (nr) * vmesa->vertexSize * 4)
-
-#define EMIT_VERTS(ctx, j, nr, buf) \
- _tnl_emit_vertices_to_buffer(ctx, j, (j)+(nr), buf )
-
-#define FLUSH() VIA_FINISH_PRIM( vmesa )
-
-#define TAG(x) via_fast##x
-#include "tnl_dd/t_dd_dmatmp.h"
-#undef TAG
-#undef LOCAL_VARS
-#undef INIT
-
-/**********************************************************************/
-/* Fast Render pipeline stage */
-/**********************************************************************/
-static GLboolean via_run_fastrender(GLcontext *ctx,
- struct tnl_pipeline_stage *stage)
-{
- struct via_context *vmesa = VIA_CONTEXT(ctx);
- TNLcontext *tnl = TNL_CONTEXT(ctx);
- struct vertex_buffer *VB = &tnl->vb;
- GLuint i;
-
-
- tnl->Driver.Render.Start(ctx);
-
- if (VB->ClipOrMask ||
- vmesa->renderIndex != 0 ||
- !via_fastvalidate_render( ctx, VB )) {
- tnl->Driver.Render.Finish(ctx);
- return GL_TRUE;
- }
-
- tnl->clipspace.new_inputs |= VERT_BIT_POS;
-
- for (i = 0; i < VB->PrimitiveCount; ++i) {
- GLuint mode = VB->Primitive[i].mode;
- GLuint start = VB->Primitive[i].start;
- GLuint length = VB->Primitive[i].count;
- if (length)
- via_fastrender_tab_verts[mode & PRIM_MODE_MASK](ctx, start, start+length, mode);
- }
-
- tnl->Driver.Render.Finish(ctx);
-
- return GL_FALSE; /* finished the pipe */
-}
-
-const struct tnl_pipeline_stage _via_fastrender_stage =
-{
- "via fast render",
- NULL,
- NULL,
- NULL,
- NULL,
- via_run_fastrender /* run */
-};
-
-
diff --git a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_screen.c b/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_screen.c
deleted file mode 100644
index 267eeffc8..000000000
--- a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_screen.c
+++ /dev/null
@@ -1,491 +0,0 @@
-/*
- * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved.
- * Copyright 2001-2003 S3 Graphics, Inc. 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
- * VIA, S3 GRAPHICS, 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.
- */
-
-#include <stdio.h>
-
-#include "utils.h"
-#include "dri_util.h"
-#include "glheader.h"
-#include "context.h"
-#include "framebuffer.h"
-#include "renderbuffer.h"
-#include "matrix.h"
-#include "simple_list.h"
-#include "vblank.h"
-
-#include "via_state.h"
-#include "via_tex.h"
-#include "via_span.h"
-#include "via_tris.h"
-#include "via_ioctl.h"
-#include "via_screen.h"
-#include "via_fb.h"
-#include "via_dri.h"
-
-#include "GL/internal/dri_interface.h"
-
-/* Radeon configuration
- */
-#include "xmlpool.h"
-
-const char __driConfigOptions[] =
-DRI_CONF_BEGIN
- DRI_CONF_SECTION_PERFORMANCE
- DRI_CONF_FTHROTTLE_MODE(DRI_CONF_FTHROTTLE_IRQS)
- DRI_CONF_VBLANK_MODE(DRI_CONF_VBLANK_DEF_INTERVAL_0)
- DRI_CONF_SECTION_END
- DRI_CONF_SECTION_DEBUG
- DRI_CONF_NO_RAST(false)
- DRI_CONF_SECTION_END
-DRI_CONF_END;
-static const GLuint __driNConfigOptions = 3;
-
-extern const struct dri_extension card_extensions[];
-
-static int getSwapInfo( __DRIdrawablePrivate *dPriv, __DRIswapInfo * sInfo );
-
-static drmBufMapPtr via_create_empty_buffers(void)
-{
- drmBufMapPtr retval;
-
- retval = (drmBufMapPtr)MALLOC(sizeof(drmBufMap));
- if (retval == NULL) return NULL;
- memset(retval, 0, sizeof(drmBufMap));
-
- retval->list = (drmBufPtr)MALLOC(sizeof(drmBuf) * VIA_DMA_BUF_NR);
- if (retval->list == NULL) {
- FREE(retval);
- return NULL;
- }
- memset(retval->list, 0, sizeof(drmBuf) * VIA_DMA_BUF_NR);
- return retval;
-}
-
-static void via_free_empty_buffers( drmBufMapPtr bufs )
-{
- if (bufs && bufs->list)
- FREE(bufs->list);
-
- if (bufs)
- FREE(bufs);
-}
-
-
-static GLboolean
-viaInitDriver(__DRIscreenPrivate *sPriv)
-{
- viaScreenPrivate *viaScreen;
- VIADRIPtr gDRIPriv = (VIADRIPtr)sPriv->pDevPriv;
- PFNGLXSCRENABLEEXTENSIONPROC glx_enable_extension =
- (PFNGLXSCRENABLEEXTENSIONPROC) (*dri_interface->getProcAddress("glxEnableExtension"));
- void * const psc = sPriv->psc->screenConfigs;
-
- if (sPriv->devPrivSize != sizeof(VIADRIRec)) {
- fprintf(stderr,"\nERROR! sizeof(VIADRIRec) does not match passed size from device driver\n");
- return GL_FALSE;
- }
-
- /* Allocate the private area */
- viaScreen = (viaScreenPrivate *) CALLOC(sizeof(viaScreenPrivate));
- if (!viaScreen) {
- __driUtilMessage("viaInitDriver: alloc viaScreenPrivate struct failed");
- return GL_FALSE;
- }
-
- /* parse information in __driConfigOptions */
- driParseOptionInfo (&viaScreen->optionCache,
- __driConfigOptions, __driNConfigOptions);
-
-
- viaScreen->driScrnPriv = sPriv;
- sPriv->private = (void *)viaScreen;
-
- viaScreen->deviceID = gDRIPriv->deviceID;
- viaScreen->width = gDRIPriv->width;
- viaScreen->height = gDRIPriv->height;
- viaScreen->mem = gDRIPriv->mem;
- viaScreen->bitsPerPixel = gDRIPriv->bytesPerPixel * 8;
- viaScreen->bytesPerPixel = gDRIPriv->bytesPerPixel;
- viaScreen->fbOffset = 0;
- viaScreen->fbSize = gDRIPriv->fbSize;
- viaScreen->irqEnabled = gDRIPriv->irqEnabled;
- viaScreen->irqEnabled = 1;
-
- if (VIA_DEBUG & DEBUG_DRI) {
- fprintf(stderr, "deviceID = %08x\n", viaScreen->deviceID);
- fprintf(stderr, "width = %08x\n", viaScreen->width);
- fprintf(stderr, "height = %08x\n", viaScreen->height);
- fprintf(stderr, "cpp = %08x\n", viaScreen->cpp);
- fprintf(stderr, "fbOffset = %08x\n", viaScreen->fbOffset);
- }
-
- viaScreen->bufs = via_create_empty_buffers();
- if (viaScreen->bufs == NULL) {
- __driUtilMessage("viaInitDriver: via_create_empty_buffers() failed");
- FREE(viaScreen);
- return GL_FALSE;
- }
-
- if (drmMap(sPriv->fd,
- gDRIPriv->regs.handle,
- gDRIPriv->regs.size,
- (drmAddress *)&viaScreen->reg) != 0) {
- FREE(viaScreen);
- sPriv->private = NULL;
- __driUtilMessage("viaInitDriver: drmMap regs failed");
- return GL_FALSE;
- }
-
- if (gDRIPriv->agp.size) {
- if (drmMap(sPriv->fd,
- gDRIPriv->agp.handle,
- gDRIPriv->agp.size,
- (drmAddress *)&viaScreen->agpLinearStart) != 0) {
- drmUnmap(viaScreen->reg, gDRIPriv->regs.size);
- FREE(viaScreen);
- sPriv->private = NULL;
- __driUtilMessage("viaInitDriver: drmMap agp failed");
- return GL_FALSE;
- }
-
- /*
- * FIXME: This is an invalid assumption that works until handle is
- * changed to mean something else than the 32-bit physical AGP address.
- */
-
- viaScreen->agpBase = gDRIPriv->agp.handle;
- } else
- viaScreen->agpLinearStart = 0;
-
- viaScreen->sareaPrivOffset = gDRIPriv->sarea_priv_offset;
-
- if ( glx_enable_extension != NULL ) {
- if ( viaScreen->irqEnabled ) {
- (*glx_enable_extension)( psc, "GLX_SGI_swap_control" );
- (*glx_enable_extension)( psc, "GLX_SGI_video_sync" );
- (*glx_enable_extension)( psc, "GLX_MESA_swap_control" );
- }
-
- (*glx_enable_extension)( psc, "GLX_MESA_swap_frame_usage" );
- }
-
- return GL_TRUE;
-}
-
-static void
-viaDestroyScreen(__DRIscreenPrivate *sPriv)
-{
- viaScreenPrivate *viaScreen = (viaScreenPrivate *)sPriv->private;
- VIADRIPtr gDRIPriv = (VIADRIPtr)sPriv->pDevPriv;
-
- drmUnmap(viaScreen->reg, gDRIPriv->regs.size);
- if (gDRIPriv->agp.size)
- drmUnmap(viaScreen->agpLinearStart, gDRIPriv->agp.size);
-
- via_free_empty_buffers(viaScreen->bufs);
-
- FREE(viaScreen);
- sPriv->private = NULL;
-}
-
-
-static GLboolean
-viaCreateBuffer(__DRIscreenPrivate *driScrnPriv,
- __DRIdrawablePrivate *driDrawPriv,
- const __GLcontextModes *mesaVis,
- GLboolean isPixmap)
-{
- viaScreenPrivate *screen = (viaScreenPrivate *) driScrnPriv->private;
-
- GLboolean swStencil = (mesaVis->stencilBits > 0 &&
- mesaVis->depthBits != 24);
-
-
- if (isPixmap) {
- /* KW: This needs work, disabled for now:
- */
-#if 0
- driDrawPriv->driverPrivate = (void *)
- _mesa_create_framebuffer(mesaVis,
- GL_FALSE, /* software depth buffer? */
- swStencil,
- mesaVis->accumRedBits > 0,
- GL_FALSE /* s/w alpha planes */);
-
- return (driDrawPriv->driverPrivate != NULL);
-#endif
- return GL_FALSE;
- }
- else {
-#if 0
- driDrawPriv->driverPrivate = (void *)
- _mesa_create_framebuffer(mesaVis,
- GL_FALSE, /* software depth buffer? */
- swStencil,
- mesaVis->accumRedBits > 0,
- GL_FALSE /* s/w alpha planes */);
-#else
- struct gl_framebuffer *fb = _mesa_create_framebuffer(mesaVis);
-
- /* XXX check/fix the offset/pitch parameters! */
- {
- driRenderbuffer *frontRb
- = driNewRenderbuffer(GL_RGBA, screen->bytesPerPixel,
- 0, screen->width);
- viaSetSpanFunctions(frontRb, mesaVis);
- _mesa_add_renderbuffer(fb, BUFFER_FRONT_LEFT, &frontRb->Base);
- }
-
- if (mesaVis->doubleBufferMode) {
- driRenderbuffer *backRb
- = driNewRenderbuffer(GL_RGBA, screen->bytesPerPixel,
- 0, screen->width);
- viaSetSpanFunctions(backRb, mesaVis);
- _mesa_add_renderbuffer(fb, BUFFER_BACK_LEFT, &backRb->Base);
- }
-
- if (mesaVis->depthBits == 16) {
- driRenderbuffer *depthRb
- = driNewRenderbuffer(GL_DEPTH_COMPONENT16, screen->bytesPerPixel,
- 0, screen->width);
- viaSetSpanFunctions(depthRb, mesaVis);
- _mesa_add_renderbuffer(fb, BUFFER_DEPTH, &depthRb->Base);
- }
- else if (mesaVis->depthBits == 24) {
- driRenderbuffer *depthRb
- = driNewRenderbuffer(GL_DEPTH_COMPONENT24, screen->bytesPerPixel,
- 0, screen->width);
- viaSetSpanFunctions(depthRb, mesaVis);
- _mesa_add_renderbuffer(fb, BUFFER_DEPTH, &depthRb->Base);
- }
- else if (mesaVis->depthBits == 32) {
- driRenderbuffer *depthRb
- = driNewRenderbuffer(GL_DEPTH_COMPONENT32, screen->bytesPerPixel,
- 0, screen->width);
- viaSetSpanFunctions(depthRb, mesaVis);
- _mesa_add_renderbuffer(fb, BUFFER_DEPTH, &depthRb->Base);
- }
-
- if (mesaVis->stencilBits > 0 && !swStencil) {
- driRenderbuffer *stencilRb
- = driNewRenderbuffer(GL_STENCIL_INDEX8_EXT, screen->bytesPerPixel,
- 0, screen->width);
- viaSetSpanFunctions(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;
-#endif
- return (driDrawPriv->driverPrivate != NULL);
- }
-}
-
-
-static void
-viaDestroyBuffer(__DRIdrawablePrivate *driDrawPriv)
-{
- _mesa_destroy_framebuffer((GLframebuffer *)(driDrawPriv->driverPrivate));
-}
-
-
-
-static struct __DriverAPIRec viaAPI = {
- .InitDriver = viaInitDriver,
- .DestroyScreen = viaDestroyScreen,
- .CreateContext = viaCreateContext,
- .DestroyContext = viaDestroyContext,
- .CreateBuffer = viaCreateBuffer,
- .DestroyBuffer = viaDestroyBuffer,
- .SwapBuffers = viaSwapBuffers,
- .MakeCurrent = viaMakeCurrent,
- .UnbindContext = viaUnbindContext,
- .GetSwapInfo = getSwapInfo,
- .GetMSC = driGetMSC32,
- .WaitForMSC = driWaitForMSC32,
- .WaitForSBC = NULL,
- .SwapBuffersMSC = NULL
-};
-
-
-static __GLcontextModes *
-viaFillInModes( unsigned pixel_bits, GLboolean have_back_buffer )
-{
- __GLcontextModes * modes;
- __GLcontextModes * m;
- unsigned num_modes;
- const unsigned back_buffer_factor = (have_back_buffer) ? 2 : 1;
- 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 */
- };
-
- /* The 32-bit depth-buffer mode isn't supported yet, so don't actually
- * enable it.
- */
- static const u_int8_t depth_bits_array[4] = { 0, 16, 24, 32 };
- static const u_int8_t stencil_bits_array[4] = { 0, 0, 8, 0 };
- const unsigned depth_buffer_factor = 3;
-
-
- 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_BGRA;
- fb_type = GL_UNSIGNED_INT_8_8_8_8_REV;
- }
-
- modes = (*dri_interface->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;
- }
-
- 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 __DRIscreenPrivate on success, or \c NULL on
- * failure.
- */
-PUBLIC
-void * __driCreateNewScreen_20050727( __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,
- const __DRIinterfaceMethods * interface,
- __GLcontextModes ** driver_modes )
-
-{
- __DRIscreenPrivate *psp;
- static const __DRIversion ddx_expected = { VIA_DRIDDX_VERSION_MAJOR,
- VIA_DRIDDX_VERSION_MINOR,
- VIA_DRIDDX_VERSION_PATCH };
- static const __DRIversion dri_expected = { 4, 0, 0 };
- static const __DRIversion drm_expected = { 2, 3, 0 };
-
- dri_interface = interface;
-
- if ( ! driCheckDriDdxDrmVersions2( "Unichrome",
- 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, &viaAPI);
- if ( psp != NULL ) {
- VIADRIPtr dri_priv = (VIADRIPtr) psp->pDevPriv;
- *driver_modes = viaFillInModes( dri_priv->bytesPerPixel * 8,
- GL_TRUE );
-
- /* Calling driInitExtensions here, with a NULL context pointer, does not actually
- * enable the extensions. It just makes sure that all the dispatch offsets for all
- * the extensions that *might* be enables are known. This is needed because the
- * dispatch offsets need to be known when _mesa_context_create is called, but we can't
- * enable the extensions until we have a context pointer.
- *
- * Hello chicken. Hello egg. How are you two today?
- */
- driInitExtensions( NULL, card_extensions, GL_FALSE );
- }
-
- fprintf(stderr, "%s - succeeded\n", __FUNCTION__);
- return (void *) psp;
-}
-
-
-/**
- * Get information about previous buffer swaps.
- */
-static int
-getSwapInfo( __DRIdrawablePrivate *dPriv, __DRIswapInfo * sInfo )
-{
- struct via_context *vmesa;
-
- if ( (dPriv == NULL) || (dPriv->driContextPriv == NULL)
- || (dPriv->driContextPriv->driverPrivate == NULL)
- || (sInfo == NULL) ) {
- return -1;
- }
-
- vmesa = (struct via_context *) dPriv->driContextPriv->driverPrivate;
- sInfo->swap_count = vmesa->swap_count;
- sInfo->swap_ust = vmesa->swap_ust;
- sInfo->swap_missed_count = vmesa->swap_missed_count;
-
- sInfo->swap_missed_usage = (sInfo->swap_missed_count != 0)
- ? driCalculateSwapUsage( dPriv, 0, vmesa->swap_missed_ust )
- : 0.0;
-
- return 0;
-}
diff --git a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_screen.h b/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_screen.h
deleted file mode 100644
index 84aa5aef8..000000000
--- a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_screen.h
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved.
- * Copyright 2001-2003 S3 Graphics, Inc. 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
- * VIA, S3 GRAPHICS, 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.
- */
-
-#ifndef _VIAINIT_H
-#define _VIAINIT_H
-
-#include <sys/time.h>
-#include "dri_util.h"
-#include "via_dri.h"
-#include "xmlconfig.h"
-
-typedef struct {
- viaRegion regs;
- viaRegion agp;
- int deviceID;
- int width;
- int height;
- int mem;
-
- int cpp;
- int bitsPerPixel;
- int bytesPerPixel;
- int fbFormat;
- int fbOffset;
- int fbSize;
-
- int fbStride;
-
- int backOffset;
- int depthOffset;
-
- int backPitch;
- int backPitchBits;
-
- int textureOffset;
- int textureSize;
- int logTextureGranularity;
-
- drmAddress reg;
- drmAddress agpLinearStart;
- GLuint agpBase;
-
- __DRIscreenPrivate *driScrnPriv;
- drmBufMapPtr bufs;
- unsigned int sareaPrivOffset;
- /*=* John Sheng [2003.12.9] Tuxracer & VQ *=*/
- int VQEnable;
- int irqEnabled;
-
- /* Configuration cache with default values for all contexts */
- driOptionCache optionCache;
-} viaScreenPrivate;
-
-
-extern GLboolean
-viaCreateContext(const __GLcontextModes *mesaVis,
- __DRIcontextPrivate *driContextPriv,
- void *sharedContextPrivate);
-
-extern void
-viaDestroyContext(__DRIcontextPrivate *driContextPriv);
-
-extern GLboolean
-viaUnbindContext(__DRIcontextPrivate *driContextPriv);
-
-extern GLboolean
-viaMakeCurrent(__DRIcontextPrivate *driContextPriv,
- __DRIdrawablePrivate *driDrawPriv,
- __DRIdrawablePrivate *driReadPriv);
-
-extern void
-viaSwapBuffers(__DRIdrawablePrivate *drawablePrivate);
-
-#endif
diff --git a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_span.c b/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_span.c
deleted file mode 100644
index 40772f480..000000000
--- a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_span.c
+++ /dev/null
@@ -1,289 +0,0 @@
-/*
- * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved.
- * Copyright 2001-2003 S3 Graphics, Inc. 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
- * VIA, S3 GRAPHICS, 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.
- */
-
-#include "glheader.h"
-#include "macros.h"
-#include "mtypes.h"
-#include "colormac.h"
-#include "via_context.h"
-#include "via_span.h"
-#include "via_ioctl.h"
-#include "swrast/swrast.h"
-
-#define DBG 0
-
-#define Y_FLIP(_y) (height - _y - 1)
-
-#define HW_LOCK()
-
-#define HW_UNLOCK()
-
-#undef LOCAL_VARS
-#define LOCAL_VARS \
- struct via_context *vmesa = VIA_CONTEXT(ctx); \
- __DRIdrawablePrivate *dPriv = vmesa->driDrawable; \
- GLuint draw_pitch = vmesa->drawBuffer->pitch; \
- GLuint read_pitch = vmesa->readBuffer->pitch; \
- GLuint height = dPriv->h; \
- GLint p = 0; \
- char *buf = (char *)(vmesa->drawBuffer->origMap + vmesa->drawXoff * vmesa->viaScreen->bytesPerPixel); \
- char *read_buf = (char *)(vmesa->readBuffer->origMap + vmesa->drawXoff * vmesa->viaScreen->bytesPerPixel); \
- (void) (read_pitch && draw_pitch && buf && read_buf && p);
-
-/* ================================================================
- * Color buffer
- */
-
-/* 16 bit, RGB565 color spanline and pixel functions
- */
-#define GET_SRC_PTR(_x, _y) (read_buf + (_x) * 2 + (_y) * read_pitch)
-#define GET_DST_PTR(_x, _y) ( buf + (_x) * 2 + (_y) * draw_pitch)
-#define SPANTMP_PIXEL_FMT GL_RGB
-#define SPANTMP_PIXEL_TYPE GL_UNSIGNED_SHORT_5_6_5
-
-#define TAG(x) via##x##_565
-#define TAG2(x,y) via##x##_565##y
-#include "spantmp2.h"
-
-
-/* 32 bit, ARGB8888 color spanline and pixel functions
- */
-#define GET_SRC_PTR(_x, _y) (read_buf + (_x) * 4 + (_y) * read_pitch)
-#define GET_DST_PTR(_x, _y) ( buf + (_x) * 4 + (_y) * draw_pitch)
-#define SPANTMP_PIXEL_FMT GL_BGRA
-#define SPANTMP_PIXEL_TYPE GL_UNSIGNED_INT_8_8_8_8_REV
-
-#define TAG(x) via##x##_8888
-#define TAG2(x,y) via##x##_8888##y
-#include "spantmp2.h"
-
-
-/* 16 bit depthbuffer functions.
- */
-#define LOCAL_DEPTH_VARS \
- struct via_context *vmesa = VIA_CONTEXT(ctx); \
- __DRIdrawablePrivate *dPriv = vmesa->driDrawable; \
- GLuint depth_pitch = vmesa->depth.pitch; \
- GLuint height = dPriv->h; \
- char *buf = (char *)(vmesa->depth.map + (vmesa->drawXoff * vmesa->depth.bpp/8))
-
-#define LOCAL_STENCIL_VARS LOCAL_DEPTH_VARS
-
-
-#define WRITE_DEPTH(_x, _y, d) \
- *(GLushort *)(buf + (_x) * 2 + (_y) * depth_pitch) = d;
-
-#define READ_DEPTH(d, _x, _y) \
- d = *(volatile GLushort *)(buf + (_x) * 2 + (_y) * depth_pitch);
-
-#define TAG(x) via##x##_16
-#include "depthtmp.h"
-
-/* 32 bit depthbuffer functions.
- */
-#define WRITE_DEPTH(_x, _y, d) \
- *(GLuint *)(buf + (_x) * 4 + (_y) * depth_pitch) = d;
-
-#define READ_DEPTH(d, _x, _y) \
- d = *(volatile GLuint *)(buf + (_x) * 4 + (_y) * depth_pitch);
-
-#define TAG(x) via##x##_32
-#include "depthtmp.h"
-
-
-
-/* 24/8 bit interleaved depth/stencil functions
- */
-#define WRITE_DEPTH( _x, _y, d ) { \
- GLuint tmp = *(GLuint *)(buf + (_x)*4 + (_y)*depth_pitch); \
- tmp &= 0x000000ff; \
- tmp |= ((d)<<8); \
- *(GLuint *)(buf + (_x)*4 + (_y)*depth_pitch) = tmp; \
-}
-
-#define READ_DEPTH( d, _x, _y ) \
- d = (*(GLuint *)(buf + (_x)*4 + (_y)*depth_pitch)) >> 8;
-
-
-#define TAG(x) via##x##_24_8
-#include "depthtmp.h"
-
-#define WRITE_STENCIL( _x, _y, d ) { \
- GLuint tmp = *(GLuint *)(buf + (_x)*4 + (_y)*depth_pitch); \
- tmp &= 0xffffff00; \
- tmp |= (d); \
- *(GLuint *)(buf + (_x)*4 + (_y)*depth_pitch) = tmp; \
-}
-
-#define READ_STENCIL( d, _x, _y ) \
- d = *(GLuint *)(buf + (_x)*4 + (_y)*depth_pitch) & 0xff;
-
-#define TAG(x) via##x##_24_8
-#include "stenciltmp.h"
-
-
-
-static void viaSetBuffer(GLcontext *ctx, GLframebuffer *colorBuffer,
- GLuint bufferBit)
-{
- struct via_context *vmesa = VIA_CONTEXT(ctx);
-
- if (bufferBit == BUFFER_BIT_FRONT_LEFT) {
- vmesa->drawBuffer = vmesa->readBuffer = &vmesa->front;
- }
- else if (bufferBit == BUFFER_BIT_BACK_LEFT) {
- vmesa->drawBuffer = vmesa->readBuffer = &vmesa->back;
- }
- else {
- ASSERT(0);
- }
-}
-
-/* Move locking out to get reasonable span performance.
- */
-void viaSpanRenderStart( GLcontext *ctx )
-{
- struct via_context *vmesa = VIA_CONTEXT(ctx);
- viaWaitIdle(vmesa, GL_FALSE);
- LOCK_HARDWARE(vmesa);
-}
-
-void viaSpanRenderFinish( GLcontext *ctx )
-{
- struct via_context *vmesa = VIA_CONTEXT(ctx);
- _swrast_flush( ctx );
- UNLOCK_HARDWARE( vmesa );
-}
-
-void viaInitSpanFuncs(GLcontext *ctx)
-{
-#if 0
- struct via_context *vmesa = VIA_CONTEXT(ctx);
-#endif
- struct swrast_device_driver *swdd = _swrast_GetDeviceDriverReference(ctx);
-
- swdd->SetBuffer = viaSetBuffer;
-#if 0
- if (vmesa->viaScreen->bitsPerPixel == 16) {
- viaInitPointers_565( swdd );
- }
- else if (vmesa->viaScreen->bitsPerPixel == 32) {
- viaInitPointers_8888( swdd );
- }
- else {
- assert(0);
- }
-#endif
-#if 0
- if (vmesa->glCtx->Visual.depthBits == 16) {
- swdd->ReadDepthSpan = viaReadDepthSpan_16;
- swdd->WriteDepthSpan = viaWriteDepthSpan_16;
- swdd->WriteMonoDepthSpan = viaWriteMonoDepthSpan_16;
- swdd->ReadDepthPixels = viaReadDepthPixels_16;
- swdd->WriteDepthPixels = viaWriteDepthPixels_16;
- }
- else if (vmesa->glCtx->Visual.depthBits == 24) {
- swdd->ReadDepthSpan = viaReadDepthSpan_24_8;
- swdd->WriteDepthSpan = viaWriteDepthSpan_24_8;
- swdd->WriteMonoDepthSpan = viaWriteMonoDepthSpan_24_8;
- swdd->ReadDepthPixels = viaReadDepthPixels_24_8;
- swdd->WriteDepthPixels = viaWriteDepthPixels_24_8;
-
- swdd->WriteStencilSpan = viaWriteStencilSpan_24_8;
- swdd->ReadStencilSpan = viaReadStencilSpan_24_8;
- swdd->WriteStencilPixels = viaWriteStencilPixels_24_8;
- swdd->ReadStencilPixels = viaReadStencilPixels_24_8;
- }
- else if (vmesa->glCtx->Visual.depthBits == 32) {
- swdd->ReadDepthSpan = viaReadDepthSpan_32;
- swdd->WriteDepthSpan = viaWriteDepthSpan_32;
- swdd->WriteMonoDepthSpan = viaWriteMonoDepthSpan_32;
- swdd->ReadDepthPixels = viaReadDepthPixels_32;
- swdd->WriteDepthPixels = viaWriteDepthPixels_32;
- }
-#endif
-
- swdd->SpanRenderStart = viaSpanRenderStart;
- swdd->SpanRenderFinish = viaSpanRenderFinish;
-
-#if 0
- swdd->WriteCI8Span = NULL;
- swdd->WriteCI32Span = NULL;
- swdd->WriteMonoCISpan = NULL;
- swdd->WriteCI32Pixels = NULL;
- swdd->WriteMonoCIPixels = NULL;
- swdd->ReadCI32Span = NULL;
- swdd->ReadCI32Pixels = NULL;
-#endif
-}
-
-
-
-/**
- * Plug in the Get/Put routines for the given driRenderbuffer.
- */
-void
-viaSetSpanFunctions(driRenderbuffer *drb, const GLvisual *vis)
-{
- if (drb->Base.InternalFormat == GL_RGBA) {
- if (vis->redBits == 5 && vis->greenBits == 6 && vis->blueBits == 5) {
- viaInitPointers_565(&drb->Base);
- }
- else {
- viaInitPointers_8888(&drb->Base);
- }
- }
- else if (drb->Base.InternalFormat == GL_DEPTH_COMPONENT16) {
- drb->Base.GetRow = viaReadDepthSpan_16;
- drb->Base.GetValues = viaReadDepthPixels_16;
- drb->Base.PutRow = viaWriteDepthSpan_16;
- drb->Base.PutMonoRow = viaWriteMonoDepthSpan_16;
- drb->Base.PutValues = viaWriteDepthPixels_16;
- drb->Base.PutMonoValues = NULL;
- }
- else if (drb->Base.InternalFormat == GL_DEPTH_COMPONENT24) {
- drb->Base.GetRow = viaReadDepthSpan_24_8;
- drb->Base.GetValues = viaReadDepthPixels_24_8;
- drb->Base.PutRow = viaWriteDepthSpan_24_8;
- drb->Base.PutMonoRow = viaWriteMonoDepthSpan_24_8;
- drb->Base.PutValues = viaWriteDepthPixels_24_8;
- drb->Base.PutMonoValues = NULL;
- }
- else if (drb->Base.InternalFormat == GL_DEPTH_COMPONENT32) {
- drb->Base.GetRow = viaReadDepthSpan_32;
- drb->Base.GetValues = viaReadDepthPixels_32;
- drb->Base.PutRow = viaWriteDepthSpan_32;
- drb->Base.PutMonoRow = viaWriteMonoDepthSpan_32;
- drb->Base.PutValues = viaWriteDepthPixels_32;
- drb->Base.PutMonoValues = NULL;
- }
- else if (drb->Base.InternalFormat == GL_STENCIL_INDEX8_EXT) {
- drb->Base.GetRow = viaReadStencilSpan_24_8;
- drb->Base.GetValues = viaReadStencilPixels_24_8;
- drb->Base.PutRow = viaWriteStencilSpan_24_8;
- drb->Base.PutMonoRow = viaWriteMonoStencilSpan_24_8;
- drb->Base.PutValues = viaWriteStencilPixels_24_8;
- drb->Base.PutMonoValues = NULL;
- }
-}
diff --git a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_span.h b/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_span.h
deleted file mode 100644
index c3bd24b0e..000000000
--- a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_span.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved.
- * Copyright 2001-2003 S3 Graphics, Inc. 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
- * VIA, S3 GRAPHICS, 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.
- */
-
-#ifndef _VIA_SPAN_H
-#define _VIA_SPAN_H
-
-#include "drirenderbuffer.h"
-
-extern void viaInitSpanFuncs(GLcontext *ctx);
-extern void viaSpanRenderStart( GLcontext *ctx );
-extern void viaSpanRenderFinish( GLcontext *ctx );
-
-extern void
-viaSetSpanFunctions(driRenderbuffer *rb, const GLvisual *vis);
-
-#endif
diff --git a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_state.c b/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_state.c
deleted file mode 100644
index 4037d14ff..000000000
--- a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_state.c
+++ /dev/null
@@ -1,1550 +0,0 @@
-/*
- * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved.
- * Copyright 2001-2003 S3 Graphics, Inc. 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
- * VIA, S3 GRAPHICS, 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.
- */
-
-#include <stdio.h>
-
-#include "glheader.h"
-#include "buffers.h"
-#include "context.h"
-#include "macros.h"
-#include "colormac.h"
-#include "enums.h"
-#include "dd.h"
-
-#include "mm.h"
-#include "via_context.h"
-#include "via_state.h"
-#include "via_tex.h"
-#include "via_tris.h"
-#include "via_ioctl.h"
-#include "via_3d_reg.h"
-
-#include "swrast/swrast.h"
-#include "array_cache/acache.h"
-#include "tnl/tnl.h"
-#include "swrast_setup/swrast_setup.h"
-
-#include "tnl/t_pipeline.h"
-
-
-static GLuint ROP[16] = {
- HC_HROP_BLACK, /* GL_CLEAR 0 */
- HC_HROP_DPa, /* GL_AND s & d */
- HC_HROP_PDna, /* GL_AND_REVERSE s & ~d */
- HC_HROP_P, /* GL_COPY s */
- HC_HROP_DPna, /* GL_AND_INVERTED ~s & d */
- HC_HROP_D, /* GL_NOOP d */
- HC_HROP_DPx, /* GL_XOR s ^ d */
- HC_HROP_DPo, /* GL_OR s | d */
- HC_HROP_DPon, /* GL_NOR ~(s | d) */
- HC_HROP_DPxn, /* GL_EQUIV ~(s ^ d) */
- HC_HROP_Dn, /* GL_INVERT ~d */
- HC_HROP_PDno, /* GL_OR_REVERSE s | ~d */
- HC_HROP_Pn, /* GL_COPY_INVERTED ~s */
- HC_HROP_DPno, /* GL_OR_INVERTED ~s | d */
- HC_HROP_DPan, /* GL_NAND ~(s & d) */
- HC_HROP_WHITE /* GL_SET 1 */
-};
-
-/*
- * Compute the 'S5.5' lod bias factor from the floating point OpenGL bias.
- */
-static GLuint viaComputeLodBias(GLfloat bias)
-{
- int b = (int) (bias * 32.0);
- if (b > 511)
- b = 511;
- else if (b < -512)
- b = -512;
- return (GLuint) b;
-}
-
-void viaEmitState(struct via_context *vmesa)
-{
- GLcontext *ctx = vmesa->glCtx;
- GLuint i = 0;
- GLuint j = 0;
- RING_VARS;
-
- viaCheckDma(vmesa, 0x110);
-
- BEGIN_RING(5);
- OUT_RING( HC_HEADER2 );
- OUT_RING( (HC_ParaType_NotTex << 16) );
- OUT_RING( ((HC_SubA_HEnable << 24) | vmesa->regEnable) );
- OUT_RING( ((HC_SubA_HFBBMSKL << 24) | vmesa->regHFBBMSKL) );
- OUT_RING( ((HC_SubA_HROP << 24) | vmesa->regHROP) );
- ADVANCE_RING();
-
- if (vmesa->have_hw_stencil) {
- GLuint pitch, format, offset;
-
- format = HC_HZWBFM_24;
- offset = vmesa->depth.offset;
- pitch = vmesa->depth.pitch;
-
- BEGIN_RING(6);
- OUT_RING( (HC_SubA_HZWBBasL << 24) | (offset & 0xFFFFFF) );
- OUT_RING( (HC_SubA_HZWBBasH << 24) | ((offset & 0xFF000000) >> 24) );
- OUT_RING( (HC_SubA_HZWBType << 24) | HC_HDBLoc_Local | HC_HZONEasFF_MASK |
- format | pitch );
- OUT_RING( (HC_SubA_HZWTMD << 24) | vmesa->regHZWTMD );
- OUT_RING( (HC_SubA_HSTREF << 24) | vmesa->regHSTREF );
- OUT_RING( (HC_SubA_HSTMD << 24) | vmesa->regHSTMD );
- ADVANCE_RING();
- }
- else if (vmesa->hasDepth) {
- GLuint pitch, format, offset;
-
- if (vmesa->depthBits == 16) {
- format = HC_HZWBFM_16;
- }
- else {
- format = HC_HZWBFM_32;
- }
-
-
- offset = vmesa->depth.offset;
- pitch = vmesa->depth.pitch;
-
- BEGIN_RING(4);
- OUT_RING( (HC_SubA_HZWBBasL << 24) | (offset & 0xFFFFFF) );
- OUT_RING( (HC_SubA_HZWBBasH << 24) | ((offset & 0xFF000000) >> 24) );
- OUT_RING( (HC_SubA_HZWBType << 24) | HC_HDBLoc_Local | HC_HZONEasFF_MASK |
- format | pitch );
- OUT_RING( (HC_SubA_HZWTMD << 24) | vmesa->regHZWTMD );
- ADVANCE_RING();
- }
-
- if (ctx->Color.AlphaEnabled) {
- BEGIN_RING(1);
- OUT_RING( (HC_SubA_HATMD << 24) | vmesa->regHATMD );
- ADVANCE_RING();
- i++;
- }
-
- if (ctx->Color.BlendEnabled) {
- BEGIN_RING(11);
- OUT_RING( (HC_SubA_HABLCsat << 24) | vmesa->regHABLCsat );
- OUT_RING( (HC_SubA_HABLCop << 24) | vmesa->regHABLCop );
- OUT_RING( (HC_SubA_HABLAsat << 24) | vmesa->regHABLAsat );
- OUT_RING( (HC_SubA_HABLAop << 24) | vmesa->regHABLAop );
- OUT_RING( (HC_SubA_HABLRCa << 24) | vmesa->regHABLRCa );
- OUT_RING( (HC_SubA_HABLRFCa << 24) | vmesa->regHABLRFCa );
- OUT_RING( (HC_SubA_HABLRCbias << 24) | vmesa->regHABLRCbias );
- OUT_RING( (HC_SubA_HABLRCb << 24) | vmesa->regHABLRCb );
- OUT_RING( (HC_SubA_HABLRFCb << 24) | vmesa->regHABLRFCb );
- OUT_RING( (HC_SubA_HABLRAa << 24) | vmesa->regHABLRAa );
- OUT_RING( (HC_SubA_HABLRAb << 24) | vmesa->regHABLRAb );
- ADVANCE_RING();
- }
-
- if (ctx->Fog.Enabled) {
- BEGIN_RING(3);
- OUT_RING( (HC_SubA_HFogLF << 24) | vmesa->regHFogLF );
- OUT_RING( (HC_SubA_HFogCL << 24) | vmesa->regHFogCL );
- OUT_RING( (HC_SubA_HFogCH << 24) | vmesa->regHFogCH );
- ADVANCE_RING();
- }
-
- if (ctx->Line.StippleFlag) {
- BEGIN_RING(2);
- OUT_RING( (HC_SubA_HLP << 24) | ctx->Line.StipplePattern );
- OUT_RING( (HC_SubA_HLPRF << 24) | ctx->Line.StippleFactor );
- ADVANCE_RING();
- }
-
- BEGIN_RING(1);
- OUT_RING( (HC_SubA_HPixGC << 24) | 0x0 );
- ADVANCE_RING();
-
- QWORD_PAD_RING();
-
-
- if (ctx->Texture._EnabledUnits) {
-
- struct gl_texture_unit *texUnit0 = &ctx->Texture.Unit[0];
- struct gl_texture_unit *texUnit1 = &ctx->Texture.Unit[1];
-
- {
- GLuint nDummyValue = 0;
-
- BEGIN_RING( 8 );
- OUT_RING( HC_HEADER2 );
- OUT_RING( (HC_ParaType_Tex << 16) | (HC_SubType_TexGeneral << 24) );
-
- if (texUnit0->Enabled && texUnit1->Enabled) {
- nDummyValue = (HC_SubA_HTXSMD << 24) | (1 << 3);
- }
- else {
- nDummyValue = (HC_SubA_HTXSMD << 24) | 0;
- }
-
- if (vmesa->clearTexCache) {
- vmesa->clearTexCache = 0;
- OUT_RING( nDummyValue | HC_HTXCHCLR_MASK );
- OUT_RING( nDummyValue );
- }
- else {
- OUT_RING( nDummyValue );
- OUT_RING( nDummyValue );
- }
-
- OUT_RING( HC_HEADER2 );
- OUT_RING( HC_ParaType_NotTex << 16 );
- OUT_RING( (HC_SubA_HEnable << 24) | vmesa->regEnable );
- OUT_RING( (HC_SubA_HEnable << 24) | vmesa->regEnable );
- ADVANCE_RING();
- }
-
- if (texUnit0->Enabled) {
- struct gl_texture_object *texObj = texUnit0->_Current;
- struct via_texture_object *t = (struct via_texture_object *)texObj;
- GLuint numLevels = t->lastLevel - t->firstLevel + 1;
- if (VIA_DEBUG & DEBUG_STATE) {
- fprintf(stderr, "texture0 enabled\n");
- }
- if (numLevels == 8) {
- BEGIN_RING(27);
- OUT_RING( HC_HEADER2 );
- OUT_RING( (HC_ParaType_Tex << 16) | (0 << 24) );
- OUT_RING( t->regTexFM );
- OUT_RING( (HC_SubA_HTXnL0OS << 24) |
- ((t->lastLevel) << HC_HTXnLVmax_SHIFT) | t->firstLevel );
- OUT_RING( t->regTexWidthLog2[0] );
- OUT_RING( t->regTexWidthLog2[1] );
- OUT_RING( t->regTexHeightLog2[0] );
- OUT_RING( t->regTexHeightLog2[1] );
- OUT_RING( t->regTexBaseH[0] );
- OUT_RING( t->regTexBaseH[1] );
- OUT_RING( t->regTexBaseH[2] );
- OUT_RING( t->regTexBaseAndPitch[0].baseL );
- OUT_RING( t->regTexBaseAndPitch[0].pitchLog2 );
- OUT_RING( t->regTexBaseAndPitch[1].baseL );
- OUT_RING( t->regTexBaseAndPitch[1].pitchLog2 );
- OUT_RING( t->regTexBaseAndPitch[2].baseL );
- OUT_RING( t->regTexBaseAndPitch[2].pitchLog2 );
- OUT_RING( t->regTexBaseAndPitch[3].baseL );
- OUT_RING( t->regTexBaseAndPitch[3].pitchLog2 );
- OUT_RING( t->regTexBaseAndPitch[4].baseL );
- OUT_RING( t->regTexBaseAndPitch[4].pitchLog2 );
- OUT_RING( t->regTexBaseAndPitch[5].baseL );
- OUT_RING( t->regTexBaseAndPitch[5].pitchLog2 );
- OUT_RING( t->regTexBaseAndPitch[6].baseL );
- OUT_RING( t->regTexBaseAndPitch[6].pitchLog2 );
- OUT_RING( t->regTexBaseAndPitch[7].baseL );
- OUT_RING( t->regTexBaseAndPitch[7].pitchLog2 );
- ADVANCE_RING();
- }
- else if (numLevels > 1) {
-
- BEGIN_RING(12 + numLevels * 2);
- OUT_RING( HC_HEADER2 );
- OUT_RING( (HC_ParaType_Tex << 16) | (0 << 24) );
- OUT_RING( t->regTexFM );
- OUT_RING( (HC_SubA_HTXnL0OS << 24) |
- ((t->lastLevel) << HC_HTXnLVmax_SHIFT) | t->firstLevel );
- OUT_RING( t->regTexWidthLog2[0] );
- OUT_RING( t->regTexHeightLog2[0] );
-
- if (numLevels > 6) {
- OUT_RING( t->regTexWidthLog2[1] );
- OUT_RING( t->regTexHeightLog2[1] );
- }
-
- OUT_RING( t->regTexBaseH[0] );
-
- if (numLevels > 3) {
- OUT_RING( t->regTexBaseH[1] );
- }
- if (numLevels > 6) {
- OUT_RING( t->regTexBaseH[2] );
- }
- if (numLevels > 9) {
- OUT_RING( t->regTexBaseH[3] );
- }
-
- for (j = 0; j < numLevels; j++) {
- OUT_RING( t->regTexBaseAndPitch[j].baseL );
- OUT_RING( t->regTexBaseAndPitch[j].pitchLog2 );
- }
-
- ADVANCE_RING_VARIABLE();
- }
- else {
-
- BEGIN_RING(9);
- OUT_RING( HC_HEADER2 );
- OUT_RING( (HC_ParaType_Tex << 16) | (0 << 24) );
- OUT_RING( t->regTexFM );
- OUT_RING( (HC_SubA_HTXnL0OS << 24) |
- ((t->lastLevel) << HC_HTXnLVmax_SHIFT) | t->firstLevel );
- OUT_RING( t->regTexWidthLog2[0] );
- OUT_RING( t->regTexHeightLog2[0] );
- OUT_RING( t->regTexBaseH[0] );
- OUT_RING( t->regTexBaseAndPitch[0].baseL );
- OUT_RING( t->regTexBaseAndPitch[0].pitchLog2 );
- ADVANCE_RING();
- }
-
- BEGIN_RING(14);
- OUT_RING( (HC_SubA_HTXnTB << 24) | vmesa->regHTXnTB[0] );
- OUT_RING( (HC_SubA_HTXnMPMD << 24) | vmesa->regHTXnMPMD[0] );
- OUT_RING( (HC_SubA_HTXnTBLCsat << 24) | vmesa->regHTXnTBLCsat[0] );
- OUT_RING( (HC_SubA_HTXnTBLCop << 24) | vmesa->regHTXnTBLCop[0] );
- OUT_RING( (HC_SubA_HTXnTBLMPfog << 24) | vmesa->regHTXnTBLMPfog[0] );
- OUT_RING( (HC_SubA_HTXnTBLAsat << 24) | vmesa->regHTXnTBLAsat[0] );
- OUT_RING( (HC_SubA_HTXnTBLRCb << 24) | vmesa->regHTXnTBLRCb[0] );
- OUT_RING( (HC_SubA_HTXnTBLRAa << 24) | vmesa->regHTXnTBLRAa[0] );
- OUT_RING( (HC_SubA_HTXnTBLRFog << 24) | vmesa->regHTXnTBLRFog[0] );
- OUT_RING( (HC_SubA_HTXnTBLRCa << 24) | vmesa->regHTXnTBLRCa[0] );
- OUT_RING( (HC_SubA_HTXnTBLRCc << 24) | vmesa->regHTXnTBLRCc[0] );
- OUT_RING( (HC_SubA_HTXnTBLRCbias << 24) | vmesa->regHTXnTBLRCbias[0] );
- OUT_RING( (HC_SubA_HTXnTBC << 24) | vmesa->regHTXnTBC[0] );
- OUT_RING( (HC_SubA_HTXnTRAH << 24) | vmesa->regHTXnTRAH[0] );
-/* OUT_RING( (HC_SubA_HTXnCLODu << 24) | vmesa->regHTXnCLOD[0] ); */
- ADVANCE_RING();
-
- /* KW: This test never succeeds:
- */
- if (t->regTexFM == HC_HTXnFM_Index8) {
- struct gl_color_table *table = &texObj->Palette;
- GLfloat *tableF = (GLfloat *)table->Table;
-
- BEGIN_RING(2 + table->Size);
- OUT_RING( HC_HEADER2 );
- OUT_RING( (HC_ParaType_Palette << 16) | (0 << 24) );
- for (j = 0; j < table->Size; j++)
- OUT_RING( tableF[j] );
- ADVANCE_RING();
-
- }
-
- QWORD_PAD_RING();
- }
-
- if (texUnit1->Enabled) {
- struct gl_texture_object *texObj = texUnit1->_Current;
- struct via_texture_object *t = (struct via_texture_object *)texObj;
- GLuint numLevels = t->lastLevel - t->firstLevel + 1;
- int texunit = (texUnit0->Enabled ? 1 : 0);
- if (VIA_DEBUG & DEBUG_STATE) {
- fprintf(stderr, "texture1 enabled\n");
- }
- if (numLevels == 8) {
- BEGIN_RING(27);
- OUT_RING( HC_HEADER2 );
- OUT_RING( (HC_ParaType_Tex << 16) | (texunit << 24) );
- OUT_RING( t->regTexFM );
- OUT_RING( (HC_SubA_HTXnL0OS << 24) |
- ((t->lastLevel) << HC_HTXnLVmax_SHIFT) | t->firstLevel );
- OUT_RING( t->regTexWidthLog2[0] );
- OUT_RING( t->regTexWidthLog2[1] );
- OUT_RING( t->regTexHeightLog2[0] );
- OUT_RING( t->regTexHeightLog2[1] );
- OUT_RING( t->regTexBaseH[0] );
- OUT_RING( t->regTexBaseH[1] );
- OUT_RING( t->regTexBaseH[2] );
- OUT_RING( t->regTexBaseAndPitch[0].baseL );
- OUT_RING( t->regTexBaseAndPitch[0].pitchLog2 );
- OUT_RING( t->regTexBaseAndPitch[1].baseL );
- OUT_RING( t->regTexBaseAndPitch[1].pitchLog2 );
- OUT_RING( t->regTexBaseAndPitch[2].baseL );
- OUT_RING( t->regTexBaseAndPitch[2].pitchLog2 );
- OUT_RING( t->regTexBaseAndPitch[3].baseL );
- OUT_RING( t->regTexBaseAndPitch[3].pitchLog2 );
- OUT_RING( t->regTexBaseAndPitch[4].baseL );
- OUT_RING( t->regTexBaseAndPitch[4].pitchLog2 );
- OUT_RING( t->regTexBaseAndPitch[5].baseL );
- OUT_RING( t->regTexBaseAndPitch[5].pitchLog2 );
- OUT_RING( t->regTexBaseAndPitch[6].baseL );
- OUT_RING( t->regTexBaseAndPitch[6].pitchLog2 );
- OUT_RING( t->regTexBaseAndPitch[7].baseL );
- OUT_RING( t->regTexBaseAndPitch[7].pitchLog2 );
- ADVANCE_RING();
- }
- else if (numLevels > 1) {
- BEGIN_RING(12 + numLevels * 2);
- OUT_RING( HC_HEADER2 );
- OUT_RING( (HC_ParaType_Tex << 16) | (texunit << 24) );
- OUT_RING( t->regTexFM );
- OUT_RING( (HC_SubA_HTXnL0OS << 24) |
- ((t->lastLevel) << HC_HTXnLVmax_SHIFT) | t->firstLevel );
- OUT_RING( t->regTexWidthLog2[0] );
- OUT_RING( t->regTexHeightLog2[0] );
-
- if (numLevels > 6) {
- OUT_RING( t->regTexWidthLog2[1] );
- OUT_RING( t->regTexHeightLog2[1] );
- i += 2;
- }
-
- OUT_RING( t->regTexBaseH[0] );
-
- if (numLevels > 3) {
- OUT_RING( t->regTexBaseH[1] );
- }
- if (numLevels > 6) {
- OUT_RING( t->regTexBaseH[2] );
- }
- if (numLevels > 9) {
- OUT_RING( t->regTexBaseH[3] );
- }
-
- for (j = 0; j < numLevels; j++) {
- OUT_RING( t->regTexBaseAndPitch[j].baseL );
- OUT_RING( t->regTexBaseAndPitch[j].pitchLog2 );
- }
- ADVANCE_RING_VARIABLE();
- }
- else {
- BEGIN_RING(9);
- OUT_RING( HC_HEADER2 );
- OUT_RING( (HC_ParaType_Tex << 16) | (texunit << 24) );
- OUT_RING( t->regTexFM );
- OUT_RING( (HC_SubA_HTXnL0OS << 24) |
- ((t->lastLevel) << HC_HTXnLVmax_SHIFT) | t->firstLevel );
- OUT_RING( t->regTexWidthLog2[0] );
- OUT_RING( t->regTexHeightLog2[0] );
- OUT_RING( t->regTexBaseH[0] );
- OUT_RING( t->regTexBaseAndPitch[0].baseL );
- OUT_RING( t->regTexBaseAndPitch[0].pitchLog2 );
- ADVANCE_RING();
- }
-
- BEGIN_RING(14);
- OUT_RING( (HC_SubA_HTXnTB << 24) | vmesa->regHTXnTB[1] );
- OUT_RING( (HC_SubA_HTXnMPMD << 24) | vmesa->regHTXnMPMD[1] );
- OUT_RING( (HC_SubA_HTXnTBLCsat << 24) | vmesa->regHTXnTBLCsat[1] );
- OUT_RING( (HC_SubA_HTXnTBLCop << 24) | vmesa->regHTXnTBLCop[1] );
- OUT_RING( (HC_SubA_HTXnTBLMPfog << 24) | vmesa->regHTXnTBLMPfog[1] );
- OUT_RING( (HC_SubA_HTXnTBLAsat << 24) | vmesa->regHTXnTBLAsat[1] );
- OUT_RING( (HC_SubA_HTXnTBLRCb << 24) | vmesa->regHTXnTBLRCb[1] );
- OUT_RING( (HC_SubA_HTXnTBLRAa << 24) | vmesa->regHTXnTBLRAa[1] );
- OUT_RING( (HC_SubA_HTXnTBLRFog << 24) | vmesa->regHTXnTBLRFog[1] );
- OUT_RING( (HC_SubA_HTXnTBLRCa << 24) | vmesa->regHTXnTBLRCa[1] );
- OUT_RING( (HC_SubA_HTXnTBLRCc << 24) | vmesa->regHTXnTBLRCc[1] );
- OUT_RING( (HC_SubA_HTXnTBLRCbias << 24) | vmesa->regHTXnTBLRCbias[1] );
- OUT_RING( (HC_SubA_HTXnTBC << 24) | vmesa->regHTXnTBC[1] );
- OUT_RING( (HC_SubA_HTXnTRAH << 24) | vmesa->regHTXnTRAH[1] );
-/* OUT_RING( (HC_SubA_HTXnCLODu << 24) | vmesa->regHTXnCLOD[1] ); */
- ADVANCE_RING();
-
- /* KW: This test never succeeds:
- */
- if (t->regTexFM == HC_HTXnFM_Index8) {
- struct gl_color_table *table = &texObj->Palette;
- GLfloat *tableF = (GLfloat *)table->Table;
-
- BEGIN_RING(2 + table->Size);
- OUT_RING( HC_HEADER2 );
- OUT_RING( (HC_ParaType_Palette << 16) | (texunit << 24) );
- for (j = 0; j < table->Size; j++) {
- OUT_RING( tableF[j] );
- }
- ADVANCE_RING();
- }
-
- QWORD_PAD_RING();
- }
- }
-
-#if 0
- /* Polygon stipple is broken - for certain stipple values,
- * eg. 0xf0f0f0f0, the hardware will refuse to accept the stipple.
- * Coincidentally, conform generates just such a stipple.
- */
- if (ctx->Polygon.StippleFlag) {
- GLuint *stipple = &ctx->PolygonStipple[0];
- GLint i;
-
- BEGIN_RING(38);
- OUT_RING( HC_HEADER2 );
-
- OUT_RING( ((HC_ParaType_Palette << 16) | (HC_SubType_Stipple << 24)) );
- for (i = 31; i >= 0; i--) {
- GLint j;
- GLuint k = 0;
-
- /* Need to flip bits left to right:
- */
- for (j = 0 ; j < 32; j++)
- if (stipple[i] & (1<<j))
- k |= 1 << (31-j);
-
- OUT_RING( k );
- }
-
- OUT_RING( HC_HEADER2 );
- OUT_RING( (HC_ParaType_NotTex << 16) );
- OUT_RING( (HC_SubA_HSPXYOS << 24) |
- (((32- vmesa->drawXoff) & 0x1f) << HC_HSPXOS_SHIFT));
- OUT_RING( (HC_SubA_HSPXYOS << 24) |
- (((32 - vmesa->drawXoff) & 0x1f) << HC_HSPXOS_SHIFT));
-
- ADVANCE_RING();
- }
-#endif
-
- vmesa->newEmitState = 0;
-}
-
-
-static __inline__ GLuint viaPackColor(GLuint bpp,
- GLubyte r, GLubyte g,
- GLubyte b, GLubyte a)
-{
- switch (bpp) {
- case 16:
- return PACK_COLOR_565(r, g, b);
- case 32:
- return PACK_COLOR_8888(a, r, g, b);
- default:
- assert(0);
- return 0;
- }
-}
-
-static void viaBlendEquationSeparate(GLcontext *ctx,
- GLenum rgbMode,
- GLenum aMode)
-{
- if (VIA_DEBUG & DEBUG_STATE)
- fprintf(stderr, "%s in\n", __FUNCTION__);
-
- /* GL_EXT_blend_equation_separate not supported */
- ASSERT(rgbMode == aMode);
-
- /* Can only do GL_ADD equation in hardware */
- FALLBACK(VIA_CONTEXT(ctx), VIA_FALLBACK_BLEND_EQ,
- rgbMode != GL_FUNC_ADD_EXT);
-
- /* BlendEquation sets ColorLogicOpEnabled in an unexpected
- * manner.
- */
- FALLBACK(VIA_CONTEXT(ctx), VIA_FALLBACK_LOGICOP,
- (ctx->Color.ColorLogicOpEnabled &&
- ctx->Color.LogicOp != GL_COPY));
-}
-
-static void viaBlendFunc(GLcontext *ctx, GLenum sfactor, GLenum dfactor)
-{
- struct via_context *vmesa = VIA_CONTEXT(ctx);
- GLboolean fallback = GL_FALSE;
- if (VIA_DEBUG & DEBUG_STATE)
- fprintf(stderr, "%s in\n", __FUNCTION__);
-
- switch (ctx->Color.BlendSrcRGB) {
- case GL_SRC_ALPHA_SATURATE:
- case GL_CONSTANT_COLOR:
- case GL_ONE_MINUS_CONSTANT_COLOR:
- case GL_CONSTANT_ALPHA:
- case GL_ONE_MINUS_CONSTANT_ALPHA:
- fallback = GL_TRUE;
- break;
- default:
- break;
- }
-
- switch (ctx->Color.BlendDstRGB) {
- case GL_CONSTANT_COLOR:
- case GL_ONE_MINUS_CONSTANT_COLOR:
- case GL_CONSTANT_ALPHA:
- case GL_ONE_MINUS_CONSTANT_ALPHA:
- fallback = GL_TRUE;
- break;
- default:
- break;
- }
-
- FALLBACK(vmesa, VIA_FALLBACK_BLEND_FUNC, fallback);
-}
-
-/* Shouldn't be called as the extension is disabled.
- */
-static void viaBlendFuncSeparate(GLcontext *ctx, GLenum sfactorRGB,
- GLenum dfactorRGB, GLenum sfactorA,
- GLenum dfactorA)
-{
- if (dfactorRGB != dfactorA || sfactorRGB != sfactorA) {
- _mesa_error(ctx, GL_INVALID_OPERATION, "glBlendEquation (disabled)");
- }
-
- viaBlendFunc(ctx, sfactorRGB, dfactorRGB);
-}
-
-
-
-
-/* =============================================================
- * Hardware clipping
- */
-static void viaScissor(GLcontext *ctx, GLint x, GLint y,
- GLsizei w, GLsizei h)
-{
- struct via_context *vmesa = VIA_CONTEXT(ctx);
-
- if (!vmesa->driDrawable)
- return;
-
- if (VIA_DEBUG & DEBUG_STATE)
- fprintf(stderr, "%s %d,%d %dx%d, drawH %d\n", __FUNCTION__,
- x,y,w,h, vmesa->driDrawable->h);
-
- if (vmesa->scissor) {
- VIA_FLUSH_DMA(vmesa); /* don't pipeline cliprect changes */
- }
-
- vmesa->scissorRect.x1 = x;
- vmesa->scissorRect.y1 = vmesa->driDrawable->h - y - h;
- vmesa->scissorRect.x2 = x + w;
- vmesa->scissorRect.y2 = vmesa->driDrawable->h - y;
-}
-
-static void viaEnable(GLcontext *ctx, GLenum cap, GLboolean state)
-{
- struct via_context *vmesa = VIA_CONTEXT(ctx);
-
- switch (cap) {
- case GL_SCISSOR_TEST:
- VIA_FLUSH_DMA(vmesa);
- vmesa->scissor = state;
- break;
- default:
- break;
- }
-}
-
-
-
-/* Fallback to swrast for select and feedback.
- */
-static void viaRenderMode(GLcontext *ctx, GLenum mode)
-{
- FALLBACK(VIA_CONTEXT(ctx), VIA_FALLBACK_RENDERMODE, (mode != GL_RENDER));
-}
-
-
-static void viaDrawBuffer(GLcontext *ctx, GLenum mode)
-{
- struct via_context *vmesa = VIA_CONTEXT(ctx);
-
- if (VIA_DEBUG & (DEBUG_DRI|DEBUG_STATE))
- fprintf(stderr, "%s in\n", __FUNCTION__);
-
- if (!ctx->DrawBuffer)
- return;
-
- switch ( ctx->DrawBuffer->_ColorDrawBufferMask[0] ) {
- case BUFFER_BIT_FRONT_LEFT:
- VIA_FLUSH_DMA(vmesa);
- vmesa->drawBuffer = vmesa->readBuffer = &vmesa->front;
- FALLBACK(vmesa, VIA_FALLBACK_DRAW_BUFFER, GL_FALSE);
- break;
- case BUFFER_BIT_BACK_LEFT:
- VIA_FLUSH_DMA(vmesa);
- vmesa->drawBuffer = vmesa->readBuffer = &vmesa->back;
- FALLBACK(vmesa, VIA_FALLBACK_DRAW_BUFFER, GL_FALSE);
- break;
- default:
- FALLBACK(vmesa, VIA_FALLBACK_DRAW_BUFFER, GL_TRUE);
- return;
- }
-
-
- viaXMesaWindowMoved(vmesa);
-
- /* We want to update the s/w rast state too so that viaSetBuffer()
- * gets called.
- */
- _swrast_DrawBuffer(ctx, mode);
-}
-
-static void viaClearColor(GLcontext *ctx, const GLfloat color[4])
-{
- struct via_context *vmesa = VIA_CONTEXT(ctx);
- GLubyte pcolor[4];
- CLAMPED_FLOAT_TO_UBYTE(pcolor[0], color[0]);
- CLAMPED_FLOAT_TO_UBYTE(pcolor[1], color[1]);
- CLAMPED_FLOAT_TO_UBYTE(pcolor[2], color[2]);
- CLAMPED_FLOAT_TO_UBYTE(pcolor[3], color[3]);
- vmesa->ClearColor = viaPackColor(vmesa->viaScreen->bitsPerPixel,
- pcolor[0], pcolor[1],
- pcolor[2], pcolor[3]);
-}
-
-#define WRITEMASK_ALPHA_SHIFT 31
-#define WRITEMASK_RED_SHIFT 30
-#define WRITEMASK_GREEN_SHIFT 29
-#define WRITEMASK_BLUE_SHIFT 28
-
-static void viaColorMask(GLcontext *ctx,
- GLboolean r, GLboolean g,
- GLboolean b, GLboolean a)
-{
- struct via_context *vmesa = VIA_CONTEXT( ctx );
-
- if (VIA_DEBUG & DEBUG_STATE)
- fprintf(stderr, "%s r(%d) g(%d) b(%d) a(%d)\n", __FUNCTION__, r, g, b, a);
-
- vmesa->ClearMask = (((!r) << WRITEMASK_RED_SHIFT) |
- ((!g) << WRITEMASK_GREEN_SHIFT) |
- ((!b) << WRITEMASK_BLUE_SHIFT) |
- ((!a) << WRITEMASK_ALPHA_SHIFT));
-}
-
-
-/* =============================================================
- */
-
-
-/* Using drawXoff like this is incorrect outside of locked regions.
- * This hardware just isn't capable of private back buffers without
- * glitches and/or a hefty locking scheme.
- */
-void viaCalcViewport(GLcontext *ctx)
-{
- struct via_context *vmesa = VIA_CONTEXT(ctx);
- const GLfloat *v = ctx->Viewport._WindowMap.m;
- GLfloat *m = vmesa->ViewportMatrix.m;
-
- /* See also via_translate_vertex.
- */
- m[MAT_SX] = v[MAT_SX];
- m[MAT_TX] = v[MAT_TX] + SUBPIXEL_X + vmesa->drawXoff;
- m[MAT_SY] = - v[MAT_SY];
- m[MAT_TY] = - v[MAT_TY] + vmesa->driDrawable->h + SUBPIXEL_Y;
- m[MAT_SZ] = v[MAT_SZ] * (1.0 / vmesa->depth_max);
- m[MAT_TZ] = v[MAT_TZ] * (1.0 / vmesa->depth_max);
-}
-
-static void viaViewport(GLcontext *ctx,
- GLint x, GLint y,
- GLsizei width, GLsizei height)
-{
- /* update size of Mesa/software ancillary buffers */
- _mesa_ResizeBuffersMESA();
- viaCalcViewport(ctx);
-}
-
-static void viaDepthRange(GLcontext *ctx,
- GLclampd nearval, GLclampd farval)
-{
- viaCalcViewport(ctx);
-}
-
-void viaInitState(GLcontext *ctx)
-{
- struct via_context *vmesa = VIA_CONTEXT(ctx);
-
- vmesa->regCmdB = HC_ACMD_HCmdB;
- vmesa->regEnable = HC_HenCW_MASK;
-
- /* Mesa should do this for us:
- */
-
- ctx->Driver.BlendEquationSeparate( ctx,
- ctx->Color.BlendEquationRGB,
- ctx->Color.BlendEquationA);
-
- ctx->Driver.BlendFuncSeparate( ctx,
- ctx->Color.BlendSrcRGB,
- ctx->Color.BlendDstRGB,
- ctx->Color.BlendSrcA,
- ctx->Color.BlendDstA);
-
- ctx->Driver.Scissor( ctx, ctx->Scissor.X, ctx->Scissor.Y,
- ctx->Scissor.Width, ctx->Scissor.Height );
-
- ctx->Driver.DrawBuffer( ctx, ctx->Color.DrawBuffer[0] );
-}
-
-/**
- * Convert S and T texture coordinate wrap modes to hardware bits.
- */
-static u_int32_t
-get_wrap_mode( GLenum sWrap, GLenum tWrap )
-{
- u_int32_t v = 0;
-
-
- switch( sWrap ) {
- case GL_REPEAT:
- v |= HC_HTXnMPMD_Srepeat;
- break;
- case GL_CLAMP:
- case GL_CLAMP_TO_EDGE:
- v |= HC_HTXnMPMD_Sclamp;
- break;
- case GL_MIRRORED_REPEAT:
- v |= HC_HTXnMPMD_Smirror;
- break;
- }
-
- switch( tWrap ) {
- case GL_REPEAT:
- v |= HC_HTXnMPMD_Trepeat;
- break;
- case GL_CLAMP:
- case GL_CLAMP_TO_EDGE:
- v |= HC_HTXnMPMD_Tclamp;
- break;
- case GL_MIRRORED_REPEAT:
- v |= HC_HTXnMPMD_Tmirror;
- break;
- }
-
- return v;
-}
-
-static u_int32_t
-get_minmag_filter( GLenum min, GLenum mag )
-{
- u_int32_t v = 0;
-
- switch (min) {
- case GL_NEAREST:
- v = HC_HTXnFLSs_Nearest |
- HC_HTXnFLTs_Nearest;
- break;
- case GL_LINEAR:
- v = HC_HTXnFLSs_Linear |
- HC_HTXnFLTs_Linear;
- break;
- case GL_NEAREST_MIPMAP_NEAREST:
- v = HC_HTXnFLSs_Nearest |
- HC_HTXnFLTs_Nearest;
- v |= HC_HTXnFLDs_Nearest;
- break;
- case GL_LINEAR_MIPMAP_NEAREST:
- v = HC_HTXnFLSs_Linear |
- HC_HTXnFLTs_Linear;
- v |= HC_HTXnFLDs_Nearest;
- break;
- case GL_NEAREST_MIPMAP_LINEAR:
- v = HC_HTXnFLSs_Nearest |
- HC_HTXnFLTs_Nearest;
- v |= HC_HTXnFLDs_Linear;
- break;
- case GL_LINEAR_MIPMAP_LINEAR:
- v = HC_HTXnFLSs_Linear |
- HC_HTXnFLTs_Linear;
- v |= HC_HTXnFLDs_Linear;
- break;
- default:
- break;
- }
-
- switch (mag) {
- case GL_LINEAR:
- v |= HC_HTXnFLSe_Linear |
- HC_HTXnFLTe_Linear;
- break;
- case GL_NEAREST:
- v |= HC_HTXnFLSe_Nearest |
- HC_HTXnFLTe_Nearest;
- break;
- default:
- break;
- }
-
- return v;
-}
-
-
-static GLboolean viaChooseTextureState(GLcontext *ctx)
-{
- struct via_context *vmesa = VIA_CONTEXT(ctx);
- struct gl_texture_unit *texUnit0 = &ctx->Texture.Unit[0];
- struct gl_texture_unit *texUnit1 = &ctx->Texture.Unit[1];
-
- if (texUnit0->_ReallyEnabled || texUnit1->_ReallyEnabled) {
- vmesa->regEnable |= HC_HenTXMP_MASK | HC_HenTXCH_MASK | HC_HenTXPP_MASK;
-
- if (texUnit0->_ReallyEnabled) {
- struct gl_texture_object *texObj = texUnit0->_Current;
-
- vmesa->regHTXnTB[0] = get_minmag_filter( texObj->MinFilter,
- texObj->MagFilter );
-
- vmesa->regHTXnMPMD[0] &= ~(HC_HTXnMPMD_SMASK | HC_HTXnMPMD_TMASK);
- vmesa->regHTXnMPMD[0] |= get_wrap_mode( texObj->WrapS,
- texObj->WrapT );
-
- vmesa->regHTXnTB[0] &= ~(HC_HTXnTB_TBC_S | HC_HTXnTB_TBC_T);
- if (texObj->Image[0][texObj->BaseLevel]->Border > 0) {
- vmesa->regHTXnTB[0] |= (HC_HTXnTB_TBC_S | HC_HTXnTB_TBC_T);
- vmesa->regHTXnTBC[0] =
- PACK_COLOR_888(FLOAT_TO_UBYTE(texObj->BorderColor[0]),
- FLOAT_TO_UBYTE(texObj->BorderColor[1]),
- FLOAT_TO_UBYTE(texObj->BorderColor[2]));
- vmesa->regHTXnTRAH[0] = FLOAT_TO_UBYTE(texObj->BorderColor[3]);
- }
-
- if (texUnit0->LodBias != 0.0f) {
- GLuint b = viaComputeLodBias(texUnit0->LodBias);
- vmesa->regHTXnTB[0] &= ~HC_HTXnFLDs_MASK;
- vmesa->regHTXnTB[0] |= HC_HTXnFLDs_ConstLOD;
- vmesa->regHTXnCLOD[0] = (b&0x1f) | (((~b)&0x1f)<<10); /* FIXME */
- }
-
- if (!viaTexCombineState( vmesa, texUnit0->_CurrentCombine, 0 )) {
- if (VIA_DEBUG & DEBUG_TEXTURE)
- fprintf(stderr, "viaTexCombineState failed for unit 0\n");
- return GL_FALSE;
- }
- }
-
- if (texUnit1->_ReallyEnabled) {
- struct gl_texture_object *texObj = texUnit1->_Current;
-
- vmesa->regHTXnTB[1] = get_minmag_filter( texObj->MinFilter,
- texObj->MagFilter );
- vmesa->regHTXnMPMD[1] &= ~(HC_HTXnMPMD_SMASK | HC_HTXnMPMD_TMASK);
- vmesa->regHTXnMPMD[1] |= get_wrap_mode( texObj->WrapS,
- texObj->WrapT );
-
- vmesa->regHTXnTB[1] &= ~(HC_HTXnTB_TBC_S | HC_HTXnTB_TBC_T);
- if (texObj->Image[0][texObj->BaseLevel]->Border > 0) {
- vmesa->regHTXnTB[1] |= (HC_HTXnTB_TBC_S | HC_HTXnTB_TBC_T);
- vmesa->regHTXnTBC[1] =
- PACK_COLOR_888(FLOAT_TO_UBYTE(texObj->BorderColor[0]),
- FLOAT_TO_UBYTE(texObj->BorderColor[1]),
- FLOAT_TO_UBYTE(texObj->BorderColor[2]));
- vmesa->regHTXnTRAH[1] = FLOAT_TO_UBYTE(texObj->BorderColor[3]);
- }
-
-
- if (texUnit1->LodBias != 0.0f) {
- GLuint b = viaComputeLodBias(texUnit1->LodBias);
- vmesa->regHTXnTB[1] &= ~HC_HTXnFLDs_MASK;
- vmesa->regHTXnTB[1] |= HC_HTXnFLDs_ConstLOD;
- vmesa->regHTXnCLOD[1] = (b&0x1f) | (((~b)&0x1f)<<10); /* FIXME */
- }
-
- if (!viaTexCombineState( vmesa, texUnit1->_CurrentCombine, 1 )) {
- if (VIA_DEBUG & DEBUG_TEXTURE)
- fprintf(stderr, "viaTexCombineState failed for unit 1\n");
- return GL_FALSE;
- }
- }
- }
- else {
- vmesa->regEnable &= ~(HC_HenTXMP_MASK | HC_HenTXCH_MASK |
- HC_HenTXPP_MASK);
- }
-
- return GL_TRUE;
-}
-
-static void viaChooseColorState(GLcontext *ctx)
-{
- struct via_context *vmesa = VIA_CONTEXT(ctx);
- GLenum s = ctx->Color.BlendSrcRGB;
- GLenum d = ctx->Color.BlendDstRGB;
-
- /* The HW's blending equation is:
- * (Ca * FCa + Cbias + Cb * FCb) << Cshift
- */
-
- if (ctx->Color.BlendEnabled) {
- vmesa->regEnable |= HC_HenABL_MASK;
- /* Ca -- always from source color.
- */
- vmesa->regHABLCsat = HC_HABLCsat_MASK | HC_HABLCa_OPC | HC_HABLCa_Csrc;
- /* Aa -- always from source alpha.
- */
- vmesa->regHABLAsat = HC_HABLAsat_MASK | HC_HABLAa_OPA | HC_HABLAa_Asrc;
- /* FCa -- depend on following condition.
- * FAa -- depend on following condition.
- */
- switch (s) {
- case GL_ZERO:
- /* (0, 0, 0, 0)
- */
- vmesa->regHABLCsat |= HC_HABLFCa_OPC | HC_HABLFCa_HABLRCa;
- vmesa->regHABLAsat |= HC_HABLFAa_OPA | HC_HABLFAa_HABLFRA;
- vmesa->regHABLRFCa = 0x0;
- vmesa->regHABLRAa = 0x0;
- break;
- case GL_ONE:
- /* (1, 1, 1, 1)
- */
- vmesa->regHABLCsat |= HC_HABLFCa_InvOPC | HC_HABLFCa_HABLRCa;
- vmesa->regHABLAsat |= HC_HABLFAa_InvOPA | HC_HABLFAa_HABLFRA;
- vmesa->regHABLRFCa = 0x0;
- vmesa->regHABLRAa = 0x0;
- break;
- case GL_SRC_COLOR:
- /* (Rs, Gs, Bs, As)
- */
- vmesa->regHABLCsat |= HC_HABLFCa_OPC | HC_HABLFCa_Csrc;
- vmesa->regHABLAsat |= HC_HABLFAa_OPA | HC_HABLFAa_Asrc;
- break;
- case GL_ONE_MINUS_SRC_COLOR:
- /* (1, 1, 1, 1) - (Rs, Gs, Bs, As)
- */
- vmesa->regHABLCsat |= HC_HABLFCa_InvOPC | HC_HABLFCa_Csrc;
- vmesa->regHABLAsat |= HC_HABLFAa_InvOPA | HC_HABLFAa_Asrc;
- break;
- case GL_DST_COLOR:
- /* (Rd, Gd, Bd, Ad)
- */
- vmesa->regHABLCsat |= HC_HABLFCa_OPC | HC_HABLFCa_Cdst;
- vmesa->regHABLAsat |= HC_HABLFAa_OPA | HC_HABLFAa_Adst;
- break;
- case GL_ONE_MINUS_DST_COLOR:
- /* (1, 1, 1, 1) - (Rd, Gd, Bd, Ad)
- */
- vmesa->regHABLCsat |= HC_HABLFCa_InvOPC | HC_HABLFCa_Cdst;
- vmesa->regHABLAsat |= HC_HABLFAa_InvOPA | HC_HABLFAa_Adst;
- break;
- case GL_SRC_ALPHA:
- /* (As, As, As, As)
- */
- vmesa->regHABLCsat |= HC_HABLFCa_OPC | HC_HABLFCa_Asrc;
- vmesa->regHABLAsat |= HC_HABLFAa_OPA | HC_HABLFAa_Asrc;
- break;
- case GL_ONE_MINUS_SRC_ALPHA:
- /* (1, 1, 1, 1) - (As, As, As, As)
- */
- vmesa->regHABLCsat |= HC_HABLFCa_InvOPC | HC_HABLFCa_Asrc;
- vmesa->regHABLAsat |= HC_HABLFAa_InvOPA | HC_HABLFAa_Asrc;
- break;
- case GL_DST_ALPHA:
- {
- if (vmesa->viaScreen->bitsPerPixel == 16) {
- /* (1, 1, 1, 1)
- */
- vmesa->regHABLCsat |= (HC_HABLFCa_InvOPC |
- HC_HABLFCa_HABLRCa);
- vmesa->regHABLAsat |= (HC_HABLFAa_InvOPA |
- HC_HABLFAa_HABLFRA);
- vmesa->regHABLRFCa = 0x0;
- vmesa->regHABLRAa = 0x0;
- }
- else {
- /* (Ad, Ad, Ad, Ad)
- */
- vmesa->regHABLCsat |= HC_HABLFCa_OPC | HC_HABLFCa_Adst;
- vmesa->regHABLAsat |= HC_HABLFAa_OPA | HC_HABLFAa_Adst;
- }
- }
- break;
- case GL_ONE_MINUS_DST_ALPHA:
- {
- if (vmesa->viaScreen->bitsPerPixel == 16) {
- /* (1, 1, 1, 1) - (1, 1, 1, 1) = (0, 0, 0, 0)
- */
- vmesa->regHABLCsat |= HC_HABLFCa_OPC | HC_HABLFCa_HABLRCa;
- vmesa->regHABLAsat |= HC_HABLFAa_OPA | HC_HABLFAa_HABLFRA;
- vmesa->regHABLRFCa = 0x0;
- vmesa->regHABLRAa = 0x0;
- }
- else {
- /* (1, 1, 1, 1) - (Ad, Ad, Ad, Ad)
- */
- vmesa->regHABLCsat |= HC_HABLFCa_InvOPC | HC_HABLFCa_Adst;
- vmesa->regHABLAsat |= HC_HABLFAa_InvOPA | HC_HABLFAa_Adst;
- }
- }
- break;
- case GL_SRC_ALPHA_SATURATE:
- {
- if (vmesa->viaScreen->bitsPerPixel == 16) {
- /* (f, f, f, 1), f = min(As, 1 - Ad) = min(As, 1 - 1) = 0
- * So (f, f, f, 1) = (0, 0, 0, 1)
- */
- vmesa->regHABLCsat |= HC_HABLFCa_OPC | HC_HABLFCa_HABLRCa;
- vmesa->regHABLAsat |= (HC_HABLFAa_InvOPA |
- HC_HABLFAa_HABLFRA);
- vmesa->regHABLRFCa = 0x0;
- vmesa->regHABLRAa = 0x0;
- }
- else {
- /* (f, f, f, 1), f = min(As, 1 - Ad)
- */
- vmesa->regHABLCsat |= (HC_HABLFCa_OPC |
- HC_HABLFCa_mimAsrcInvAdst);
- vmesa->regHABLAsat |= (HC_HABLFAa_InvOPA |
- HC_HABLFAa_HABLFRA);
- vmesa->regHABLRFCa = 0x0;
- vmesa->regHABLRAa = 0x0;
- }
- }
- break;
- }
-
- /* Op is add.
- */
-
- /* bias is 0.
- */
- vmesa->regHABLCsat |= HC_HABLCbias_HABLRCbias;
- vmesa->regHABLAsat |= HC_HABLAbias_HABLRAbias;
-
- /* Cb -- always from destination color.
- */
- vmesa->regHABLCop = HC_HABLCb_OPC | HC_HABLCb_Cdst;
- /* Ab -- always from destination alpha.
- */
- vmesa->regHABLAop = HC_HABLAb_OPA | HC_HABLAb_Adst;
- /* FCb -- depend on following condition.
- */
- switch (d) {
- case GL_ZERO:
- /* (0, 0, 0, 0)
- */
- vmesa->regHABLCop |= HC_HABLFCb_OPC | HC_HABLFCb_HABLRCb;
- vmesa->regHABLAop |= HC_HABLFAb_OPA | HC_HABLFAb_HABLFRA;
- vmesa->regHABLRFCb = 0x0;
- vmesa->regHABLRAb = 0x0;
- break;
- case GL_ONE:
- /* (1, 1, 1, 1)
- */
- vmesa->regHABLCop |= HC_HABLFCb_InvOPC | HC_HABLFCb_HABLRCb;
- vmesa->regHABLAop |= HC_HABLFAb_InvOPA | HC_HABLFAb_HABLFRA;
- vmesa->regHABLRFCb = 0x0;
- vmesa->regHABLRAb = 0x0;
- break;
- case GL_SRC_COLOR:
- /* (Rs, Gs, Bs, As)
- */
- vmesa->regHABLCop |= HC_HABLFCb_OPC | HC_HABLFCb_Csrc;
- vmesa->regHABLAop |= HC_HABLFAb_OPA | HC_HABLFAb_Asrc;
- break;
- case GL_ONE_MINUS_SRC_COLOR:
- /* (1, 1, 1, 1) - (Rs, Gs, Bs, As)
- */
- vmesa->regHABLCop |= HC_HABLFCb_InvOPC | HC_HABLFCb_Csrc;
- vmesa->regHABLAop |= HC_HABLFAb_InvOPA | HC_HABLFAb_Asrc;
- break;
- case GL_DST_COLOR:
- /* (Rd, Gd, Bd, Ad)
- */
- vmesa->regHABLCop |= HC_HABLFCb_OPC | HC_HABLFCb_Cdst;
- vmesa->regHABLAop |= HC_HABLFAb_OPA | HC_HABLFAb_Adst;
- break;
- case GL_ONE_MINUS_DST_COLOR:
- /* (1, 1, 1, 1) - (Rd, Gd, Bd, Ad)
- */
- vmesa->regHABLCop |= HC_HABLFCb_InvOPC | HC_HABLFCb_Cdst;
- vmesa->regHABLAop |= HC_HABLFAb_InvOPA | HC_HABLFAb_Adst;
- break;
- case GL_SRC_ALPHA:
- /* (As, As, As, As)
- */
- vmesa->regHABLCop |= HC_HABLFCb_OPC | HC_HABLFCb_Asrc;
- vmesa->regHABLAop |= HC_HABLFAb_OPA | HC_HABLFAb_Asrc;
- break;
- case GL_ONE_MINUS_SRC_ALPHA:
- /* (1, 1, 1, 1) - (As, As, As, As)
- */
- vmesa->regHABLCop |= HC_HABLFCb_InvOPC | HC_HABLFCb_Asrc;
- vmesa->regHABLAop |= HC_HABLFAb_InvOPA | HC_HABLFAb_Asrc;
- break;
- case GL_DST_ALPHA:
- {
- if (vmesa->viaScreen->bitsPerPixel == 16) {
- /* (1, 1, 1, 1)
- */
- vmesa->regHABLCop |= HC_HABLFCb_InvOPC | HC_HABLFCb_HABLRCb;
- vmesa->regHABLAop |= HC_HABLFAb_InvOPA | HC_HABLFAb_HABLFRA;
- vmesa->regHABLRFCb = 0x0;
- vmesa->regHABLRAb = 0x0;
- }
- else {
- /* (Ad, Ad, Ad, Ad)
- */
- vmesa->regHABLCop |= HC_HABLFCb_OPC | HC_HABLFCb_Adst;
- vmesa->regHABLAop |= HC_HABLFAb_OPA | HC_HABLFAb_Adst;
- }
- }
- break;
- case GL_ONE_MINUS_DST_ALPHA:
- {
- if (vmesa->viaScreen->bitsPerPixel == 16) {
- /* (1, 1, 1, 1) - (1, 1, 1, 1) = (0, 0, 0, 0)
- */
- vmesa->regHABLCop |= HC_HABLFCb_OPC | HC_HABLFCb_HABLRCb;
- vmesa->regHABLAop |= HC_HABLFAb_OPA | HC_HABLFAb_HABLFRA;
- vmesa->regHABLRFCb = 0x0;
- vmesa->regHABLRAb = 0x0;
- }
- else {
- /* (1, 1, 1, 1) - (Ad, Ad, Ad, Ad)
- */
- vmesa->regHABLCop |= HC_HABLFCb_InvOPC | HC_HABLFCb_Adst;
- vmesa->regHABLAop |= HC_HABLFAb_InvOPA | HC_HABLFAb_Adst;
- }
- }
- break;
- default:
- vmesa->regHABLCop |= HC_HABLFCb_OPC | HC_HABLFCb_HABLRCb;
- vmesa->regHABLAop |= HC_HABLFAb_OPA | HC_HABLFAb_HABLFRA;
- vmesa->regHABLRFCb = 0x0;
- vmesa->regHABLRAb = 0x0;
- break;
- }
-
- if (vmesa->viaScreen->bitsPerPixel <= 16)
- vmesa->regEnable &= ~HC_HenDT_MASK;
-
- }
- else {
- vmesa->regEnable &= (~HC_HenABL_MASK);
- }
-
- if (ctx->Color.AlphaEnabled) {
- vmesa->regEnable |= HC_HenAT_MASK;
- vmesa->regHATMD = FLOAT_TO_UBYTE(ctx->Color.AlphaRef) |
- ((ctx->Color.AlphaFunc - GL_NEVER) << 8);
- }
- else {
- vmesa->regEnable &= (~HC_HenAT_MASK);
- }
-
- if (ctx->Color.DitherFlag && (vmesa->viaScreen->bitsPerPixel < 32)) {
- if (ctx->Color.BlendEnabled) {
- vmesa->regEnable &= ~HC_HenDT_MASK;
- }
- else {
- vmesa->regEnable |= HC_HenDT_MASK;
- }
- }
-
-
- vmesa->regEnable &= ~HC_HenDT_MASK;
-
- if (ctx->Color.ColorLogicOpEnabled)
- vmesa->regHROP = ROP[ctx->Color.LogicOp & 0xF];
- else
- vmesa->regHROP = HC_HROP_P;
-
- vmesa->regHFBBMSKL = PACK_COLOR_888(ctx->Color.ColorMask[0],
- ctx->Color.ColorMask[1],
- ctx->Color.ColorMask[2]);
- vmesa->regHROP |= ctx->Color.ColorMask[3];
-
- if (ctx->Color.ColorMask[3])
- vmesa->regEnable |= HC_HenAW_MASK;
- else
- vmesa->regEnable &= ~HC_HenAW_MASK;
-}
-
-static void viaChooseFogState(GLcontext *ctx)
-{
- struct via_context *vmesa = VIA_CONTEXT(ctx);
-
- if (ctx->Fog.Enabled) {
- GLubyte r, g, b, a;
-
- vmesa->regEnable |= HC_HenFOG_MASK;
-
- /* Use fog equation 0 (OpenGL's default) & local fog.
- */
- vmesa->regHFogLF = 0x0;
-
- r = (GLubyte)(ctx->Fog.Color[0] * 255.0F);
- g = (GLubyte)(ctx->Fog.Color[1] * 255.0F);
- b = (GLubyte)(ctx->Fog.Color[2] * 255.0F);
- a = (GLubyte)(ctx->Fog.Color[3] * 255.0F);
- vmesa->regHFogCL = (r << 16) | (g << 8) | b;
- vmesa->regHFogCH = a;
- }
- else {
- vmesa->regEnable &= ~HC_HenFOG_MASK;
- }
-}
-
-static void viaChooseDepthState(GLcontext *ctx)
-{
- struct via_context *vmesa = VIA_CONTEXT(ctx);
- if (ctx->Depth.Test) {
- vmesa->regEnable |= HC_HenZT_MASK;
- if (ctx->Depth.Mask)
- vmesa->regEnable |= HC_HenZW_MASK;
- else
- vmesa->regEnable &= (~HC_HenZW_MASK);
- vmesa->regHZWTMD = (ctx->Depth.Func - GL_NEVER) << 16;
-
- }
- else {
- vmesa->regEnable &= ~HC_HenZT_MASK;
-
- /*=* [DBG] racer : can't display cars in car selection menu *=*/
- /*if (ctx->Depth.Mask)
- vmesa->regEnable |= HC_HenZW_MASK;
- else
- vmesa->regEnable &= (~HC_HenZW_MASK);*/
- vmesa->regEnable &= (~HC_HenZW_MASK);
- }
-}
-
-static void viaChooseLineState(GLcontext *ctx)
-{
- struct via_context *vmesa = VIA_CONTEXT(ctx);
-
- if (ctx->Line.StippleFlag) {
- vmesa->regEnable |= HC_HenLP_MASK;
- vmesa->regHLP = ctx->Line.StipplePattern;
- vmesa->regHLPRF = ctx->Line.StippleFactor;
- }
- else {
- vmesa->regEnable &= ~HC_HenLP_MASK;
- }
-}
-
-static void viaChoosePolygonState(GLcontext *ctx)
-{
- struct via_context *vmesa = VIA_CONTEXT(ctx);
-
-#if 0
- /* Polygon stipple is broken - see via_state.c
- */
- if (ctx->Polygon.StippleFlag) {
- vmesa->regEnable |= HC_HenSP_MASK;
- }
- else {
- vmesa->regEnable &= ~HC_HenSP_MASK;
- }
-#else
- FALLBACK(vmesa, VIA_FALLBACK_POLY_STIPPLE,
- ctx->Polygon.StippleFlag);
-#endif
-
- if (ctx->Polygon.CullFlag) {
- vmesa->regEnable |= HC_HenFBCull_MASK;
- }
- else {
- vmesa->regEnable &= ~HC_HenFBCull_MASK;
- }
-}
-
-static void viaChooseStencilState(GLcontext *ctx)
-{
- struct via_context *vmesa = VIA_CONTEXT(ctx);
-
- if (ctx->Stencil.Enabled) {
- GLuint temp;
-
- vmesa->regEnable |= HC_HenST_MASK;
- temp = (ctx->Stencil.Ref[0] & 0xFF) << HC_HSTREF_SHIFT;
- temp |= 0xFF << HC_HSTOPMSK_SHIFT;
- temp |= (ctx->Stencil.ValueMask[0] & 0xFF);
- vmesa->regHSTREF = temp;
-
- temp = (ctx->Stencil.Function[0] - GL_NEVER) << 16;
-
- switch (ctx->Stencil.FailFunc[0]) {
- case GL_KEEP:
- temp |= HC_HSTOPSF_KEEP;
- break;
- case GL_ZERO:
- temp |= HC_HSTOPSF_ZERO;
- break;
- case GL_REPLACE:
- temp |= HC_HSTOPSF_REPLACE;
- break;
- case GL_INVERT:
- temp |= HC_HSTOPSF_INVERT;
- break;
- case GL_INCR:
- temp |= HC_HSTOPSF_INCR;
- break;
- case GL_DECR:
- temp |= HC_HSTOPSF_DECR;
- break;
- }
-
- switch (ctx->Stencil.ZFailFunc[0]) {
- case GL_KEEP:
- temp |= HC_HSTOPSPZF_KEEP;
- break;
- case GL_ZERO:
- temp |= HC_HSTOPSPZF_ZERO;
- break;
- case GL_REPLACE:
- temp |= HC_HSTOPSPZF_REPLACE;
- break;
- case GL_INVERT:
- temp |= HC_HSTOPSPZF_INVERT;
- break;
- case GL_INCR:
- temp |= HC_HSTOPSPZF_INCR;
- break;
- case GL_DECR:
- temp |= HC_HSTOPSPZF_DECR;
- break;
- }
-
- switch (ctx->Stencil.ZPassFunc[0]) {
- case GL_KEEP:
- temp |= HC_HSTOPSPZP_KEEP;
- break;
- case GL_ZERO:
- temp |= HC_HSTOPSPZP_ZERO;
- break;
- case GL_REPLACE:
- temp |= HC_HSTOPSPZP_REPLACE;
- break;
- case GL_INVERT:
- temp |= HC_HSTOPSPZP_INVERT;
- break;
- case GL_INCR:
- temp |= HC_HSTOPSPZP_INCR;
- break;
- case GL_DECR:
- temp |= HC_HSTOPSPZP_DECR;
- break;
- }
- vmesa->regHSTMD = temp;
- }
- else {
- vmesa->regEnable &= ~HC_HenST_MASK;
- }
-}
-
-
-
-static void viaChooseTriangle(GLcontext *ctx)
-{
- struct via_context *vmesa = VIA_CONTEXT(ctx);
-
- if (ctx->Polygon.CullFlag == GL_TRUE) {
- switch (ctx->Polygon.CullFaceMode) {
- case GL_FRONT:
- if (ctx->Polygon.FrontFace == GL_CCW)
- vmesa->regCmdB |= HC_HBFace_MASK;
- else
- vmesa->regCmdB &= ~HC_HBFace_MASK;
- break;
- case GL_BACK:
- if (ctx->Polygon.FrontFace == GL_CW)
- vmesa->regCmdB |= HC_HBFace_MASK;
- else
- vmesa->regCmdB &= ~HC_HBFace_MASK;
- break;
- case GL_FRONT_AND_BACK:
- return;
- }
- }
-}
-
-void viaValidateState( GLcontext *ctx )
-{
- struct via_context *vmesa = VIA_CONTEXT(ctx);
-
- if (vmesa->newState & _NEW_TEXTURE) {
- GLboolean ok = (viaChooseTextureState(ctx) &&
- viaUpdateTextureState(ctx));
-
- FALLBACK(vmesa, VIA_FALLBACK_TEXTURE, !ok);
- }
-
- if (vmesa->newState & _NEW_COLOR)
- viaChooseColorState(ctx);
-
- if (vmesa->newState & _NEW_DEPTH)
- viaChooseDepthState(ctx);
-
- if (vmesa->newState & _NEW_FOG)
- viaChooseFogState(ctx);
-
- if (vmesa->newState & _NEW_LINE)
- viaChooseLineState(ctx);
-
- if (vmesa->newState & (_NEW_POLYGON | _NEW_POLYGONSTIPPLE)) {
- viaChoosePolygonState(ctx);
- viaChooseTriangle(ctx);
- }
-
- if ((vmesa->newState & _NEW_STENCIL) && vmesa->have_hw_stencil)
- viaChooseStencilState(ctx);
-
- if (ctx->_TriangleCaps & DD_SEPARATE_SPECULAR)
- vmesa->regEnable |= HC_HenCS_MASK;
- else
- vmesa->regEnable &= ~HC_HenCS_MASK;
-
- if (ctx->Point.SmoothFlag ||
- ctx->Line.SmoothFlag ||
- ctx->Polygon.SmoothFlag)
- vmesa->regEnable |= HC_HenAA_MASK;
- else
- vmesa->regEnable &= ~HC_HenAA_MASK;
-
- vmesa->newEmitState |= vmesa->newState;
- vmesa->newState = 0;
-}
-
-static void viaInvalidateState(GLcontext *ctx, GLuint newState)
-{
- struct via_context *vmesa = VIA_CONTEXT(ctx);
-
- VIA_FINISH_PRIM( vmesa );
- vmesa->newState |= newState;
-
- _swrast_InvalidateState(ctx, newState);
- _swsetup_InvalidateState(ctx, newState);
- _ac_InvalidateState(ctx, newState);
- _tnl_InvalidateState(ctx, newState);
-}
-
-void viaInitStateFuncs(GLcontext *ctx)
-{
- /* Callbacks for internal Mesa events.
- */
- ctx->Driver.UpdateState = viaInvalidateState;
-
- /* API callbacks
- */
- ctx->Driver.BlendEquationSeparate = viaBlendEquationSeparate;
- ctx->Driver.BlendFuncSeparate = viaBlendFuncSeparate;
- ctx->Driver.ClearColor = viaClearColor;
- ctx->Driver.ColorMask = viaColorMask;
- ctx->Driver.DrawBuffer = viaDrawBuffer;
- ctx->Driver.RenderMode = viaRenderMode;
- ctx->Driver.Scissor = viaScissor;
- ctx->Driver.DepthRange = viaDepthRange;
- ctx->Driver.Viewport = viaViewport;
- ctx->Driver.Enable = viaEnable;
-
- /* Pixel path fallbacks.
- */
- ctx->Driver.Accum = _swrast_Accum;
- ctx->Driver.Bitmap = _swrast_Bitmap;
- ctx->Driver.CopyPixels = _swrast_CopyPixels;
- ctx->Driver.DrawPixels = _swrast_DrawPixels;
- ctx->Driver.ReadPixels = _swrast_ReadPixels;
- ctx->Driver.ResizeBuffers = viaReAllocateBuffers;
-
- /* Swrast hooks for imaging extensions:
- */
- ctx->Driver.CopyColorTable = _swrast_CopyColorTable;
- ctx->Driver.CopyColorSubTable = _swrast_CopyColorSubTable;
- ctx->Driver.CopyConvolutionFilter1D = _swrast_CopyConvolutionFilter1D;
- ctx->Driver.CopyConvolutionFilter2D = _swrast_CopyConvolutionFilter2D;
-}
diff --git a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_state.h b/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_state.h
deleted file mode 100644
index 065ec57d3..000000000
--- a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_state.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved.
- * Copyright 2001-2003 S3 Graphics, Inc. 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
- * VIA, S3 GRAPHICS, 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.
- */
-
-#ifndef _VIA_STATE_H
-#define _VIA_STATE_H
-
-#include "via_context.h"
-
-extern void viaInitState(GLcontext *ctx);
-extern void viaInitStateFuncs(GLcontext *ctx);
-extern void viaCalcViewport(GLcontext *ctx);
-extern void viaValidateState(GLcontext *ctx);
-extern void viaEmitState(struct via_context *vmesa);
-
-extern void viaFallback(struct via_context *vmesa, GLuint bit, GLboolean mode);
-#define FALLBACK(vmesa, bit, mode) viaFallback(vmesa, bit, mode)
-
-#endif
diff --git a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_tex.c b/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_tex.c
deleted file mode 100644
index c308339f2..000000000
--- a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_tex.c
+++ /dev/null
@@ -1,970 +0,0 @@
-/*
- * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved.
- * Copyright 2001-2003 S3 Graphics, Inc. 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
- * VIA, S3 GRAPHICS, 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.
- */
-
-
-#include <stdlib.h>
-#include <stdio.h>
-
-#include "glheader.h"
-#include "macros.h"
-#include "mtypes.h"
-#include "enums.h"
-#include "colortab.h"
-#include "convolve.h"
-#include "context.h"
-#include "simple_list.h"
-#include "texcompress.h"
-#include "texformat.h"
-#include "texobj.h"
-#include "texstore.h"
-
-#include "mm.h"
-#include "via_context.h"
-#include "via_fb.h"
-#include "via_tex.h"
-#include "via_state.h"
-#include "via_ioctl.h"
-#include "via_3d_reg.h"
-
-static const struct gl_texture_format *
-viaChooseTexFormat( GLcontext *ctx, GLint internalFormat,
- GLenum format, GLenum type )
-{
- struct via_context *vmesa = VIA_CONTEXT(ctx);
- const GLboolean do32bpt = ( vmesa->viaScreen->bitsPerPixel == 32
-/* && vmesa->viaScreen->textureSize > 4*1024*1024 */
- );
-
-
- switch ( internalFormat ) {
- case 4:
- case GL_RGBA:
- case GL_COMPRESSED_RGBA:
- if ( format == GL_BGRA ) {
- if ( type == GL_UNSIGNED_INT_8_8_8_8_REV ||
- type == GL_UNSIGNED_BYTE ) {
- return &_mesa_texformat_argb8888;
- }
- else if ( type == GL_UNSIGNED_SHORT_4_4_4_4_REV ) {
- return &_mesa_texformat_argb4444;
- }
- else if ( type == GL_UNSIGNED_SHORT_1_5_5_5_REV ) {
- return &_mesa_texformat_argb1555;
- }
- }
- else if ( type == GL_UNSIGNED_BYTE ||
- type == GL_UNSIGNED_INT_8_8_8_8_REV ||
- type == GL_UNSIGNED_INT_8_8_8_8 ) {
- return &_mesa_texformat_argb8888;
- }
- return do32bpt ? &_mesa_texformat_argb8888 : &_mesa_texformat_argb4444;
-
- case 3:
- case GL_RGB:
- case GL_COMPRESSED_RGB:
- if ( format == GL_RGB && type == GL_UNSIGNED_SHORT_5_6_5 ) {
- return &_mesa_texformat_rgb565;
- }
- else if ( type == GL_UNSIGNED_BYTE ) {
- return &_mesa_texformat_argb8888;
- }
- return do32bpt ? &_mesa_texformat_argb8888 : &_mesa_texformat_rgb565;
-
- case GL_RGBA8:
- case GL_RGB10_A2:
- case GL_RGBA12:
- case GL_RGBA16:
- return &_mesa_texformat_argb8888;
-
- case GL_RGBA4:
- case GL_RGBA2:
- return &_mesa_texformat_argb4444;
-
- case GL_RGB5_A1:
- return &_mesa_texformat_argb1555;
-
- case GL_RGB8:
- case GL_RGB10:
- case GL_RGB12:
- case GL_RGB16:
- return &_mesa_texformat_argb8888;
-
- case GL_RGB5:
- case GL_RGB4:
- case GL_R3_G3_B2:
- return &_mesa_texformat_rgb565;
-
- case GL_ALPHA:
- case GL_ALPHA4:
- case GL_ALPHA8:
- case GL_ALPHA12:
- case GL_ALPHA16:
- case GL_COMPRESSED_ALPHA:
- return &_mesa_texformat_a8;
-
- case 1:
- case GL_LUMINANCE:
- case GL_LUMINANCE4:
- case GL_LUMINANCE8:
- case GL_LUMINANCE12:
- case GL_LUMINANCE16:
- case GL_COMPRESSED_LUMINANCE:
- return &_mesa_texformat_l8;
-
- case 2:
- case GL_LUMINANCE_ALPHA:
- case GL_LUMINANCE4_ALPHA4:
- case GL_LUMINANCE6_ALPHA2:
- case GL_LUMINANCE8_ALPHA8:
- case GL_LUMINANCE12_ALPHA4:
- case GL_LUMINANCE12_ALPHA12:
- case GL_LUMINANCE16_ALPHA16:
- case GL_COMPRESSED_LUMINANCE_ALPHA:
- return &_mesa_texformat_al88;
-
- case GL_INTENSITY:
- case GL_INTENSITY4:
- case GL_INTENSITY8:
- case GL_INTENSITY12:
- case GL_INTENSITY16:
- case GL_COMPRESSED_INTENSITY:
- return &_mesa_texformat_i8;
-
- case GL_YCBCR_MESA:
- if (type == GL_UNSIGNED_SHORT_8_8_MESA ||
- type == GL_UNSIGNED_BYTE)
- return &_mesa_texformat_ycbcr;
- else
- return &_mesa_texformat_ycbcr_rev;
-
- case GL_COMPRESSED_RGB_FXT1_3DFX:
- return &_mesa_texformat_rgb_fxt1;
- case GL_COMPRESSED_RGBA_FXT1_3DFX:
- return &_mesa_texformat_rgba_fxt1;
-
- case GL_RGB_S3TC:
- case GL_RGB4_S3TC:
- case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
- return &_mesa_texformat_rgb_dxt1;
-
- case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
- return &_mesa_texformat_rgba_dxt1;
-
- case GL_RGBA_S3TC:
- case GL_RGBA4_S3TC:
- case GL_COMPRESSED_RGBA_S3TC_DXT3_EXT:
- return &_mesa_texformat_rgba_dxt3;
-
- case GL_COMPRESSED_RGBA_S3TC_DXT5_EXT:
- return &_mesa_texformat_rgba_dxt5;
-
- case GL_COLOR_INDEX:
- case GL_COLOR_INDEX1_EXT:
- case GL_COLOR_INDEX2_EXT:
- case GL_COLOR_INDEX4_EXT:
- case GL_COLOR_INDEX8_EXT:
- case GL_COLOR_INDEX12_EXT:
- case GL_COLOR_INDEX16_EXT:
- return &_mesa_texformat_ci8;
-
- default:
- fprintf(stderr, "unexpected texture format %s in %s\n",
- _mesa_lookup_enum_by_nr(internalFormat),
- __FUNCTION__);
- return NULL;
- }
-
- return NULL; /* never get here */
-}
-
-static int logbase2(int n)
-{
- GLint i = 1;
- GLint log2 = 0;
-
- while (n > i) {
- i *= 2;
- log2++;
- }
-
- return log2;
-}
-
-static const char *get_memtype_name( GLint memType )
-{
- static const char *names[] = {
- "VIA_MEM_VIDEO",
- "VIA_MEM_AGP",
- "VIA_MEM_SYSTEM",
- "VIA_MEM_MIXED",
- "VIA_MEM_UNKNOWN"
- };
-
- return names[memType];
-}
-
-
-static GLboolean viaMoveTexBuffers( struct via_context *vmesa,
- struct via_tex_buffer **buffers,
- GLuint nr,
- GLint newMemType )
-{
- struct via_tex_buffer *newTexBuf[VIA_MAX_TEXLEVELS];
- GLint i;
-
- if (VIA_DEBUG & DEBUG_TEXTURE)
- fprintf(stderr, "%s to %s\n",
- __FUNCTION__,
- get_memtype_name(newMemType));
-
- memset(newTexBuf, 0, sizeof(newTexBuf));
-
- /* First do all the allocations (or fail):
- */
- for (i = 0; i < nr; i++) {
- if (buffers[i]->memType != newMemType) {
-
- /* Don't allow uploads in a thrash state. Should try and
- * catch this earlier.
- */
- if (vmesa->thrashing && newMemType != VIA_MEM_SYSTEM)
- goto cleanup;
-
- newTexBuf[i] = via_alloc_texture(vmesa,
- buffers[i]->size,
- newMemType);
- if (!newTexBuf[i])
- goto cleanup;
- }
- }
-
-
- /* Now copy all the image data and free the old texture memory.
- */
- for (i = 0; i < nr; i++) {
- if (newTexBuf[i]) {
- memcpy(newTexBuf[i]->bufAddr,
- buffers[i]->bufAddr,
- buffers[i]->size);
-
- newTexBuf[i]->image = buffers[i]->image;
- newTexBuf[i]->image->texMem = newTexBuf[i];
- newTexBuf[i]->image->image.Data = newTexBuf[i]->bufAddr;
- via_free_texture(vmesa, buffers[i]);
- }
- }
-
- if (VIA_DEBUG & DEBUG_TEXTURE)
- fprintf(stderr, "%s - success\n", __FUNCTION__);
-
- return GL_TRUE;
-
- cleanup:
- /* Release any allocations made prior to failure:
- */
- if (VIA_DEBUG & DEBUG_TEXTURE)
- fprintf(stderr, "%s - failed\n", __FUNCTION__);
-
- for (i = 0; i < nr; i++) {
- if (newTexBuf[i]) {
- via_free_texture(vmesa, newTexBuf[i]);
- }
- }
-
- return GL_FALSE;
-}
-
-
-static GLboolean viaMoveTexObject( struct via_context *vmesa,
- struct via_texture_object *viaObj,
- GLint newMemType )
-{
- struct via_texture_image **viaImage =
- (struct via_texture_image **)&viaObj->obj.Image[0][0];
- struct via_tex_buffer *buffers[VIA_MAX_TEXLEVELS];
- GLuint i, nr = 0;
-
- for (i = viaObj->firstLevel; i <= viaObj->lastLevel; i++)
- buffers[nr++] = viaImage[i]->texMem;
-
- if (viaMoveTexBuffers( vmesa, &buffers[0], nr, newMemType )) {
- viaObj->memType = newMemType;
- return GL_TRUE;
- }
-
- return GL_FALSE;
-}
-
-
-
-static GLboolean viaSwapInTexObject( struct via_context *vmesa,
- struct via_texture_object *viaObj )
-{
- const struct via_texture_image *baseImage =
- (struct via_texture_image *)viaObj->obj.Image[0][viaObj->obj.BaseLevel];
-
- if (VIA_DEBUG & DEBUG_TEXTURE)
- fprintf(stderr, "%s\n", __FUNCTION__);
-
- if (baseImage->texMem->memType != VIA_MEM_SYSTEM)
- return viaMoveTexObject( vmesa, viaObj, baseImage->texMem->memType );
-
- return (viaMoveTexObject( vmesa, viaObj, VIA_MEM_AGP ) ||
- viaMoveTexObject( vmesa, viaObj, VIA_MEM_VIDEO ));
-}
-
-
-/* This seems crude, but it asks a fairly pertinent question and gives
- * an accurate answer:
- */
-static GLboolean viaIsTexMemLow( struct via_context *vmesa,
- GLuint heap )
-{
- struct via_tex_buffer *buf = via_alloc_texture(vmesa, 512 * 1024, heap );
- if (!buf)
- return GL_TRUE;
-
- via_free_texture(vmesa, buf);
- return GL_FALSE;
-}
-
-
-/* Speculatively move texture images which haven't been used in a
- * while back to system memory.
- *
- * TODO: only do this when texture memory is low.
- *
- * TODO: use dma.
- *
- * TODO: keep the fb/agp version hanging around and use the local
- * version as backing store, so re-upload might be avoided.
- *
- * TODO: do this properly in the kernel...
- */
-GLboolean viaSwapOutWork( struct via_context *vmesa )
-{
- struct via_tex_buffer *s, *tmp;
- GLuint done = 0;
- GLuint heap, target;
-
- if (VIA_DEBUG & DEBUG_TEXTURE)
- fprintf(stderr, "%s VID %d AGP %d SYS %d\n", __FUNCTION__,
- vmesa->total_alloc[VIA_MEM_VIDEO],
- vmesa->total_alloc[VIA_MEM_AGP],
- vmesa->total_alloc[VIA_MEM_SYSTEM]);
-
-
- for (heap = VIA_MEM_VIDEO; heap <= VIA_MEM_AGP; heap++) {
- GLuint nr = 0, sz = 0;
-
- if (vmesa->thrashing) {
- if (VIA_DEBUG & DEBUG_TEXTURE)
- fprintf(stderr, "Heap %d: trash flag\n", heap);
- target = 1*1024*1024;
- }
- else if (viaIsTexMemLow(vmesa, heap)) {
- if (VIA_DEBUG & DEBUG_TEXTURE)
- fprintf(stderr, "Heap %d: low memory\n", heap);
- target = 64*1024;
- }
- else {
- if (VIA_DEBUG & DEBUG_TEXTURE)
- fprintf(stderr, "Heap %d: nothing to do\n", heap);
- continue;
- }
-
- foreach_s( s, tmp, &vmesa->tex_image_list[heap] ) {
- if (s->lastUsed < vmesa->lastSwap[1]) {
- struct via_texture_object *viaObj =
- (struct via_texture_object *) s->image->image.TexObject;
-
- if (VIA_DEBUG & DEBUG_TEXTURE)
- fprintf(stderr,
- "back copy tex sz %d, lastUsed %d lastSwap %d\n",
- s->size, s->lastUsed, vmesa->lastSwap[1]);
-
- if (viaMoveTexBuffers( vmesa, &s, 1, VIA_MEM_SYSTEM )) {
- viaObj->memType = VIA_MEM_MIXED;
- done += s->size;
- }
- else {
- if (VIA_DEBUG & DEBUG_TEXTURE)
- fprintf(stderr, "Failed to back copy texture!\n");
- sz += s->size;
- }
- }
- else {
- nr ++;
- sz += s->size;
- }
-
- if (done > target) {
- vmesa->thrashing = GL_FALSE; /* might not get set otherwise? */
- return GL_TRUE;
- }
- }
-
- assert(sz == vmesa->total_alloc[heap]);
-
- if (VIA_DEBUG & DEBUG_TEXTURE)
- fprintf(stderr, "Heap %d: nr %d tot sz %d\n", heap, nr, sz);
- }
-
-
- return done != 0;
-}
-
-
-
-/* Basically, just collect the image dimensions and addresses for each
- * image and update the texture object state accordingly.
- */
-static GLboolean viaSetTexImages(GLcontext *ctx,
- struct gl_texture_object *texObj)
-{
- struct via_context *vmesa = VIA_CONTEXT(ctx);
- struct via_texture_object *viaObj = (struct via_texture_object *)texObj;
- const struct via_texture_image *baseImage =
- (struct via_texture_image *)texObj->Image[0][texObj->BaseLevel];
- GLint firstLevel, lastLevel, numLevels;
- GLuint texFormat;
- GLint w, h, p;
- GLint i, j = 0, k = 0, l = 0, m = 0;
- GLuint texBase;
- GLuint basH = 0;
- GLuint widthExp = 0;
- GLuint heightExp = 0;
-
- switch (baseImage->image.TexFormat->MesaFormat) {
- case MESA_FORMAT_ARGB8888:
- texFormat = HC_HTXnFM_ARGB8888;
- break;
- case MESA_FORMAT_ARGB4444:
- texFormat = HC_HTXnFM_ARGB4444;
- break;
- case MESA_FORMAT_RGB565:
- texFormat = HC_HTXnFM_RGB565;
- break;
- case MESA_FORMAT_ARGB1555:
- texFormat = HC_HTXnFM_ARGB1555;
- break;
- case MESA_FORMAT_RGB888:
- texFormat = HC_HTXnFM_ARGB0888;
- break;
- case MESA_FORMAT_L8:
- texFormat = HC_HTXnFM_L8;
- break;
- case MESA_FORMAT_I8:
- texFormat = HC_HTXnFM_T8;
- break;
- case MESA_FORMAT_CI8:
- texFormat = HC_HTXnFM_Index8;
- break;
- case MESA_FORMAT_AL88:
- texFormat = HC_HTXnFM_AL88;
- break;
- case MESA_FORMAT_A8:
- texFormat = HC_HTXnFM_A8;
- break;
- default:
- _mesa_problem(vmesa->glCtx, "Bad texture format in viaSetTexImages");
- return GL_FALSE;
- }
-
- /* 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 (texObj->MinFilter == GL_LINEAR || texObj->MinFilter == GL_NEAREST) {
- firstLevel = lastLevel = texObj->BaseLevel;
- }
- else {
- firstLevel = texObj->BaseLevel + (GLint)(texObj->MinLod + 0.5);
- firstLevel = MAX2(firstLevel, texObj->BaseLevel);
- lastLevel = texObj->BaseLevel + (GLint)(texObj->MaxLod + 0.5);
- lastLevel = MAX2(lastLevel, texObj->BaseLevel);
- lastLevel = MIN2(lastLevel, texObj->BaseLevel + baseImage->image.MaxLog2);
- lastLevel = MIN2(lastLevel, texObj->MaxLevel);
- lastLevel = MAX2(firstLevel, lastLevel); /* need at least one level */
- }
-
- numLevels = lastLevel - firstLevel + 1;
-
- /* save these values, check if they effect the residency of the
- * texture:
- */
- if (viaObj->firstLevel != firstLevel ||
- viaObj->lastLevel != lastLevel) {
- viaObj->firstLevel = firstLevel;
- viaObj->lastLevel = lastLevel;
- viaObj->memType = VIA_MEM_MIXED;
- }
-
- if (VIA_DEBUG & DEBUG_TEXTURE & 0)
- fprintf(stderr, "%s, current memType: %s\n",
- __FUNCTION__,
- get_memtype_name(viaObj->memType));
-
-
- if (viaObj->memType == VIA_MEM_MIXED ||
- viaObj->memType == VIA_MEM_SYSTEM) {
- if (!viaSwapInTexObject(vmesa, viaObj)) {
- if (VIA_DEBUG & DEBUG_TEXTURE)
- if (!vmesa->thrashing)
- fprintf(stderr, "Thrashing flag set for frame %d\n",
- vmesa->swap_count);
- vmesa->thrashing = GL_TRUE;
- return GL_FALSE;
- }
- }
-
- if (viaObj->memType == VIA_MEM_AGP)
- viaObj->regTexFM = (HC_SubA_HTXnFM << 24) | HC_HTXnLoc_AGP | texFormat;
- else
- viaObj->regTexFM = (HC_SubA_HTXnFM << 24) | HC_HTXnLoc_Local | texFormat;
-
-
- for (i = 0; i < numLevels; i++) {
- struct via_texture_image *viaImage =
- (struct via_texture_image *)texObj->Image[0][firstLevel + i];
-
- w = viaImage->image.WidthLog2;
- h = viaImage->image.HeightLog2;
- p = viaImage->pitchLog2;
-
- assert(viaImage->texMem->memType == viaObj->memType);
-
- texBase = viaImage->texMem->texBase;
- if (!texBase) {
- if (VIA_DEBUG & DEBUG_TEXTURE)
- fprintf(stderr, "%s: no texBase[%d]\n", __FUNCTION__, i);
- return GL_FALSE;
- }
-
- /* Image has to remain resident until the coming fence is retired.
- */
- move_to_head( &vmesa->tex_image_list[viaImage->texMem->memType],
- viaImage->texMem );
- viaImage->texMem->lastUsed = vmesa->lastBreadcrumbWrite;
-
-
- viaObj->regTexBaseAndPitch[i].baseL =
- ((HC_SubA_HTXnL0BasL + i) << 24) | (texBase & 0xFFFFFF);
-
- viaObj->regTexBaseAndPitch[i].pitchLog2 =
- ((HC_SubA_HTXnL0Pit + i) << 24) | (p << 20);
-
-
- /* The base high bytes for each 3 levels are packed
- * together into one register:
- */
- j = i / 3;
- k = 3 - (i % 3);
- basH |= ((texBase & 0xFF000000) >> (k << 3));
- if (k == 1) {
- viaObj->regTexBaseH[j] = ((j + HC_SubA_HTXnL012BasH) << 24) | basH;
- basH = 0;
- }
-
- /* Likewise, sets of 6 log2width and log2height values are
- * packed into individual registers:
- */
- l = i / 6;
- m = i % 6;
- widthExp |= (((GLuint)w & 0xF) << (m << 2));
- heightExp |= (((GLuint)h & 0xF) << (m << 2));
- if (m == 5) {
- viaObj->regTexWidthLog2[l] =
- (l + HC_SubA_HTXnL0_5WE) << 24 | widthExp;
- viaObj->regTexHeightLog2[l] =
- (l + HC_SubA_HTXnL0_5HE) << 24 | heightExp;
- widthExp = 0;
- heightExp = 0;
- }
- if (w) w--;
- if (h) h--;
- if (p) p--;
- }
-
- if (k != 1) {
- viaObj->regTexBaseH[j] = ((j + HC_SubA_HTXnL012BasH) << 24) | basH;
- }
- if (m != 5) {
- viaObj->regTexWidthLog2[l] = (l + HC_SubA_HTXnL0_5WE) << 24 | widthExp;
- viaObj->regTexHeightLog2[l] = (l + HC_SubA_HTXnL0_5HE) << 24 | heightExp;
- }
-
- return GL_TRUE;
-}
-
-
-GLboolean viaUpdateTextureState( GLcontext *ctx )
-{
- struct gl_texture_unit *texUnit = ctx->Texture.Unit;
- GLuint i;
-
- for (i = 0; i < 2; i++) {
- if (texUnit[i]._ReallyEnabled == TEXTURE_2D_BIT ||
- texUnit[i]._ReallyEnabled == TEXTURE_1D_BIT) {
-
- if (!viaSetTexImages(ctx, texUnit[i]._Current))
- return GL_FALSE;
- }
- else if (texUnit[i]._ReallyEnabled) {
- return GL_FALSE;
- }
- }
-
- return GL_TRUE;
-}
-
-
-
-
-
-
-
-
-static void viaTexImage(GLcontext *ctx,
- GLint dims,
- GLenum target, GLint level,
- GLint internalFormat,
- GLint width, GLint height, GLint border,
- GLenum format, GLenum type, const void *pixels,
- const struct gl_pixelstore_attrib *packing,
- struct gl_texture_object *texObj,
- struct gl_texture_image *texImage)
-{
- struct via_context *vmesa = VIA_CONTEXT(ctx);
- GLint postConvWidth = width;
- GLint postConvHeight = height;
- GLint texelBytes, sizeInBytes;
- struct via_texture_object *viaObj = (struct via_texture_object *)texObj;
- struct via_texture_image *viaImage = (struct via_texture_image *)texImage;
- int heaps[3], nheaps, i;
-
- if (!is_empty_list(&vmesa->freed_tex_buffers)) {
- viaCheckBreadcrumb(vmesa, 0);
- via_release_pending_textures(vmesa);
- }
-
- if (ctx->_ImageTransferState & IMAGE_CONVOLUTION_BIT) {
- _mesa_adjust_image_for_convolution(ctx, dims, &postConvWidth,
- &postConvHeight);
- }
-
- /* choose the texture format */
- texImage->TexFormat = viaChooseTexFormat(ctx, internalFormat,
- format, type);
-
- assert(texImage->TexFormat);
-
- if (dims == 1) {
- texImage->FetchTexelc = texImage->TexFormat->FetchTexel1D;
- texImage->FetchTexelf = texImage->TexFormat->FetchTexel1Df;
- }
- else {
- texImage->FetchTexelc = texImage->TexFormat->FetchTexel2D;
- texImage->FetchTexelf = texImage->TexFormat->FetchTexel2Df;
- }
- texelBytes = texImage->TexFormat->TexelBytes;
-
-
- /* Minimum pitch of 32 bytes */
- if (postConvWidth * texelBytes < 32) {
- postConvWidth = 32 / texelBytes;
- texImage->RowStride = postConvWidth;
- }
-
- assert(texImage->RowStride == postConvWidth);
- viaImage->pitchLog2 = logbase2(postConvWidth * texelBytes);
-
- /* allocate memory */
- if (texImage->IsCompressed)
- sizeInBytes = texImage->CompressedSize;
- else
- sizeInBytes = postConvWidth * postConvHeight * texelBytes;
-
-
- /* Attempt to allocate texture memory directly, otherwise use main
- * memory and this texture will always be a fallback. FIXME!
- *
- * TODO: make room in agp if this fails.
- * TODO: use fb ram for textures as well.
- */
-
-
- switch (viaObj->memType) {
- case VIA_MEM_UNKNOWN:
- heaps[0] = VIA_MEM_AGP;
- heaps[1] = VIA_MEM_VIDEO;
- heaps[2] = VIA_MEM_SYSTEM;
- nheaps = 3;
- break;
- case VIA_MEM_AGP:
- case VIA_MEM_VIDEO:
- heaps[0] = viaObj->memType;
- heaps[1] = VIA_MEM_SYSTEM;
- nheaps = 2;
- break;
- case VIA_MEM_MIXED:
- case VIA_MEM_SYSTEM:
- default:
- heaps[0] = VIA_MEM_SYSTEM;
- nheaps = 1;
- break;
- }
-
- for (i = 0; i < nheaps && !viaImage->texMem; i++) {
- if (VIA_DEBUG & DEBUG_TEXTURE)
- fprintf(stderr, "try %s (obj %s)\n", get_memtype_name(heaps[i]),
- get_memtype_name(viaObj->memType));
- viaImage->texMem = via_alloc_texture(vmesa, sizeInBytes, heaps[i]);
- }
-
- if (!viaImage->texMem) {
- _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage");
- return;
- }
-
- if (VIA_DEBUG & DEBUG_TEXTURE)
- fprintf(stderr, "upload %d bytes to %s\n", sizeInBytes,
- get_memtype_name(viaImage->texMem->memType));
-
- viaImage->texMem->image = viaImage;
- texImage->Data = viaImage->texMem->bufAddr;
-
- if (viaObj->memType == VIA_MEM_UNKNOWN)
- viaObj->memType = viaImage->texMem->memType;
- else if (viaObj->memType != viaImage->texMem->memType)
- viaObj->memType = VIA_MEM_MIXED;
-
- if (VIA_DEBUG & DEBUG_TEXTURE)
- fprintf(stderr, "%s, obj %s, image : %s\n",
- __FUNCTION__,
- get_memtype_name(viaObj->memType),
- get_memtype_name(viaImage->texMem->memType));
-
- vmesa->clearTexCache = 1;
-
- pixels = _mesa_validate_pbo_teximage(ctx, dims, width, height, 1,
- format, type,
- pixels, packing, "glTexImage");
- if (!pixels) {
- /* Note: we check for a NULL image pointer here, _after_ we allocated
- * memory for the texture. That's what the GL spec calls for.
- */
- return;
- }
- else {
- GLint dstRowStride, dstImageStride = 0;
- GLboolean success;
- if (texImage->IsCompressed) {
- dstRowStride = _mesa_compressed_row_stride(texImage->IntFormat,width);
- }
- else {
- dstRowStride = postConvWidth * texImage->TexFormat->TexelBytes;
- }
- ASSERT(texImage->TexFormat->StoreImage);
- success = texImage->TexFormat->StoreImage(ctx, dims, texImage->Format,
- texImage->TexFormat,
- texImage->Data,
- 0, 0, 0, /* dstX/Y/Zoffset */
- dstRowStride, dstImageStride,
- width, height, 1,
- format, type, pixels, packing);
- if (!success) {
- _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage");
- }
- }
-
- /* GL_SGIS_generate_mipmap */
- if (level == texObj->BaseLevel && texObj->GenerateMipmap) {
- _mesa_generate_mipmap(ctx, target,
- &ctx->Texture.Unit[ctx->Texture.CurrentUnit],
- texObj);
- }
-
- _mesa_unmap_teximage_pbo(ctx, packing);
-}
-
-static void viaTexImage2D(GLcontext *ctx,
- GLenum target, GLint level,
- GLint internalFormat,
- GLint width, GLint height, GLint border,
- GLenum format, GLenum type, const void *pixels,
- const struct gl_pixelstore_attrib *packing,
- struct gl_texture_object *texObj,
- struct gl_texture_image *texImage)
-{
- viaTexImage( ctx, 2, target, level,
- internalFormat, width, height, border,
- format, type, pixels,
- packing, texObj, texImage );
-}
-
-static void viaTexSubImage2D(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)
-{
- struct via_context *vmesa = VIA_CONTEXT(ctx);
-
- viaWaitIdle(vmesa, GL_TRUE);
- vmesa->clearTexCache = 1;
-
- _mesa_store_texsubimage2d(ctx, target, level, xoffset, yoffset, width,
- height, format, type, pixels, packing, texObj,
- texImage);
-}
-
-static void viaTexImage1D(GLcontext *ctx,
- GLenum target, GLint level,
- GLint internalFormat,
- GLint width, GLint border,
- GLenum format, GLenum type, const void *pixels,
- const struct gl_pixelstore_attrib *packing,
- struct gl_texture_object *texObj,
- struct gl_texture_image *texImage)
-{
- viaTexImage( ctx, 1, target, level,
- internalFormat, width, 1, border,
- format, type, pixels,
- packing, texObj, texImage );
-}
-
-static void viaTexSubImage1D(GLcontext *ctx,
- GLenum target,
- GLint level,
- GLint xoffset,
- GLsizei width,
- GLenum format, GLenum type,
- const GLvoid *pixels,
- const struct gl_pixelstore_attrib *packing,
- struct gl_texture_object *texObj,
- struct gl_texture_image *texImage)
-{
- struct via_context *vmesa = VIA_CONTEXT(ctx);
-
- viaWaitIdle(vmesa, GL_TRUE);
- vmesa->clearTexCache = 1;
-
- _mesa_store_texsubimage1d(ctx, target, level, xoffset, width,
- format, type, pixels, packing, texObj,
- texImage);
-}
-
-
-
-static GLboolean viaIsTextureResident(GLcontext *ctx,
- struct gl_texture_object *texObj)
-{
- struct via_texture_object *viaObj =
- (struct via_texture_object *)texObj;
-
- return (viaObj->memType == VIA_MEM_AGP ||
- viaObj->memType == VIA_MEM_VIDEO);
-}
-
-
-
-static struct gl_texture_image *viaNewTextureImage( GLcontext *ctx )
-{
- (void) ctx;
- return (struct gl_texture_image *)CALLOC_STRUCT(via_texture_image);
-}
-
-
-static struct gl_texture_object *viaNewTextureObject( GLcontext *ctx,
- GLuint name,
- GLenum target )
-{
- struct via_texture_object *obj = CALLOC_STRUCT(via_texture_object);
-
- _mesa_initialize_texture_object(&obj->obj, name, target);
- (void) ctx;
-
- obj->memType = VIA_MEM_UNKNOWN;
-
- return &obj->obj;
-}
-
-
-static void viaFreeTextureImageData( GLcontext *ctx,
- struct gl_texture_image *texImage )
-{
- struct via_context *vmesa = VIA_CONTEXT(ctx);
- struct via_texture_image *image = (struct via_texture_image *)texImage;
-
- if (image->texMem) {
- via_free_texture(vmesa, image->texMem);
- image->texMem = NULL;
- }
-
- texImage->Data = NULL;
-}
-
-
-
-
-void viaInitTextureFuncs(struct dd_function_table * functions)
-{
- functions->ChooseTextureFormat = viaChooseTexFormat;
- functions->TexImage1D = viaTexImage1D;
- functions->TexImage2D = viaTexImage2D;
- functions->TexSubImage1D = viaTexSubImage1D;
- functions->TexSubImage2D = viaTexSubImage2D;
-
- functions->NewTextureObject = viaNewTextureObject;
- functions->NewTextureImage = viaNewTextureImage;
- functions->DeleteTexture = _mesa_delete_texture_object;
- functions->FreeTexImageData = viaFreeTextureImageData;
-
-#if 0 && defined( USE_SSE_ASM )
- /*
- * XXX this code is disabled for now because the via_sse_memcpy()
- * routine causes segfaults with flightgear.
- * See Mesa3d-dev mail list messages from 7/15/2005 for details.
- * Note that this function is currently disabled in via_tris.c too.
- */
- if (getenv("VIA_NO_SSE"))
- functions->TextureMemCpy = _mesa_memcpy;
- else
- functions->TextureMemCpy = via_sse_memcpy;
-#else
- functions->TextureMemCpy = _mesa_memcpy;
-#endif
-
- functions->UpdateTexturePalette = 0;
- functions->IsTextureResident = viaIsTextureResident;
-}
-
-
diff --git a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_tex.h b/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_tex.h
deleted file mode 100644
index 73cfa91ad..000000000
--- a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_tex.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved.
- * Copyright 2001-2003 S3 Graphics, Inc. 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
- * VIA, S3 GRAPHICS, 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.
- */
-
-
-#ifndef _VIATEX_H
-#define _VIATEX_H
-
-#include "mtypes.h"
-
-struct via_context;
-
-GLboolean viaUpdateTextureState(GLcontext *ctx);
-void viaInitTextureFuncs(struct dd_function_table * functions);
-GLboolean viaSwapOutWork( struct via_context *vmesa );
-
-#if defined( USE_SSE_ASM )
-void via_sse_memcpy( void *to, const void *from, size_t sz );
-#endif /* defined( USE_SSE_ASM ) */
-
-#endif
diff --git a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_texcombine.c b/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_texcombine.c
deleted file mode 100644
index d604457bf..000000000
--- a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_texcombine.c
+++ /dev/null
@@ -1,424 +0,0 @@
-/*
- * (C) Copyright IBM Corporation 2004
- * 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
- * on 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
- * IBM AND/OR THEIR 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.
- */
-
-/**
- * \file via_texcombine.c
- * Calculate texture combine hardware state.
- *
- * \author Ian Romanick <idr@us.ibm.com>
- */
-
-#include <stdio.h>
-
-#include "glheader.h"
-#include "context.h"
-#include "macros.h"
-#include "colormac.h"
-#include "enums.h"
-
-#include "via_context.h"
-#include "via_state.h"
-#include "via_tex.h"
-#include "via_3d_reg.h"
-
-
-#define VIA_USE_ALPHA (HC_XTC_Adif - HC_XTC_Dif)
-
-#define INPUT_A_SHIFT 14
-#define INPUT_B_SHIFT 7
-#define INPUT_C_SHIFT 0
-#define INPUT_CBias_SHIFT 14
-
-#define CONST_ONE (HC_XTC_0 | HC_XTC_InvTOPC)
-
-static const unsigned color_operand_modifier[4] = {
- 0,
- HC_XTC_InvTOPC,
- VIA_USE_ALPHA,
- VIA_USE_ALPHA | HC_XTC_InvTOPC,
-};
-
-static const unsigned alpha_operand_modifier[2] = {
- 0, HC_XTA_InvTOPA
-};
-
-static const unsigned bias_alpha_operand_modifier[2] = {
- 0, HC_HTXnTBLAbias_Inv
-};
-
-
-static const unsigned c_shift_table[3] = {
- HC_HTXnTBLCshift_No, HC_HTXnTBLCshift_1, HC_HTXnTBLCshift_2
-};
-
-static const unsigned a_shift_table[3] = {
- HC_HTXnTBLAshift_No, HC_HTXnTBLAshift_1, HC_HTXnTBLAshift_2
-};
-
-
-/**
- * Calculate the hardware state for the specified texture combine mode
- *
- * \bug
- * All forms of DOT3 bumpmapping are completely untested, and are most
- * likely wrong. KW: Looks like it will never be quite right as the
- * hardware seems to experience overflow in color calculation at the
- * 4x shift levels, which need to be programed for DOT3. Maybe newer
- * hardware fixes these issues.
- *
- * \bug
- * KW: needs attention to the case where texunit 1 is enabled but
- * texunit 0 is not.
- */
-GLboolean
-viaTexCombineState( struct via_context *vmesa,
- const struct gl_tex_env_combine_state * combine,
- unsigned unit )
-{
- unsigned color_arg[3];
- unsigned alpha_arg[3];
- unsigned bias_alpha_arg[3];
- unsigned color = HC_HTXnTBLCsat_MASK;
- unsigned alpha = HC_HTXnTBLAsat_MASK;
- unsigned bias = 0;
- unsigned op = 0;
- unsigned a_shift = combine->ScaleShiftA;
- unsigned c_shift = combine->ScaleShiftRGB;
- unsigned i;
- unsigned constant_color[3];
- unsigned ordered_constant_color[4];
- unsigned constant_alpha[3];
- unsigned bias_alpha = 0;
- unsigned abc_alpha = 0;
- const struct gl_texture_unit * texUnit =
- &vmesa->glCtx->Texture.Unit[unit];
- unsigned env_color[4];
-
- /* It seems that the color clamping can be overwhelmed at the 4x
- * scale settings, necessitating this fallback:
- */
- if (c_shift == 2 || a_shift == 2) {
- return GL_FALSE;
- }
-
- CLAMPED_FLOAT_TO_UBYTE(env_color[0], texUnit->EnvColor[0]);
- CLAMPED_FLOAT_TO_UBYTE(env_color[1], texUnit->EnvColor[1]);
- CLAMPED_FLOAT_TO_UBYTE(env_color[2], texUnit->EnvColor[2]);
- CLAMPED_FLOAT_TO_UBYTE(env_color[3], texUnit->EnvColor[3]);
-
- (void) memset( constant_color, 0, sizeof( constant_color ) );
- (void) memset( ordered_constant_color, 0, sizeof( ordered_constant_color ) );
- (void) memset( constant_alpha, 0, sizeof( constant_alpha ) );
-
- for ( i = 0 ; i < combine->_NumArgsRGB ; i++ ) {
- const GLint op = combine->OperandRGB[i] - GL_SRC_COLOR;
-
- switch ( combine->SourceRGB[i] ) {
- case GL_TEXTURE:
- color_arg[i] = HC_XTC_Tex;
- color_arg[i] += color_operand_modifier[op];
- break;
- case GL_CONSTANT:
- color_arg[i] = HC_XTC_HTXnTBLRC;
-
- switch( op ) {
- case 0: /* GL_SRC_COLOR */
- constant_color[i] = ((env_color[0] << 16) |
- (env_color[1] << 8) |
- env_color[2]);
- break;
- case 1: /* GL_ONE_MINUS_SRC_COLOR */
- constant_color[i] = ~((env_color[0] << 16) |
- (env_color[1] << 8) |
- env_color[2]) & 0x00ffffff;
- break;
- case 2: /* GL_SRC_ALPHA */
- constant_color[i] = ((env_color[3] << 16) |
- (env_color[3] << 8) |
- env_color[3]);
- break;
- case 3: /* GL_ONE_MINUS_SRC_ALPHA */
- constant_color[i] = ~((env_color[3] << 16) |
- (env_color[3] << 8) |
- env_color[3]) & 0x00ffffff;
- break;
- }
- break;
- case GL_PRIMARY_COLOR:
- color_arg[i] = HC_XTC_Dif;
- color_arg[i] += color_operand_modifier[op];
- break;
- case GL_PREVIOUS:
- color_arg[i] = (unit == 0) ? HC_XTC_Dif : HC_XTC_Cur;
- color_arg[i] += color_operand_modifier[op];
- break;
- }
- }
-
-
- /* On the Unichrome, all combine operations take on some form of:
- *
- * (xA * (xB op xC) + xBias) << xShift
- *
- * 'op' can be selected as add, subtract, min, max, or mask. The min, max
- * and mask modes are currently unused. With the exception of DOT3, all
- * standard GL_COMBINE modes can be implemented simply by selecting the
- * correct inputs for A, B, C, and Bias and the correct operation for op.
- *
- * NOTE: xBias (when read from the constant registers) is signed,
- * and scaled to fit -255..255 in 8 bits, ie 0x1 == 2.
- */
-
- switch( combine->ModeRGB ) {
- /* Ca = 1.0, Cb = arg0, Cc = 0, Cbias = 0
- */
- case GL_REPLACE:
- color |= ((CONST_ONE << INPUT_A_SHIFT) |
- (color_arg[0] << INPUT_B_SHIFT));
-
- ordered_constant_color[1] = constant_color[0];
- break;
-
- /* Ca = arg[0], Cb = arg[1], Cc = 0, Cbias = 0
- */
- case GL_MODULATE:
- color |= ((color_arg[0] << INPUT_A_SHIFT) |
- (color_arg[1] << INPUT_B_SHIFT));
-
- ordered_constant_color[0] = constant_color[0];
- ordered_constant_color[1] = constant_color[1];
- break;
-
- /* Ca = 1.0, Cb = arg[0], Cc = arg[1], Cbias = 0
- */
- case GL_ADD:
- case GL_SUBTRACT:
- if ( combine->ModeRGB == GL_SUBTRACT ) {
- op |= HC_HTXnTBLCop_Sub;
- }
-
- color |= ((CONST_ONE << INPUT_A_SHIFT) |
- (color_arg[0] << INPUT_B_SHIFT) |
- (color_arg[1] << INPUT_C_SHIFT));
-
- ordered_constant_color[1] = constant_color[0];
- ordered_constant_color[2] = constant_color[1];
- break;
-
- /* Ca = 1.0, Cb = arg[0], Cc = arg[1], Cbias = -0.5
- */
- case GL_ADD_SIGNED:
- color |= ((CONST_ONE << INPUT_A_SHIFT) |
- (color_arg[0] << INPUT_B_SHIFT) |
- (color_arg[1] << INPUT_C_SHIFT));
-
- bias |= HC_HTXnTBLCbias_HTXnTBLRC;
-
- ordered_constant_color[1] = constant_color[0];
- ordered_constant_color[2] = constant_color[1];
- ordered_constant_color[3] = 0x00bfbfbf; /* -.5 */
- break;
-
- /* Ca = arg[2], Cb = arg[0], Cc = arg[1], Cbias = arg[1]
- */
- case GL_INTERPOLATE:
- op |= HC_HTXnTBLCop_Sub;
-
- color |= ((color_arg[2] << INPUT_A_SHIFT) |
- (color_arg[0] << INPUT_B_SHIFT) |
- (color_arg[1] << INPUT_C_SHIFT));
-
- bias |= (color_arg[1] << INPUT_CBias_SHIFT);
-
- ordered_constant_color[0] = constant_color[2];
- ordered_constant_color[1] = constant_color[0];
- ordered_constant_color[2] = constant_color[1];
- ordered_constant_color[3] = (constant_color[1] >> 1) & 0x7f7f7f;
- break;
-
-#if 0
- /* At this point this code is completely untested. It appears that the
- * Unichrome has the same limitation as the Radeon R100. The only
- * supported post-scale when doing DOT3 bumpmapping is 1x.
- */
- case GL_DOT3_RGB_EXT:
- case GL_DOT3_RGBA_EXT:
- case GL_DOT3_RGB:
- case GL_DOT3_RGBA:
- c_shift = 2;
- a_shift = 2;
- color |= ((color_arg[0] << INPUT_A_SHIFT) |
- (color_arg[1] << INPUT_B_SHIFT));
- op |= HC_HTXnTBLDOT4;
- break;
-#endif
-
- default:
- assert(0);
- break;
- }
-
-
-
-
- /* The alpha blend stage has the annoying quirk of not having a
- * hard-wired 0 input, like the color stage. As a result, we have
- * to program the constant register with 0 and use that as our
- * 0 input.
- *
- * (xA * (xB op xC) + xBias) << xShift
- *
- */
-
- for ( i = 0 ; i < combine->_NumArgsA ; i++ ) {
- const GLint op = combine->OperandA[i] - GL_SRC_ALPHA;
-
- switch ( combine->SourceA[i] ) {
- case GL_TEXTURE:
- alpha_arg[i] = HC_XTA_Atex;
- alpha_arg[i] += alpha_operand_modifier[op];
- bias_alpha_arg[i] = HC_HTXnTBLAbias_Atex;
- bias_alpha_arg[i] += bias_alpha_operand_modifier[op];
- break;
- case GL_CONSTANT:
- alpha_arg[i] = HC_XTA_HTXnTBLRA;
- bias_alpha_arg[i] = HC_HTXnTBLAbias_HTXnTBLRAbias;
- constant_alpha[i] = (op == 0) ? env_color[3] : (~env_color[3] & 0xff);
- break;
- case GL_PRIMARY_COLOR:
- alpha_arg[i] = HC_XTA_Adif;
- alpha_arg[i] += alpha_operand_modifier[op];
- bias_alpha_arg[i] = HC_HTXnTBLAbias_Adif;
- bias_alpha_arg[i] += bias_alpha_operand_modifier[op];
- break;
- case GL_PREVIOUS:
- alpha_arg[i] = (unit == 0) ? HC_XTA_Adif : HC_XTA_Acur;
- alpha_arg[i] += alpha_operand_modifier[op];
- bias_alpha_arg[i] = (unit == 0 ?
- HC_HTXnTBLAbias_Adif :
- HC_HTXnTBLAbias_Acur);
- bias_alpha_arg[i] += bias_alpha_operand_modifier[op];
- break;
- }
- }
-
- switch( combine->ModeA ) {
- /* Aa = 0, Ab = 0, Ac = 0, Abias = arg0
- */
- case GL_REPLACE:
- alpha |= ((HC_XTA_HTXnTBLRA << INPUT_A_SHIFT) |
- (HC_XTA_HTXnTBLRA << INPUT_B_SHIFT) |
- (HC_XTA_HTXnTBLRA << INPUT_C_SHIFT));
- abc_alpha = 0;
-
- bias |= bias_alpha_arg[0];
- bias_alpha = constant_alpha[0] >> 1;
- break;
-
- /* Aa = arg[0], Ab = arg[1], Ac = 0, Abias = 0
- */
- case GL_MODULATE:
- alpha |= ((alpha_arg[1] << INPUT_A_SHIFT) |
- (alpha_arg[0] << INPUT_B_SHIFT) |
- (HC_XTA_HTXnTBLRA << INPUT_C_SHIFT));
-
- abc_alpha = ((constant_alpha[1] << HC_HTXnTBLRAa_SHIFT) |
- (constant_alpha[0] << HC_HTXnTBLRAb_SHIFT) |
- (0 << HC_HTXnTBLRAc_SHIFT));
-
- bias |= HC_HTXnTBLAbias_HTXnTBLRAbias;
- bias_alpha = 0;
- break;
-
- /* Aa = 1.0, Ab = arg[0], Ac = arg[1], Abias = 0
- */
- case GL_ADD:
- case GL_SUBTRACT:
- if ( combine->ModeA == GL_SUBTRACT ) {
- op |= HC_HTXnTBLAop_Sub;
- }
-
- alpha |= ((HC_XTA_HTXnTBLRA << INPUT_A_SHIFT) |
- (alpha_arg[0] << INPUT_B_SHIFT) |
- (alpha_arg[1] << INPUT_C_SHIFT));
-
- abc_alpha = ((0xff << HC_HTXnTBLRAa_SHIFT) |
- (constant_alpha[0] << HC_HTXnTBLRAb_SHIFT) |
- (constant_alpha[1] << HC_HTXnTBLRAc_SHIFT));
-
- bias |= HC_HTXnTBLAbias_HTXnTBLRAbias;
- bias_alpha = 0;
- break;
-
- /* Aa = 1.0, Ab = arg[0], Ac = arg[1], Abias = -0.5
- */
- case GL_ADD_SIGNED:
- alpha |= ((HC_XTA_HTXnTBLRA << INPUT_A_SHIFT) |
- (alpha_arg[0] << INPUT_B_SHIFT) |
- (alpha_arg[1] << INPUT_C_SHIFT));
- abc_alpha = ((0xff << HC_HTXnTBLRAa_SHIFT) |
- (constant_alpha[0] << HC_HTXnTBLRAb_SHIFT) |
- (constant_alpha[1] << HC_HTXnTBLRAc_SHIFT));
-
- bias |= HC_HTXnTBLAbias_HTXnTBLRAbias;
- bias_alpha = 0xbf;
- break;
-
- /* Aa = arg[2], Ab = arg[0], Ac = arg[1], Abias = arg[1]
- */
- case GL_INTERPOLATE:
- op |= HC_HTXnTBLAop_Sub;
-
- alpha |= ((alpha_arg[2] << INPUT_A_SHIFT) |
- (alpha_arg[0] << INPUT_B_SHIFT) |
- (alpha_arg[1] << INPUT_C_SHIFT));
- abc_alpha = ((constant_alpha[2] << HC_HTXnTBLRAa_SHIFT) |
- (constant_alpha[0] << HC_HTXnTBLRAb_SHIFT) |
- (constant_alpha[1] << HC_HTXnTBLRAc_SHIFT));
-
- bias |= bias_alpha_arg[1];
- bias_alpha = constant_alpha[1] >> 1;
- break;
- }
-
-
- op |= c_shift_table[ c_shift ] | a_shift_table[ a_shift ];
-
-
- vmesa->regHTXnTBLMPfog[unit] = HC_HTXnTBLMPfog_Fog;
-
- vmesa->regHTXnTBLCsat[unit] = color;
- vmesa->regHTXnTBLAsat[unit] = alpha;
- vmesa->regHTXnTBLCop[unit] = op | bias;
- vmesa->regHTXnTBLRAa[unit] = abc_alpha;
- vmesa->regHTXnTBLRFog[unit] = bias_alpha;
-
- vmesa->regHTXnTBLRCa[unit] = ordered_constant_color[0];
- vmesa->regHTXnTBLRCb[unit] = ordered_constant_color[1];
- vmesa->regHTXnTBLRCc[unit] = ordered_constant_color[2];
- vmesa->regHTXnTBLRCbias[unit] = ordered_constant_color[3];
-
- return GL_TRUE;
-}
-
diff --git a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_tris.c b/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_tris.c
deleted file mode 100644
index 9cb88ae23..000000000
--- a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_tris.c
+++ /dev/null
@@ -1,1190 +0,0 @@
-/*
- * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved.
- * Copyright 2001-2003 S3 Graphics, Inc. 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
- * VIA, S3 GRAPHICS, 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.
- */
-
-#include <stdio.h>
-#include <math.h>
-
-#include "glheader.h"
-#include "context.h"
-#include "mtypes.h"
-#include "macros.h"
-#include "colormac.h"
-#include "enums.h"
-
-#include "swrast/swrast.h"
-#include "swrast_setup/swrast_setup.h"
-#include "tnl/t_context.h"
-#include "tnl/t_pipeline.h"
-
-#include "via_context.h"
-#include "via_tris.h"
-#include "via_state.h"
-#include "via_span.h"
-#include "via_ioctl.h"
-#include "via_3d_reg.h"
-#include "via_tex.h"
-
-/***********************************************************************
- * Emit primitives as inline vertices *
- ***********************************************************************/
-#define LINE_FALLBACK (0)
-#define POINT_FALLBACK (0)
-#define TRI_FALLBACK (0)
-#define ANY_FALLBACK_FLAGS (POINT_FALLBACK|LINE_FALLBACK|TRI_FALLBACK)
-#define ANY_RASTER_FLAGS (DD_TRI_LIGHT_TWOSIDE|DD_TRI_OFFSET|DD_TRI_UNFILLED)
-
-
-#if 0
-#define COPY_DWORDS(vb, vertsize, v) \
-do { \
- via_sse_memcpy(vb, v, vertsize * 4); \
- vb += vertsize; \
-} while (0)
-#else
-#if defined( USE_X86_ASM )
-#define COPY_DWORDS(vb, vertsize, v) \
- do { \
- int j; \
- int __tmp; \
- __asm__ __volatile__("rep ; movsl" \
- : "=%c" (j), "=D" (vb), "=S" (__tmp) \
- : "0" (vertsize), \
- "D" ((long)vb), \
- "S" ((long)v)); \
- } while (0)
-#else
-#define COPY_DWORDS(vb, vertsize, v) \
- do { \
- int j; \
- for (j = 0; j < vertsize; j++) \
- vb[j] = ((GLuint *)v)[j]; \
- vb += vertsize; \
- } while (0)
-#endif
-#endif
-
-static void via_draw_triangle(struct via_context *vmesa,
- viaVertexPtr v0,
- viaVertexPtr v1,
- viaVertexPtr v2)
-{
- GLuint vertsize = vmesa->vertexSize;
- GLuint *vb = viaExtendPrimitive(vmesa, 3 * 4 * vertsize);
-
- COPY_DWORDS(vb, vertsize, v0);
- COPY_DWORDS(vb, vertsize, v1);
- COPY_DWORDS(vb, vertsize, v2);
-}
-
-
-static void via_draw_quad(struct via_context *vmesa,
- viaVertexPtr v0,
- viaVertexPtr v1,
- viaVertexPtr v2,
- viaVertexPtr v3)
-{
- GLuint vertsize = vmesa->vertexSize;
- GLuint *vb = viaExtendPrimitive(vmesa, 6 * 4 * vertsize);
-
- COPY_DWORDS(vb, vertsize, v0);
- COPY_DWORDS(vb, vertsize, v1);
- COPY_DWORDS(vb, vertsize, v3);
- COPY_DWORDS(vb, vertsize, v1);
- COPY_DWORDS(vb, vertsize, v2);
- COPY_DWORDS(vb, vertsize, v3);
-}
-
-static void via_draw_line(struct via_context *vmesa,
- viaVertexPtr v0,
- viaVertexPtr v1)
-{
- GLuint vertsize = vmesa->vertexSize;
- GLuint *vb = viaExtendPrimitive(vmesa, 2 * 4 * vertsize);
- COPY_DWORDS(vb, vertsize, v0);
- COPY_DWORDS(vb, vertsize, v1);
-}
-
-
-static void via_draw_point(struct via_context *vmesa,
- viaVertexPtr v0)
-{
- GLuint vertsize = vmesa->vertexSize;
- GLuint *vb = viaExtendPrimitive(vmesa, 4 * vertsize);
- COPY_DWORDS(vb, vertsize, v0);
-}
-
-
-/* Fallback drawing functions for the ptex hack.
- */
-#define PTEX_VERTEX( tmp, vertex_size, v) \
-do { \
- GLuint j; \
- GLfloat rhw = 1.0 / v->f[vertex_size]; \
- for ( j = 0 ; j < vertex_size ; j++ ) \
- tmp.f[j] = v->f[j]; \
- tmp.f[3] *= v->f[vertex_size]; \
- tmp.f[vertex_size-2] *= rhw; \
- tmp.f[vertex_size-1] *= rhw; \
-} while (0)
-
-static void via_ptex_tri (struct via_context *vmesa,
- viaVertexPtr v0,
- viaVertexPtr v1,
- viaVertexPtr v2)
-{
- GLuint vertsize = vmesa->hwVertexSize;
- GLuint *vb = viaExtendPrimitive(vmesa, 3*4*vertsize);
- viaVertex tmp;
-
- PTEX_VERTEX(tmp, vertsize, v0); COPY_DWORDS(vb, vertsize, &tmp);
- PTEX_VERTEX(tmp, vertsize, v1); COPY_DWORDS(vb, vertsize, &tmp);
- PTEX_VERTEX(tmp, vertsize, v2); COPY_DWORDS(vb, vertsize, &tmp);
-}
-
-static void via_ptex_line (struct via_context *vmesa,
- viaVertexPtr v0,
- viaVertexPtr v1)
-{
- GLuint vertsize = vmesa->hwVertexSize;
- GLuint *vb = viaExtendPrimitive(vmesa, 2*4*vertsize);
- viaVertex tmp;
-
- PTEX_VERTEX(tmp, vertsize, v0); COPY_DWORDS(vb, vertsize, &tmp);
- PTEX_VERTEX(tmp, vertsize, v1); COPY_DWORDS(vb, vertsize, &tmp);
-}
-
-static void via_ptex_point (struct via_context *vmesa,
- viaVertexPtr v0)
-{
- GLuint vertsize = vmesa->hwVertexSize;
- GLuint *vb = viaExtendPrimitive(vmesa, 1*4*vertsize);
- viaVertex tmp;
-
- PTEX_VERTEX(tmp, vertsize, v0); COPY_DWORDS(vb, vertsize, &tmp);
-}
-
-
-
-
-
-/***********************************************************************
- * Macros for via_dd_tritmp.h to draw basic primitives *
- ***********************************************************************/
-
-#define TRI(a, b, c) \
- do { \
- if (DO_FALLBACK) \
- vmesa->drawTri(vmesa, a, b, c); \
- else \
- via_draw_triangle(vmesa, a, b, c); \
- } while (0)
-
-#define QUAD(a, b, c, d) \
- do { \
- if (DO_FALLBACK) { \
- vmesa->drawTri(vmesa, a, b, d); \
- vmesa->drawTri(vmesa, b, c, d); \
- } \
- else \
- via_draw_quad(vmesa, a, b, c, d); \
- } while (0)
-
-#define LINE(v0, v1) \
- do { \
- if (DO_FALLBACK) \
- vmesa->drawLine(vmesa, v0, v1); \
- else \
- via_draw_line(vmesa, v0, v1); \
- } while (0)
-
-#define POINT(v0) \
- do { \
- if (DO_FALLBACK) \
- vmesa->drawPoint(vmesa, v0); \
- else \
- via_draw_point(vmesa, v0); \
- } while (0)
-
-
-/***********************************************************************
- * Build render functions from dd templates *
- ***********************************************************************/
-
-#define VIA_OFFSET_BIT 0x01
-#define VIA_TWOSIDE_BIT 0x02
-#define VIA_UNFILLED_BIT 0x04
-#define VIA_FALLBACK_BIT 0x08
-#define VIA_MAX_TRIFUNC 0x10
-
-
-static struct {
- tnl_points_func points;
- tnl_line_func line;
- tnl_triangle_func triangle;
- tnl_quad_func quad;
-} rast_tab[VIA_MAX_TRIFUNC + 1];
-
-
-#define DO_FALLBACK (IND & VIA_FALLBACK_BIT)
-#define DO_OFFSET (IND & VIA_OFFSET_BIT)
-#define DO_UNFILLED (IND & VIA_UNFILLED_BIT)
-#define DO_TWOSIDE (IND & VIA_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 1
-#define HAVE_BACK_COLORS 0
-#define HAVE_HW_FLATSHADE 1
-#define VERTEX viaVertex
-#define TAB rast_tab
-
-/* Only used to pull back colors into vertices (ie, we know color is
- * floating point).
- */
-#define VIA_COLOR(dst, src) \
- do { \
- dst[0] = src[2]; \
- dst[1] = src[1]; \
- dst[2] = src[0]; \
- dst[3] = src[3]; \
- } while (0)
-
-#define VIA_SPEC(dst, src) \
- do { \
- dst[0] = src[2]; \
- dst[1] = src[1]; \
- dst[2] = src[0]; \
- } while (0)
-
-
-#define DEPTH_SCALE vmesa->polygon_offset_scale
-#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) (vmesa->verts + (e * vmesa->vertexSize * sizeof(int)))
-
-#define VERT_SET_RGBA( v, c ) \
-do { \
- via_color_t *color = (via_color_t *)&((v)->ui[coloroffset]); \
- UNCLAMPED_FLOAT_TO_UBYTE(color->red, (c)[0]); \
- UNCLAMPED_FLOAT_TO_UBYTE(color->green, (c)[1]); \
- UNCLAMPED_FLOAT_TO_UBYTE(color->blue, (c)[2]); \
- UNCLAMPED_FLOAT_TO_UBYTE(color->alpha, (c)[3]); \
-} while (0)
-
-#define VERT_COPY_RGBA( v0, v1 ) v0->ui[coloroffset] = v1->ui[coloroffset]
-
-#define VERT_SET_SPEC( v, c ) \
-do { \
- if (specoffset) { \
- via_color_t *color = (via_color_t *)&((v)->ui[specoffset]); \
- UNCLAMPED_FLOAT_TO_UBYTE(color->red, (c)[0]); \
- UNCLAMPED_FLOAT_TO_UBYTE(color->green, (c)[1]); \
- UNCLAMPED_FLOAT_TO_UBYTE(color->blue, (c)[2]); \
- } \
-} while (0)
-#define VERT_COPY_SPEC( v0, v1 ) \
-do { \
- if (specoffset) { \
- v0->ub4[specoffset][0] = v1->ub4[specoffset][0]; \
- v0->ub4[specoffset][1] = v1->ub4[specoffset][1]; \
- v0->ub4[specoffset][2] = v1->ub4[specoffset][2]; \
- } \
-} while (0)
-
-
-#define VERT_SAVE_RGBA( idx ) color[idx] = v[idx]->ui[coloroffset]
-#define VERT_RESTORE_RGBA( idx ) v[idx]->ui[coloroffset] = color[idx]
-#define VERT_SAVE_SPEC( idx ) if (specoffset) spec[idx] = v[idx]->ui[specoffset]
-#define VERT_RESTORE_SPEC( idx ) if (specoffset) v[idx]->ui[specoffset] = spec[idx]
-
-
-#define LOCAL_VARS(n) \
- struct via_context *vmesa = VIA_CONTEXT(ctx); \
- GLuint color[n], spec[n]; \
- GLuint coloroffset = vmesa->coloroffset; \
- GLuint specoffset = vmesa->specoffset; \
- (void)color; (void)spec; (void)coloroffset; (void)specoffset;
-
-
-/***********************************************************************
- * Helpers for rendering unfilled primitives *
- ***********************************************************************/
-
-static const GLenum hwPrim[GL_POLYGON + 2] = {
- GL_POINTS,
- GL_LINES,
- GL_LINES,
- GL_LINES,
- GL_TRIANGLES,
- GL_TRIANGLES,
- GL_TRIANGLES,
- GL_TRIANGLES,
- GL_TRIANGLES,
- GL_TRIANGLES,
- GL_POLYGON+1
-};
-
-
-#define RASTERIZE(x) viaRasterPrimitive( ctx, x, hwPrim[x] )
-#define RENDER_PRIMITIVE vmesa->renderPrimitive
-#define TAG(x) x
-#define IND VIA_FALLBACK_BIT
-#include "tnl_dd/t_dd_unfilled.h"
-#undef IND
-#undef RASTERIZE
-
-/***********************************************************************
- * Generate GL render functions *
- ***********************************************************************/
-#define RASTERIZE(x)
-
-#define IND (0)
-#define TAG(x) x
-#include "tnl_dd/t_dd_tritmp.h"
-
-#define IND (VIA_OFFSET_BIT)
-#define TAG(x) x##_offset
-#include "tnl_dd/t_dd_tritmp.h"
-
-#define IND (VIA_TWOSIDE_BIT)
-#define TAG(x) x##_twoside
-#include "tnl_dd/t_dd_tritmp.h"
-
-#define IND (VIA_TWOSIDE_BIT|VIA_OFFSET_BIT)
-#define TAG(x) x##_twoside_offset
-#include "tnl_dd/t_dd_tritmp.h"
-
-#define IND (VIA_UNFILLED_BIT)
-#define TAG(x) x##_unfilled
-#include "tnl_dd/t_dd_tritmp.h"
-
-#define IND (VIA_OFFSET_BIT|VIA_UNFILLED_BIT)
-#define TAG(x) x##_offset_unfilled
-#include "tnl_dd/t_dd_tritmp.h"
-
-#define IND (VIA_TWOSIDE_BIT|VIA_UNFILLED_BIT)
-#define TAG(x) x##_twoside_unfilled
-#include "tnl_dd/t_dd_tritmp.h"
-
-#define IND (VIA_TWOSIDE_BIT|VIA_OFFSET_BIT|VIA_UNFILLED_BIT)
-#define TAG(x) x##_twoside_offset_unfilled
-#include "tnl_dd/t_dd_tritmp.h"
-
-#define IND (VIA_FALLBACK_BIT)
-#define TAG(x) x##_fallback
-#include "tnl_dd/t_dd_tritmp.h"
-
-#define IND (VIA_OFFSET_BIT|VIA_FALLBACK_BIT)
-#define TAG(x) x##_offset_fallback
-#include "tnl_dd/t_dd_tritmp.h"
-
-#define IND (VIA_TWOSIDE_BIT|VIA_FALLBACK_BIT)
-#define TAG(x) x##_twoside_fallback
-#include "tnl_dd/t_dd_tritmp.h"
-
-#define IND (VIA_TWOSIDE_BIT|VIA_OFFSET_BIT|VIA_FALLBACK_BIT)
-#define TAG(x) x##_twoside_offset_fallback
-#include "tnl_dd/t_dd_tritmp.h"
-
-#define IND (VIA_UNFILLED_BIT|VIA_FALLBACK_BIT)
-#define TAG(x) x##_unfilled_fallback
-#include "tnl_dd/t_dd_tritmp.h"
-
-#define IND (VIA_OFFSET_BIT|VIA_UNFILLED_BIT|VIA_FALLBACK_BIT)
-#define TAG(x) x##_offset_unfilled_fallback
-#include "tnl_dd/t_dd_tritmp.h"
-
-#define IND (VIA_TWOSIDE_BIT|VIA_UNFILLED_BIT|VIA_FALLBACK_BIT)
-#define TAG(x) x##_twoside_unfilled_fallback
-#include "tnl_dd/t_dd_tritmp.h"
-
-#define IND (VIA_TWOSIDE_BIT|VIA_OFFSET_BIT|VIA_UNFILLED_BIT| \
- VIA_FALLBACK_BIT)
-#define TAG(x) x##_twoside_offset_unfilled_fallback
-#include "tnl_dd/t_dd_tritmp.h"
-
-
-/* Catchall case for flat, separate specular triangles (via has flat
- * diffuse shading, but always does specular color with gouraud).
- */
-#undef DO_FALLBACK
-#undef DO_OFFSET
-#undef DO_UNFILLED
-#undef DO_TWOSIDE
-#undef DO_FLAT
-#define DO_FALLBACK (0)
-#define DO_OFFSET (ctx->_TriangleCaps & DD_TRI_OFFSET)
-#define DO_UNFILLED (ctx->_TriangleCaps & DD_TRI_UNFILLED)
-#define DO_TWOSIDE (ctx->_TriangleCaps & DD_TRI_LIGHT_TWOSIDE)
-#define DO_FLAT 1
-#define TAG(x) x##_flat_specular
-#define IND VIA_MAX_TRIFUNC
-#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();
- init_fallback();
- init_offset_fallback();
- init_twoside_fallback();
- init_twoside_offset_fallback();
- init_unfilled_fallback();
- init_offset_unfilled_fallback();
- init_twoside_unfilled_fallback();
- init_twoside_offset_unfilled_fallback();
-
- init_flat_specular(); /* special! */
-}
-
-
-/***********************************************************************
- * 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
-via_fallback_tri(struct via_context *vmesa,
- viaVertex *v0,
- viaVertex *v1,
- viaVertex *v2)
-{
- GLcontext *ctx = vmesa->glCtx;
- SWvertex v[3];
- _swsetup_Translate(ctx, v0, &v[0]);
- _swsetup_Translate(ctx, v1, &v[1]);
- _swsetup_Translate(ctx, v2, &v[2]);
- viaSpanRenderStart( ctx );
- _swrast_Triangle(ctx, &v[0], &v[1], &v[2]);
- viaSpanRenderFinish( ctx );
-}
-
-
-static void
-via_fallback_line(struct via_context *vmesa,
- viaVertex *v0,
- viaVertex *v1)
-{
- GLcontext *ctx = vmesa->glCtx;
- SWvertex v[2];
- _swsetup_Translate(ctx, v0, &v[0]);
- _swsetup_Translate(ctx, v1, &v[1]);
- viaSpanRenderStart( ctx );
- _swrast_Line(ctx, &v[0], &v[1]);
- viaSpanRenderFinish( ctx );
-}
-
-
-static void
-via_fallback_point(struct via_context *vmesa,
- viaVertex *v0)
-{
- GLcontext *ctx = vmesa->glCtx;
- SWvertex v[1];
- _swsetup_Translate(ctx, v0, &v[0]);
- viaSpanRenderStart( ctx );
- _swrast_Point(ctx, &v[0]);
- viaSpanRenderFinish( ctx );
-}
-
-static void viaResetLineStipple( GLcontext *ctx )
-{
- struct via_context *vmesa = VIA_CONTEXT(ctx);
- vmesa->regCmdB |= HC_HLPrst_MASK;
-}
-
-/**********************************************************************/
-/* Render unclipped begin/end objects */
-/**********************************************************************/
-#define IND 0
-#define V(x) (viaVertex *)(vertptr + ((x) * vertsize * sizeof(int)))
-#define RENDER_POINTS(start, count) \
- for (; start < count; start++) POINT(V(ELT(start)));
-#define RENDER_LINE(v0, v1) LINE(V(v0), V(v1))
-#define RENDER_TRI( v0, v1, v2) TRI( V(v0), V(v1), V(v2))
-#define RENDER_QUAD(v0, v1, v2, v3) QUAD(V(v0), V(v1), V(v2), V(v3))
-#define INIT(x) viaRasterPrimitive(ctx, x, hwPrim[x])
-#undef LOCAL_VARS
-#define LOCAL_VARS \
- struct via_context *vmesa = VIA_CONTEXT(ctx); \
- GLubyte *vertptr = (GLubyte *)vmesa->verts; \
- const GLuint vertsize = vmesa->vertexSize; \
- const GLuint * const elt = TNL_CONTEXT(ctx)->vb.Elts; \
- const GLboolean stipple = ctx->Line.StippleFlag; \
- (void) elt; (void) stipple;
-#define RESET_STIPPLE if ( stipple ) viaResetLineStipple( ctx );
-#define RESET_OCCLUSION
-#define PRESERVE_VB_DEFS
-#define ELT(x) x
-#define TAG(x) via_##x##_verts
-#include "tnl/t_vb_rendertmp.h"
-#undef ELT
-#undef TAG
-#define TAG(x) via_##x##_elts
-#define ELT(x) elt[x]
-#include "tnl/t_vb_rendertmp.h"
-#undef ELT
-#undef TAG
-#undef NEED_EDGEFLAG_SETUP
-#undef EDGEFLAG_GET
-#undef EDGEFLAG_SET
-#undef RESET_OCCLUSION
-
-
-/**********************************************************************/
-/* Render clipped primitives */
-/**********************************************************************/
-
-
-
-static void viaRenderClippedPoly(GLcontext *ctx, const GLuint *elts,
- GLuint n)
-{
- TNLcontext *tnl = TNL_CONTEXT(ctx);
- struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
- GLuint prim = VIA_CONTEXT(ctx)->renderPrimitive;
-
- /* 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 &&
- prim != GL_POLYGON + 1)
- tnl->Driver.Render.PrimitiveNotify( ctx, prim );
-}
-
-static void viaRenderClippedLine(GLcontext *ctx, GLuint ii, GLuint jj)
-{
- TNLcontext *tnl = TNL_CONTEXT(ctx);
- tnl->Driver.Render.Line(ctx, ii, jj);
-}
-
-static void viaFastRenderClippedPoly(GLcontext *ctx, const GLuint *elts,
- GLuint n)
-{
- struct via_context *vmesa = VIA_CONTEXT(ctx);
- GLuint vertsize = vmesa->vertexSize;
- GLuint *vb = viaExtendPrimitive(vmesa, (n - 2) * 3 * 4 * vertsize);
- GLubyte *vertptr = (GLubyte *)vmesa->verts;
- const GLuint *start = (const GLuint *)V(elts[0]);
- int i;
-
- for (i = 2; i < n; i++) {
- COPY_DWORDS(vb, vertsize, V(elts[i - 1]));
- COPY_DWORDS(vb, vertsize, V(elts[i]));
- COPY_DWORDS(vb, vertsize, start);
- }
-}
-
-/**********************************************************************/
-/* Choose render functions */
-/**********************************************************************/
-
-
-
-
-#define _VIA_NEW_VERTEX (_NEW_TEXTURE | \
- _DD_NEW_SEPARATE_SPECULAR | \
- _DD_NEW_TRI_UNFILLED | \
- _DD_NEW_TRI_LIGHT_TWOSIDE | \
- _NEW_FOG)
-
-#define _VIA_NEW_RENDERSTATE (_DD_NEW_LINE_STIPPLE | \
- _DD_NEW_TRI_UNFILLED | \
- _DD_NEW_TRI_LIGHT_TWOSIDE | \
- _DD_NEW_TRI_OFFSET | \
- _DD_NEW_TRI_STIPPLE | \
- _NEW_POLYGONSTIPPLE)
-
-
-static void viaChooseRenderState(GLcontext *ctx)
-{
- TNLcontext *tnl = TNL_CONTEXT(ctx);
- struct via_context *vmesa = VIA_CONTEXT(ctx);
- GLuint flags = ctx->_TriangleCaps;
- GLuint index = 0;
-
- if (vmesa->ptexHack) {
- vmesa->drawPoint = via_ptex_point;
- vmesa->drawLine = via_ptex_line;
- vmesa->drawTri = via_ptex_tri;
- index |= VIA_FALLBACK_BIT;
- }
- else {
- vmesa->drawPoint = via_draw_point;
- vmesa->drawLine = via_draw_line;
- vmesa->drawTri = via_draw_triangle;
- }
-
- if (flags & (ANY_FALLBACK_FLAGS|ANY_RASTER_FLAGS)) {
- if (flags & DD_TRI_LIGHT_TWOSIDE) index |= VIA_TWOSIDE_BIT;
- if (flags & DD_TRI_OFFSET) index |= VIA_OFFSET_BIT;
- if (flags & DD_TRI_UNFILLED) index |= VIA_UNFILLED_BIT;
- if (flags & ANY_FALLBACK_FLAGS) index |= VIA_FALLBACK_BIT;
-
- /* Hook in fallbacks for specific primitives.
- */
- if (flags & POINT_FALLBACK)
- vmesa->drawPoint = via_fallback_point;
-
- if (flags & LINE_FALLBACK)
- vmesa->drawLine = via_fallback_line;
-
- if (flags & TRI_FALLBACK)
- vmesa->drawTri = via_fallback_tri;
- }
-
-
- if ((flags & DD_SEPARATE_SPECULAR) &&
- ctx->Light.ShadeModel == GL_FLAT) {
- index = VIA_MAX_TRIFUNC; /* flat specular */
- }
-
- if (vmesa->renderIndex != index) {
- vmesa->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 (index == 0) {
- tnl->Driver.Render.PrimTabVerts = via_render_tab_verts;
- tnl->Driver.Render.PrimTabElts = via_render_tab_elts;
- tnl->Driver.Render.ClippedLine = line; /* from tritmp.h */
- tnl->Driver.Render.ClippedPolygon = viaFastRenderClippedPoly;
- }
- else {
- tnl->Driver.Render.PrimTabVerts = _tnl_render_tab_verts;
- tnl->Driver.Render.PrimTabElts = _tnl_render_tab_elts;
- tnl->Driver.Render.ClippedLine = viaRenderClippedLine;
- tnl->Driver.Render.ClippedPolygon = viaRenderClippedPoly;
- }
- }
-}
-
-
-#define VIA_EMIT_TEX1 0x01
-#define VIA_EMIT_TEX0 0x02
-#define VIA_EMIT_PTEX0 0x04
-#define VIA_EMIT_RGBA 0x08
-#define VIA_EMIT_SPEC 0x10
-#define VIA_EMIT_FOG 0x20
-#define VIA_EMIT_W 0x40
-
-#define EMIT_ATTR( ATTR, STYLE, INDEX, REGB ) \
-do { \
- vmesa->vertex_attrs[vmesa->vertex_attr_count].attrib = (ATTR); \
- vmesa->vertex_attrs[vmesa->vertex_attr_count].format = (STYLE); \
- vmesa->vertex_attr_count++; \
- setupIndex |= (INDEX); \
- regCmdB |= (REGB); \
-} while (0)
-
-#define EMIT_PAD( N ) \
-do { \
- vmesa->vertex_attrs[vmesa->vertex_attr_count].attrib = 0; \
- vmesa->vertex_attrs[vmesa->vertex_attr_count].format = EMIT_PAD; \
- vmesa->vertex_attrs[vmesa->vertex_attr_count].offset = (N); \
- vmesa->vertex_attr_count++; \
-} while (0)
-
-
-
-static void viaChooseVertexState( GLcontext *ctx )
-{
- struct via_context *vmesa = VIA_CONTEXT(ctx);
- TNLcontext *tnl = TNL_CONTEXT(ctx);
- GLuint index = tnl->render_inputs;
- GLuint regCmdB = HC_HVPMSK_X | HC_HVPMSK_Y | HC_HVPMSK_Z;
- GLuint setupIndex = 0;
-
- vmesa->vertex_attr_count = 0;
-
- /* EMIT_ATTR's must be in order as they tell t_vertex.c how to
- * build up a hardware vertex.
- */
- if (index & (_TNL_BITS_TEX_ANY|_TNL_BIT_FOG)) {
- EMIT_ATTR( _TNL_ATTRIB_POS, EMIT_4F_VIEWPORT, VIA_EMIT_W, HC_HVPMSK_W );
- vmesa->coloroffset = 4;
- }
- else {
- EMIT_ATTR( _TNL_ATTRIB_POS, EMIT_3F_VIEWPORT, 0, 0 );
- vmesa->coloroffset = 3;
- }
-
- /* t_context.c always includes a diffuse color */
- EMIT_ATTR( _TNL_ATTRIB_COLOR0, EMIT_4UB_4F_BGRA, VIA_EMIT_RGBA,
- HC_HVPMSK_Cd );
-
- vmesa->specoffset = 0;
- if (index & (_TNL_BIT_COLOR1|_TNL_BIT_FOG)) {
- if ((index & _TNL_BIT_COLOR1)) {
- vmesa->specoffset = vmesa->coloroffset + 1;
- EMIT_ATTR( _TNL_ATTRIB_COLOR1, EMIT_3UB_3F_BGR, VIA_EMIT_SPEC,
- HC_HVPMSK_Cs );
- }
- else
- EMIT_PAD( 3 );
-
- if ((index & _TNL_BIT_FOG))
- EMIT_ATTR( _TNL_ATTRIB_FOG, EMIT_1UB_1F, VIA_EMIT_FOG, HC_HVPMSK_Cs );
- else
- EMIT_PAD( 1 );
- }
-
- if (index & _TNL_BIT_TEX(0)) {
- if (vmesa->ptexHack)
- EMIT_ATTR( _TNL_ATTRIB_TEX0, EMIT_3F_XYW, VIA_EMIT_PTEX0,
- (HC_HVPMSK_S | HC_HVPMSK_T) );
- else
- EMIT_ATTR( _TNL_ATTRIB_TEX0, EMIT_2F, VIA_EMIT_TEX0,
- (HC_HVPMSK_S | HC_HVPMSK_T) );
- }
-
- if (index & _TNL_BIT_TEX(1)) {
- EMIT_ATTR( _TNL_ATTRIB_TEX1, EMIT_2F, VIA_EMIT_TEX1,
- (HC_HVPMSK_S | HC_HVPMSK_T) );
- }
-
- if (setupIndex != vmesa->setupIndex) {
- vmesa->vertexSize = _tnl_install_attrs( ctx,
- vmesa->vertex_attrs,
- vmesa->vertex_attr_count,
- vmesa->ViewportMatrix.m, 0 );
- vmesa->vertexSize >>= 2;
- vmesa->setupIndex = setupIndex;
- vmesa->regCmdB &= ~HC_HVPMSK_MASK;
- vmesa->regCmdB |= regCmdB;
-
- if (vmesa->ptexHack)
- vmesa->hwVertexSize = vmesa->vertexSize - 1;
- else
- vmesa->hwVertexSize = vmesa->vertexSize;
- }
-}
-
-
-
-
-/* Check if projective texture coordinates are used and if we can fake
- * them. Fallback to swrast if we can't. Returns GL_TRUE if projective
- * texture coordinates must be faked, GL_FALSE otherwise.
- */
-static GLboolean viaCheckPTexHack( GLcontext *ctx )
-{
- TNLcontext *tnl = TNL_CONTEXT(ctx);
- struct vertex_buffer *VB = &tnl->vb;
- GLuint index = tnl->render_inputs;
- GLboolean fallback = GL_FALSE;
- GLboolean ptexHack = GL_FALSE;
-
- if (index & _TNL_BIT_TEX(0) && VB->TexCoordPtr[0]->size == 4) {
- if ((index & _TNL_BITS_TEX_ANY) == _TNL_BIT_TEX(0))
- ptexHack = GL_TRUE;
- else
- fallback = GL_TRUE;
- }
- if ((index & _TNL_BIT_TEX(1)) && VB->TexCoordPtr[1]->size == 4)
- fallback = GL_TRUE;
-
- FALLBACK(VIA_CONTEXT(ctx), VIA_FALLBACK_PROJ_TEXTURE, fallback);
- return ptexHack;
-}
-
-
-
-
-/**********************************************************************/
-/* High level hooks for t_vb_render.c */
-/**********************************************************************/
-
-
-static void viaRenderStart(GLcontext *ctx)
-{
- struct via_context *vmesa = VIA_CONTEXT(ctx);
- TNLcontext *tnl = TNL_CONTEXT(ctx);
- struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
-
- {
- GLboolean ptexHack = viaCheckPTexHack( ctx );
- if (ptexHack != vmesa->ptexHack) {
- vmesa->ptexHack = ptexHack;
- vmesa->newRenderState |= _VIA_NEW_RENDERSTATE;
- }
- }
-
- if (vmesa->newState) {
- vmesa->newRenderState |= vmesa->newState;
- viaValidateState( ctx );
- }
-
- if (vmesa->Fallback) {
- tnl->Driver.Render.Start(ctx);
- return;
- }
-
- if (vmesa->newRenderState) {
- viaChooseVertexState(ctx);
- viaChooseRenderState(ctx);
- vmesa->newRenderState = 0;
- }
-
- /* Important:
- */
- VB->AttribPtr[VERT_ATTRIB_POS] = VB->NdcPtr;
-}
-
-static void viaRenderFinish(GLcontext *ctx)
-{
- VIA_FINISH_PRIM(VIA_CONTEXT(ctx));
-}
-
-
-/* System to flush dma and emit state changes based on the rasterized
- * primitive.
- */
-void viaRasterPrimitive(GLcontext *ctx,
- GLenum glprim,
- GLenum hwprim)
-{
- struct via_context *vmesa = VIA_CONTEXT(ctx);
- GLuint regCmdB;
- RING_VARS;
-
- if (VIA_DEBUG & DEBUG_PRIMS)
- fprintf(stderr, "%s: %s/%s/%s\n",
- __FUNCTION__, _mesa_lookup_enum_by_nr(glprim),
- _mesa_lookup_enum_by_nr(hwprim),
- _mesa_lookup_enum_by_nr(ctx->Light.ShadeModel));
-
- assert (!vmesa->newState);
-
- vmesa->renderPrimitive = glprim;
-
- if (hwprim != vmesa->hwPrimitive ||
- ctx->Light.ShadeModel != vmesa->hwShadeModel) {
-
- VIA_FINISH_PRIM(vmesa);
-
- /* Ensure no wrapping inside this function */
- viaCheckDma( vmesa, 1024 );
-
- if (vmesa->newEmitState) {
- viaEmitState(vmesa);
- }
-
- vmesa->regCmdA_End = HC_ACMD_HCmdA;
-
- if (ctx->Light.ShadeModel == GL_SMOOTH) {
- vmesa->regCmdA_End |= HC_HShading_Gouraud;
- }
-
- vmesa->hwShadeModel = ctx->Light.ShadeModel;
- regCmdB = vmesa->regCmdB;
-
- switch (hwprim) {
- case GL_POINTS:
- vmesa->regCmdA_End |= HC_HPMType_Point | HC_HVCycle_Full;
- vmesa->regCmdA_End |= HC_HShading_Gouraud; /* always Gouraud
- shade points?!? */
- break;
- case GL_LINES:
- vmesa->regCmdA_End |= HC_HPMType_Line | HC_HVCycle_Full;
- regCmdB |= HC_HLPrst_MASK;
- if (ctx->Light.ShadeModel == GL_FLAT)
- vmesa->regCmdA_End |= HC_HShading_FlatB;
- break;
- case GL_LINE_LOOP:
- case GL_LINE_STRIP:
- vmesa->regCmdA_End |= HC_HPMType_Line | HC_HVCycle_AFP |
- HC_HVCycle_AB | HC_HVCycle_NewB;
- regCmdB |= HC_HVCycle_AB | HC_HVCycle_NewB | HC_HLPrst_MASK;
- if (ctx->Light.ShadeModel == GL_FLAT)
- vmesa->regCmdA_End |= HC_HShading_FlatB;
- break;
- case GL_TRIANGLES:
- vmesa->regCmdA_End |= HC_HPMType_Tri | HC_HVCycle_Full;
- if (ctx->Light.ShadeModel == GL_FLAT)
- vmesa->regCmdA_End |= HC_HShading_FlatC;
- break;
- case GL_TRIANGLE_STRIP:
- vmesa->regCmdA_End |= HC_HPMType_Tri | HC_HVCycle_AFP |
- HC_HVCycle_AC | HC_HVCycle_BB | HC_HVCycle_NewC;
- regCmdB |= HC_HVCycle_AA | HC_HVCycle_BC | HC_HVCycle_NewC;
- if (ctx->Light.ShadeModel == GL_FLAT)
- vmesa->regCmdA_End |= HC_HShading_FlatC;
- break;
- case GL_TRIANGLE_FAN:
- vmesa->regCmdA_End |= HC_HPMType_Tri | HC_HVCycle_AFP |
- HC_HVCycle_AA | HC_HVCycle_BC | HC_HVCycle_NewC;
- regCmdB |= HC_HVCycle_AA | HC_HVCycle_BC | HC_HVCycle_NewC;
- if (ctx->Light.ShadeModel == GL_FLAT)
- vmesa->regCmdA_End |= HC_HShading_FlatC;
- break;
- case GL_QUADS:
- abort();
- return;
- case GL_QUAD_STRIP:
- abort();
- return;
- case GL_POLYGON:
- vmesa->regCmdA_End |= HC_HPMType_Tri | HC_HVCycle_AFP |
- HC_HVCycle_AA | HC_HVCycle_BC | HC_HVCycle_NewC;
- regCmdB |= HC_HVCycle_AA | HC_HVCycle_BC | HC_HVCycle_NewC;
- if (ctx->Light.ShadeModel == GL_FLAT)
- vmesa->regCmdA_End |= HC_HShading_FlatC;
- break;
- default:
- abort();
- return;
- }
-
-/* assert((vmesa->dmaLow & 0x4) == 0); */
-
- if (vmesa->dmaCliprectAddr == ~0) {
- if (VIA_DEBUG & DEBUG_DMA)
- fprintf(stderr, "reserve cliprect space at %x\n", vmesa->dmaLow);
- vmesa->dmaCliprectAddr = vmesa->dmaLow;
- BEGIN_RING(8);
- OUT_RING( HC_HEADER2 );
- OUT_RING( (HC_ParaType_NotTex << 16) );
- OUT_RING( 0xCCCCCCCC );
- OUT_RING( 0xCCCCCCCC );
- OUT_RING( 0xCCCCCCCC );
- OUT_RING( 0xCCCCCCCC );
- OUT_RING( 0xCCCCCCCC );
- OUT_RING( 0xCCCCCCCC );
- ADVANCE_RING();
- }
-
- assert(vmesa->dmaLastPrim == 0);
-
- BEGIN_RING(8);
- OUT_RING( HC_HEADER2 );
- OUT_RING( (HC_ParaType_NotTex << 16) );
- OUT_RING( 0xCCCCCCCC );
- OUT_RING( 0xDDDDDDDD );
-
- OUT_RING( HC_HEADER2 );
- OUT_RING( (HC_ParaType_CmdVdata << 16) );
- OUT_RING( regCmdB );
- OUT_RING( vmesa->regCmdA_End );
- ADVANCE_RING();
-
- vmesa->hwPrimitive = hwprim;
- vmesa->dmaLastPrim = vmesa->dmaLow;
- }
- else {
- assert(!vmesa->newEmitState);
- }
-}
-
-/* Callback for mesa:
- */
-static void viaRenderPrimitive( GLcontext *ctx, GLuint prim )
-{
- viaRasterPrimitive( ctx, prim, hwPrim[prim] );
-}
-
-
-void viaFinishPrimitive(struct via_context *vmesa)
-{
- if (VIA_DEBUG & (DEBUG_DMA|DEBUG_PRIMS))
- fprintf(stderr, "%s\n", __FUNCTION__);
-
- if (!vmesa->dmaLastPrim || vmesa->dmaCliprectAddr == ~0) {
- assert(0);
- }
- else if (vmesa->dmaLow != vmesa->dmaLastPrim) {
- GLuint cmdA = (vmesa->regCmdA_End | HC_HPLEND_MASK |
- HC_HPMValidN_MASK | HC_HE3Fire_MASK);
- RING_VARS;
-
- vmesa->dmaLastPrim = 0;
-
- /* KW: modified 0x1 to 0x4 below:
- */
- if ((vmesa->dmaLow & 0x4) || !vmesa->useAgp) {
- BEGIN_RING_NOCHECK( 1 );
- OUT_RING( cmdA );
- ADVANCE_RING();
- }
- else {
- BEGIN_RING_NOCHECK( 2 );
- OUT_RING( cmdA );
- OUT_RING( cmdA );
- ADVANCE_RING();
- }
-
- if (vmesa->dmaLow > VIA_DMA_HIGHWATER)
- viaFlushDma( vmesa );
- }
- else {
- if (VIA_DEBUG & (DEBUG_DMA|DEBUG_PRIMS))
- fprintf(stderr, "remove empty primitive\n");
-
- /* Remove the primitive header:
- */
- vmesa->dmaLastPrim = 0;
- vmesa->dmaLow -= 8 * sizeof(GLuint);
-
- /* Maybe remove the cliprect as well:
- */
- if (vmesa->dmaCliprectAddr == vmesa->dmaLow - 8 * sizeof(GLuint)) {
- vmesa->dmaLow -= 8 * sizeof(GLuint);
- vmesa->dmaCliprectAddr = ~0;
- }
- }
-
- vmesa->renderPrimitive = GL_POLYGON + 1;
- vmesa->hwPrimitive = GL_POLYGON + 1;
- vmesa->dmaLastPrim = 0;
-}
-
-
-/**********************************************************************/
-/* Transition to/from hardware rasterization. */
-/**********************************************************************/
-
-
-void viaFallback(struct via_context *vmesa, GLuint bit, GLboolean mode)
-{
- GLcontext *ctx = vmesa->glCtx;
- TNLcontext *tnl = TNL_CONTEXT(ctx);
- GLuint oldfallback = vmesa->Fallback;
-
- if (mode) {
- vmesa->Fallback |= bit;
- if (oldfallback == 0) {
- VIA_FLUSH_DMA(vmesa);
-
- if (VIA_DEBUG & DEBUG_FALLBACKS)
- fprintf(stderr, "ENTER FALLBACK %x\n", bit);
-
- _swsetup_Wakeup(ctx);
- vmesa->renderIndex = ~0;
- }
- }
- else {
- vmesa->Fallback &= ~bit;
- if (oldfallback == bit) {
- _swrast_flush( ctx );
-
- if (VIA_DEBUG & DEBUG_FALLBACKS)
- fprintf(stderr, "LEAVE FALLBACK %x\n", bit);
-
- tnl->Driver.Render.Start = viaRenderStart;
- tnl->Driver.Render.PrimitiveNotify = viaRenderPrimitive;
- tnl->Driver.Render.Finish = viaRenderFinish;
-
- tnl->Driver.Render.BuildVertices = _tnl_build_vertices;
- tnl->Driver.Render.CopyPV = _tnl_copy_pv;
- tnl->Driver.Render.Interp = _tnl_interp;
- tnl->Driver.Render.ResetLineStipple = viaResetLineStipple;
-
- _tnl_invalidate_vertex_state( ctx, ~0 );
- _tnl_invalidate_vertices( ctx, ~0 );
- _tnl_install_attrs( ctx,
- vmesa->vertex_attrs,
- vmesa->vertex_attr_count,
- vmesa->ViewportMatrix.m, 0 );
-
- vmesa->newState |= (_VIA_NEW_RENDERSTATE|_VIA_NEW_VERTEX);
- }
- }
-}
-
-static void viaRunPipeline( GLcontext *ctx )
-{
- struct via_context *vmesa = VIA_CONTEXT(ctx);
-
- if (vmesa->newState) {
- vmesa->newRenderState |= vmesa->newState;
- viaValidateState( ctx );
- }
-
- _tnl_run_pipeline( ctx );
-}
-
-
-/**********************************************************************/
-/* Initialization. */
-/**********************************************************************/
-
-
-void viaInitTriFuncs(GLcontext *ctx)
-{
- struct via_context *vmesa = VIA_CONTEXT(ctx);
- TNLcontext *tnl = TNL_CONTEXT(ctx);
- static int firsttime = 1;
-
- if (firsttime) {
- init_rast_tab();
- firsttime = 0;
- }
-
- tnl->Driver.RunPipeline = viaRunPipeline;
- tnl->Driver.Render.Start = viaRenderStart;
- tnl->Driver.Render.Finish = viaRenderFinish;
- tnl->Driver.Render.PrimitiveNotify = viaRenderPrimitive;
- tnl->Driver.Render.ResetLineStipple = viaResetLineStipple;
- tnl->Driver.Render.BuildVertices = _tnl_build_vertices;
- tnl->Driver.Render.CopyPV = _tnl_copy_pv;
- tnl->Driver.Render.Interp = _tnl_interp;
-
- _tnl_init_vertices( ctx, ctx->Const.MaxArrayLockSize + 12,
- (6 + 2*ctx->Const.MaxTextureUnits) * sizeof(GLfloat) );
-
- vmesa->verts = (GLubyte *)tnl->clipspace.vertex_buf;
-
-}
diff --git a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_tris.h b/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_tris.h
deleted file mode 100644
index b4f0880a7..000000000
--- a/nx-X11/extras/Mesa/src/mesa/drivers/dri/unichrome/via_tris.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved.
- * Copyright 2001-2003 S3 Graphics, Inc. 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
- * VIA, S3 GRAPHICS, 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.
- */
-
-#ifndef _VIATRIS_H
-#define _VIATRIS_H
-
-#include "mtypes.h"
-
-extern void viaPrintRenderState(const char *msg, GLuint state);
-extern void viaInitTriFuncs(GLcontext *ctx);
-extern void viaRasterPrimitive(GLcontext *ctx, GLenum rPrim, GLuint hwPrim);
-extern void viaRasterPrimitiveFinish(GLcontext *ctx);
-
-#endif