[PATCH] xserver/glx/dri2: use new GLX/DRI2 swap event types

Jeremy Huddleston jeremyhu at apple.com
Thu May 5 12:59:50 PDT 2011


For *proto/mesa:
Reviewed-by: Jeremy Huddleston <jeremyhu at apple.com>

For xserver:
This looks incomplete.  You also need to update swap_count in DRI2DrawableRec to be CARD32.


On May 5, 2011, at 12:45 PM, Jesse Barnes wrote:

> Use the new event types so we can pass a valid SBC value to clients.
> Fix up the completion calls to use CARD32 instead of CARD64 to match
> the new field size.
> 
> Signed-off-by: Jesse Barnes <jbarnes at virtuousgeek.org>
> 
> diff --git a/configure.ac b/configure.ac
> index 6eb780c..3e0ed5d 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -771,11 +771,11 @@ RECORDPROTO="recordproto >= 1.13.99.1"
> SCRNSAVERPROTO="scrnsaverproto >= 1.1"
> RESOURCEPROTO="resourceproto"
> DRIPROTO="xf86driproto >= 2.1.0"
> -DRI2PROTO="dri2proto >= 2.3"
> +DRI2PROTO="dri2proto >= 2.5"
> XINERAMAPROTO="xineramaproto"
> BIGFONTPROTO="xf86bigfontproto >= 1.2.0"
> DGAPROTO="xf86dgaproto >= 2.0.99.1"
> -GLPROTO="glproto >= 1.4.10"
> +GLPROTO="glproto >= 1.4.14"
> DMXPROTO="dmxproto >= 2.2.99.1"
> VIDMODEPROTO="xf86vidmodeproto >= 2.2.99.1"
> WINDOWSWMPROTO="windowswmproto"
> diff --git a/glx/glxdri2.c b/glx/glxdri2.c
> index 93c5e5b..e872258 100644
> --- a/glx/glxdri2.c
> +++ b/glx/glxdri2.c
> @@ -163,10 +163,10 @@ __glXDRIdrawableWaitGL(__GLXdrawable *drawable)
> 
> static void
> __glXdriSwapEvent(ClientPtr client, void *data, int type, CARD64 ust,
> -		  CARD64 msc, CARD64 sbc)
> +		  CARD64 msc, CARD32 sbc)
> {
>     __GLXdrawable *drawable = data;
> -    xGLXBufferSwapComplete wire;
> +    xGLXBufferSwapComplete2 wire;
> 
>     if (!(drawable->eventMask & GLX_BUFFER_SWAP_COMPLETE_INTEL_MASK))
> 	return;
> @@ -192,8 +192,7 @@ __glXdriSwapEvent(ClientPtr client, void *data, int type, CARD64 ust,
>     wire.ust_lo = ust & 0xffffffff;
>     wire.msc_hi = msc >> 32;
>     wire.msc_lo = msc & 0xffffffff;
> -    wire.sbc_hi = sbc >> 32;
> -    wire.sbc_lo = sbc & 0xffffffff;
> +    wire.sbc = sbc;
> 
>     WriteEventsToClient(client, 1, (xEvent *) &wire);
> }
> diff --git a/hw/xfree86/dri2/dri2.h b/hw/xfree86/dri2/dri2.h
> index fe0bf6c..2a41ead 100644
> --- a/hw/xfree86/dri2/dri2.h
> +++ b/hw/xfree86/dri2/dri2.h
> @@ -51,7 +51,7 @@ extern CARD8 dri2_minor;
> 
> typedef DRI2BufferRec DRI2Buffer2Rec, *DRI2Buffer2Ptr;
> typedef void (*DRI2SwapEventPtr)(ClientPtr client, void *data, int type,
> -				 CARD64 ust, CARD64 msc, CARD64 sbc);
> +				 CARD64 ust, CARD64 msc, CARD32 sbc);
> 
> 
> typedef DRI2BufferPtr	(*DRI2CreateBuffersProcPtr)(DrawablePtr pDraw,
> diff --git a/hw/xfree86/dri2/dri2ext.c b/hw/xfree86/dri2/dri2ext.c
> index 4e48e65..552b26b 100644
> --- a/hw/xfree86/dri2/dri2ext.c
> +++ b/hw/xfree86/dri2/dri2ext.c
> @@ -357,9 +357,9 @@ vals_to_card64(CARD32 lo, CARD32 hi)
> 
> static void
> DRI2SwapEvent(ClientPtr client, void *data, int type, CARD64 ust, CARD64 msc,
> -	      CARD64 sbc)
> +	      CARD32 sbc)
> {
> -    xDRI2BufferSwapComplete event;
> +    xDRI2BufferSwapComplete2 event;
>     DrawablePtr pDrawable = data;
> 
>     event.type = DRI2EventBase + DRI2_BufferSwapComplete;
> @@ -369,8 +369,7 @@ DRI2SwapEvent(ClientPtr client, void *data, int type, CARD64 ust, CARD64 msc,
>     event.ust_lo = ust & 0xffffffff;
>     event.msc_hi = (CARD64)msc >> 32;
>     event.msc_lo = msc & 0xffffffff;
> -    event.sbc_hi = (CARD64)sbc >> 32;
> -    event.sbc_lo = sbc & 0xffffffff;
> +    event.sbc = sbc;
> 
>     WriteEventsToClient(client, 1, (xEvent *)&event);
> }
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: http://lists.x.org/mailman/listinfo/xorg-devel
> 



More information about the xorg-devel mailing list