---
 src/gallium/state_trackers/dri/dri_context.c  |    6 +--
 src/gallium/state_trackers/dri/dri_drawable.c |   13 ++++++
 src/gallium/state_trackers/dri/dri_screen.c   |   13 ++++++
 src/mesa/SConscript                           |    1 -
 src/mesa/sources.mak                          |    1 -
 src/mesa/state_tracker/st_atom.c              |    7 +++-
 src/mesa/state_tracker/st_cb_viewport.c       |   53 -------------------------
 src/mesa/state_tracker/st_cb_viewport.h       |   29 -------------
 src/mesa/state_tracker/st_context.c           |    2 -
 9 files changed, 34 insertions(+), 91 deletions(-)
 delete mode 100644 src/mesa/state_tracker/st_cb_viewport.c
 delete mode 100644 src/mesa/state_tracker/st_cb_viewport.h

diff --git a/src/gallium/state_trackers/dri/dri_context.c 
b/src/gallium/state_trackers/dri/dri_context.c
index f2e5f3f..f2d0e61 100644
--- a/src/gallium/state_trackers/dri/dri_context.c
+++ b/src/gallium/state_trackers/dri/dri_context.c
@@ -162,10 +162,8 @@ dri_make_current(__DRIcontext * cPriv,
       if (__dri1_api_hooks) {
         dri1_update_drawables(ctx, draw, read);
       } else {
-        if (driDrawPriv)
-           dri_get_buffers(driDrawPriv);
-        if (driDrawPriv != driReadPriv && driReadPriv)
-           dri_get_buffers(driReadPriv);
+        dri_update_buffer(ctx->pipe->screen,
+                          ctx->pipe->priv);
       }
    } else {
       st_make_current(NULL, NULL, NULL);
diff --git a/src/gallium/state_trackers/dri/dri_drawable.c 
b/src/gallium/state_trackers/dri/dri_drawable.c
index 0fdfa96..9aaa662 100644
--- a/src/gallium/state_trackers/dri/dri_drawable.c
+++ b/src/gallium/state_trackers/dri/dri_drawable.c
@@ -273,7 +273,20 @@ dri_update_buffer(struct pipe_screen *screen, void 
*context_private)
 {
    struct dri_context *ctx = (struct dri_context *)context_private;
 
+   if (ctx->d_stamp == *ctx->dPriv->pStamp &&
+       ctx->r_stamp == *ctx->rPriv->pStamp)
+      return;
+
+   ctx->d_stamp = *ctx->dPriv->pStamp;
+   ctx->r_stamp = *ctx->rPriv->pStamp;
+
+   st_flush(ctx->st, PIPE_FLUSH_RENDER_CACHE, NULL);
+
+   /* Ask the X server for new renderbuffers. */
    dri_get_buffers(ctx->dPriv);
+   if (ctx->dPriv != ctx->rPriv)
+      dri_get_buffers(ctx->rPriv);
+
 }
 
 void
diff --git a/src/gallium/state_trackers/dri/dri_screen.c 
b/src/gallium/state_trackers/dri/dri_screen.c
index d8c0543..a66ab70 100644
--- a/src/gallium/state_trackers/dri/dri_screen.c
+++ b/src/gallium/state_trackers/dri/dri_screen.c
@@ -63,6 +63,18 @@ static const __DRItexBufferExtension dri2TexBufferExtension 
= {
    dri2_set_tex_buffer2,
 };
 
+static void
+dri2_flush_drawable(__DRIdrawable *draw)
+{
+}
+
+static const __DRI2flushExtension dri2FlushExtension = {
+    { __DRI2_FLUSH, __DRI2_FLUSH_VERSION },
+    dri2_flush_drawable,
+    NULL,
+    dri2InvalidateDrawable,
+};
+
    static const __DRIextension *dri_screen_extensions[] = {
       &driReadDrawableExtension,
       &driCopySubBufferExtension.base,
@@ -70,6 +82,7 @@ static const __DRItexBufferExtension dri2TexBufferExtension = 
{
       &driFrameTrackingExtension.base,
       &driMediaStreamCounterExtension.base,
       &dri2TexBufferExtension.base,
+      &dri2FlushExtension.base,
       NULL
    };
 
diff --git a/src/mesa/SConscript b/src/mesa/SConscript
index bdcfffe..dc12cbe 100644
--- a/src/mesa/SConscript
+++ b/src/mesa/SConscript
@@ -174,7 +174,6 @@ if env['platform'] != 'winddk':
                'state_tracker/st_cb_readpixels.c',
                'state_tracker/st_cb_strings.c',
                'state_tracker/st_cb_texture.c',
-               'state_tracker/st_cb_viewport.c',
                'state_tracker/st_context.c',
                'state_tracker/st_debug.c',
                'state_tracker/st_draw.c',
diff --git a/src/mesa/sources.mak b/src/mesa/sources.mak
index a4d09c7..99aca7d 100644
--- a/src/mesa/sources.mak
+++ b/src/mesa/sources.mak
@@ -203,7 +203,6 @@ STATETRACKER_SOURCES = \
        state_tracker/st_cb_readpixels.c \
        state_tracker/st_cb_strings.c \
        state_tracker/st_cb_texture.c \
-       state_tracker/st_cb_viewport.c \
        state_tracker/st_context.c \
        state_tracker/st_debug.c \
        state_tracker/st_draw.c \
diff --git a/src/mesa/state_tracker/st_atom.c b/src/mesa/state_tracker/st_atom.c
index 73df44d..6a7ebff 100644
--- a/src/mesa/state_tracker/st_atom.c
+++ b/src/mesa/state_tracker/st_atom.c
@@ -35,7 +35,8 @@
 #include "st_cb_bitmap.h"
 #include "st_program.h"
 
-       
+#include "pipe/p_context.h"
+
 
 /**
  * This is used to initialize st->atoms[].
@@ -135,6 +136,10 @@ void st_validate_state( struct st_context *st )
 
    check_program_state( st );
 
+   if (st->pipe->screen->update_buffer)
+      st->pipe->screen->update_buffer(st->pipe->screen,
+                                     st->pipe->priv);
+
    if (state->st == 0)
       return;
 
diff --git a/src/mesa/state_tracker/st_cb_viewport.c 
b/src/mesa/state_tracker/st_cb_viewport.c
deleted file mode 100644
index ab11c5b..0000000
--- a/src/mesa/state_tracker/st_cb_viewport.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/**************************************************************************
- * 
- * Copyright 2009 VMware, 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 TUNGSTEN 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 "main/glheader.h"
-#include "st_context.h"
-#include "st_public.h"
-#include "st_cb_viewport.h"
-
-#include "pipe/p_context.h"
-#include "pipe/p_inlines.h"
-#include "pipe/p_state.h"
-#include "pipe/p_defines.h"
-#include "pipe/internal/p_winsys_screen.h"
-
-
-static void st_viewport(GLcontext * ctx, GLint x, GLint y,
-                        GLsizei width, GLsizei height)
-{
-   struct st_context *st = ctx->st;
-
-   if (st->pipe->screen && st->pipe->screen->update_buffer)
-      st->pipe->screen->update_buffer( st->pipe->screen,
-                                       st->pipe->priv );
-}
-
-void st_init_viewport_functions(struct dd_function_table *functions)
-{
-   functions->Viewport = st_viewport;
-}
diff --git a/src/mesa/state_tracker/st_cb_viewport.h 
b/src/mesa/state_tracker/st_cb_viewport.h
deleted file mode 100644
index 44948e5..0000000
--- a/src/mesa/state_tracker/st_cb_viewport.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/**************************************************************************
- * 
- * Copyright 2009 VMware, 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 TUNGSTEN 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.
- * 
- **************************************************************************/
-
-extern void
-st_init_viewport_functions(struct dd_function_table *functions);
diff --git a/src/mesa/state_tracker/st_context.c 
b/src/mesa/state_tracker/st_context.c
index 9e6ce30..d37bdc8 100644
--- a/src/mesa/state_tracker/st_context.c
+++ b/src/mesa/state_tracker/st_context.c
@@ -61,7 +61,6 @@
 #include "st_cb_texture.h"
 #include "st_cb_flush.h"
 #include "st_cb_strings.h"
-#include "st_cb_viewport.h"
 #include "st_atom.h"
 #include "st_draw.h"
 #include "st_extensions.h"
@@ -348,7 +347,6 @@ void st_init_driver_functions(struct dd_function_table 
*functions)
    st_init_texture_functions(functions);
    st_init_flush_functions(functions);
    st_init_string_functions(functions);
-   st_init_viewport_functions(functions);
 
    functions->UpdateState = st_invalidate_state;
 }
-- 
1.6.4.4


------------------------------------------------------------------------------
Throughout its 18-year history, RSA Conference consistently attracts the
world's best and brightest in the field, creating opportunities for Conference
attendees to learn about information security's most important issues through
interactions with peers, luminaries and emerging and established companies.
http://p.sf.net/sfu/rsaconf-dev2dev
_______________________________________________
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev

Reply via email to