Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
wine
Manage
Activity
Members
Labels
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Package registry
Container Registry
Model registry
Operate
Terraform modules
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Alexey Alyaev
wine
Commits
6d31824a
Commit
6d31824a
authored
13 years ago
by
Henri Verbeet
Committed by
Alexandre Julliard
13 years ago
Browse files
Options
Downloads
Patches
Plain Diff
d3d9/tests: Fix the depth clamping test.
parent
197826b1
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
dlls/d3d9/tests/visual.c
+77
-56
77 additions, 56 deletions
dlls/d3d9/tests/visual.c
with
77 additions
and
56 deletions
dlls/d3d9/tests/visual.c
+
77
−
56
View file @
6d31824a
...
...
@@ -200,15 +200,10 @@ static IDirect3DDevice9 *init_d3d9(void)
HIWORD(U(identifier.DriverVersion).HighPart), LOWORD(U(identifier.DriverVersion).HighPart),
HIWORD(U(identifier.DriverVersion).LowPart), LOWORD(U(identifier.DriverVersion).LowPart));
hr = IDirect3D9_CreateDevice(d3d9_ptr, D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, present_parameters.hDeviceWindow, D3DCREATE_HARDWARE_VERTEXPROCESSING, &present_parameters, &device_ptr);
if(FAILED(hr)) {
present_parameters.AutoDepthStencilFormat = D3DFMT_D16;
hr = IDirect3D9_CreateDevice(d3d9_ptr, D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, present_parameters.hDeviceWindow, D3DCREATE_HARDWARE_VERTEXPROCESSING, &present_parameters, &device_ptr);
if(FAILED(hr)) {
hr = IDirect3D9_CreateDevice(d3d9_ptr, D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, present_parameters.hDeviceWindow, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &present_parameters, &device_ptr);
}
}
ok(hr == D3D_OK || hr == D3DERR_NOTAVAILABLE, "IDirect3D_CreateDevice returned: %08x\n", hr);
hr = IDirect3D9_CreateDevice(d3d9_ptr, D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL,
present_parameters.hDeviceWindow, D3DCREATE_HARDWARE_VERTEXPROCESSING, &present_parameters, &device_ptr);
ok(hr == D3D_OK || hr == D3DERR_NOTAVAILABLE || hr == D3DERR_INVALIDCALL,
"Failed to create a device, hr %#x.\n", hr);
return device_ptr;
}
...
...
@@ -10417,59 +10412,63 @@ static void viewport_test(IDirect3DDevice9 *device) {
}
/* This test tests depth clamping / clipping behaviour:
* - When D3DRS_CLIPPING is disabled depth values are *clamped* to the
* minimum/maximum z value.
* - With software vertex processing, depth values are clamped to the
* minimum / maximum z value when D3DRS_CLIPPING is disabled, and clipped
* when D3DRS_CLIPPING is enabled. Pretransformed vertices behave the
* same as regular vertices here.
* - With hardware vertex processing, D3DRS_CLIPPING seems to be ignored.
* Normal vertices are always clipped. Pretransformed vertices are
* clipped when D3DPMISCCAPS_CLIPTLVERTS is set, clamped when it isn't.
* - The viewport's MinZ/MaxZ is irrelevant for this.
* - When D3DRS_CLIPPING is enabled depth values are clipped.
* - Pretransformed vertices behave the same as regular vertices.
*/
static void depth_clamp_test(IDirect3DDevice9 *device)
{
const struct tvertex quad1[] =
{
{
0, 0
, 5.0f, 1.0, 0xff002b7f},
{
640,
0, 5.0f, 1.0, 0xff002b7f},
{
0
,
480, 5.0f, 1.0, 0xff002b7f},
{
640,
480, 5.0f, 1.0, 0xff002b7f},
{
0.0f, 0.0f
, 5.0f, 1.0
f
, 0xff002b7f},
{640
.0f
, 0
.0f
, 5.0f, 1.0
f
, 0xff002b7f},
{
0.0f
, 480
.0f
, 5.0f, 1.0
f
, 0xff002b7f},
{640
.0f
, 480
.0f
, 5.0f, 1.0
f
, 0xff002b7f},
};
const struct tvertex quad2[] =
{
{
0
,
300, 10.0f, 1.0, 0xfff9e814},
{
640,
300, 10.0f, 1.0, 0xfff9e814},
{
0
,
360, 10.0f, 1.0, 0xfff9e814},
{
640,
360, 10.0f, 1.0, 0xfff9e814},
{
0.0f
, 300
.0f
, 10.0f, 1.0
f
, 0xfff9e814},
{640
.0f
, 300
.0f
, 10.0f, 1.0
f
, 0xfff9e814},
{
0.0f
, 360
.0f
, 10.0f, 1.0
f
, 0xfff9e814},
{640
.0f
, 360
.0f
, 10.0f, 1.0
f
, 0xfff9e814},
};
const struct vertex quad3[] =
const struct
t
vertex quad3[] =
{
{
-0.65, 0.55
, 5.0f,
0xffffffff},
{
-0.35, 0.55
, 5.0f,
0xffffffff},
{
-0.65, 0.15
, 5.0f,
0xffffffff},
{
-0.35, 0.15
, 5.0f,
0xffffffff},
{
112.0f, 108.0f
, 5.0f,
1.0f,
0xffffffff},
{
208.0f, 108.0f
, 5.0f,
1.0f,
0xffffffff},
{
112.0f, 204.0f
, 5.0f,
1.0f,
0xffffffff},
{
208.0f, 204.0f
, 5.0f,
1.0f,
0xffffffff},
};
const struct vertex quad4[] =
const struct
t
vertex quad4[] =
{
{
-0.87, 0.83
, 10.0f,
0xffffffff},
{
-0.65, 0.83
, 10.0f,
0xffffffff},
{
-0.87, 0.55
, 10.0f,
0xffffffff},
{
-0.65, 0.55
, 10.0f,
0xffffffff},
{
42.0f, 41.0f
, 10.0f,
1.0f,
0xffffffff},
{
112.0f, 41.0f
, 10.0f,
1.0f,
0xffffffff},
{
42.0f, 108.0f
, 10.0f,
1.0f,
0xffffffff},
{
112.0f, 108.0f
, 10.0f,
1.0f,
0xffffffff},
};
const struct vertex quad5[] =
{
{ -0.5
,
0.5, 10.0f, 0xff14f914},
{ 0.5
,
0.5, 10.0f, 0xff14f914},
{ -0.5
,
-0.5, 10.0f, 0xff14f914},
{ 0.5
,
-0.5, 10.0f, 0xff14f914},
{ -0.5
f,
0.5
f
, 10.0f,
0xff14f914},
{ 0.5
f,
0.5
f
, 10.0f,
0xff14f914},
{ -0.5
f,
-0.5
f
, 10.0f,
0xff14f914},
{ 0.5
f,
-0.5
f
, 10.0f,
0xff14f914},
};
const struct
t
vertex quad6[] =
const struct vertex quad6[] =
{
{
0, 120
, 10.0f,
1.0,
0xfff91414},
{
640, 120
, 10.0f,
1.0,
0xfff91414},
{
0, 180
, 10.0f,
1.0,
0xfff91414},
{
640, 180
, 10.0f,
1.0,
0xfff91414},
{
-1.0f, 0.5f
, 10.0f,
0xfff91414},
{
1.0f, 0.5f
, 10.0f,
0xfff91414},
{
-1.0f, 0.25f
, 10.0f,
0xfff91414},
{
1.0f, 0.25f
, 10.0f,
0xfff91414},
};
D3DVIEWPORT9 vp;
D3DCOLOR color;
D3DCAPS9 caps;
HRESULT hr;
vp.X = 0;
...
...
@@ -10479,6 +10478,9 @@ static void depth_clamp_test(IDirect3DDevice9 *device)
vp.MinZ = 0.0;
vp.MaxZ = 7.5;
hr = IDirect3DDevice9_GetDeviceCaps(device, &caps);
ok(SUCCEEDED(hr), "Failed to get device caps, hr %#x.\n", hr);
hr = IDirect3DDevice9_SetViewport(device, &vp);
if(FAILED(hr))
{
...
...
@@ -10493,7 +10495,7 @@ static void depth_clamp_test(IDirect3DDevice9 *device)
}
ok(SUCCEEDED(hr), "SetViewport failed, hr %#x.\n", hr);
hr = IDirect3DDevice9_Clear(device, 0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 0xff
ffffff
, 1.0, 0);
hr = IDirect3DDevice9_Clear(device, 0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 0xff
00ff00
, 1.0, 0);
ok(SUCCEEDED(hr), "Clear failed, hr %#x.\n", hr);
hr = IDirect3DDevice9_SetRenderState(device, D3DRS_CLIPPING, FALSE);
...
...
@@ -10516,22 +10518,25 @@ static void depth_clamp_test(IDirect3DDevice9 *device)
hr = IDirect3DDevice9_DrawPrimitiveUP(device, D3DPT_TRIANGLESTRIP, 2, quad2, sizeof(*quad2));
ok(SUCCEEDED(hr), "DrawPrimitiveUP failed, hr %#x.\n", hr);
hr = IDirect3DDevice9_Set
FVF
(device, D3D
FVF_XYZ | D3DFVF_DIFFUS
E);
ok(SUCCEEDED(hr), "Set
FVF
failed, hr %#x.\n", hr);
hr = IDirect3DDevice9_Set
RenderState
(device, D3D
RS_CLIPPING, TRU
E);
ok(SUCCEEDED(hr), "Set
RenderState
failed, hr %#x.\n", hr);
hr = IDirect3DDevice9_DrawPrimitiveUP(device, D3DPT_TRIANGLESTRIP, 2, quad3, sizeof(*quad3));
ok(SUCCEEDED(hr), "DrawPrimitiveUP failed, hr %#x.\n", hr);
hr = IDirect3DDevice9_DrawPrimitiveUP(device, D3DPT_TRIANGLESTRIP, 2, quad4, sizeof(*quad4));
ok(SUCCEEDED(hr), "DrawPrimitiveUP failed, hr %#x.\n", hr);
hr = IDirect3DDevice9_SetRenderState(device, D3DRS_CLIPPING,
TRU
E);
hr = IDirect3DDevice9_SetRenderState(device, D3DRS_CLIPPING,
FALS
E);
ok(SUCCEEDED(hr), "SetRenderState failed, hr %#x.\n", hr);
hr = IDirect3DDevice9_SetFVF(device, D3DFVF_XYZ | D3DFVF_DIFFUSE);
ok(SUCCEEDED(hr), "SetFVF failed, hr %#x.\n", hr);
hr = IDirect3DDevice9_DrawPrimitiveUP(device, D3DPT_TRIANGLESTRIP, 2, quad5, sizeof(*quad5));
ok(SUCCEEDED(hr), "DrawPrimitiveUP failed, hr %#x.\n", hr);
hr = IDirect3DDevice9_Set
FVF
(device, D3D
FVF_XYZRHW | D3DFVF_DIFFUS
E);
ok(SUCCEEDED(hr), "Set
FVF
failed, hr %#x.\n", hr);
hr = IDirect3DDevice9_Set
RenderState
(device, D3D
RS_CLIPPING, TRU
E);
ok(SUCCEEDED(hr), "Set
RenderState
failed, hr %#x.\n", hr);
hr = IDirect3DDevice9_DrawPrimitiveUP(device, D3DPT_TRIANGLESTRIP, 2, quad6, sizeof(*quad6));
ok(SUCCEEDED(hr), "DrawPrimitiveUP failed, hr %#x.\n", hr);
...
...
@@ -10539,16 +10544,32 @@ static void depth_clamp_test(IDirect3DDevice9 *device)
hr = IDirect3DDevice9_EndScene(device);
ok(SUCCEEDED(hr), "EndScene failed, hr %#x.\n", hr);
color = getPixelColor(device, 75, 75);
ok(color_match(color, 0x00ffffff, 1), "color 0x%08x.\n", color);
color = getPixelColor(device, 150, 150);
ok(color_match(color, 0x00ffffff, 1), "color 0x%08x.\n", color);
color = getPixelColor(device, 320, 240);
ok(color_match(color, 0x00002b7f, 1), "color 0x%08x.\n", color);
color = getPixelColor(device, 320, 330);
ok(color_match(color, 0x00f9e814, 1), "color 0x%08x.\n", color);
color = getPixelColor(device, 320, 330);
ok(color_match(color, 0x00f9e814, 1), "color 0x%08x.\n", color);
if (caps.PrimitiveMiscCaps & D3DPMISCCAPS_CLIPTLVERTS)
{
color = getPixelColor(device, 75, 75);
todo_wine ok(color_match(color, 0x0000ff00, 1), "color 0x%08x.\n", color);
color = getPixelColor(device, 150, 150);
todo_wine ok(color_match(color, 0x0000ff00, 1), "color 0x%08x.\n", color);
color = getPixelColor(device, 320, 240);
todo_wine ok(color_match(color, 0x0000ff00, 1), "color 0x%08x.\n", color);
color = getPixelColor(device, 320, 330);
todo_wine ok(color_match(color, 0x0000ff00, 1), "color 0x%08x.\n", color);
color = getPixelColor(device, 320, 330);
todo_wine ok(color_match(color, 0x0000ff00, 1), "color 0x%08x.\n", color);
}
else
{
color = getPixelColor(device, 75, 75);
ok(color_match(color, 0x00ffffff, 1), "color 0x%08x.\n", color);
color = getPixelColor(device, 150, 150);
ok(color_match(color, 0x00ffffff, 1), "color 0x%08x.\n", color);
color = getPixelColor(device, 320, 240);
ok(color_match(color, 0x00002b7f, 1), "color 0x%08x.\n", color);
color = getPixelColor(device, 320, 330);
ok(color_match(color, 0x00f9e814, 1), "color 0x%08x.\n", color);
color = getPixelColor(device, 320, 330);
ok(color_match(color, 0x00f9e814, 1), "color 0x%08x.\n", color);
}
hr = IDirect3DDevice9_Present(device, NULL, NULL, NULL, NULL);
ok(SUCCEEDED(hr), "Present failed (0x%08x)\n", hr);
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment