diff options
Diffstat (limited to 'src/mesa/drivers/dri/sis/sis_dd.c')
-rw-r--r-- | src/mesa/drivers/dri/sis/sis_dd.c | 265 |
1 files changed, 0 insertions, 265 deletions
diff --git a/src/mesa/drivers/dri/sis/sis_dd.c b/src/mesa/drivers/dri/sis/sis_dd.c deleted file mode 100644 index bba516f8dcd..00000000000 --- a/src/mesa/drivers/dri/sis/sis_dd.c +++ /dev/null @@ -1,265 +0,0 @@ -/************************************************************************** - -Copyright 2000 Silicon Integrated Systems Corp, Inc., HsinChu, Taiwan. -Copyright 2003 Eric Anholt -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 -ERIC ANHOLT OR SILICON INTEGRATED SYSTEMS CORP BE LIABLE FOR ANY CLAIM, -DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -USE OR OTHER DEALINGS IN THE SOFTWARE. - -**************************************************************************/ - -/* - * Authors: - * Sung-Ching Lin <sclin@sis.com.tw> - * Eric Anholt <anholt@FreeBSD.org> - * - */ - -#include "sis_context.h" -#include "sis_dd.h" -#include "sis_lock.h" -#include "sis_alloc.h" -#include "sis_span.h" -#include "sis_state.h" -#include "sis_tris.h" - -#include "main/formats.h" -#include "main/renderbuffer.h" - -#include "utils.h" - -/* Return the width and height of the given buffer. - */ -static void -sisGetBufferSize( struct gl_framebuffer *buffer, - GLuint *width, GLuint *height ) -{ - GET_CURRENT_CONTEXT(ctx); - sisContextPtr smesa = SIS_CONTEXT(ctx); - - LOCK_HARDWARE(); - *width = smesa->driDrawable->w; - *height = smesa->driDrawable->h; - UNLOCK_HARDWARE(); -} - -/* Return various strings for glGetString(). - */ -static const GLubyte * -sisGetString( struct gl_context *ctx, GLenum name ) -{ - sisContextPtr smesa = SIS_CONTEXT(ctx); - static char buffer[128]; - unsigned offset; - GLuint agp_mode = (smesa->AGPSize > 0); - - switch ( name ) - { - case GL_VENDOR: - return (GLubyte *)"Eric Anholt"; - - case GL_RENDERER: - offset = driGetRendererString( buffer, "SiS", agp_mode ); - - return (GLubyte *)buffer; - - default: - return NULL; - } -} - -/* Send all commands to the hardware. - */ -static void -sisFlush( struct gl_context *ctx ) -{ - sisContextPtr smesa = SIS_CONTEXT(ctx); - - SIS_FIREVERTICES(smesa); -} - -/* Make sure all commands have been sent to the hardware and have - * completed processing. - */ -static void -sisFinish( struct gl_context *ctx ) -{ - sisContextPtr smesa = SIS_CONTEXT(ctx); - - SIS_FIREVERTICES(smesa); - LOCK_HARDWARE(); - WaitEngIdle( smesa ); - UNLOCK_HARDWARE(); -} - -static void -sisDeleteRenderbuffer(struct gl_renderbuffer *rb) -{ - /* Don't free() since we're contained in sis_context struct. */ -} - -static GLboolean -sisRenderbufferStorage(struct gl_context *ctx, struct gl_renderbuffer *rb, - GLenum internalFormat, GLuint width, GLuint height) -{ - rb->Width = width; - rb->Height = height; - rb->InternalFormat = internalFormat; - return GL_TRUE; -} - -static void -sisInitRenderbuffer(struct gl_renderbuffer *rb, GLenum format) -{ - const GLuint name = 0; - - _mesa_init_renderbuffer(rb, name); - - /* Make sure we're using a null-valued GetPointer routine */ - assert(rb->GetPointer(NULL, rb, 0, 0) == NULL); - - rb->InternalFormat = format; - - if (format == GL_RGBA) { - /* Color */ - rb->Format = MESA_FORMAT_ARGB8888; - rb->DataType = GL_UNSIGNED_BYTE; - } - else if (format == GL_DEPTH_COMPONENT16) { - /* Depth */ - /* we always Get/Put 32-bit Z values */ - rb->Format = MESA_FORMAT_Z16; - rb->DataType = GL_UNSIGNED_INT; - } - else if (format == GL_DEPTH_COMPONENT24) { - /* Depth */ - /* we always Get/Put 32-bit Z values */ - rb->Format = MESA_FORMAT_Z32; - rb->DataType = GL_UNSIGNED_INT; - } - else { - /* Stencil */ - ASSERT(format == GL_STENCIL_INDEX8_EXT); - rb->Format = MESA_FORMAT_S8; - rb->DataType = GL_UNSIGNED_BYTE; - } - - rb->Delete = sisDeleteRenderbuffer; - rb->AllocStorage = sisRenderbufferStorage; -} - -void -sisUpdateBufferSize(sisContextPtr smesa) -{ - __GLSiSHardware *current = &smesa->current; - __GLSiSHardware *prev = &smesa->prev; - struct gl_framebuffer *fb = smesa->glCtx->DrawBuffer; - - if (!smesa->front.Base.InternalFormat) { - /* do one-time init for the renderbuffers */ - sisInitRenderbuffer(&smesa->front.Base, GL_RGBA); - sisSetSpanFunctions(&smesa->front, &fb->Visual); - _mesa_add_renderbuffer(fb, BUFFER_FRONT_LEFT, &smesa->front.Base); - - if (fb->Visual.doubleBufferMode) { - sisInitRenderbuffer(&smesa->back.Base, GL_RGBA); - sisSetSpanFunctions(&smesa->back, &fb->Visual); - _mesa_add_renderbuffer(fb, BUFFER_BACK_LEFT, &smesa->back.Base); - } - - if (smesa->glCtx->Visual.depthBits > 0) { - sisInitRenderbuffer(&smesa->depth.Base, - (smesa->glCtx->Visual.depthBits == 16 - ? GL_DEPTH_COMPONENT16 : GL_DEPTH_COMPONENT24)); - sisSetSpanFunctions(&smesa->depth, &fb->Visual); - _mesa_add_renderbuffer(fb, BUFFER_DEPTH, &smesa->depth.Base); - } - - if (smesa->glCtx->Visual.stencilBits > 0) { - sisInitRenderbuffer(&smesa->stencil.Base, GL_STENCIL_INDEX8_EXT); - sisSetSpanFunctions(&smesa->stencil, &fb->Visual); - _mesa_add_renderbuffer(fb, BUFFER_STENCIL, &smesa->stencil.Base); - } - } - - /* Make sure initialization did what we think it should */ - assert(smesa->front.Base.InternalFormat); - assert(smesa->front.Base.AllocStorage); - if (fb->Visual.doubleBufferMode) { - assert(fb->Attachment[BUFFER_BACK_LEFT].Renderbuffer); - assert(smesa->front.Base.AllocStorage); - } - if (fb->Visual.depthBits) { - assert(fb->Attachment[BUFFER_DEPTH].Renderbuffer); - assert(smesa->depth.Base.AllocStorage); - } - - /* XXX Should get the base offset of the frontbuffer from the X Server */ - smesa->front.offset = smesa->driDrawable->x * smesa->bytesPerPixel + - smesa->driDrawable->y * smesa->front.pitch; - smesa->front.map = (char *) smesa->driScreen->pFB + smesa->front.offset; - - if ( smesa->width == smesa->driDrawable->w && - smesa->height == smesa->driDrawable->h ) - { - return; - } - - smesa->front.bpp = smesa->bytesPerPixel * 8; - /* Front pitch set on context create */ - smesa->front.size = smesa->front.pitch * smesa->driDrawable->h; - - smesa->width = smesa->driDrawable->w; - smesa->height = smesa->driDrawable->h; - smesa->bottom = smesa->height - 1; - - if (smesa->back.offset) - sisFreeBackbuffer( smesa ); - if (smesa->depth.offset) - sisFreeZStencilBuffer( smesa ); - - if ( smesa->glCtx->Visual.depthBits > 0 ) - sisAllocZStencilBuffer( smesa ); - if ( smesa->glCtx->Visual.doubleBufferMode ) - sisAllocBackbuffer( smesa ); - - current->hwZ &= ~MASK_ZBufferPitch; - current->hwZ |= smesa->depth.pitch >> 2; - current->hwOffsetZ = smesa->depth.offset >> 2; - - if ((current->hwOffsetZ != prev->hwOffsetZ) || (current->hwZ != prev->hwZ)) { - prev->hwOffsetZ = current->hwOffsetZ; - prev->hwZ = current->hwZ; - smesa->GlobalFlag |= GFLAG_ZSETTING; - } - - sisUpdateClipping( smesa->glCtx ); -} - -/* Initialize the driver's misc functions. - */ -void -sisInitDriverFuncs( struct dd_function_table *functions ) -{ - functions->GetBufferSize = sisGetBufferSize; - functions->GetString = sisGetString; - functions->Finish = sisFinish; - functions->Flush = sisFlush; -} |