On Wed, 2007-09-26 at 11:41 -0700, Jesse Barnes wrote:
>
> I'm not sure about the compatibility implications of these changes, it
> seems like touching __DRIdrawableRec and __DriverAPIRec may affect
> binary compatibility with existing drivers, is there anything else?
>
> If compatibility isn't a concern, I can go ahead and remove the
> per-screen getMSC altogether, along with its associated __DriverAPI
> function pointers and remove some code.
dri_interface.h defines the interface between the loader (libGL or
AIGLX) and the driver (*_dri.so). So you can't remove anything there and
can only add stuff at the end in order to remain backwards compatible.
__DriverAPIRec is internal to the driver AFAICT.
> diff --git a/src/mesa/drivers/dri/common/dri_util.c
> b/src/mesa/drivers/dri/common/dri_util.c
> index c30e66f..4a4296e 100644
> --- a/src/mesa/drivers/dri/common/dri_util.c
> +++ b/src/mesa/drivers/dri/common/dri_util.c
> @@ -663,6 +674,7 @@ static void *driCreateNewDrawable(__DRInativeDisplay *dpy,
> pdraw->swapBuffersMSC = driSwapBuffersMSC;
> pdraw->frameTracking = NULL;
> pdraw->queryFrameTracking = driQueryFrameTracking;
> + pdraw->getMSC = driDrawableGetMSC;
I think this needs guarding with
if (driCompareGLXAPIVersion (20070925) >= 0)
or a new driver will scribble past the end of __DRIdrawableRec with an old
loader.
You'll need to actually bump the API version as well though. :)
> diff --git a/src/mesa/drivers/dri/common/vblank.c
> b/src/mesa/drivers/dri/common/vblank.c
> index e7ed545..3974ee6 100644
> --- a/src/mesa/drivers/dri/common/vblank.c
> +++ b/src/mesa/drivers/dri/common/vblank.c
> @@ -50,19 +50,24 @@
> * currently always returns a \c sequence of type \c unsigned.
> *
> * \param priv Pointer to the DRI screen private struct.
> + * \param drawablePrivate pointer to the DRI drawable private struct
> * \param count Storage to hold MSC counter.
> * \return Zero is returned on success. A negative errno value
> * is returned on failure.
> */
> -int driGetMSC32( __DRIscreenPrivate * priv, int64_t * count )
> +int driDrawableGetMSC32( __DRIscreenPrivate * priv,
> + __DRIdrawablePrivate * dPriv,
Mismatch between name of the added parameter in comment and code.
> /* Don't wait for anything. Just get the current refresh count. */
> -
> +
Adding whitespace at the end of the line.
> diff --git a/src/mesa/drivers/dri/i965/intel_context.c
> b/src/mesa/drivers/dri/i965/intel_context.c
> index 1fbf571..05a9aec 100644
> --- a/src/mesa/drivers/dri/i965/intel_context.c
> +++ b/src/mesa/drivers/dri/i965/intel_context.c
> @@ -582,8 +583,9 @@ GLboolean intelMakeCurrent(__DRIcontextPrivate
> *driContextPriv,
>
> if ( intel->driDrawable != driDrawPriv ) {
> /* Shouldn't the readbuffer be stored also? */
> - driDrawableInitVBlank( driDrawPriv, intel->vblank_flags,
> - &intel->vbl_seq );
> + driDrawableInitVBlank( driDrawPriv,
> + driDrawPriv->vblFlags,
> + &driDrawPriv->vblSeq);
driDrawableInitVBlank could take just driDrawPriv as a parameter now?
> intel->driDrawable = driDrawPriv;
> intelWindowMoved( intel );
This isn't new with your changes, but we should probably call
intelWindowMoved before driDrawableInitVBlank, to make sure
VBLANK_FLAG_SECONDARY is set for the latter when necessary.
Can you make the corresponding changes to the i915 driver as well?
Looking good overall, thanks for working on this!
--
Earthling Michel Dänzer | http://tungstengraphics.com
Libre software enthusiast | Debian, X and DRI developer
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
--
_______________________________________________
Dri-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/dri-devel