On Die, 2011-10-11 at 15:44 +0200, Thomas Hellstrom wrote: > The X server has limited throttle support on the server side, > but doing this in the client has some benefits: > > 1) X server throttling is per client. Client side throttling can be done > per drawable. > > 2) It's easier to control the throttling based on what client is run, > for example using "driconf". > > 3) X server throttling requires drm swap complete events. > > So implement a dri2 throttling extension intended to be used by direct > rendering clients.
I'm on the fence about whether it's better to add a new extension for this or to add anything missing to the flush extension instead, as the callsites are basically the same. > @@ -390,6 +393,15 @@ dri2CopySubBuffer(__GLXDRIdrawable *pdraw, int x, int y, > int width, int height) > (*psc->f->flush) (priv->driDrawable); > #endif > > + if (psc->throttle) { > + struct glx_context *gc = __glXGetCurrentContext(); > + struct dri2_context *dri2Ctx = (struct dri2_context *)gc; > + __DRIcontext *ctx = > + (dri2Ctx) ? dri2Ctx->driContext : NULL; > + > + psc->throttle->throttle(ctx, priv->driDrawable, reason); > + } > + Either way though, these blocks should probably be refactored into a helper function. -- Earthling Michel Dänzer | http://www.amd.com Libre software enthusiast | Debian, X and DRI developer _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev