Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
59aab5ca
Commit
59aab5ca
authored
Jan 09, 2013
by
Henri Verbeet
Committed by
Alexandre Julliard
Jan 09, 2013
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
d3d8/tests: Merge texture.c into device.c.
parent
19cb2e21
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
157 additions
and
158 deletions
+157
-158
Makefile.in
dlls/d3d8/tests/Makefile.in
+0
-1
device.c
dlls/d3d8/tests/device.c
+157
-0
texture.c
dlls/d3d8/tests/texture.c
+0
-157
No files found.
dlls/d3d8/tests/Makefile.in
View file @
59aab5ca
...
...
@@ -5,7 +5,6 @@ C_SRCS = \
device.c
\
stateblock.c
\
surface.c
\
texture.c
\
visual.c
@MAKE_TEST_RULES@
dlls/d3d8/tests/device.c
View file @
59aab5ca
...
...
@@ -3621,6 +3621,161 @@ static void test_vb_lock_flags(void)
DestroyWindow
(
window
);
}
/* Test the default texture stage state values */
static
void
test_texture_stage_states
(
void
)
{
IDirect3DDevice8
*
device
;
IDirect3D8
*
d3d8
;
unsigned
int
i
;
ULONG
refcount
;
D3DCAPS8
caps
;
DWORD
value
;
HWND
window
;
HRESULT
hr
;
if
(
!
(
d3d8
=
pDirect3DCreate8
(
D3D_SDK_VERSION
)))
{
skip
(
"Failed to create d3d8 object, skipping tests.
\n
"
);
return
;
}
window
=
CreateWindowA
(
"d3d8_test_wc"
,
"d3d8_test"
,
WS_OVERLAPPEDWINDOW
,
0
,
0
,
640
,
480
,
0
,
0
,
0
,
0
);
if
(
!
(
device
=
create_device
(
d3d8
,
window
,
window
,
TRUE
)))
{
skip
(
"Failed to create a D3D device, skipping tests.
\n
"
);
IDirect3D8_Release
(
d3d8
);
DestroyWindow
(
window
);
return
;
}
hr
=
IDirect3DDevice8_GetDeviceCaps
(
device
,
&
caps
);
ok
(
SUCCEEDED
(
hr
),
"Failed to get device caps, hr %#x.
\n
"
,
hr
);
for
(
i
=
0
;
i
<
caps
.
MaxTextureBlendStages
;
++
i
)
{
hr
=
IDirect3DDevice8_GetTextureStageState
(
device
,
i
,
D3DTSS_COLOROP
,
&
value
);
ok
(
SUCCEEDED
(
hr
),
"Failed to get texture stage state, hr %#x.
\n
"
,
hr
);
ok
(
value
==
(
i
?
D3DTOP_DISABLE
:
D3DTOP_MODULATE
),
"Got unexpected value %#x for D3DTSS_COLOROP, stage %u.
\n
"
,
value
,
i
);
hr
=
IDirect3DDevice8_GetTextureStageState
(
device
,
i
,
D3DTSS_COLORARG1
,
&
value
);
ok
(
SUCCEEDED
(
hr
),
"Failed to get texture stage state, hr %#x.
\n
"
,
hr
);
ok
(
value
==
D3DTA_TEXTURE
,
"Got unexpected value %#x for D3DTSS_COLORARG1, stage %u.
\n
"
,
value
,
i
);
hr
=
IDirect3DDevice8_GetTextureStageState
(
device
,
i
,
D3DTSS_COLORARG2
,
&
value
);
ok
(
SUCCEEDED
(
hr
),
"Failed to get texture stage state, hr %#x.
\n
"
,
hr
);
ok
(
value
==
D3DTA_CURRENT
,
"Got unexpected value %#x for D3DTSS_COLORARG2, stage %u.
\n
"
,
value
,
i
);
hr
=
IDirect3DDevice8_GetTextureStageState
(
device
,
i
,
D3DTSS_ALPHAOP
,
&
value
);
ok
(
SUCCEEDED
(
hr
),
"Failed to get texture stage state, hr %#x.
\n
"
,
hr
);
ok
(
value
==
(
i
?
D3DTOP_DISABLE
:
D3DTOP_SELECTARG1
),
"Got unexpected value %#x for D3DTSS_ALPHAOP, stage %u.
\n
"
,
value
,
i
);
hr
=
IDirect3DDevice8_GetTextureStageState
(
device
,
i
,
D3DTSS_ALPHAARG1
,
&
value
);
ok
(
SUCCEEDED
(
hr
),
"Failed to get texture stage state, hr %#x.
\n
"
,
hr
);
ok
(
value
==
D3DTA_TEXTURE
,
"Got unexpected value %#x for D3DTSS_ALPHAARG1, stage %u.
\n
"
,
value
,
i
);
hr
=
IDirect3DDevice8_GetTextureStageState
(
device
,
i
,
D3DTSS_ALPHAARG2
,
&
value
);
ok
(
SUCCEEDED
(
hr
),
"Failed to get texture stage state, hr %#x.
\n
"
,
hr
);
ok
(
value
==
D3DTA_CURRENT
,
"Got unexpected value %#x for D3DTSS_ALPHAARG2, stage %u.
\n
"
,
value
,
i
);
hr
=
IDirect3DDevice8_GetTextureStageState
(
device
,
i
,
D3DTSS_BUMPENVMAT00
,
&
value
);
ok
(
SUCCEEDED
(
hr
),
"Failed to get texture stage state, hr %#x.
\n
"
,
hr
);
ok
(
!
value
,
"Got unexpected value %#x for D3DTSS_BUMPENVMAT00, stage %u.
\n
"
,
value
,
i
);
hr
=
IDirect3DDevice8_GetTextureStageState
(
device
,
i
,
D3DTSS_BUMPENVMAT01
,
&
value
);
ok
(
SUCCEEDED
(
hr
),
"Failed to get texture stage state, hr %#x.
\n
"
,
hr
);
ok
(
!
value
,
"Got unexpected value %#x for D3DTSS_BUMPENVMAT01, stage %u.
\n
"
,
value
,
i
);
hr
=
IDirect3DDevice8_GetTextureStageState
(
device
,
i
,
D3DTSS_BUMPENVMAT10
,
&
value
);
ok
(
SUCCEEDED
(
hr
),
"Failed to get texture stage state, hr %#x.
\n
"
,
hr
);
ok
(
!
value
,
"Got unexpected value %#x for D3DTSS_BUMPENVMAT10, stage %u.
\n
"
,
value
,
i
);
hr
=
IDirect3DDevice8_GetTextureStageState
(
device
,
i
,
D3DTSS_BUMPENVMAT11
,
&
value
);
ok
(
SUCCEEDED
(
hr
),
"Failed to get texture stage state, hr %#x.
\n
"
,
hr
);
ok
(
!
value
,
"Got unexpected value %#x for D3DTSS_BUMPENVMAT11, stage %u.
\n
"
,
value
,
i
);
hr
=
IDirect3DDevice8_GetTextureStageState
(
device
,
i
,
D3DTSS_TEXCOORDINDEX
,
&
value
);
ok
(
SUCCEEDED
(
hr
),
"Failed to get texture stage state, hr %#x.
\n
"
,
hr
);
ok
(
value
==
i
,
"Got unexpected value %#x for D3DTSS_TEXCOORDINDEX, stage %u.
\n
"
,
value
,
i
);
hr
=
IDirect3DDevice8_GetTextureStageState
(
device
,
i
,
D3DTSS_BUMPENVLSCALE
,
&
value
);
ok
(
SUCCEEDED
(
hr
),
"Failed to get texture stage state, hr %#x.
\n
"
,
hr
);
ok
(
!
value
,
"Got unexpected value %#x for D3DTSS_BUMPENVLSCALE, stage %u.
\n
"
,
value
,
i
);
hr
=
IDirect3DDevice8_GetTextureStageState
(
device
,
i
,
D3DTSS_BUMPENVLOFFSET
,
&
value
);
ok
(
SUCCEEDED
(
hr
),
"Failed to get texture stage state, hr %#x.
\n
"
,
hr
);
ok
(
!
value
,
"Got unexpected value %#x for D3DTSS_BUMPENVLOFFSET, stage %u.
\n
"
,
value
,
i
);
hr
=
IDirect3DDevice8_GetTextureStageState
(
device
,
i
,
D3DTSS_TEXTURETRANSFORMFLAGS
,
&
value
);
ok
(
SUCCEEDED
(
hr
),
"Failed to get texture stage state, hr %#x.
\n
"
,
hr
);
ok
(
value
==
D3DTTFF_DISABLE
,
"Got unexpected value %#x for D3DTSS_TEXTURETRANSFORMFLAGS, stage %u.
\n
"
,
value
,
i
);
hr
=
IDirect3DDevice8_GetTextureStageState
(
device
,
i
,
D3DTSS_COLORARG0
,
&
value
);
ok
(
SUCCEEDED
(
hr
),
"Failed to get texture stage state, hr %#x.
\n
"
,
hr
);
ok
(
value
==
D3DTA_CURRENT
,
"Got unexpected value %#x for D3DTSS_COLORARG0, stage %u.
\n
"
,
value
,
i
);
hr
=
IDirect3DDevice8_GetTextureStageState
(
device
,
i
,
D3DTSS_ALPHAARG0
,
&
value
);
ok
(
SUCCEEDED
(
hr
),
"Failed to get texture stage state, hr %#x.
\n
"
,
hr
);
ok
(
value
==
D3DTA_CURRENT
,
"Got unexpected value %#x for D3DTSS_ALPHAARG0, stage %u.
\n
"
,
value
,
i
);
hr
=
IDirect3DDevice8_GetTextureStageState
(
device
,
i
,
D3DTSS_RESULTARG
,
&
value
);
ok
(
SUCCEEDED
(
hr
),
"Failed to get texture stage state, hr %#x.
\n
"
,
hr
);
ok
(
value
==
D3DTA_CURRENT
,
"Got unexpected value %#x for D3DTSS_RESULTARG, stage %u.
\n
"
,
value
,
i
);
}
refcount
=
IDirect3DDevice8_Release
(
device
);
ok
(
!
refcount
,
"Device has %u references left.
\n
"
,
refcount
);
IDirect3D8_Release
(
d3d8
);
DestroyWindow
(
window
);
}
static
void
test_cube_textures
(
void
)
{
IDirect3DCubeTexture8
*
texture
;
IDirect3DDevice8
*
device
;
IDirect3D8
*
d3d8
;
ULONG
refcount
;
D3DCAPS8
caps
;
HWND
window
;
HRESULT
hr
;
if
(
!
(
d3d8
=
pDirect3DCreate8
(
D3D_SDK_VERSION
)))
{
skip
(
"Failed to create d3d8 object, skipping tests.
\n
"
);
return
;
}
window
=
CreateWindowA
(
"d3d8_test_wc"
,
"d3d8_test"
,
WS_OVERLAPPEDWINDOW
,
0
,
0
,
640
,
480
,
0
,
0
,
0
,
0
);
if
(
!
(
device
=
create_device
(
d3d8
,
window
,
window
,
TRUE
)))
{
skip
(
"Failed to create a D3D device, skipping tests.
\n
"
);
IDirect3D8_Release
(
d3d8
);
DestroyWindow
(
window
);
return
;
}
hr
=
IDirect3DDevice8_GetDeviceCaps
(
device
,
&
caps
);
ok
(
SUCCEEDED
(
hr
),
"Failed to get device caps, hr %#x.
\n
"
,
hr
);
if
(
caps
.
TextureCaps
&
D3DPTEXTURECAPS_CUBEMAP
)
{
hr
=
IDirect3DDevice8_CreateCubeTexture
(
device
,
512
,
1
,
0
,
D3DFMT_X8R8G8B8
,
D3DPOOL_DEFAULT
,
&
texture
);
ok
(
hr
==
D3D_OK
,
"Failed to create D3DPOOL_DEFAULT cube texture, hr %#x.
\n
"
,
hr
);
IDirect3DCubeTexture8_Release
(
texture
);
hr
=
IDirect3DDevice8_CreateCubeTexture
(
device
,
512
,
1
,
0
,
D3DFMT_X8R8G8B8
,
D3DPOOL_MANAGED
,
&
texture
);
ok
(
hr
==
D3D_OK
,
"Failed to create D3DPOOL_MANAGED cube texture, hr %#x.
\n
"
,
hr
);
IDirect3DCubeTexture8_Release
(
texture
);
hr
=
IDirect3DDevice8_CreateCubeTexture
(
device
,
512
,
1
,
0
,
D3DFMT_X8R8G8B8
,
D3DPOOL_SYSTEMMEM
,
&
texture
);
ok
(
hr
==
D3D_OK
,
"Failed to create D3DPOOL_SYSTEMMEM cube texture, hr %#x.
\n
"
,
hr
);
IDirect3DCubeTexture8_Release
(
texture
);
}
else
{
hr
=
IDirect3DDevice8_CreateCubeTexture
(
device
,
512
,
1
,
0
,
D3DFMT_X8R8G8B8
,
D3DPOOL_DEFAULT
,
&
texture
);
ok
(
hr
==
D3DERR_INVALIDCALL
,
"Got unexpected hr %#x for D3DPOOL_DEFAULT cube texture.
\n
"
,
hr
);
hr
=
IDirect3DDevice8_CreateCubeTexture
(
device
,
512
,
1
,
0
,
D3DFMT_X8R8G8B8
,
D3DPOOL_MANAGED
,
&
texture
);
ok
(
hr
==
D3DERR_INVALIDCALL
,
"Got unexpected hr %#x for D3DPOOL_MANAGED cube texture.
\n
"
,
hr
);
hr
=
IDirect3DDevice8_CreateCubeTexture
(
device
,
512
,
1
,
0
,
D3DFMT_X8R8G8B8
,
D3DPOOL_SYSTEMMEM
,
&
texture
);
ok
(
hr
==
D3DERR_INVALIDCALL
,
"Got unexpected hr %#x for D3DPOOL_SYSTEMMEM cube texture.
\n
"
,
hr
);
}
hr
=
IDirect3DDevice8_CreateCubeTexture
(
device
,
512
,
1
,
0
,
D3DFMT_X8R8G8B8
,
D3DPOOL_SCRATCH
,
&
texture
);
ok
(
hr
==
D3D_OK
,
"Failed to create D3DPOOL_SCRATCH cube texture, hr %#x.
\n
"
,
hr
);
IDirect3DCubeTexture8_Release
(
texture
);
refcount
=
IDirect3DDevice8_Release
(
device
);
ok
(
!
refcount
,
"Device has %u references left.
\n
"
,
refcount
);
IDirect3D8_Release
(
d3d8
);
DestroyWindow
(
window
);
}
START_TEST
(
device
)
{
HMODULE
d3d8_handle
=
LoadLibraryA
(
"d3d8.dll"
);
...
...
@@ -3684,6 +3839,8 @@ START_TEST(device)
test_validate_ps
();
test_volume_get_container
();
test_vb_lock_flags
();
test_texture_stage_states
();
test_cube_textures
();
}
UnregisterClassA
(
"d3d8_test_wc"
,
GetModuleHandleA
(
NULL
));
}
dlls/d3d8/tests/texture.c
deleted
100644 → 0
View file @
19cb2e21
/*
* Copyright (C) 2006 Henri Verbeet
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#define COBJMACROS
#include <d3d8.h>
#include "wine/test.h"
static
HWND
create_window
(
void
)
{
WNDCLASS
wc
=
{
0
};
wc
.
lpfnWndProc
=
DefWindowProc
;
wc
.
lpszClassName
=
"d3d8_test_wc"
;
RegisterClass
(
&
wc
);
return
CreateWindow
(
"d3d8_test_wc"
,
"d3d8_test"
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
);
}
static
IDirect3DDevice8
*
init_d3d8
(
HMODULE
d3d8_handle
)
{
IDirect3D8
*
(
__stdcall
*
d3d8_create
)(
UINT
SDKVersion
)
=
0
;
IDirect3D8
*
d3d8_ptr
=
0
;
IDirect3DDevice8
*
device_ptr
=
0
;
D3DPRESENT_PARAMETERS
present_parameters
;
D3DDISPLAYMODE
d3ddm
;
HRESULT
hr
;
d3d8_create
=
(
void
*
)
GetProcAddress
(
d3d8_handle
,
"Direct3DCreate8"
);
ok
(
d3d8_create
!=
NULL
,
"Failed to get address of Direct3DCreate8
\n
"
);
if
(
!
d3d8_create
)
return
NULL
;
d3d8_ptr
=
d3d8_create
(
D3D_SDK_VERSION
);
if
(
!
d3d8_ptr
)
{
skip
(
"could not create D3D8
\n
"
);
return
NULL
;
}
IDirect3D8_GetAdapterDisplayMode
(
d3d8_ptr
,
D3DADAPTER_DEFAULT
,
&
d3ddm
);
ZeroMemory
(
&
present_parameters
,
sizeof
(
present_parameters
));
present_parameters
.
Windowed
=
TRUE
;
present_parameters
.
hDeviceWindow
=
create_window
();
present_parameters
.
SwapEffect
=
D3DSWAPEFFECT_DISCARD
;
present_parameters
.
BackBufferFormat
=
d3ddm
.
Format
;
hr
=
IDirect3D8_CreateDevice
(
d3d8_ptr
,
D3DADAPTER_DEFAULT
,
D3DDEVTYPE_HAL
,
NULL
,
D3DCREATE_SOFTWARE_VERTEXPROCESSING
,
&
present_parameters
,
&
device_ptr
);
if
(
FAILED
(
hr
))
{
skip
(
"could not create device, IDirect3D8_CreateDevice returned %#x
\n
"
,
hr
);
return
NULL
;
}
return
device_ptr
;
}
static
void
test_texture_stage_state
(
IDirect3DDevice8
*
device_ptr
,
DWORD
stage
,
D3DTEXTURESTAGESTATETYPE
type
,
DWORD
expected
)
{
DWORD
value
;
HRESULT
hr
=
IDirect3DDevice8_GetTextureStageState
(
device_ptr
,
stage
,
type
,
&
value
);
ok
(
SUCCEEDED
(
hr
)
&&
value
==
expected
,
"GetTextureStageState (stage %#x, type %#x) returned: hr %#x, value %#x. "
"Expected hr %#x, value %#x
\n
"
,
stage
,
type
,
hr
,
value
,
D3D_OK
,
expected
);
}
/* Test the default texture stage state values */
static
void
test_texture_stage_states
(
IDirect3DDevice8
*
device_ptr
,
int
num_stages
)
{
int
i
;
for
(
i
=
0
;
i
<
num_stages
;
++
i
)
{
test_texture_stage_state
(
device_ptr
,
i
,
D3DTSS_COLOROP
,
i
?
D3DTOP_DISABLE
:
D3DTOP_MODULATE
);
test_texture_stage_state
(
device_ptr
,
i
,
D3DTSS_COLORARG1
,
D3DTA_TEXTURE
);
test_texture_stage_state
(
device_ptr
,
i
,
D3DTSS_COLORARG2
,
D3DTA_CURRENT
);
test_texture_stage_state
(
device_ptr
,
i
,
D3DTSS_ALPHAOP
,
i
?
D3DTOP_DISABLE
:
D3DTOP_SELECTARG1
);
test_texture_stage_state
(
device_ptr
,
i
,
D3DTSS_ALPHAARG1
,
D3DTA_TEXTURE
);
test_texture_stage_state
(
device_ptr
,
i
,
D3DTSS_ALPHAARG2
,
D3DTA_CURRENT
);
test_texture_stage_state
(
device_ptr
,
i
,
D3DTSS_BUMPENVMAT00
,
0
);
test_texture_stage_state
(
device_ptr
,
i
,
D3DTSS_BUMPENVMAT01
,
0
);
test_texture_stage_state
(
device_ptr
,
i
,
D3DTSS_BUMPENVMAT10
,
0
);
test_texture_stage_state
(
device_ptr
,
i
,
D3DTSS_BUMPENVMAT11
,
0
);
test_texture_stage_state
(
device_ptr
,
i
,
D3DTSS_TEXCOORDINDEX
,
i
);
test_texture_stage_state
(
device_ptr
,
i
,
D3DTSS_BUMPENVLSCALE
,
0
);
test_texture_stage_state
(
device_ptr
,
i
,
D3DTSS_BUMPENVLOFFSET
,
0
);
test_texture_stage_state
(
device_ptr
,
i
,
D3DTSS_TEXTURETRANSFORMFLAGS
,
D3DTTFF_DISABLE
);
test_texture_stage_state
(
device_ptr
,
i
,
D3DTSS_COLORARG0
,
D3DTA_CURRENT
);
test_texture_stage_state
(
device_ptr
,
i
,
D3DTSS_ALPHAARG0
,
D3DTA_CURRENT
);
test_texture_stage_state
(
device_ptr
,
i
,
D3DTSS_RESULTARG
,
D3DTA_CURRENT
);
}
}
static
void
test_cube_texture_from_pool
(
IDirect3DDevice8
*
device_ptr
,
DWORD
caps
,
D3DPOOL
pool
,
BOOL
need_cap
)
{
IDirect3DCubeTexture8
*
texture_ptr
=
NULL
;
HRESULT
hr
;
hr
=
IDirect3DDevice8_CreateCubeTexture
(
device_ptr
,
512
,
1
,
0
,
D3DFMT_X8R8G8B8
,
pool
,
&
texture_ptr
);
trace
(
"pool=%d hr=0x%.8x
\n
"
,
pool
,
hr
);
if
((
caps
&
D3DPTEXTURECAPS_CUBEMAP
)
||
!
need_cap
)
ok
(
SUCCEEDED
(
hr
),
"hr=0x%.8x
\n
"
,
hr
);
else
ok
(
hr
==
D3DERR_INVALIDCALL
,
"hr=0x%.8x
\n
"
,
hr
);
if
(
texture_ptr
)
IDirect3DCubeTexture8_Release
(
texture_ptr
);
}
static
void
test_cube_textures
(
IDirect3DDevice8
*
device_ptr
,
DWORD
caps
)
{
trace
(
"texture caps: 0x%.8x
\n
"
,
caps
);
test_cube_texture_from_pool
(
device_ptr
,
caps
,
D3DPOOL_DEFAULT
,
TRUE
);
test_cube_texture_from_pool
(
device_ptr
,
caps
,
D3DPOOL_MANAGED
,
TRUE
);
test_cube_texture_from_pool
(
device_ptr
,
caps
,
D3DPOOL_SYSTEMMEM
,
TRUE
);
test_cube_texture_from_pool
(
device_ptr
,
caps
,
D3DPOOL_SCRATCH
,
FALSE
);
}
START_TEST
(
texture
)
{
D3DCAPS8
caps
;
HMODULE
d3d8_handle
;
IDirect3DDevice8
*
device_ptr
;
ULONG
refcount
;
d3d8_handle
=
LoadLibraryA
(
"d3d8.dll"
);
if
(
!
d3d8_handle
)
{
skip
(
"Could not load d3d8.dll
\n
"
);
return
;
}
device_ptr
=
init_d3d8
(
d3d8_handle
);
if
(
!
device_ptr
)
return
;
IDirect3DDevice8_GetDeviceCaps
(
device_ptr
,
&
caps
);
test_texture_stage_states
(
device_ptr
,
caps
.
MaxTextureBlendStages
);
test_cube_textures
(
device_ptr
,
caps
.
TextureCaps
);
refcount
=
IDirect3DDevice8_Release
(
device_ptr
);
ok
(
!
refcount
,
"Device has %u references left
\n
"
,
refcount
);
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment