st/nine: Store minor version num

To keep compatible with older ID3DPresent interfaces (used to talk
with Wine), store the minor version num accessible to all
statetracker functions (in the NineDevice9 structure).

Signed-off-by: Patrick Rudolph <siro@das-labor.org>
Reviewed-by: Axel Davy <axel.davy@ens.fr>
This commit is contained in:
Patrick Rudolph 2015-08-23 08:42:34 +02:00 committed by Axel Davy
parent 0ac01a9fd7
commit e59908e57f
5 changed files with 24 additions and 12 deletions

View file

@ -981,7 +981,8 @@ NineAdapter9_CreateDevice( struct NineAdapter9 *This,
hr = NineDevice9_new(screen, &params, &caps, pPresentationParameters,
pD3D9, pPresentationGroup, This->ctx, FALSE, NULL,
(struct NineDevice9 **)ppReturnedDeviceInterface);
(struct NineDevice9 **)ppReturnedDeviceInterface,
minor);
if (FAILED(hr)) {
DBG("Failed to create device.\n");
return hr;
@ -1042,7 +1043,8 @@ NineAdapter9_CreateDeviceEx( struct NineAdapter9 *This,
hr = NineDevice9Ex_new(screen, &params, &caps, pPresentationParameters,
pFullscreenDisplayMode,
pD3D9Ex, pPresentationGroup, This->ctx,
(struct NineDevice9Ex **)ppReturnedDeviceInterface);
(struct NineDevice9Ex **)ppReturnedDeviceInterface,
minor);
if (FAILED(hr)) {
DBG("Failed to create device.\n");
return hr;

View file

@ -131,7 +131,8 @@ NineDevice9_ctor( struct NineDevice9 *This,
ID3DPresentGroup *pPresentationGroup,
struct d3dadapter9_context *pCTX,
boolean ex,
D3DDISPLAYMODEEX *pFullscreenDisplayMode )
D3DDISPLAYMODEEX *pFullscreenDisplayMode,
int minorVersionNum )
{
unsigned i;
HRESULT hr = NineUnknown_ctor(&This->base, pParams);
@ -152,6 +153,8 @@ NineDevice9_ctor( struct NineDevice9 *This,
This->params = *pCreationParameters;
This->ex = ex;
This->present = pPresentationGroup;
This->minor_version_num = minorVersionNum;
IDirect3D9_AddRef(This->d3d9);
ID3DPresentGroup_AddRef(This->present);
@ -4043,7 +4046,8 @@ NineDevice9_new( struct pipe_screen *pScreen,
struct d3dadapter9_context *pCTX,
boolean ex,
D3DDISPLAYMODEEX *pFullscreenDisplayMode,
struct NineDevice9 **ppOut )
struct NineDevice9 **ppOut,
int minorVersionNum )
{
BOOL lock;
lock = !!(pCreationParameters->BehaviorFlags & D3DCREATE_MULTITHREADED);
@ -4051,5 +4055,5 @@ NineDevice9_new( struct pipe_screen *pScreen,
NINE_NEW(Device9, ppOut, lock, /* args */
pScreen, pCreationParameters, pCaps,
pPresentationParameters, pD3D9, pPresentationGroup, pCTX,
ex, pFullscreenDisplayMode);
ex, pFullscreenDisplayMode, minorVersionNum );
}

View file

@ -137,6 +137,7 @@ struct NineDevice9
/* dummy vbo (containing 0 0 0 0) to bind if vertex shader input
* is not bound to anything by the vertex declaration */
struct pipe_resource *dummy_vbo;
int minor_version_num;
};
static inline struct NineDevice9 *
NineDevice9( void *data )
@ -154,7 +155,8 @@ NineDevice9_new( struct pipe_screen *pScreen,
struct d3dadapter9_context *pCTX,
boolean ex,
D3DDISPLAYMODEEX *pFullscreenDisplayMode,
struct NineDevice9 **ppOut );
struct NineDevice9 **ppOut,
int minorVersionNum );
HRESULT
NineDevice9_ctor( struct NineDevice9 *This,
@ -167,7 +169,8 @@ NineDevice9_ctor( struct NineDevice9 *This,
ID3DPresentGroup *pPresentationGroup,
struct d3dadapter9_context *pCTX,
boolean ex,
D3DDISPLAYMODEEX *pFullscreenDisplayMode );
D3DDISPLAYMODEEX *pFullscreenDisplayMode,
int minorVersionNum );
void
NineDevice9_dtor( struct NineDevice9 *This );

View file

@ -37,7 +37,8 @@ NineDevice9Ex_ctor( struct NineDevice9Ex *This,
D3DDISPLAYMODEEX *pFullscreenDisplayMode,
IDirect3D9Ex *pD3D9Ex,
ID3DPresentGroup *pPresentationGroup,
struct d3dadapter9_context *pCTX )
struct d3dadapter9_context *pCTX,
int minorVersionNum )
{
DBG("This=%p pParams=%p pScreen=%p pCreationParameters=%p pCaps=%p "
"pPresentationParameters=%p pFullscreenDisplayMode=%p "
@ -50,7 +51,7 @@ NineDevice9Ex_ctor( struct NineDevice9Ex *This,
pScreen, pCreationParameters, pCaps,
pPresentationParameters,
(IDirect3D9 *)pD3D9Ex, pPresentationGroup, pCTX,
TRUE, pFullscreenDisplayMode);
TRUE, pFullscreenDisplayMode, minorVersionNum);
}
static void
@ -401,13 +402,14 @@ NineDevice9Ex_new( struct pipe_screen *pScreen,
IDirect3D9Ex *pD3D9Ex,
ID3DPresentGroup *pPresentationGroup,
struct d3dadapter9_context *pCTX,
struct NineDevice9Ex **ppOut )
struct NineDevice9Ex **ppOut,
int minorVersionNum )
{
BOOL lock;
lock = !!(pCreationParameters->BehaviorFlags & D3DCREATE_MULTITHREADED);
NINE_NEW(Device9Ex, ppOut, lock,
pScreen, pCreationParameters, pCaps, pPresentationParameters,
pFullscreenDisplayMode, pD3D9Ex, pPresentationGroup, pCTX);
pFullscreenDisplayMode, pD3D9Ex, pPresentationGroup, pCTX, minorVersionNum );
}

View file

@ -44,7 +44,8 @@ NineDevice9Ex_new( struct pipe_screen *pScreen,
IDirect3D9Ex *pD3D9Ex,
ID3DPresentGroup *pPresentationGroup,
struct d3dadapter9_context *pCTX,
struct NineDevice9Ex **ppOut );
struct NineDevice9Ex **ppOut,
int minorVersionNum );
HRESULT WINAPI
NineDevice9Ex_SetConvolutionMonoKernel( struct NineDevice9Ex *This,