Thanks for reviewing, Michel.
On 10/11/2011 05:29 PM, Michel Dänzer wrote:
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.

I agree. What made me favor a new extension was that we'd have to add a new function anyway, since we pass more argument. Also the throttling extension will most likely never be called from AIGLX, since
that would stall the server.


@@ -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.


Sure. I'll take care of that.

_______________________________________________
mesa-dev mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to