mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-30 14:20:11 +01:00
updated for Mesa 3.3
This commit is contained in:
parent
2454429915
commit
ebd5feab9a
8 changed files with 295 additions and 162 deletions
|
|
@ -1,8 +1,8 @@
|
|||
/* $Id: svgamesa.c,v 1.3 2000/01/23 17:49:54 brianp Exp $ */
|
||||
/* $Id: svgamesa.c,v 1.4 2000/01/25 00:03:02 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
* Version: 3.2
|
||||
* Version: 3.3
|
||||
* Copyright (C) 1995-2000 Brian Paul
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
|
|
@ -162,28 +162,33 @@ int SVGAMesaInit( int GraphMode )
|
|||
SVGAlog(cbuf);
|
||||
sprintf(cbuf,"SVGAMesaInit: done. (Mode %d)",GraphMode);
|
||||
SVGAlog(cbuf);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
SVGABuffer.DrawBuffer = SVGABuffer.BackBuffer;
|
||||
SVGABuffer.ReadBuffer = SVGABuffer.BackBuffer;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int SVGAMesaClose( void )
|
||||
{
|
||||
vga_setmode(TEXT);
|
||||
free(SVGABuffer.FrontBuffer);
|
||||
free(SVGABuffer.BackBuffer);
|
||||
return 0;
|
||||
vga_setmode(TEXT);
|
||||
free(SVGABuffer.FrontBuffer);
|
||||
free(SVGABuffer.BackBuffer);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void SVGAMesaSetCI(int ndx, GLubyte red, GLubyte green, GLubyte blue)
|
||||
{
|
||||
if (ndx<256) vga_setpalette(ndx, red>>2, green>>2, blue>>2);
|
||||
if (ndx<256)
|
||||
vga_setpalette(ndx, red>>2, green>>2, blue>>2);
|
||||
}
|
||||
|
||||
/**********************************************************************/
|
||||
/***** Miscellaneous functions *****/
|
||||
/**********************************************************************/
|
||||
|
||||
static void copy_buffer( GLubyte * buffer) {
|
||||
static void copy_buffer( const GLubyte * buffer) {
|
||||
int size = SVGABuffer.BufferSize, page = 0;
|
||||
|
||||
#ifdef SVGA_DEBUG
|
||||
|
|
@ -209,29 +214,61 @@ static void get_buffer_size( GLcontext *ctx, GLuint *width, GLuint *height )
|
|||
*height = SVGAMesa->height = vga_getydim();
|
||||
}
|
||||
|
||||
static GLboolean set_buffer( GLcontext *ctx, GLenum buffer )
|
||||
static GLboolean set_draw_buffer( GLcontext *ctx, GLenum buffer )
|
||||
{
|
||||
void * tmpptr;
|
||||
|
||||
if (buffer == GL_FRONT_LEFT)
|
||||
{
|
||||
/* vga_waitretrace(); */
|
||||
copy_buffer(SVGABuffer.FrontBuffer);
|
||||
tmpptr=SVGABuffer.BackBuffer;
|
||||
SVGABuffer.BackBuffer=SVGABuffer.FrontBuffer;
|
||||
SVGABuffer.FrontBuffer=tmpptr;
|
||||
return GL_TRUE;
|
||||
}
|
||||
else if (buffer == GL_BACK_LEFT)
|
||||
{
|
||||
/* vga_waitretrace(); */
|
||||
copy_buffer(SVGABuffer.BackBuffer);
|
||||
return GL_TRUE;
|
||||
if (buffer == GL_FRONT_LEFT) {
|
||||
SVGABuffer.DrawBuffer = SVGABuffer.FrontBuffer;
|
||||
#if 0
|
||||
/* vga_waitretrace(); */
|
||||
void * tmpptr;
|
||||
copy_buffer(SVGABuffer.FrontBuffer);
|
||||
tmpptr=SVGABuffer.BackBuffer;
|
||||
SVGABuffer.BackBuffer=SVGABuffer.FrontBuffer;
|
||||
SVGABuffer.FrontBuffer=tmpptr;
|
||||
#endif
|
||||
return GL_TRUE;
|
||||
}
|
||||
else if (buffer == GL_BACK_LEFT) {
|
||||
SVGABuffer.DrawBuffer = SVGABuffer.BackBuffer;
|
||||
#if 0
|
||||
/* vga_waitretrace(); */
|
||||
copy_buffer(SVGABuffer.BackBuffer);
|
||||
#endif
|
||||
return GL_TRUE;
|
||||
}
|
||||
else
|
||||
return GL_FALSE;
|
||||
}
|
||||
|
||||
|
||||
static void set_read_buffer( GLcontext *ctx, GLframebuffer *colorBuffer,
|
||||
GLenum buffer )
|
||||
{
|
||||
/* We can ignore colorBuffer since we don't support a MakeCurrentRead()
|
||||
* function.
|
||||
*/
|
||||
(void) colorBuffer;
|
||||
|
||||
if (buffer == GL_FRONT_LEFT) {
|
||||
SVGABuffer.ReadBuffer = SVGABuffer.FrontBuffer;
|
||||
#if 0
|
||||
void * tmpptr;
|
||||
/* vga_waitretrace(); */
|
||||
copy_buffer(SVGABuffer.FrontBuffer);
|
||||
tmpptr=SVGABuffer.BackBuffer;
|
||||
SVGABuffer.BackBuffer=SVGABuffer.FrontBuffer;
|
||||
SVGABuffer.FrontBuffer=tmpptr;
|
||||
#endif
|
||||
}
|
||||
else if (buffer == GL_BACK_LEFT) {
|
||||
SVGABuffer.ReadBuffer = SVGABuffer.BackBuffer;
|
||||
#if 0
|
||||
/* vga_waitretrace(); */
|
||||
copy_buffer(SVGABuffer.BackBuffer);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
/**********************************************************************/
|
||||
/***** *****/
|
||||
/**********************************************************************/
|
||||
|
|
@ -243,8 +280,9 @@ static void svgamesa_update_state( GLcontext *ctx )
|
|||
|
||||
ctx->Driver.UpdateState = svgamesa_update_state;
|
||||
|
||||
ctx->Driver.SetBuffer = set_buffer;
|
||||
ctx->Driver.GetBufferSize = get_buffer_size;
|
||||
ctx->Driver.SetDrawBuffer = set_draw_buffer;
|
||||
ctx->Driver.SetReadBuffer = set_read_buffer;
|
||||
|
||||
ctx->Driver.PointsFunc = NULL;
|
||||
ctx->Driver.LineFunc = NULL;
|
||||
|
|
@ -385,7 +423,11 @@ SVGAMesaContext SVGAMesaCreateContext( GLboolean doubleBuffer )
|
|||
NULL, /* share list context */
|
||||
(void *) ctx, GL_TRUE );
|
||||
|
||||
ctx->gl_buffer = gl_create_framebuffer( ctx->gl_vis );
|
||||
ctx->gl_buffer = gl_create_framebuffer( ctx->gl_vis,
|
||||
ctx->gl_vis->DepthBits > 0,
|
||||
ctx->gl_vis->StencilBits > 0,
|
||||
ctx->gl_vis->AccumBits > 0,
|
||||
ctx->gl_vis->AlphaBits > 0 );
|
||||
|
||||
ctx->index = 1;
|
||||
ctx->red = ctx->green = ctx->blue = 255;
|
||||
|
|
@ -445,10 +487,12 @@ SVGAMesaContext SVGAMesaGetCurrentContext( void )
|
|||
*/
|
||||
void SVGAMesaSwapBuffers( void )
|
||||
{
|
||||
void * tmpptr;
|
||||
|
||||
/* vga_waitretrace(); */
|
||||
copy_buffer(SVGABuffer.BackBuffer);
|
||||
#if 000
|
||||
void * tmpptr;
|
||||
#endif
|
||||
|
||||
/* vga_waitretrace(); */
|
||||
copy_buffer(SVGABuffer.BackBuffer);
|
||||
|
||||
#ifndef DEV
|
||||
FLUSH_VB( SVGAMesa->gl_ctx, "swap buffers" );
|
||||
|
|
@ -456,19 +500,21 @@ void SVGAMesaSwapBuffers( void )
|
|||
#endif /* DEV */
|
||||
{
|
||||
#ifdef SVGA_DEBUG
|
||||
sprintf(cbuf,"SVGAMesaSwapBuffers : Swapping...");
|
||||
SVGAlog(cbuf);
|
||||
sprintf(cbuf,"SVGAMesaSwapBuffers : Swapping...");
|
||||
SVGAlog(cbuf);
|
||||
#endif /* SVGA_DEBUG */
|
||||
tmpptr=SVGABuffer.BackBuffer;
|
||||
SVGABuffer.BackBuffer=SVGABuffer.FrontBuffer;
|
||||
SVGABuffer.FrontBuffer=tmpptr;
|
||||
#if 000
|
||||
tmpptr=SVGABuffer.BackBuffer;
|
||||
SVGABuffer.BackBuffer=SVGABuffer.FrontBuffer;
|
||||
SVGABuffer.FrontBuffer=tmpptr;
|
||||
#endif
|
||||
#ifdef SVGA_DEBUG
|
||||
sprintf(cbuf,"SVGAMesaSwapBuffers : WriteBuffer : %p\n"
|
||||
" Readbuffer : %p", \
|
||||
SVGABuffer.BackBuffer, SVGABuffer.FrontBuffer );
|
||||
SVGAlog(cbuf);
|
||||
sprintf(cbuf,"SVGAMesaSwapBuffers : WriteBuffer : %p\n"
|
||||
" Readbuffer : %p", \
|
||||
SVGABuffer.BackBuffer, SVGABuffer.FrontBuffer );
|
||||
SVGAlog(cbuf);
|
||||
#endif /* SVGA_DEBUG */
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#else /*SVGA*/
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
/* $Id: svgamesa15.c,v 1.3 2000/01/23 17:49:54 brianp Exp $ */
|
||||
/* $Id: svgamesa15.c,v 1.4 2000/01/25 00:03:01 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
* Version: 3.2
|
||||
* Version: 3.3
|
||||
* Copyright (C) 1995-2000 Brian Paul
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
|
|
@ -30,25 +30,21 @@
|
|||
#ifdef SVGA
|
||||
|
||||
#include "svgapix.h"
|
||||
#include "svgamesa15.h"
|
||||
|
||||
GLshort * shortBuffer;
|
||||
|
||||
int __svga_drawpixel15(int x, int y, unsigned long c)
|
||||
static void __svga_drawpixel15(int x, int y, unsigned long c)
|
||||
{
|
||||
unsigned long offset;
|
||||
|
||||
shortBuffer=(void *)SVGABuffer.BackBuffer;
|
||||
GLshort *shortBuffer=(void *)SVGABuffer.DrawBuffer;
|
||||
y = SVGAInfo->height-y-1;
|
||||
offset = y * SVGAInfo->width + x;
|
||||
shortBuffer[offset]=c;
|
||||
return 0;
|
||||
}
|
||||
|
||||
unsigned long __svga_getpixel15(int x, int y)
|
||||
static unsigned long __svga_getpixel15(int x, int y)
|
||||
{
|
||||
unsigned long offset;
|
||||
|
||||
shortBuffer=(void *)SVGABuffer.BackBuffer;
|
||||
GLshort *shortBuffer=(void *)SVGABuffer.ReadBuffer;
|
||||
y = SVGAInfo->height-y-1;
|
||||
offset = y * SVGAInfo->width + x;
|
||||
return shortBuffer[offset];
|
||||
|
|
@ -73,19 +69,39 @@ void __clear_color15( GLcontext *ctx,
|
|||
GLbitfield __clear15( GLcontext *ctx, GLbitfield mask, GLboolean all,
|
||||
GLint x, GLint y, GLint width, GLint height )
|
||||
{
|
||||
int i,j;
|
||||
|
||||
if (mask & GL_COLOR_BUFFER_BIT) {
|
||||
shortBuffer=(void *)SVGABuffer.BackBuffer;
|
||||
if (all) {
|
||||
for (i=0;i<SVGABuffer.BufferSize / 2;i++) shortBuffer[i]=SVGAMesa->clear_hicolor;
|
||||
} else {
|
||||
for (i=x;i<width;i++)
|
||||
for (j=y;j<height;j++)
|
||||
__svga_drawpixel15(i,j,SVGAMesa->clear_hicolor);
|
||||
}
|
||||
}
|
||||
return mask & (~GL_COLOR_BUFFER_BIT);
|
||||
int i, j;
|
||||
|
||||
if (mask & DD_FRONT_LEFT_BIT) {
|
||||
GLshort *shortBuffer=(void *)SVGABuffer.FrontBuffer;
|
||||
if (all) {
|
||||
for (i=0;i<SVGABuffer.BufferSize / 2;i++)
|
||||
shortBuffer[i]=SVGAMesa->clear_hicolor;
|
||||
}
|
||||
else {
|
||||
GLubyte *tmp = SVGABuffer.DrawBuffer;
|
||||
SVGABuffer.DrawBuffer = SVGABuffer.FrontBuffer;
|
||||
for (i=x;i<width;i++)
|
||||
for (j=y;j<height;j++)
|
||||
__svga_drawpixel15(i,j,SVGAMesa->clear_hicolor);
|
||||
SVGABuffer.DrawBuffer = tmp;
|
||||
}
|
||||
}
|
||||
if (mask & DD_BACK_LEFT_BIT) {
|
||||
GLshort *shortBuffer=(void *)SVGABuffer.BackBuffer;
|
||||
if (all) {
|
||||
for (i=0;i<SVGABuffer.BufferSize / 2;i++)
|
||||
shortBuffer[i]=SVGAMesa->clear_hicolor;
|
||||
}
|
||||
else {
|
||||
GLubyte *tmp = SVGABuffer.DrawBuffer;
|
||||
SVGABuffer.DrawBuffer = SVGABuffer.BackBuffer;
|
||||
for (i=x;i<width;i++)
|
||||
for (j=y;j<height;j++)
|
||||
__svga_drawpixel15(i,j,SVGAMesa->clear_hicolor);
|
||||
SVGABuffer.DrawBuffer = tmp;
|
||||
}
|
||||
}
|
||||
return mask & (~(DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT));
|
||||
}
|
||||
|
||||
void __write_rgba_span15( const GLcontext *ctx, GLuint n, GLint x, GLint y,
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
/* $Id: svgamesa15.h,v 1.2 2000/01/22 20:08:36 brianp Exp $ */
|
||||
/* $Id: svgamesa15.h,v 1.3 2000/01/25 00:03:02 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
* Version: 3.2
|
||||
* Version: 3.3
|
||||
* Copyright (C) 1995-2000 Brian Paul
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
/* $Id: svgamesa16.c,v 1.3 2000/01/23 17:49:54 brianp Exp $ */
|
||||
/* $Id: svgamesa16.c,v 1.4 2000/01/25 00:03:02 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
* Version: 3.2
|
||||
* Version: 3.3
|
||||
* Copyright (C) 1995-2000 Brian Paul
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
|
|
@ -30,25 +30,23 @@
|
|||
#ifdef SVGA
|
||||
|
||||
#include "svgapix.h"
|
||||
#include "svgamesa16.h"
|
||||
|
||||
GLshort * shortBuffer;
|
||||
|
||||
int __svga_drawpixel16(int x, int y, unsigned long c)
|
||||
static void __svga_drawpixel16(int x, int y, unsigned long c)
|
||||
{
|
||||
unsigned long offset;
|
||||
|
||||
shortBuffer=(void *)SVGABuffer.BackBuffer;
|
||||
GLshort *shortBuffer=(void *)SVGABuffer.DrawBuffer;
|
||||
y = SVGAInfo->height-y-1;
|
||||
offset = y * SVGAInfo->width + x;
|
||||
shortBuffer[offset]=c;
|
||||
return 0;
|
||||
}
|
||||
|
||||
unsigned long __svga_getpixel16(int x, int y)
|
||||
static unsigned long __svga_getpixel16(int x, int y)
|
||||
{
|
||||
unsigned long offset;
|
||||
|
||||
shortBuffer=(void *)SVGABuffer.BackBuffer;
|
||||
GLshort *shortBuffer=(void *)SVGABuffer.ReadBuffer;
|
||||
y = SVGAInfo->height-y-1;
|
||||
offset = y * SVGAInfo->width + x;
|
||||
return shortBuffer[offset];
|
||||
|
|
@ -74,18 +72,38 @@ GLbitfield __clear16( GLcontext *ctx, GLbitfield mask, GLboolean all,
|
|||
GLint x, GLint y, GLint width, GLint height )
|
||||
{
|
||||
int i,j;
|
||||
|
||||
if (mask & GL_COLOR_BUFFER_BIT) {
|
||||
if (all) {
|
||||
shortBuffer=(void *)SVGABuffer.BackBuffer;
|
||||
for (i=0;i<SVGABuffer.BufferSize / 2;i++) shortBuffer[i]=SVGAMesa->clear_hicolor;
|
||||
} else {
|
||||
for (i=x;i<width;i++)
|
||||
for (j=y;j<height;j++)
|
||||
__svga_drawpixel16(i,j,SVGAMesa->clear_hicolor);
|
||||
}
|
||||
}
|
||||
return mask & (~GL_COLOR_BUFFER_BIT);
|
||||
|
||||
if (mask & DD_FRONT_LEFT_BIT) {
|
||||
if (all) {
|
||||
GLshort *shortBuffer=(void *)SVGABuffer.FrontBuffer;
|
||||
for (i=0;i<SVGABuffer.BufferSize / 2;i++)
|
||||
shortBuffer[i]=SVGAMesa->clear_hicolor;
|
||||
}
|
||||
else {
|
||||
GLubyte *tmp = SVGABuffer.DrawBuffer;
|
||||
SVGABuffer.DrawBuffer = SVGABuffer.FrontBuffer;
|
||||
for (i=x;i<width;i++)
|
||||
for (j=y;j<height;j++)
|
||||
__svga_drawpixel16(i,j,SVGAMesa->clear_hicolor);
|
||||
SVGABuffer.DrawBuffer = tmp;
|
||||
}
|
||||
}
|
||||
if (mask & DD_BACK_LEFT_BIT) {
|
||||
if (all) {
|
||||
GLshort *shortBuffer=(void *)SVGABuffer.BackBuffer;
|
||||
for (i=0;i<SVGABuffer.BufferSize / 2;i++)
|
||||
shortBuffer[i]=SVGAMesa->clear_hicolor;
|
||||
}
|
||||
else {
|
||||
GLubyte *tmp = SVGABuffer.DrawBuffer;
|
||||
SVGABuffer.DrawBuffer = SVGABuffer.BackBuffer;
|
||||
for (i=x;i<width;i++)
|
||||
for (j=y;j<height;j++)
|
||||
__svga_drawpixel16(i,j,SVGAMesa->clear_hicolor);
|
||||
SVGABuffer.DrawBuffer = tmp;
|
||||
}
|
||||
}
|
||||
return mask & (~(DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT));
|
||||
}
|
||||
|
||||
void __write_rgba_span16( const GLcontext *ctx, GLuint n, GLint x, GLint y,
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
/* $Id: svgamesa24.c,v 1.3 2000/01/23 17:49:54 brianp Exp $ */
|
||||
/* $Id: svgamesa24.c,v 1.4 2000/01/25 00:03:02 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
* Version: 3.2
|
||||
* Version: 3.3
|
||||
* Copyright (C) 1995-2000 Brian Paul
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
|
|
@ -30,11 +30,11 @@
|
|||
#ifdef SVGA
|
||||
|
||||
#include "svgapix.h"
|
||||
#include "svgamesa24.h"
|
||||
|
||||
_RGB * rgbBuffer;
|
||||
|
||||
#if 0
|
||||
inline int RGB2BGR24(int c)
|
||||
static inline int RGB2BGR24(int c)
|
||||
{
|
||||
asm("rorw $8, %0\n"
|
||||
"rorl $16, %0\n"
|
||||
|
|
@ -44,7 +44,7 @@ inline int RGB2BGR24(int c)
|
|||
return c;
|
||||
}
|
||||
#else
|
||||
int RGB2BGR24(int c)
|
||||
static int RGB2BGR24(int c)
|
||||
{
|
||||
/* XXX this isn't right */
|
||||
return c;
|
||||
|
|
@ -53,26 +53,24 @@ int RGB2BGR24(int c)
|
|||
|
||||
#endif
|
||||
|
||||
int __svga_drawpixel24(int x, int y, GLubyte r, GLubyte g, GLubyte b)
|
||||
static void __svga_drawpixel24(int x, int y, GLubyte r, GLubyte g, GLubyte b)
|
||||
{
|
||||
unsigned long offset;
|
||||
|
||||
rgbBuffer=(void *)SVGABuffer.BackBuffer;
|
||||
_RGB *rgbBuffer=(void *)SVGABuffer.DrawBuffer;
|
||||
y = SVGAInfo->height-y-1;
|
||||
offset = y * SVGAInfo->width + x;
|
||||
|
||||
rgbBuffer[offset].r=r;
|
||||
rgbBuffer[offset].g=g;
|
||||
rgbBuffer[offset].b=b;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
unsigned long __svga_getpixel24(int x, int y)
|
||||
static unsigned long __svga_getpixel24(int x, int y)
|
||||
{
|
||||
unsigned long offset;
|
||||
|
||||
rgbBuffer=(void *)SVGABuffer.BackBuffer;
|
||||
_RGB *rgbBuffer=(void *)SVGABuffer.ReadBuffer;
|
||||
y = SVGAInfo->height-y-1;
|
||||
offset = y * SVGAInfo->width + x;
|
||||
return rgbBuffer[offset].r<<16 | rgbBuffer[offset].g<<8 | rgbBuffer[offset].b;
|
||||
|
|
@ -103,24 +101,47 @@ GLbitfield __clear24( GLcontext *ctx, GLbitfield mask, GLboolean all,
|
|||
{
|
||||
int i,j;
|
||||
|
||||
if (mask & GL_COLOR_BUFFER_BIT) {
|
||||
if (all) {
|
||||
rgbBuffer=(void *)SVGABuffer.BackBuffer;
|
||||
for (i=0;i<SVGABuffer.BufferSize / 3;i++)
|
||||
{
|
||||
rgbBuffer[i].r=SVGAMesa->clear_red;
|
||||
rgbBuffer[i].g=SVGAMesa->clear_green;
|
||||
rgbBuffer[i].b=SVGAMesa->clear_blue;
|
||||
}
|
||||
} else {
|
||||
for (i=x;i<width;i++)
|
||||
for (j=y;j<height;j++)
|
||||
__svga_drawpixel24( i, j, SVGAMesa->clear_red,
|
||||
SVGAMesa->clear_green,
|
||||
SVGAMesa->clear_blue);
|
||||
}
|
||||
if (mask & DD_FRONT_LEFT_BIT) {
|
||||
if (all) {
|
||||
_RGB *rgbBuffer=(void *)SVGABuffer.FrontBuffer;
|
||||
for (i=0;i<SVGABuffer.BufferSize / 3;i++) {
|
||||
rgbBuffer[i].r=SVGAMesa->clear_red;
|
||||
rgbBuffer[i].g=SVGAMesa->clear_green;
|
||||
rgbBuffer[i].b=SVGAMesa->clear_blue;
|
||||
}
|
||||
}
|
||||
else {
|
||||
GLubyte *tmp = SVGABuffer.DrawBuffer;
|
||||
SVGABuffer.DrawBuffer = SVGABuffer.FrontBuffer;
|
||||
for (i=x;i<width;i++)
|
||||
for (j=y;j<height;j++)
|
||||
__svga_drawpixel24( i, j, SVGAMesa->clear_red,
|
||||
SVGAMesa->clear_green,
|
||||
SVGAMesa->clear_blue);
|
||||
SVGABuffer.DrawBuffer = tmp;
|
||||
}
|
||||
}
|
||||
return mask & (~GL_COLOR_BUFFER_BIT);
|
||||
if (mask & DD_BACK_LEFT_BIT) {
|
||||
if (all) {
|
||||
_RGB *rgbBuffer=(void *)SVGABuffer.BackBuffer;
|
||||
for (i=0;i<SVGABuffer.BufferSize / 3;i++) {
|
||||
rgbBuffer[i].r=SVGAMesa->clear_red;
|
||||
rgbBuffer[i].g=SVGAMesa->clear_green;
|
||||
rgbBuffer[i].b=SVGAMesa->clear_blue;
|
||||
}
|
||||
}
|
||||
else {
|
||||
GLubyte *tmp = SVGABuffer.DrawBuffer;
|
||||
SVGABuffer.DrawBuffer = SVGABuffer.BackBuffer;
|
||||
for (i=x;i<width;i++)
|
||||
for (j=y;j<height;j++)
|
||||
__svga_drawpixel24( i, j, SVGAMesa->clear_red,
|
||||
SVGAMesa->clear_green,
|
||||
SVGAMesa->clear_blue);
|
||||
SVGABuffer.DrawBuffer = tmp;
|
||||
}
|
||||
}
|
||||
return mask & (~(DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT));
|
||||
}
|
||||
|
||||
void __write_rgba_span24( const GLcontext *ctx, GLuint n, GLint x, GLint y,
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
/* $Id: svgamesa32.c,v 1.3 2000/01/23 17:49:54 brianp Exp $ */
|
||||
/* $Id: svgamesa32.c,v 1.4 2000/01/25 00:03:02 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
* Version: 3.2
|
||||
* Version: 3.3
|
||||
* Copyright (C) 1995-2000 Brian Paul
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
|
|
@ -30,11 +30,10 @@
|
|||
#ifdef SVGA
|
||||
|
||||
#include "svgapix.h"
|
||||
|
||||
GLint * intBuffer;
|
||||
#include "svgamesa32.h"
|
||||
|
||||
#if 0
|
||||
inline int RGB2BGR32(int c)
|
||||
static inline int RGB2BGR32(int c)
|
||||
{
|
||||
asm("rorw $8, %0\n"
|
||||
"rorl $16, %0\n"
|
||||
|
|
@ -44,29 +43,28 @@ inline int RGB2BGR32(int c)
|
|||
return c;
|
||||
}
|
||||
#else
|
||||
int RGB2BGR32(int c)
|
||||
static int RGB2BGR32(int c)
|
||||
{
|
||||
/* XXX this isn't right */
|
||||
return c;
|
||||
}
|
||||
#endif
|
||||
|
||||
int __svga_drawpixel32(int x, int y, unsigned long c)
|
||||
static void __svga_drawpixel32(int x, int y, unsigned long c)
|
||||
{
|
||||
unsigned long offset;
|
||||
|
||||
intBuffer=(void *)SVGABuffer.BackBuffer;
|
||||
GLint *intBuffer=(void *)SVGABuffer.DrawBuffer;
|
||||
y = SVGAInfo->height-y-1;
|
||||
offset = y * SVGAInfo->width + x;
|
||||
intBuffer[offset]=c;
|
||||
return 0;
|
||||
}
|
||||
|
||||
unsigned long __svga_getpixel32(int x, int y)
|
||||
static unsigned long __svga_getpixel32(int x, int y)
|
||||
{
|
||||
unsigned long offset;
|
||||
|
||||
intBuffer=(void *)SVGABuffer.BackBuffer;
|
||||
const GLint *intBuffer=(void *)SVGABuffer.ReadBuffer;
|
||||
y = SVGAInfo->height-y-1;
|
||||
offset = y * SVGAInfo->width + x;
|
||||
return intBuffer[offset];
|
||||
|
|
@ -94,17 +92,37 @@ GLbitfield __clear32( GLcontext *ctx, GLbitfield mask, GLboolean all,
|
|||
{
|
||||
int i,j;
|
||||
|
||||
if (mask & GL_COLOR_BUFFER_BIT) {
|
||||
if (all) {
|
||||
intBuffer=(void *)SVGABuffer.BackBuffer;
|
||||
for (i=0;i<SVGABuffer.BufferSize / 4;i++) intBuffer[i]=SVGAMesa->clear_truecolor;
|
||||
} else {
|
||||
for (i=x;i<width;i++)
|
||||
for (j=y;j<height;j++)
|
||||
__svga_drawpixel32(i,j,SVGAMesa->clear_truecolor);
|
||||
}
|
||||
if (mask & DD_FRONT_LEFT_BIT) {
|
||||
if (all) {
|
||||
GLint *intBuffer=(void *)SVGABuffer.FrontBuffer;
|
||||
for (i=0;i<SVGABuffer.BufferSize / 4;i++)
|
||||
intBuffer[i]=SVGAMesa->clear_truecolor;
|
||||
}
|
||||
else {
|
||||
GLubyte *tmp = SVGABuffer.DrawBuffer;
|
||||
SVGABuffer.DrawBuffer = SVGABuffer.FrontBuffer;
|
||||
for (i=x;i<width;i++)
|
||||
for (j=y;j<height;j++)
|
||||
__svga_drawpixel32(i,j,SVGAMesa->clear_truecolor);
|
||||
SVGABuffer.DrawBuffer = tmp;
|
||||
}
|
||||
}
|
||||
return mask & (~GL_COLOR_BUFFER_BIT);
|
||||
if (mask & DD_BACK_LEFT_BIT) {
|
||||
if (all) {
|
||||
GLint *intBuffer=(void *)SVGABuffer.BackBuffer;
|
||||
for (i=0;i<SVGABuffer.BufferSize / 4;i++)
|
||||
intBuffer[i]=SVGAMesa->clear_truecolor;
|
||||
}
|
||||
else {
|
||||
GLubyte *tmp = SVGABuffer.DrawBuffer;
|
||||
SVGABuffer.DrawBuffer = SVGABuffer.BackBuffer;
|
||||
for (i=x;i<width;i++)
|
||||
for (j=y;j<height;j++)
|
||||
__svga_drawpixel32(i,j,SVGAMesa->clear_truecolor);
|
||||
SVGABuffer.DrawBuffer = tmp;
|
||||
}
|
||||
}
|
||||
return mask & (~(DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT));
|
||||
}
|
||||
|
||||
void __write_rgba_span32( const GLcontext *ctx, GLuint n, GLint x, GLint y,
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
/* $Id: svgamesa8.c,v 1.3 2000/01/23 17:49:54 brianp Exp $ */
|
||||
/* $Id: svgamesa8.c,v 1.4 2000/01/25 00:03:02 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
* Version: 3.2
|
||||
* Version: 3.3
|
||||
* Copyright (C) 1995-2000 Brian Paul
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
|
|
@ -31,25 +31,22 @@
|
|||
|
||||
|
||||
#include "svgapix.h"
|
||||
#include "svgamesa8.h"
|
||||
|
||||
int __svga_drawpixel8(int x, int y, unsigned long c)
|
||||
static void __svga_drawpixel8(int x, int y, unsigned long c)
|
||||
{
|
||||
unsigned long offset;
|
||||
|
||||
y = SVGAInfo->height-y-1;
|
||||
offset = y * SVGAInfo->linewidth + x;
|
||||
SVGABuffer.BackBuffer[offset]=c;
|
||||
|
||||
return 0;
|
||||
SVGABuffer.DrawBuffer[offset]=c;
|
||||
}
|
||||
|
||||
unsigned long __svga_getpixel8(int x, int y)
|
||||
static unsigned long __svga_getpixel8(int x, int y)
|
||||
{
|
||||
unsigned long offset;
|
||||
|
||||
y = SVGAInfo->height-y-1;
|
||||
offset = y * SVGAInfo->linewidth + x;
|
||||
return SVGABuffer.BackBuffer[offset];
|
||||
return SVGABuffer.ReadBuffer[offset];
|
||||
}
|
||||
|
||||
void __set_index8( GLcontext *ctx, GLuint index )
|
||||
|
|
@ -67,18 +64,33 @@ GLbitfield __clear8( GLcontext *ctx, GLbitfield mask, GLboolean all,
|
|||
{
|
||||
int i,j;
|
||||
|
||||
if (mask & GL_COLOR_BUFFER_BIT) {
|
||||
|
||||
if (all)
|
||||
{
|
||||
memset(SVGABuffer.BackBuffer,SVGAMesa->clear_index,SVGABuffer.BufferSize);
|
||||
} else {
|
||||
for (i=x;i<width;i++)
|
||||
for (j=y;j<height;j++)
|
||||
__svga_drawpixel8(i,j,SVGAMesa->clear_index);
|
||||
}
|
||||
}
|
||||
return mask & (~GL_COLOR_BUFFER_BIT);
|
||||
if (mask & DD_FRONT_LEFT_BIT) {
|
||||
if (all) {
|
||||
memset(SVGABuffer.FrontBuffer, SVGAMesa->clear_index, SVGABuffer.BufferSize);
|
||||
}
|
||||
else {
|
||||
GLubyte *tmp = SVGABuffer.DrawBuffer;
|
||||
SVGABuffer.DrawBuffer = SVGABuffer.FrontBuffer;
|
||||
for (i=x;i<width;i++)
|
||||
for (j=y;j<height;j++)
|
||||
__svga_drawpixel8(i,j,SVGAMesa->clear_index);
|
||||
SVGABuffer.DrawBuffer = tmp;
|
||||
}
|
||||
}
|
||||
if (mask & DD_BACK_LEFT_BIT) {
|
||||
if (all) {
|
||||
memset(SVGABuffer.BackBuffer, SVGAMesa->clear_index, SVGABuffer.BufferSize);
|
||||
}
|
||||
else {
|
||||
GLubyte *tmp = SVGABuffer.DrawBuffer;
|
||||
SVGABuffer.DrawBuffer = SVGABuffer.BackBuffer;
|
||||
for (i=x;i<width;i++)
|
||||
for (j=y;j<height;j++)
|
||||
__svga_drawpixel8(i,j,SVGAMesa->clear_index);
|
||||
SVGABuffer.DrawBuffer = tmp;
|
||||
}
|
||||
}
|
||||
return mask & (~(DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT));
|
||||
}
|
||||
|
||||
void __write_ci32_span8( const GLcontext *ctx, GLuint n, GLint x, GLint y,
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
/* $Id: svgapix.h,v 1.2 2000/01/22 20:08:36 brianp Exp $ */
|
||||
/* $Id: svgapix.h,v 1.3 2000/01/25 00:03:02 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
* Version: 3.2
|
||||
* Version: 3.3
|
||||
* Copyright (C) 1995-2000 Brian Paul
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
|
|
@ -62,6 +62,8 @@ struct svga_buffer {
|
|||
GLubyte * FrontBuffer;
|
||||
GLubyte * BackBuffer;
|
||||
GLubyte * VideoRam;
|
||||
GLubyte * DrawBuffer; /* == FrontBuffer or BackBuffer */
|
||||
GLubyte * ReadBuffer; /* == FrontBuffer or BackBuffer */
|
||||
};
|
||||
|
||||
extern struct svga_buffer SVGABuffer;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue