[Mesa-dev] [PATCH 03/11] gallium: Use base.stamp for all drawable invalidation checks.

Axel Davy axel.davy at ens.fr
Tue May 27 17:55:08 PDT 2014


From: Keith Packard <keithp at keithp.com>

Upper levels of the stack use base.stamp to tell when a drawable needs to be
revalidated, but the dri state tracker was using dPriv->lastStamp. Those two,
along with dri2.stamp, all get simultaneously incremented when a dri2
invalidate event was delivered, and so end up containing precisely the same
value.

This patch doesn't change the fact that there are three variables, rather it
switches all of the tests to use only base.stamp, which is functionally
equivalent to the previous code.

Then, it passes base.stamp to the image loader getBuffers function so that the
one which is checked will get updated by the XCB special event queue used by DRI3.

Signed-off-by: Keith Packard <keithp at keithp.com>
Reviewed-by: Marek Olšák <marek.olsak at amd.com>
---
 src/gallium/state_trackers/dri/common/dri_drawable.c | 4 ++--
 src/gallium/state_trackers/dri/drm/dri2.c            | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/gallium/state_trackers/dri/common/dri_drawable.c b/src/gallium/state_trackers/dri/common/dri_drawable.c
index b7df053..b321415 100644
--- a/src/gallium/state_trackers/dri/common/dri_drawable.c
+++ b/src/gallium/state_trackers/dri/common/dri_drawable.c
@@ -73,7 +73,7 @@ dri_st_framebuffer_validate(struct st_context_iface *stctx,
     * checked.
     */
    do {
-      lastStamp = drawable->dPriv->lastStamp;
+      lastStamp = drawable->base.stamp;
       new_stamp = (drawable->texture_stamp != lastStamp);
 
       if (new_stamp || new_mask || screen->broken_invalidate) {
@@ -91,7 +91,7 @@ dri_st_framebuffer_validate(struct st_context_iface *stctx,
          drawable->texture_stamp = lastStamp;
          drawable->texture_mask = statt_mask;
       }
-   } while (lastStamp != drawable->dPriv->lastStamp);
+   } while (lastStamp != drawable->base.stamp);
 
    if (!out)
       return TRUE;
diff --git a/src/gallium/state_trackers/dri/drm/dri2.c b/src/gallium/state_trackers/dri/drm/dri2.c
index 2dc1d47..b5bc16b 100644
--- a/src/gallium/state_trackers/dri/drm/dri2.c
+++ b/src/gallium/state_trackers/dri/drm/dri2.c
@@ -590,7 +590,7 @@ dri_image_allocate_textures(struct dri_context *ctx,
 
    (*sPriv->image.loader->getBuffers) (dPriv,
                                        image_format,
-                                       &dPriv->dri2.stamp,
+                                       (uint32_t *) &drawable->base.stamp,
                                        dPriv->loaderPrivate,
                                        buffer_mask,
                                        &images);
-- 
1.9.1



More information about the mesa-dev mailing list