From 3e9d01ff3989963f10d6dfa567c23afcaef3f6e8 Mon Sep 17 00:00:00 2001 From: Axel Davy Date: Sat, 5 Mar 2016 12:17:06 +0100 Subject: [PATCH] st/nine: Increase minor d3dadapter9drm ABI 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 --- 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 9ec3e60661c..647f017fc7f 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 515ceaa263f..58ed9dc73a1 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 b8de6be9663..bcd0b8bce9d 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; + /* pointer to internal vtable */ + void *vtable_internal; int32_t refs; /* external reference count */ int32_t bind; /* internal bind count */ -- 2.30.2