diff options
Diffstat (limited to 'src/mesa/drivers/x11')
| -rw-r--r-- | src/mesa/drivers/x11/xm_api.c | 9 | ||||
| -rw-r--r-- | src/mesa/drivers/x11/xm_dd.c | 30 | ||||
| -rw-r--r-- | src/mesa/drivers/x11/xmesaP.h | 4 | 
3 files changed, 33 insertions, 10 deletions
diff --git a/src/mesa/drivers/x11/xm_api.c b/src/mesa/drivers/x11/xm_api.c index 6ae5b6fd58..2c7be9f182 100644 --- a/src/mesa/drivers/x11/xm_api.c +++ b/src/mesa/drivers/x11/xm_api.c @@ -79,6 +79,7 @@  #include "tnl/t_context.h"  #include "tnl/t_pipeline.h"  #include "drivers/common/driverfuncs.h" +#include "drivers/common/meta.h"  /**   * Global X driver lock @@ -1317,6 +1318,7 @@ xmesa_convert_from_x_visual_type( int visualType )  /* sw extensions not associated with some GL version */  #define need_GL_ARB_shader_objects +#define need_GL_ARB_sync  #define need_GL_ARB_vertex_program  #define need_GL_APPLE_vertex_array_object  #define need_GL_ATI_fragment_shader @@ -1346,6 +1348,7 @@ const struct dri_extension card_extensions[] =     { "GL_SGI_color_table",		GL_SGI_color_table_functions },     { "GL_ARB_shader_objects",		GL_ARB_shader_objects_functions }, +   { "GL_ARB_sync",			GL_ARB_sync_functions },     { "GL_ARB_vertex_program",		GL_ARB_vertex_program_functions },     { "GL_APPLE_vertex_array_object",	GL_APPLE_vertex_array_object_functions },     { "GL_ATI_fragment_shader",		GL_ATI_fragment_shader_functions }, @@ -1641,6 +1644,9 @@ XMesaContext XMesaCreateContext( XMesaVisual v, XMesaContext share_list )     xmesa_register_swrast_functions( mesaCtx );     _swsetup_Wakeup(mesaCtx); +   if (TEST_META_FUNCS) +      _mesa_meta_init(mesaCtx); +     return c;  } @@ -1655,6 +1661,9 @@ void XMesaDestroyContext( XMesaContext c )     FXdestroyContext( XMESA_BUFFER(mesaCtx->DrawBuffer) );  #endif +   if (TEST_META_FUNCS) +      _mesa_meta_free( mesaCtx ); +     _swsetup_DestroyContext( mesaCtx );     _swrast_DestroyContext( mesaCtx );     _tnl_DestroyContext( mesaCtx ); diff --git a/src/mesa/drivers/x11/xm_dd.c b/src/mesa/drivers/x11/xm_dd.c index 305df548fa..465a40ac8d 100644 --- a/src/mesa/drivers/x11/xm_dd.c +++ b/src/mesa/drivers/x11/xm_dd.c @@ -51,6 +51,7 @@  #include "swrast_setup/swrast_setup.h"  #include "tnl/tnl.h"  #include "tnl/t_context.h" +#include "drivers/common/meta.h"  #include "xmesaP.h" @@ -912,8 +913,9 @@ xmesa_update_state( GLcontext *ctx, GLbitfield new_state )     /*      * GL_DITHER, GL_READ/DRAW_BUFFER, buffer binding state, etc. effect      * renderbuffer span/clear funcs. +    * Check _NEW_COLOR to detect dither enable/disable.      */ -   if (new_state & (_NEW_COLOR | _NEW_PIXEL | _NEW_BUFFERS)) { +   if (new_state & (_NEW_COLOR | _NEW_BUFFERS)) {        XMesaBuffer xmbuf = XMESA_BUFFER(ctx->DrawBuffer);        struct xmesa_renderbuffer *front_xrb, *back_xrb; @@ -1146,17 +1148,25 @@ xmesa_init_driver_functions( XMesaVisual xmvisual,     driver->IndexMask = index_mask;     driver->ColorMask = color_mask;     driver->Enable = enable; -   driver->Clear = clear_buffers;     driver->Viewport = xmesa_viewport; -#ifndef XFree86Server -   driver->CopyPixels = xmesa_CopyPixels; -   if (xmvisual->undithered_pf == PF_8R8G8B && -       xmvisual->dithered_pf == PF_8R8G8B && -       xmvisual->BitsPerPixel == 32) { -      driver->DrawPixels = xmesa_DrawPixels_8R8G8B; +   if (TEST_META_FUNCS) { +      driver->Clear = _mesa_meta_clear; +      driver->CopyPixels = _mesa_meta_copy_pixels; +      driver->BlitFramebuffer = _mesa_meta_blit_framebuffer; +      driver->DrawPixels = _mesa_meta_draw_pixels;     } -   else if (xmvisual->undithered_pf == PF_5R6G5B) { -      driver->DrawPixels = xmesa_DrawPixels_5R6G5B; +   else { +      driver->Clear = clear_buffers; +#ifndef XFree86Server +      driver->CopyPixels = xmesa_CopyPixels; +      if (xmvisual->undithered_pf == PF_8R8G8B && +          xmvisual->dithered_pf == PF_8R8G8B && +          xmvisual->BitsPerPixel == 32) { +         driver->DrawPixels = xmesa_DrawPixels_8R8G8B; +      } +      else if (xmvisual->undithered_pf == PF_5R6G5B) { +         driver->DrawPixels = xmesa_DrawPixels_5R6G5B; +      }     }  #endif     driver->TestProxyTexImage = test_proxy_teximage; diff --git a/src/mesa/drivers/x11/xmesaP.h b/src/mesa/drivers/x11/xmesaP.h index 65e747d7b9..25db55862e 100644 --- a/src/mesa/drivers/x11/xmesaP.h +++ b/src/mesa/drivers/x11/xmesaP.h @@ -581,4 +581,8 @@ extern void xmesa_register_swrast_functions( GLcontext *ctx );  #define ENABLE_EXT_timer_query 0 /* may not have 64-bit GLuint64EXT */  #endif + +#define TEST_META_FUNCS 0 + +  #endif  | 
