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
57d506f6
Commit
57d506f6
authored
Feb 24, 2008
by
Alexander Dorofeyev
Committed by
Alexandre Julliard
Feb 25, 2008
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
d3d8/tests: Add a P8 texture test.
parent
6766f9c1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
205 additions
and
0 deletions
+205
-0
visual.c
dlls/d3d8/tests/visual.c
+205
-0
No files found.
dlls/d3d8/tests/visual.c
View file @
57d506f6
...
...
@@ -910,6 +910,209 @@ static void alpha_test(IDirect3DDevice8 *device)
}
}
static
void
p8_texture_test
(
IDirect3DDevice8
*
device
)
{
IDirect3D8
*
d3d
=
NULL
;
HRESULT
hr
;
IDirect3DTexture8
*
texture
=
NULL
;
D3DLOCKED_RECT
lr
;
unsigned
char
*
data
;
DWORD
color
,
red
,
green
,
blue
;
PALETTEENTRY
table
[
256
];
D3DCAPS8
caps
;
UINT
i
;
float
quad
[]
=
{
-
1
.
0
,
0
,
0
.
1
,
0
.
0
,
0
.
0
,
-
1
.
0
,
1
.
0
,
0
.
1
,
0
.
0
,
1
.
0
,
1
.
0
,
0
,
0
.
1
,
1
.
0
,
0
.
0
,
1
.
0
,
1
.
0
,
0
.
1
,
1
.
0
,
1
.
0
,
};
float
quad2
[]
=
{
-
1
.
0
,
-
1
.
0
,
0
.
1
,
0
.
0
,
0
.
0
,
-
1
.
0
,
0
,
0
.
1
,
0
.
0
,
1
.
0
,
1
.
0
,
-
1
.
0
,
0
.
1
,
1
.
0
,
0
.
0
,
1
.
0
,
0
,
0
.
1
,
1
.
0
,
1
.
0
,
};
IDirect3DDevice8_GetDirect3D
(
device
,
&
d3d
);
if
(
IDirect3D8_CheckDeviceFormat
(
d3d
,
0
,
D3DDEVTYPE_HAL
,
D3DFMT_X8R8G8B8
,
0
,
D3DRTYPE_TEXTURE
,
D3DFMT_P8
)
!=
D3D_OK
)
{
skip
(
"D3DFMT_P8 textures not supported
\n
"
);
goto
out
;
}
hr
=
IDirect3DDevice8_CreateTexture
(
device
,
1
,
1
,
1
,
0
,
D3DFMT_P8
,
D3DPOOL_MANAGED
,
&
texture
);
ok
(
hr
==
D3D_OK
,
"IDirect3DDevice8_CreateTexture failed, hr = %08x
\n
"
,
hr
);
if
(
!
texture
)
{
skip
(
"Failed to create D3DFMT_P8 texture
\n
"
);
goto
out
;
}
memset
(
&
lr
,
0
,
sizeof
(
lr
));
hr
=
IDirect3DTexture8_LockRect
(
texture
,
0
,
&
lr
,
NULL
,
0
);
ok
(
hr
==
D3D_OK
,
"IDirect3DTexture8_LockRect failed, hr = %08x
\n
"
,
hr
);
data
=
lr
.
pBits
;
*
data
=
1
;
hr
=
IDirect3DTexture8_UnlockRect
(
texture
,
0
);
ok
(
hr
==
D3D_OK
,
"IDirect3DTexture8_UnlockRect failed, hr = %08x
\n
"
,
hr
);
hr
=
IDirect3DDevice8_SetTexture
(
device
,
0
,
(
IDirect3DBaseTexture8
*
)
texture
);
ok
(
hr
==
D3D_OK
,
"IDirect3DDevice8_SetTexture failed, hr = %08x
\n
"
,
hr
);
hr
=
IDirect3DDevice8_Clear
(
device
,
0
,
NULL
,
D3DCLEAR_TARGET
,
0xff000000
,
0
.
0
,
0
);
ok
(
hr
==
D3D_OK
,
"IDirect3DDevice8_Clear failed, hr = %08x
\n
"
,
hr
);
hr
=
IDirect3DDevice8_SetRenderState
(
device
,
D3DRS_ALPHABLENDENABLE
,
TRUE
);
ok
(
hr
==
D3D_OK
,
"IDirect3DDevice8_SetRenderState failed, hr = %08x
\n
"
,
hr
);
/* The first part of the test should work both with and without D3DPTEXTURECAPS_ALPHAPALETTE;
alpha of every entry is set to 1.0, which MS says is required when there's no
D3DPTEXTURECAPS_ALPHAPALETTE capability */
for
(
i
=
0
;
i
<
256
;
i
++
)
{
table
[
i
].
peRed
=
table
[
i
].
peGreen
=
table
[
i
].
peBlue
=
0
;
table
[
i
].
peFlags
=
0xff
;
}
table
[
1
].
peRed
=
0xff
;
hr
=
IDirect3DDevice8_SetPaletteEntries
(
device
,
0
,
table
);
ok
(
hr
==
D3D_OK
,
"IDirect3DDevice8_SetPaletteEntries failed, hr = %08x
\n
"
,
hr
);
table
[
1
].
peRed
=
0
;
table
[
1
].
peBlue
=
0xff
;
hr
=
IDirect3DDevice8_SetPaletteEntries
(
device
,
1
,
table
);
ok
(
hr
==
D3D_OK
,
"IDirect3DDevice8_SetPaletteEntries failed, hr = %08x
\n
"
,
hr
);
hr
=
IDirect3DDevice8_BeginScene
(
device
);
ok
(
hr
==
D3D_OK
,
"IDirect3DDevice8_BeginScene failed, hr = %08x
\n
"
,
hr
);
if
(
SUCCEEDED
(
hr
))
{
hr
=
IDirect3DDevice8_SetRenderState
(
device
,
D3DRS_SRCBLEND
,
D3DBLEND_SRCALPHA
);
ok
(
hr
==
D3D_OK
,
"IDirect3DDevice8_SetRenderState failed, hr = %08x
\n
"
,
hr
);
hr
=
IDirect3DDevice8_SetRenderState
(
device
,
D3DRS_DESTBLEND
,
D3DBLEND_INVSRCALPHA
);
ok
(
hr
==
D3D_OK
,
"IDirect3DDevice8_SetRenderState failed, hr = %08x
\n
"
,
hr
);
hr
=
IDirect3DDevice8_SetVertexShader
(
device
,
D3DFVF_XYZ
|
D3DFVF_TEX1
);
ok
(
hr
==
D3D_OK
,
"SetVertexShader failed, hr = %#08x
\n
"
,
hr
);
hr
=
IDirect3DDevice8_SetCurrentTexturePalette
(
device
,
0
);
ok
(
hr
==
D3D_OK
,
"IDirect3DDevice8_SetCurrentTexturePalette failed, hr = %08x
\n
"
,
hr
);
hr
=
IDirect3DDevice8_DrawPrimitiveUP
(
device
,
D3DPT_TRIANGLESTRIP
,
2
,
quad
,
5
*
sizeof
(
float
));
ok
(
hr
==
D3D_OK
,
"IDirect3DDevice8_DrawPrimitiveUP failed, hr = %08x
\n
"
,
hr
);
hr
=
IDirect3DDevice8_SetCurrentTexturePalette
(
device
,
1
);
ok
(
hr
==
D3D_OK
,
"IDirect3DDevice8_SetCurrentTexturePalette failed, hr = %08x
\n
"
,
hr
);
hr
=
IDirect3DDevice8_DrawPrimitiveUP
(
device
,
D3DPT_TRIANGLESTRIP
,
2
,
quad2
,
5
*
sizeof
(
float
));
ok
(
hr
==
D3D_OK
,
"IDirect3DDevice8_DrawPrimitiveUP failed, hr = %08x
\n
"
,
hr
);
hr
=
IDirect3DDevice8_EndScene
(
device
);
ok
(
hr
==
D3D_OK
,
"IDirect3DDevice8_EndScene failed, hr = %08x
\n
"
,
hr
);
}
hr
=
IDirect3DDevice8_Present
(
device
,
NULL
,
NULL
,
NULL
,
NULL
);
ok
(
hr
==
D3D_OK
,
"IDirect3DDevice8_Present failed, hr = %08x
\n
"
,
hr
);
color
=
getPixelColor
(
device
,
32
,
32
);
red
=
(
color
&
0x00ff0000
)
>>
16
;
green
=
(
color
&
0x0000ff00
)
>>
8
;
blue
=
(
color
&
0x000000ff
)
>>
0
;
ok
(
red
==
0xff
&&
blue
==
0
&&
green
==
0
,
"got color %08x, expected 0x00ff0000
\n
"
,
color
);
todo_wine
{
color
=
getPixelColor
(
device
,
32
,
320
);
red
=
(
color
&
0x00ff0000
)
>>
16
;
green
=
(
color
&
0x0000ff00
)
>>
8
;
blue
=
(
color
&
0x000000ff
)
>>
0
;
ok
(
red
==
0
&&
blue
==
0xff
&&
green
==
0
,
"got color %08x, expected 0x000000ff
\n
"
,
color
);
}
/* Test palettes with alpha */
IDirect3DDevice8_GetDeviceCaps
(
device
,
&
caps
);
if
(
!
(
caps
.
TextureCaps
&
D3DPTEXTURECAPS_ALPHAPALETTE
))
{
skip
(
"no D3DPTEXTURECAPS_ALPHAPALETTE capability, tests with alpha in palette will be skipped
\n
"
);
}
else
{
hr
=
IDirect3DDevice8_Clear
(
device
,
0
,
NULL
,
D3DCLEAR_TARGET
,
0xff000000
,
0
.
0
,
0
);
ok
(
hr
==
D3D_OK
,
"IDirect3DDevice8_Clear failed, hr = %08x
\n
"
,
hr
);
hr
=
IDirect3DDevice8_SetRenderState
(
device
,
D3DRS_ALPHABLENDENABLE
,
TRUE
);
ok
(
hr
==
D3D_OK
,
"IDirect3DDevice8_SetRenderState failed, hr = %08x
\n
"
,
hr
);
for
(
i
=
0
;
i
<
256
;
i
++
)
{
table
[
i
].
peRed
=
table
[
i
].
peGreen
=
table
[
i
].
peBlue
=
0
;
table
[
i
].
peFlags
=
0xff
;
}
table
[
1
].
peRed
=
0xff
;
table
[
1
].
peFlags
=
0x80
;
hr
=
IDirect3DDevice8_SetPaletteEntries
(
device
,
0
,
table
);
ok
(
hr
==
D3D_OK
,
"IDirect3DDevice8_SetPaletteEntries failed, hr = %08x
\n
"
,
hr
);
table
[
1
].
peRed
=
0
;
table
[
1
].
peBlue
=
0xff
;
table
[
1
].
peFlags
=
0x80
;
hr
=
IDirect3DDevice8_SetPaletteEntries
(
device
,
1
,
table
);
ok
(
hr
==
D3D_OK
,
"IDirect3DDevice8_SetPaletteEntries failed, hr = %08x
\n
"
,
hr
);
hr
=
IDirect3DDevice8_BeginScene
(
device
);
ok
(
hr
==
D3D_OK
,
"IDirect3DDevice8_BeginScene failed, hr = %08x
\n
"
,
hr
);
if
(
SUCCEEDED
(
hr
))
{
hr
=
IDirect3DDevice8_SetRenderState
(
device
,
D3DRS_SRCBLEND
,
D3DBLEND_SRCALPHA
);
ok
(
hr
==
D3D_OK
,
"IDirect3DDevice8_SetRenderState failed, hr = %08x
\n
"
,
hr
);
hr
=
IDirect3DDevice8_SetRenderState
(
device
,
D3DRS_DESTBLEND
,
D3DBLEND_INVSRCALPHA
);
ok
(
hr
==
D3D_OK
,
"IDirect3DDevice8_SetRenderState failed, hr = %08x
\n
"
,
hr
);
hr
=
IDirect3DDevice8_SetVertexShader
(
device
,
D3DFVF_XYZ
|
D3DFVF_TEX1
);
ok
(
hr
==
D3D_OK
,
"SetVertexShader failed, hr = %#08x
\n
"
,
hr
);
hr
=
IDirect3DDevice8_SetCurrentTexturePalette
(
device
,
0
);
ok
(
hr
==
D3D_OK
,
"IDirect3DDevice8_SetCurrentTexturePalette failed, hr = %08x
\n
"
,
hr
);
hr
=
IDirect3DDevice8_DrawPrimitiveUP
(
device
,
D3DPT_TRIANGLESTRIP
,
2
,
quad
,
5
*
sizeof
(
float
));
ok
(
hr
==
D3D_OK
,
"IDirect3DDevice8_DrawPrimitiveUP failed, hr = %08x
\n
"
,
hr
);
hr
=
IDirect3DDevice8_SetCurrentTexturePalette
(
device
,
1
);
ok
(
hr
==
D3D_OK
,
"IDirect3DDevice8_SetCurrentTexturePalette failed, hr = %08x
\n
"
,
hr
);
hr
=
IDirect3DDevice8_DrawPrimitiveUP
(
device
,
D3DPT_TRIANGLESTRIP
,
2
,
quad2
,
5
*
sizeof
(
float
));
ok
(
hr
==
D3D_OK
,
"IDirect3DDevice8_DrawPrimitiveUP failed, hr = %08x
\n
"
,
hr
);
hr
=
IDirect3DDevice8_EndScene
(
device
);
ok
(
hr
==
D3D_OK
,
"IDirect3DDevice8_EndScene failed, hr = %08x
\n
"
,
hr
);
}
hr
=
IDirect3DDevice8_Present
(
device
,
NULL
,
NULL
,
NULL
,
NULL
);
ok
(
hr
==
D3D_OK
,
"IDirect3DDevice8_Present failed, hr = %08x
\n
"
,
hr
);
todo_wine
{
color
=
getPixelColor
(
device
,
32
,
32
);
red
=
(
color
&
0x00ff0000
)
>>
16
;
green
=
(
color
&
0x0000ff00
)
>>
8
;
blue
=
(
color
&
0x000000ff
)
>>
0
;
ok
(
red
>=
0x7e
&&
red
<=
0x81
&&
blue
==
0
&&
green
==
0
,
"got color %08x, expected 0x00800000 or near
\n
"
,
color
);
color
=
getPixelColor
(
device
,
32
,
320
);
red
=
(
color
&
0x00ff0000
)
>>
16
;
green
=
(
color
&
0x0000ff00
)
>>
8
;
blue
=
(
color
&
0x000000ff
)
>>
0
;
ok
(
red
==
0
&&
blue
>=
0x7e
&&
blue
<=
0x81
&&
green
==
0
,
"got color %08x, expected 0x00000080 or near
\n
"
,
color
);
}
}
hr
=
IDirect3DDevice8_SetTexture
(
device
,
0
,
NULL
);
ok
(
hr
==
D3D_OK
,
"IDirect3DDevice8_SetTexture failed, hr = %08x
\n
"
,
hr
);
hr
=
IDirect3DDevice8_SetRenderState
(
device
,
D3DRS_ALPHABLENDENABLE
,
FALSE
);
ok
(
hr
==
D3D_OK
,
"IDirect3DDevice8_SetRenderState failed, hr = %08x
\n
"
,
hr
);
out:
if
(
texture
)
IDirect3DTexture8_Release
(
texture
);
IDirect3D8_Release
(
d3d
);
}
START_TEST
(
visual
)
{
IDirect3DDevice8
*
device_ptr
;
...
...
@@ -981,6 +1184,8 @@ START_TEST(visual)
skip
(
"No vs.1.1 support
\n
"
);
}
p8_texture_test
(
device_ptr
);
cleanup
:
if
(
device_ptr
)
{
D3DDEVICE_CREATION_PARAMETERS
creation_parameters
;
...
...
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