From: Kristian Høgsberg Date: Fri, 28 Oct 2011 20:22:03 +0000 (-0400) Subject: dri: Remove unnecessary timestamp pointer indirection X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e9beaf65fdaf82a7845cbe176f353ddb6b8466c7;p=mesa.git dri: Remove unnecessary timestamp pointer indirection --- diff --git a/src/gallium/state_trackers/dri/common/dri_drawable.c b/src/gallium/state_trackers/dri/common/dri_drawable.c index 485616fde6c..d8db69e7f04 100644 --- a/src/gallium/state_trackers/dri/common/dri_drawable.c +++ b/src/gallium/state_trackers/dri/common/dri_drawable.c @@ -62,9 +62,9 @@ dri_st_framebuffer_validate(struct st_framebuffer_iface *stfbi, new_mask = (statt_mask & ~drawable->texture_mask); /* - * dPriv->pStamp is the server stamp. It should be accessed with a lock, at - * least for DRI1. dPriv->lastStamp is the client stamp. It has the value - * of the server stamp when last checked. + * dPriv->dri2.stamp is the server stamp. dPriv->lastStamp is the + * client stamp. It has the value of the server stamp when last + * checked. */ new_stamp = (drawable->texture_stamp != drawable->dPriv->lastStamp); diff --git a/src/gallium/state_trackers/dri/drm/dri2.c b/src/gallium/state_trackers/dri/drm/dri2.c index d3db0ccda51..a62a084c13f 100644 --- a/src/gallium/state_trackers/dri/drm/dri2.c +++ b/src/gallium/state_trackers/dri/drm/dri2.c @@ -65,7 +65,7 @@ dri2_invalidate_drawable(__DRIdrawable *dPriv) struct dri_drawable *drawable = dri_drawable(dPriv); dri2InvalidateDrawable(dPriv); - drawable->dPriv->lastStamp = *drawable->dPriv->pStamp; + drawable->dPriv->lastStamp = drawable->dPriv->dri2.stamp; p_atomic_inc(&drawable->base.stamp); } diff --git a/src/gallium/state_trackers/dri/sw/dri_drawable.c b/src/gallium/state_trackers/dri/sw/dri_drawable.c deleted file mode 120000 index 0fc19be6ea6..00000000000 --- a/src/gallium/state_trackers/dri/sw/dri_drawable.c +++ /dev/null @@ -1 +0,0 @@ -../common/dri_drawable.c \ No newline at end of file diff --git a/src/mesa/drivers/dri/common/dri_util.c b/src/mesa/drivers/dri/common/dri_util.c index aa095d8f282..9deb9972714 100644 --- a/src/mesa/drivers/dri/common/dri_util.c +++ b/src/mesa/drivers/dri/common/dri_util.c @@ -171,7 +171,6 @@ dri2CreateNewDrawable(__DRIscreen *screen, pdraw->driContextPriv = NULL; pdraw->loaderPrivate = loaderPrivate; pdraw->refcount = 1; - pdraw->pStamp = NULL; pdraw->lastStamp = 0; pdraw->w = 0; pdraw->h = 0; @@ -182,8 +181,7 @@ dri2CreateNewDrawable(__DRIscreen *screen, return NULL; } - pdraw->pStamp = &pdraw->dri2.stamp; - *pdraw->pStamp = pdraw->lastStamp + 1; + pdraw->dri2.stamp = pdraw->lastStamp + 1; return pdraw; } diff --git a/src/mesa/drivers/dri/common/dri_util.h b/src/mesa/drivers/dri/common/dri_util.h index ab11d45dbd9..38394a7fefa 100644 --- a/src/mesa/drivers/dri/common/dri_util.h +++ b/src/mesa/drivers/dri/common/dri_util.h @@ -159,16 +159,10 @@ struct __DRIdrawableRec { */ int refcount; - /** - * Pointer to the "drawable has changed ID" stamp in the SAREA (or - * to dri2.stamp if DRI2 is being used). - */ - unsigned int *pStamp; - /** * Last value of the stamp. * - * If this differs from the value stored at __DRIdrawable::pStamp, + * If this differs from the value stored at __DRIdrawable::dri2.stamp, * then the drawable information has been modified by the X server, and the * drawable information (below) should be retrieved from the X server. */ @@ -186,6 +180,9 @@ struct __DRIdrawableRec { */ __DRIscreen *driScreenPriv; + /** + * Drawable timestamp. Increased when the loader calls invalidate. + */ struct { unsigned int stamp; } dri2; diff --git a/src/mesa/drivers/dri/nouveau/nouveau_context.c b/src/mesa/drivers/dri/nouveau/nouveau_context.c index 65cbc4168e1..2b9507c6a81 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_context.c +++ b/src/mesa/drivers/dri/nouveau/nouveau_context.c @@ -177,9 +177,9 @@ nouveau_update_renderbuffers(__DRIcontext *dri_ctx, __DRIdrawable *draw) __DRIbuffer *buffers = NULL; int i = 0, count, ret; - if (draw->lastStamp == *draw->pStamp) + if (draw->lastStamp == draw->dri2.stamp) return; - draw->lastStamp = *draw->pStamp; + draw->lastStamp = draw->dri2.stamp; if (nfb->need_front) attachments[i++] = __DRI_BUFFER_FRONT_LEFT; @@ -257,7 +257,7 @@ update_framebuffer(__DRIcontext *dri_ctx, __DRIdrawable *draw, struct gl_context *ctx = dri_ctx->driverPrivate; struct gl_framebuffer *fb = draw->driverPrivate; - *stamp = *draw->pStamp; + *stamp = draw->dri2.stamp; nouveau_update_renderbuffers(dri_ctx, draw); _mesa_resize_framebuffer(ctx, fb, draw->w, draw->h); @@ -337,7 +337,7 @@ validate_framebuffer(__DRIcontext *dri_ctx, __DRIdrawable *draw, dri2InvalidateDrawable(draw); } - if (*draw->pStamp != *stamp) + if (draw->dri2.stamp != *stamp) update_framebuffer(dri_ctx, draw, stamp); }