[Mesa-dev] [PATCH 11/39] st/nine: Increase minor d3dadapter9drm ABI
Emil Velikov
emil.l.velikov at gmail.com
Mon May 16 18:26:10 UTC 2016
On 15 May 2016 at 11:45, Axel Davy <axel.davy at ens.fr> wrote:
> Version 0.1 allows to assume that the second
> element of the IDirect3D* structures will
> be a pointer to the internal nine vtable.
>
> This is useful if the gallium nine user wants
> to wrap some interfaces.
>
> Signed-off-by: Axel Davy <axel.davy at ens.fr>
> ---
> include/d3dadapter/drm.h | 6 +++++-
> src/gallium/state_trackers/nine/iunknown.c | 1 +
> src/gallium/state_trackers/nine/iunknown.h | 4 +++-
> 3 files changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/include/d3dadapter/drm.h b/include/d3dadapter/drm.h
> index 9ec3e60..647f017 100644
> --- a/include/d3dadapter/drm.h
> +++ b/include/d3dadapter/drm.h
> @@ -29,7 +29,11 @@
> #define D3DADAPTER9DRM_NAME "drm"
> /* current version */
> #define D3DADAPTER9DRM_MAJOR 0
> -#define D3DADAPTER9DRM_MINOR 0
> +#define D3DADAPTER9DRM_MINOR 1
> +
> +/* version 0.0: Initial release
> + * 0.1: All IDirect3D objects can be assumed to have a pointer to the
> + * internal vtable in second position of the structure */
>
> struct D3DAdapter9DRM
> {
> diff --git a/src/gallium/state_trackers/nine/iunknown.c b/src/gallium/state_trackers/nine/iunknown.c
> index 515ceaa..58ed9dc 100644
> --- a/src/gallium/state_trackers/nine/iunknown.c
> +++ b/src/gallium/state_trackers/nine/iunknown.c
> @@ -39,6 +39,7 @@ NineUnknown_ctor( struct NineUnknown *This,
> NineUnknown_AddRef(NineUnknown(This->device));
>
> This->vtable = pParams->vtable;
> + This->vtable_internal = pParams->vtable;
> This->guids = pParams->guids;
> This->dtor = pParams->dtor;
>
> diff --git a/src/gallium/state_trackers/nine/iunknown.h b/src/gallium/state_trackers/nine/iunknown.h
> index b8de6be..bcd0b8b 100644
> --- a/src/gallium/state_trackers/nine/iunknown.h
> +++ b/src/gallium/state_trackers/nine/iunknown.h
> @@ -39,8 +39,10 @@ struct NineDevice9;
>
> struct NineUnknown
> {
> - /* pointer to vtable */
> + /* pointer to vtable (can be overriden outside gallium nine) */
> void *vtable;
The header is not exported for public consumption thus this pointer
is/should be internal, correct ?
So how one can the overwrite it (I assume that's what you meant with overriden)?
There is a general rule that implies "bumping API/ABI in a backwards
incompaible way - bump the major version". All that applies on how
rigorous the check (on the other side) is, of course.
-Emil
More information about the mesa-dev
mailing list