cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * Mesa 3-D graphics library
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * Version: 6.3
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * Copyright (C) 1999-2005 Brian Paul All Rights Reserved.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * Permission is hereby granted, free of charge, to any person obtaining a
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * copy of this software and associated documentation files (the "Software"),
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * to deal in the Software without restriction, including without limitation
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * the rights to use, copy, modify, merge, publish, distribute, sublicense,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * and/or sell copies of the Software, and to permit persons to whom the
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * Software is furnished to do so, subject to the following conditions:
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * The above copyright notice and this permission notice shall be included
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * in all copies or substantial portions of the Software.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/* Minimal swrast-based dri loadable driver.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * -- Use malloced (rather than framebuffer) memory for backbuffer
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * -- 32bpp is hardwired -- fix
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * -- No mechanism for cliprects or resize notification --
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * assumes this is a fullscreen device.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * -- No locking -- assumes this is the only driver accessing this
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * -- Doesn't (yet) make use of any acceleration or other interfaces
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * provided by fb. Would be entirely happy working against any
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * fullscreen interface.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * -- HOWEVER: only a small number of pixelformats are supported, and
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * the mechanism for choosing between them makes some assumptions
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * that may not be valid everywhere.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/* sw extensions for imaging */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/* sw extensions not associated with some GL version */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync { "GL_EXT_blend_color", GL_EXT_blend_color_functions },
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync { "GL_EXT_blend_minmax", GL_EXT_blend_minmax_functions },
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync { "GL_EXT_convolution", GL_EXT_convolution_functions },
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync { "GL_EXT_histogram", GL_EXT_histogram_functions },
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync { "GL_SGI_color_table", GL_SGI_color_table_functions },
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync { "GL_ARB_shader_objects", GL_ARB_shader_objects_functions },
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync { "GL_ARB_vertex_program", GL_ARB_vertex_program_functions },
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync { "GL_APPLE_vertex_array_object", GL_APPLE_vertex_array_object_functions },
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync { "GL_ATI_fragment_shader", GL_ATI_fragment_shader_functions },
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync { "GL_EXT_depth_bounds_test", GL_EXT_depth_bounds_test_functions },
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync { "GL_EXT_framebuffer_object", GL_EXT_framebuffer_object_functions },
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync { "GL_EXT_framebuffer_blit", GL_EXT_framebuffer_blit_functions },
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync { "GL_EXT_gpu_program_parameters", GL_EXT_gpu_program_parameters_functions },
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync { "GL_EXT_paletted_texture", GL_EXT_paletted_texture_functions },
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync { "GL_IBM_multimode_draw_arrays", GL_IBM_multimode_draw_arrays_functions },
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync { "GL_MESA_resize_buffers", GL_MESA_resize_buffers_functions },
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync { "GL_NV_vertex_program", GL_NV_vertex_program_functions },
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync { "GL_NV_fragment_program", GL_NV_fragment_program_functions },
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncvoid fbSetSpanFunctions(driRenderbuffer *drb, const GLvisual *vis);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef struct {
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync __DRIdrawablePrivate *drawable; /* drawable bound to this ctx */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define FB_CONTEXT(ctx) ((fbContextPtr)(ctx->DriverCtx))
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncstatic const GLubyte *
(void) ctx;
switch (pname) {
case GL_RENDERER:
return NULL;
#include "swrast/s_spantemp.h"
#include "swrast/s_spantemp.h"
DST[0] = ( (((VALUE[RCOMP]) & 0xf8) << 8) | (((VALUE[GCOMP]) & 0xfc) << 3) | ((VALUE[BCOMP]) >> 3) )
#include "swrast/s_spantemp.h"
DST[0] = ( (((VALUE[RCOMP]) & 0xf8) << 7) | (((VALUE[GCOMP]) & 0xf8) << 2) | ((VALUE[BCOMP]) >> 3) )
#include "swrast/s_spantemp.h"
#include "swrast/s_spantemp.h"
unsigned depth_bits,
unsigned stencil_bits,
if(deep) {
depth_bits_array[0] = 0;
stencil_bits_array[0] = 0;
stencil_bits_array[0] = 0;
return driCreateConfigs(
return NULL;
static GLboolean
void *sharedContextPrivate)
if ( !fbmesa )
return GL_FALSE;
if (sharedContextPrivate)
return GL_FALSE;
return GL_TRUE;
if ( fbmesa ) {
static GLboolean
if (isPixmap) {
if (!mesa_framebuffer)
struct gl_renderbuffer * front_renderbuffer = mesa_framebuffer->Attachment[BUFFER_FRONT_LEFT].Renderbuffer;
for (i = 0; i < dPriv->h; i++) {
static GLboolean
if ( driContextPriv ) {
return GL_TRUE;
static GLboolean
return GL_TRUE;