[Mesa-dev] [PATCH 2/4] dri3: Reuse the sbc instead of tracking another copy of the swap count.
Eric Anholt
eric at anholt.net
Fri Mar 7 17:26:59 PST 2014
---
src/glx/dri3_glx.c | 6 ++----
src/glx/dri3_priv.h | 3 +--
2 files changed, 3 insertions(+), 6 deletions(-)
diff --git a/src/glx/dri3_glx.c b/src/glx/dri3_glx.c
index 4388b74..72ec8ec 100644
--- a/src/glx/dri3_glx.c
+++ b/src/glx/dri3_glx.c
@@ -1346,7 +1346,7 @@ dri3_swap_buffers(__GLXDRIdrawable *pdraw, int64_t target_msc, int64_t divisor,
target_msc = priv->msc + priv->swap_interval * (priv->send_sbc - priv->recv_sbc);
priv->buffers[buf_id]->busy = 1;
- priv->buffers[buf_id]->last_swap = priv->swap_count;
+ priv->buffers[buf_id]->last_swap = priv->send_sbc;
xcb_present_pixmap(c,
priv->base.xDrawable,
priv->buffers[buf_id]->pixmap,
@@ -1381,8 +1381,6 @@ dri3_swap_buffers(__GLXDRIdrawable *pdraw, int64_t target_msc, int64_t divisor,
xcb_flush(c);
if (priv->stamp)
++(*priv->stamp);
-
- priv->swap_count++;
}
return ret;
@@ -1395,7 +1393,7 @@ dri3_get_buffer_age(__GLXDRIdrawable *pdraw)
const struct dri3_buffer *const back = dri3_back_buffer(priv);
if (back->last_swap != 0)
- return priv->swap_count - back->last_swap;
+ return priv->send_sbc - back->last_swap + 1;
else
return 0;
}
diff --git a/src/glx/dri3_priv.h b/src/glx/dri3_priv.h
index d00440a..316e313 100644
--- a/src/glx/dri3_priv.h
+++ b/src/glx/dri3_priv.h
@@ -97,7 +97,7 @@ struct dri3_buffer {
uint32_t cpp;
uint32_t flags;
uint32_t width, height;
- uint32_t last_swap;
+ uint64_t last_swap;
enum dri3_buffer_type buffer_type;
};
@@ -185,7 +185,6 @@ struct dri3_drawable {
struct dri3_buffer *buffers[DRI3_NUM_BUFFERS];
int cur_back;
int num_back;
- uint32_t swap_count;
uint32_t *stamp;
--
1.9.0
More information about the mesa-dev
mailing list