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
964500a6
Commit
964500a6
authored
Aug 25, 2010
by
Oldřich Jedlička
Committed by
Alexandre Julliard
Aug 26, 2010
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ddraw/tests: New visual back buffer flipping tests.
parent
c2934243
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
122 additions
and
0 deletions
+122
-0
visual.c
dlls/ddraw/tests/visual.c
+122
-0
No files found.
dlls/ddraw/tests/visual.c
View file @
964500a6
...
...
@@ -2920,6 +2920,127 @@ static void depth_clamp_test(IDirect3DDevice7 *device)
ok
(
SUCCEEDED
(
hr
),
"SetViewport failed, hr %#x.
\n
"
,
hr
);
}
static
void
DX1_BackBufferFlipTest
(
void
)
{
HRESULT
hr
;
IDirectDraw
*
DirectDraw1
=
NULL
;
IDirectDrawSurface
*
Primary
=
NULL
;
IDirectDrawSurface
*
Backbuffer
=
NULL
;
WNDCLASS
wc
=
{
0
};
DDSURFACEDESC
ddsd
;
DDBLTFX
ddbltfx
;
COLORREF
color
;
const
DWORD
white
=
0xffffff
;
const
DWORD
red
=
0xff0000
;
BOOL
attached
=
FALSE
;
wc
.
lpfnWndProc
=
DefWindowProc
;
wc
.
lpszClassName
=
"DX1_BackBufferFlipTest_wc"
;
RegisterClass
(
&
wc
);
window
=
CreateWindow
(
"DX1_BackBufferFlipTest_wc"
,
"DX1_BackBufferFlipTest"
,
WS_MAXIMIZE
|
WS_VISIBLE
|
WS_CAPTION
,
0
,
0
,
640
,
480
,
0
,
0
,
0
,
0
);
hr
=
DirectDrawCreate
(
NULL
,
&
DirectDraw1
,
NULL
);
ok
(
hr
==
DD_OK
||
hr
==
DDERR_NODIRECTDRAWSUPPORT
,
"DirectDrawCreate returned: %x
\n
"
,
hr
);
if
(
FAILED
(
hr
))
goto
out
;
hr
=
IDirectDraw_SetCooperativeLevel
(
DirectDraw1
,
window
,
DDSCL_EXCLUSIVE
|
DDSCL_FULLSCREEN
);
ok
(
hr
==
DD_OK
,
"SetCooperativeLevel returned: %x
\n
"
,
hr
);
if
(
FAILED
(
hr
))
goto
out
;
hr
=
IDirectDraw_SetDisplayMode
(
DirectDraw1
,
640
,
480
,
32
);
if
(
FAILED
(
hr
))
{
/* 24 bit is fine too */
hr
=
IDirectDraw_SetDisplayMode
(
DirectDraw1
,
640
,
480
,
24
);
}
ok
(
hr
==
DD_OK
||
hr
==
DDERR_UNSUPPORTED
,
"SetDisplayMode returned: %x
\n
"
,
hr
);
if
(
FAILED
(
hr
))
{
goto
out
;
}
memset
(
&
ddsd
,
0
,
sizeof
(
DDSURFACEDESC
));
ddsd
.
dwSize
=
sizeof
(
DDSURFACEDESC
);
ddsd
.
dwFlags
=
DDSD_CAPS
;
ddsd
.
ddsCaps
.
dwCaps
=
DDSCAPS_PRIMARYSURFACE
;
hr
=
IDirectDraw_CreateSurface
(
DirectDraw1
,
&
ddsd
,
&
Primary
,
NULL
);
ok
(
hr
==
DD_OK
,
"IDirectDraw_CreateSurface returned: %08x
\n
"
,
hr
);
memset
(
&
ddsd
,
0
,
sizeof
(
DDSURFACEDESC
));
ddsd
.
dwSize
=
sizeof
(
DDSURFACEDESC
);
ddsd
.
dwFlags
=
DDSD_CAPS
|
DDSD_WIDTH
|
DDSD_HEIGHT
|
DDSD_PIXELFORMAT
;
ddsd
.
ddsCaps
.
dwCaps
=
DDSCAPS_BACKBUFFER
;
ddsd
.
dwWidth
=
640
;
ddsd
.
dwHeight
=
480
;
ddsd
.
ddpfPixelFormat
.
dwSize
=
sizeof
(
ddsd
.
ddpfPixelFormat
);
ddsd
.
ddpfPixelFormat
.
dwFlags
=
DDPF_RGB
;
U1
(
ddsd
.
ddpfPixelFormat
).
dwRGBBitCount
=
32
;
U2
(
ddsd
.
ddpfPixelFormat
).
dwRBitMask
=
0x00ff0000
;
U3
(
ddsd
.
ddpfPixelFormat
).
dwGBitMask
=
0x0000ff00
;
U4
(
ddsd
.
ddpfPixelFormat
).
dwBBitMask
=
0x000000ff
;
hr
=
IDirectDraw_CreateSurface
(
DirectDraw1
,
&
ddsd
,
&
Backbuffer
,
NULL
);
todo_wine
ok
(
hr
==
DD_OK
,
"IDirectDraw_CreateSurface returned: %08x
\n
"
,
hr
);
if
(
FAILED
(
hr
))
goto
out
;
hr
=
IDirectDrawSurface_AddAttachedSurface
(
Primary
,
Backbuffer
);
todo_wine
ok
(
hr
==
DD_OK
||
broken
(
hr
==
DDERR_CANNOTATTACHSURFACE
),
"Attaching a back buffer to a front buffer returned %08x
\n
"
,
hr
);
if
(
FAILED
(
hr
))
goto
out
;
attached
=
TRUE
;
memset
(
&
ddbltfx
,
0
,
sizeof
(
ddbltfx
));
ddbltfx
.
dwSize
=
sizeof
(
ddbltfx
);
U5
(
ddbltfx
).
dwFillColor
=
red
;
hr
=
IDirectDrawSurface_Blt
(
Backbuffer
,
NULL
,
NULL
,
NULL
,
DDBLT_COLORFILL
|
DDBLT_WAIT
,
&
ddbltfx
);
ok
(
hr
==
DD_OK
,
"IDirectDrawSurface_Blt returned: %x
\n
"
,
hr
);
U5
(
ddbltfx
).
dwFillColor
=
white
;
hr
=
IDirectDrawSurface_Blt
(
Primary
,
NULL
,
NULL
,
NULL
,
DDBLT_COLORFILL
|
DDBLT_WAIT
,
&
ddbltfx
);
ok
(
hr
==
DD_OK
,
"IDirectDrawSurface_Blt returned: %x
\n
"
,
hr
);
/* Check it out */
color
=
getPixelColor_GDI
(
Primary
,
5
,
5
);
ok
(
GetRValue
(
color
)
==
0xFF
&&
GetGValue
(
color
)
==
0xFF
&&
GetBValue
(
color
)
==
0xFF
,
"got R %02X G %02X B %02X, expected R FF G FF B FF
\n
"
,
GetRValue
(
color
),
GetGValue
(
color
),
GetBValue
(
color
));
color
=
getPixelColor_GDI
(
Backbuffer
,
5
,
5
);
ok
(
GetRValue
(
color
)
==
0xFF
&&
GetGValue
(
color
)
==
0
&&
GetBValue
(
color
)
==
0
,
"got R %02X G %02X B %02X, expected R FF G 00 B 00
\n
"
,
GetRValue
(
color
),
GetGValue
(
color
),
GetBValue
(
color
));
hr
=
IDirectDrawSurface_Flip
(
Primary
,
NULL
,
DDFLIP_WAIT
);
todo_wine
ok
(
hr
==
DD_OK
,
"IDirectDrawSurface_Flip returned 0x%08x
\n
"
,
hr
);
if
(
hr
==
DD_OK
)
{
color
=
getPixelColor_GDI
(
Primary
,
5
,
5
);
ok
(
GetRValue
(
color
)
==
0xFF
&&
GetGValue
(
color
)
==
0
&&
GetBValue
(
color
)
==
0
,
"got R %02X G %02X B %02X, expected R FF G 00 B 00
\n
"
,
GetRValue
(
color
),
GetGValue
(
color
),
GetBValue
(
color
));
color
=
getPixelColor_GDI
(
Backbuffer
,
5
,
5
);
ok
((
GetRValue
(
color
)
==
0xFF
&&
GetGValue
(
color
)
==
0xFF
&&
GetBValue
(
color
)
==
0xFF
)
||
broken
(
GetRValue
(
color
)
==
0xFF
&&
GetGValue
(
color
)
==
0
&&
GetBValue
(
color
)
==
0
),
/* broken driver */
"got R %02X G %02X B %02X, expected R FF G FF B FF
\n
"
,
GetRValue
(
color
),
GetGValue
(
color
),
GetBValue
(
color
));
}
out:
if
(
Backbuffer
)
{
if
(
attached
)
IDirectDrawSurface_DeleteAttachedSurface
(
Primary
,
0
,
Backbuffer
);
IDirectDrawSurface_Release
(
Backbuffer
);
}
if
(
Primary
)
IDirectDrawSurface_Release
(
Primary
);
if
(
DirectDraw1
)
IDirectDraw_Release
(
DirectDraw1
);
if
(
window
)
DestroyWindow
(
window
);
}
START_TEST
(
visual
)
{
HRESULT
hr
;
...
...
@@ -2983,6 +3104,7 @@ START_TEST(visual)
D3D3_ViewportClearTest
();
p8_primary_test
();
DX1_BackBufferFlipTest
();
return
;
...
...
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