Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
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-cw
Commits
48ca8c1c
Commit
48ca8c1c
authored
Mar 06, 2019
by
Daniel Ansorregui
Committed by
Alexandre Julliard
Mar 08, 2019
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
d3d9/tests: Add tests for Fetch4 with 3D textures.
Signed-off-by:
Henri Verbeet
<
hverbeet@codeweavers.com
>
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
c4235cee
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
85 additions
and
1 deletion
+85
-1
visual.c
dlls/d3d9/tests/visual.c
+85
-1
No files found.
dlls/d3d9/tests/visual.c
View file @
48ca8c1c
...
...
@@ -15481,6 +15481,15 @@ static void test_fetch4(void)
0x02000001
,
0x800f0800
,
0x80e40000
,
/* mov oC0, r0 */
0x0000ffff
,
/* end */
};
static
const
DWORD
ps_code_3d
[]
=
{
0xffff0300
,
/* ps_3_0 */
0x0200001f
,
0x80000005
,
0x900f0000
,
/* dcl_texcoord v0 */
0x0200001f
,
0xa0000000
,
0xa00f0800
,
/* dcl_volume s0 */
0x03000042
,
0x800f0000
,
0x90e40000
,
0xa0e40800
,
/* texld r0, v0, s0 */
0x02000001
,
0x800f0800
,
0x80e40000
,
/* mov oC0, r0 */
0x0000ffff
,
/* end */
};
static
const
struct
{
...
...
@@ -15510,6 +15519,8 @@ static void test_fetch4(void)
D3DCOLOR
colour_amd
[
16
];
D3DCOLOR
colour_intel
[
16
];
D3DCOLOR
colour_fetch4_off
[
16
];
D3DCOLOR
colour_3d_fetch4_off
[
16
];
D3DCOLOR
colour_3d_amd_zround
[
16
];
}
expected_colours
=
{
...
...
@@ -15532,6 +15543,16 @@ static void test_fetch4(void)
0x02020202
,
0xf2f2f2f2
,
0xf1f1f1f1
,
0x01010101
,
0x04040404
,
0xf4f4f4f4
,
0xf3f3f3f3
,
0x03030303
,
0x23232323
,
0x22222222
,
0x21212121
,
0x20202020
},
/* Fetch4 off on 3D textures. */
{
0xff020202
,
0xfff2f2f2
,
0xfff1f1f1
,
0xff010101
,
0xff050505
,
0xfff4f4f4
,
0xfff3f3f3
,
0xff030303
,
0xff232323
,
0xff222222
,
0xff212121
,
0xff202020
,
0xff131313
,
0xff121212
,
0xff111111
,
0xff101010
},
/* Fetch4 on, 3D texture without nearest z rounding. */
{
0x02f204f4
,
0xf2f1f4f3
,
0xf101f303
,
0x01010303
,
0x04f42322
,
0xf4f32221
,
0xf3032120
,
0x03032020
,
0x23221312
,
0x22211211
,
0x21201110
,
0x20201010
,
0x13121312
,
0x12111211
,
0x11101110
,
0x10101010
},
};
static
const
DWORD
fetch4_data
[]
=
{
0x10111213
,
0x01f1f202
,
0x03f3f404
,
0x20212223
};
...
...
@@ -15618,15 +15639,18 @@ static void test_fetch4(void)
},
};
D3DCOLOR
colour
,
colour_amd
,
colour_intel
,
colour_off
;
D3DCOLOR
colour
,
colour_amd
,
colour_intel
,
colour_off
,
colour_zround
;
IDirect3DPixelShader9
*
ps
[
ARRAY_SIZE
(
shaders
)];
IDirect3DVolumeTexture9
*
texture_3d
;
IDirect3DSurface9
*
original_rt
;
IDirect3DPixelShader9
*
ps_3d
;
struct
surface_readback
rb
;
IDirect3DVertexShader9
*
vs
;
IDirect3DTexture9
*
texture
;
IDirect3DDevice9
*
device
;
unsigned
int
i
,
j
,
x
,
y
;
D3DLOCKED_RECT
lr
;
D3DLOCKED_BOX
lb
;
IDirect3D9
*
d3d
;
ULONG
refcount
;
D3DCAPS9
caps
;
...
...
@@ -15681,6 +15705,8 @@ static void test_fetch4(void)
hr
=
IDirect3DDevice9_CreatePixelShader
(
device
,
shaders
[
i
].
ps_code
,
&
ps
[
i
]);
ok
(
hr
==
D3D_OK
,
"Got unexpected hr %#x.
\n
"
,
hr
);
}
hr
=
IDirect3DDevice9_CreatePixelShader
(
device
,
ps_code_3d
,
&
ps_3d
);
ok
(
hr
==
D3D_OK
,
"Got unexpected hr %#x.
\n
"
,
hr
);
hr
=
IDirect3DDevice9_SetFVF
(
device
,
D3DFVF_XYZ
|
D3DFVF_TEX1
|
D3DFVF_TEXCOORDSIZE4
(
0
));
ok
(
hr
==
D3D_OK
,
"Got unexpected hr %#x.
\n
"
,
hr
);
...
...
@@ -15818,12 +15844,70 @@ static void test_fetch4(void)
IDirect3DTexture9_Release
(
tex
);
}
hr
=
IDirect3DDevice9_CreateVolumeTexture
(
device
,
4
,
4
,
2
,
1
,
0
,
D3DFMT_L8
,
D3DPOOL_MANAGED
,
&
texture_3d
,
NULL
);
ok
(
hr
==
D3D_OK
,
"Got unexpected hr %#x.
\n
"
,
hr
);
hr
=
IDirect3DVolumeTexture9_LockBox
(
texture_3d
,
0
,
&
lb
,
NULL
,
0
);
ok
(
hr
==
D3D_OK
,
"Got unexpected hr %#x.
\n
"
,
hr
);
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
fetch4_data
);
++
i
)
{
memcpy
((
BYTE
*
)
lb
.
pBits
+
i
*
lb
.
RowPitch
,
&
fetch4_data
[
i
],
sizeof
(
fetch4_data
[
i
]));
/* Shift the lower level, to keep it different. */
memcpy
((
BYTE
*
)
lb
.
pBits
+
i
*
lb
.
RowPitch
+
lb
.
SlicePitch
,
&
fetch4_data
[(
i
+
1
)
%
4
],
sizeof
(
fetch4_data
[
i
]));
}
hr
=
IDirect3DVolumeTexture9_UnlockBox
(
texture_3d
,
0
);
ok
(
hr
==
D3D_OK
,
"Got unexpected hr %#x.
\n
"
,
hr
);
hr
=
IDirect3DDevice9_SetTexture
(
device
,
0
,
(
IDirect3DBaseTexture9
*
)
texture_3d
);
ok
(
hr
==
D3D_OK
,
"Got unexpected hr %#x.
\n
"
,
hr
);
/* Test Fetch4 with 3D textures. */
for
(
i
=
0
;
i
<
2
;
++
i
)
{
hr
=
IDirect3DDevice9_SetVertexShader
(
device
,
i
?
vs
:
NULL
);
ok
(
hr
==
D3D_OK
,
"Got unexpected hr %#x.
\n
"
,
hr
);
hr
=
IDirect3DDevice9_SetPixelShader
(
device
,
i
?
ps_3d
:
NULL
);
ok
(
hr
==
D3D_OK
,
"Got unexpected hr %#x.
\n
"
,
hr
);
hr
=
IDirect3DDevice9_Clear
(
device
,
0
,
NULL
,
D3DCLEAR_TARGET
|
D3DCLEAR_ZBUFFER
,
0
,
0
.
0
f
,
0
);
ok
(
hr
==
D3D_OK
,
"Got unexpected hr %#x.
\n
"
,
hr
);
hr
=
IDirect3DDevice9_BeginScene
(
device
);
ok
(
hr
==
D3D_OK
,
"Got unexpected hr %#x.
\n
"
,
hr
);
hr
=
IDirect3DDevice9_DrawPrimitiveUP
(
device
,
D3DPT_TRIANGLESTRIP
,
2
,
quad2
,
sizeof
(
*
quad2
));
ok
(
hr
==
D3D_OK
,
"Got unexpected hr %#x.
\n
"
,
hr
);
hr
=
IDirect3DDevice9_EndScene
(
device
);
ok
(
hr
==
D3D_OK
,
"Got unexpected hr %#x.
\n
"
,
hr
);
get_rt_readback
(
original_rt
,
&
rb
);
for
(
j
=
0
;
j
<
ARRAY_SIZE
(
expected_colours
.
colour_amd
);
++
j
)
{
x
=
expected_colours
.
x
[
j
%
4
];
y
=
expected_colours
.
y
[
j
/
4
];
colour_amd
=
expected_colours
.
colour_amd
[
j
];
colour_intel
=
expected_colours
.
colour_intel
[
j
];
colour_off
=
expected_colours
.
colour_3d_fetch4_off
[
j
];
colour_zround
=
expected_colours
.
colour_3d_amd_zround
[
j
];
colour
=
get_readback_color
(
&
rb
,
x
,
y
);
/* Note: Fetch4 on 3D textures have different results based on the vendor/driver
* - AMD "HD 5700" rounds to nearest "z" texel, and does fetch4 normally on .xy
* - AMD "R500" has fetch4 disabled
* - AMD "R580" has fetch4 enabled sampling at .xy0
* - Intel UHD 620 sample with fetch4 at .xy0 */
ok
(
color_match
(
colour
,
colour_off
,
2
)
||
broken
(
color_match
(
colour
,
colour_zround
,
2
)
||
color_match
(
colour
,
colour_intel
,
2
)
||
color_match
(
colour
,
colour_amd
,
2
)),
"Test 3D %s: Got unexpected colour 0x%08x at (%u, %u).
\n
"
,
shaders
[
i
].
name
,
colour
,
x
,
y
);
}
release_surface_readback
(
&
rb
);
hr
=
IDirect3DDevice9_Present
(
device
,
NULL
,
NULL
,
NULL
,
NULL
);
ok
(
hr
==
D3D_OK
,
"Got unexpected hr %#x.
\n
"
,
hr
);
}
IDirect3DVolumeTexture9_Release
(
texture_3d
);
IDirect3DTexture9_Release
(
texture
);
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
ps
);
++
i
)
{
if
(
ps
[
i
])
IDirect3DPixelShader9_Release
(
ps
[
i
]);
}
IDirect3DPixelShader9_Release
(
ps_3d
);
IDirect3DVertexShader9_Release
(
vs
);
IDirect3DSurface9_Release
(
original_rt
);
refcount
=
IDirect3DDevice9_Release
(
device
);
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