Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-fonts
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
Aleksandr Isakov
wine-fonts
Commits
75d6d620
Commit
75d6d620
authored
Nov 09, 2006
by
Markus Amsler
Committed by
Alexandre Julliard
Nov 09, 2006
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
d3d8: Backport missing device tests.
parent
bef60f1d
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
168 additions
and
1 deletion
+168
-1
device.c
dlls/d3d8/tests/device.c
+168
-1
No files found.
dlls/d3d8/tests/device.c
View file @
75d6d620
...
...
@@ -45,6 +45,63 @@ static int get_refcount(IUnknown *object)
ok(tmp1 == rc_new, "Invalid refcount. Expected %d got %d\n", rc_new, tmp1); \
}
static
void
check_mipmap_levels
(
IDirect3DDevice8
*
device
,
int
width
,
int
height
,
int
count
)
{
IDirect3DBaseTexture8
*
texture
=
NULL
;
HRESULT
hr
=
IDirect3DDevice8_CreateTexture
(
device
,
width
,
height
,
0
,
0
,
D3DFMT_X8R8G8B8
,
D3DPOOL_DEFAULT
,
(
IDirect3DTexture8
**
)
&
texture
);
if
(
SUCCEEDED
(
hr
))
{
DWORD
levels
=
IDirect3DBaseTexture8_GetLevelCount
(
texture
);
ok
(
levels
==
count
,
"Invalid level count. Expected %d got %u
\n
"
,
count
,
levels
);
}
else
trace
(
"CreateTexture failed: %s
\n
"
,
DXGetErrorString8
(
hr
));
if
(
texture
)
IUnknown_Release
(
texture
);
}
static
void
test_mipmap_levels
(
void
)
{
HRESULT
hr
;
HWND
hwnd
=
NULL
;
IDirect3D8
*
pD3d
=
NULL
;
IDirect3DDevice8
*
pDevice
=
NULL
;
D3DPRESENT_PARAMETERS
d3dpp
;
D3DDISPLAYMODE
d3ddm
;
pD3d
=
pDirect3DCreate8
(
D3D_SDK_VERSION
);
ok
(
pD3d
!=
NULL
,
"Failed to create IDirect3D8 object
\n
"
);
hwnd
=
CreateWindow
(
"static"
,
"d3d8_test"
,
WS_OVERLAPPEDWINDOW
,
100
,
100
,
160
,
160
,
NULL
,
NULL
,
NULL
,
NULL
);
ok
(
hwnd
!=
NULL
,
"Failed to create window
\n
"
);
if
(
!
pD3d
||
!
hwnd
)
goto
cleanup
;
IDirect3D8_GetAdapterDisplayMode
(
pD3d
,
D3DADAPTER_DEFAULT
,
&
d3ddm
);
ZeroMemory
(
&
d3dpp
,
sizeof
(
d3dpp
)
);
d3dpp
.
Windowed
=
TRUE
;
d3dpp
.
SwapEffect
=
D3DSWAPEFFECT_DISCARD
;
d3dpp
.
BackBufferFormat
=
d3ddm
.
Format
;
hr
=
IDirect3D8_CreateDevice
(
pD3d
,
D3DADAPTER_DEFAULT
,
D3DDEVTYPE_HAL
,
hwnd
,
D3DCREATE_SOFTWARE_VERTEXPROCESSING
,
&
d3dpp
,
&
pDevice
);
ok
(
SUCCEEDED
(
hr
),
"Failed to create IDirect3D8Device (%s)
\n
"
,
DXGetErrorString8
(
hr
));
if
(
FAILED
(
hr
))
goto
cleanup
;
check_mipmap_levels
(
pDevice
,
32
,
32
,
6
);
check_mipmap_levels
(
pDevice
,
256
,
1
,
9
);
check_mipmap_levels
(
pDevice
,
1
,
256
,
9
);
check_mipmap_levels
(
pDevice
,
1
,
1
,
1
);
cleanup:
if
(
pD3d
)
IUnknown_Release
(
pD3d
);
if
(
pDevice
)
IUnknown_Release
(
pDevice
);
DestroyWindow
(
hwnd
);
}
static
void
test_swapchain
(
void
)
{
HRESULT
hr
;
...
...
@@ -229,8 +286,27 @@ static void test_refcount(void)
/* Buffers */
hr
=
IDirect3DDevice8_CreateIndexBuffer
(
pDevice
,
16
,
0
,
D3DFMT_INDEX32
,
D3DPOOL_DEFAULT
,
&
pIndexBuffer
);
CHECK_CALL
(
hr
,
"CreateIndexBuffer"
,
pDevice
,
++
refcount
);
if
(
pIndexBuffer
)
{
tmp
=
get_refcount
(
(
IUnknown
*
)
pIndexBuffer
);
hr
=
IDirect3DDevice8_SetIndices
(
pDevice
,
pIndexBuffer
,
0
);
CHECK_CALL
(
hr
,
"SetIndices"
,
pIndexBuffer
,
tmp
);
hr
=
IDirect3DDevice8_SetIndices
(
pDevice
,
NULL
,
0
);
CHECK_CALL
(
hr
,
"SetIndices"
,
pIndexBuffer
,
tmp
);
}
hr
=
IDirect3DDevice8_CreateVertexBuffer
(
pDevice
,
16
,
0
,
D3DFVF_XYZ
,
D3DPOOL_DEFAULT
,
&
pVertexBuffer
);
CHECK_CALL
(
hr
,
"CreateVertexBuffer"
,
pDevice
,
++
refcount
);
if
(
pVertexBuffer
)
{
tmp
=
get_refcount
(
(
IUnknown
*
)
pVertexBuffer
);
hr
=
IDirect3DDevice8_SetStreamSource
(
pDevice
,
0
,
pVertexBuffer
,
3
*
sizeof
(
float
));
CHECK_CALL
(
hr
,
"SetStreamSource"
,
pVertexBuffer
,
tmp
);
hr
=
IDirect3DDevice8_SetStreamSource
(
pDevice
,
0
,
NULL
,
0
);
CHECK_CALL
(
hr
,
"SetStreamSource"
,
pVertexBuffer
,
tmp
);
}
/* Shaders */
hr
=
IDirect3DDevice8_CreateVertexShader
(
pDevice
,
decl
,
simple_vs
,
&
dVertexShader
,
0
);
CHECK_CALL
(
hr
,
"CreateVertexShader"
,
pDevice
,
refcount
);
...
...
@@ -242,6 +318,13 @@ static void test_refcount(void)
if
(
pTexture
)
{
tmp
=
get_refcount
(
(
IUnknown
*
)
pTexture
);
/* SetTexture should not increase refcounts */
hr
=
IDirect3DDevice8_SetTexture
(
pDevice
,
0
,
(
IDirect3DBaseTexture8
*
)
pTexture
);
CHECK_CALL
(
hr
,
"SetTexture"
,
pTexture
,
tmp
);
hr
=
IDirect3DDevice8_SetTexture
(
pDevice
,
0
,
NULL
);
CHECK_CALL
(
hr
,
"SetTexture"
,
pTexture
,
tmp
);
/* This should not increment device refcount */
hr
=
IDirect3DTexture8_GetSurfaceLevel
(
pTexture
,
1
,
&
pTextureLevel
);
CHECK_CALL
(
hr
,
"GetSurfaceLevel"
,
pDevice
,
refcount
);
...
...
@@ -308,6 +391,88 @@ cleanup:
DestroyWindow
(
hwnd
);
}
static
void
test_cursor
(
void
)
{
HRESULT
hr
;
HWND
hwnd
=
NULL
;
IDirect3D8
*
pD3d
=
NULL
;
IDirect3DDevice8
*
pDevice
=
NULL
;
D3DPRESENT_PARAMETERS
d3dpp
;
D3DDISPLAYMODE
d3ddm
;
CURSORINFO
info
;
IDirect3DSurface8
*
cursor
=
NULL
;
HCURSOR
cur
;
memset
(
&
info
,
0
,
sizeof
(
info
));
info
.
cbSize
=
sizeof
(
info
);
hr
=
GetCursorInfo
(
&
info
);
cur
=
info
.
hCursor
;
pD3d
=
pDirect3DCreate8
(
D3D_SDK_VERSION
);
ok
(
pD3d
!=
NULL
,
"Failed to create IDirect3D8 object
\n
"
);
hwnd
=
CreateWindow
(
"static"
,
"d3d8_test"
,
WS_OVERLAPPEDWINDOW
,
100
,
100
,
160
,
160
,
NULL
,
NULL
,
NULL
,
NULL
);
ok
(
hwnd
!=
NULL
,
"Failed to create window
\n
"
);
if
(
!
pD3d
||
!
hwnd
)
goto
cleanup
;
IDirect3D8_GetAdapterDisplayMode
(
pD3d
,
D3DADAPTER_DEFAULT
,
&
d3ddm
);
ZeroMemory
(
&
d3dpp
,
sizeof
(
d3dpp
)
);
d3dpp
.
Windowed
=
TRUE
;
d3dpp
.
SwapEffect
=
D3DSWAPEFFECT_DISCARD
;
d3dpp
.
BackBufferFormat
=
d3ddm
.
Format
;
hr
=
IDirect3D8_CreateDevice
(
pD3d
,
D3DADAPTER_DEFAULT
,
D3DDEVTYPE_HAL
,
hwnd
,
D3DCREATE_SOFTWARE_VERTEXPROCESSING
,
&
d3dpp
,
&
pDevice
);
ok
(
SUCCEEDED
(
hr
),
"Failed to create IDirect3D8Device (%s)
\n
"
,
DXGetErrorString8
(
hr
));
if
(
FAILED
(
hr
))
goto
cleanup
;
IDirect3DDevice8_CreateImageSurface
(
pDevice
,
32
,
32
,
D3DFMT_A8R8G8B8
,
&
cursor
);
ok
(
cursor
!=
NULL
,
"IDirect3DDevice8_CreateOffscreenPlainSurface failed with %08x
\n
"
,
hr
);
/* Initially hidden */
hr
=
IDirect3DDevice8_ShowCursor
(
pDevice
,
TRUE
);
ok
(
hr
==
FALSE
,
"IDirect3DDevice8_ShowCursor returned %08x
\n
"
,
hr
);
/* Not enabled without a surface*/
hr
=
IDirect3DDevice8_ShowCursor
(
pDevice
,
TRUE
);
ok
(
hr
==
FALSE
,
"IDirect3DDevice8_ShowCursor returned %08x
\n
"
,
hr
);
/* Fails */
hr
=
IDirect3DDevice8_SetCursorProperties
(
pDevice
,
0
,
0
,
NULL
);
ok
(
hr
==
D3DERR_INVALIDCALL
,
"IDirect3DDevice8_SetCursorProperties returned %08x
\n
"
,
hr
);
hr
=
IDirect3DDevice8_SetCursorProperties
(
pDevice
,
0
,
0
,
cursor
);
ok
(
hr
==
D3D_OK
,
"IDirect3DDevice8_SetCursorProperties returned %08x
\n
"
,
hr
);
IDirect3DSurface8_Release
(
cursor
);
memset
(
&
info
,
0
,
sizeof
(
info
));
info
.
cbSize
=
sizeof
(
info
);
hr
=
GetCursorInfo
(
&
info
);
ok
(
hr
!=
0
,
"GetCursorInfo returned %08x
\n
"
,
hr
);
ok
(
info
.
flags
&
CURSOR_SHOWING
,
"The gdi cursor is hidden (%08x)
\n
"
,
info
.
flags
);
ok
(
info
.
hCursor
==
cur
,
"The cursor handle is %p
\n
"
,
info
.
hCursor
);
/* unchanged */
/* Still hidden */
hr
=
IDirect3DDevice8_ShowCursor
(
pDevice
,
TRUE
);
ok
(
hr
==
FALSE
,
"IDirect3DDevice8_ShowCursor returned %08x
\n
"
,
hr
);
/* Enabled now*/
hr
=
IDirect3DDevice8_ShowCursor
(
pDevice
,
TRUE
);
ok
(
hr
==
TRUE
,
"IDirect3DDevice8_ShowCursor returned %08x
\n
"
,
hr
);
/* GDI cursor unchanged */
memset
(
&
info
,
0
,
sizeof
(
info
));
info
.
cbSize
=
sizeof
(
info
);
hr
=
GetCursorInfo
(
&
info
);
ok
(
hr
!=
0
,
"GetCursorInfo returned %08x
\n
"
,
hr
);
ok
(
info
.
flags
&
CURSOR_SHOWING
,
"The gdi cursor is hidden (%08x)
\n
"
,
info
.
flags
);
ok
(
info
.
hCursor
==
cur
,
"The cursor handle is %p
\n
"
,
info
.
hCursor
);
/* unchanged */
cleanup:
if
(
pD3d
)
IDirect3D8_Release
(
pD3d
);
if
(
pDevice
)
IDirect3D8_Release
(
pDevice
);
}
START_TEST
(
device
)
{
HMODULE
d3d8_handle
=
LoadLibraryA
(
"d3d8.dll"
);
...
...
@@ -315,7 +480,9 @@ START_TEST(device)
pDirect3DCreate8
=
(
void
*
)
GetProcAddress
(
d3d8_handle
,
"Direct3DCreate8"
);
if
(
pDirect3DCreate8
)
{
test_refcount
();
test_swapchain
();
test_refcount
();
test_mipmap_levels
();
test_cursor
();
}
}
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