[PATCH 1/5] ddraw: Clear DDSD_LINEARSIZE on uncompressed surfaces.
Henri Verbeet
hverbeet at codeweavers.com
Wed Jun 11 04:55:42 CDT 2014
---
dlls/ddraw/surface.c | 3 ++-
dlls/ddraw/tests/ddraw1.c | 4 +++-
dlls/ddraw/tests/ddraw2.c | 4 +++-
dlls/ddraw/tests/ddraw4.c | 58 ++++++++++++++++++++++++++-------------------
dlls/ddraw/tests/ddraw7.c | 58 ++++++++++++++++++++++++++-------------------
5 files changed, 74 insertions(+), 53 deletions(-)
diff --git a/dlls/ddraw/surface.c b/dlls/ddraw/surface.c
index 3f230a2..a326404 100644
--- a/dlls/ddraw/surface.c
+++ b/dlls/ddraw/surface.c
@@ -6127,6 +6127,7 @@ HRESULT ddraw_surface_init(struct ddraw_surface *surface, struct ddraw *ddraw, s
else if (!(desc->dwFlags & DDSD_LPSURFACE))
{
desc->dwFlags |= DDSD_PITCH;
+ desc->dwFlags &= ~DDSD_LINEARSIZE;
desc->u1.lPitch = wined3d_surface_get_pitch(wined3d_surface);
}
@@ -6147,7 +6148,7 @@ HRESULT ddraw_surface_init(struct ddraw_surface *surface, struct ddraw *ddraw, s
return hr;
}
- desc->dwFlags &= ~DDSD_LPSURFACE;
+ desc->dwFlags &= ~(DDSD_LPSURFACE | DDSD_LINEARSIZE);
}
wined3d_surface_incref(wined3d_surface);
diff --git a/dlls/ddraw/tests/ddraw1.c b/dlls/ddraw/tests/ddraw1.c
index c8f7d65..904c41a 100644
--- a/dlls/ddraw/tests/ddraw1.c
+++ b/dlls/ddraw/tests/ddraw1.c
@@ -4513,6 +4513,8 @@ static void test_create_surface_pitch(void)
DDSD_PITCH, 0x100},
{DDSCAPS_VIDEOMEMORY, DDSD_PITCH, 0x0f8, DD_OK,
DDSD_PITCH, 0x100},
+ {DDSCAPS_SYSTEMMEMORY, DDSD_PITCH | DDSD_LINEARSIZE, 0, DD_OK,
+ DDSD_PITCH, 0x100},
{DDSCAPS_VIDEOMEMORY, DDSD_LPSURFACE | DDSD_PITCH, 0x100, DDERR_INVALIDCAPS,
0, 0 },
{DDSCAPS_SYSTEMMEMORY, 0, 0, DD_OK,
@@ -4526,7 +4528,7 @@ static void test_create_surface_pitch(void)
{DDSCAPS_SYSTEMMEMORY, DDSD_LPSURFACE | DDSD_PITCH, 0x100, DDERR_INVALIDPARAMS,
0, 0 },
};
- DWORD flags_mask = DDSD_PITCH | DDSD_LPSURFACE;
+ DWORD flags_mask = DDSD_PITCH | DDSD_LPSURFACE | DDSD_LINEARSIZE;
window = CreateWindowA("static", "ddraw_test", WS_OVERLAPPEDWINDOW,
0, 0, 640, 480, 0, 0, 0, 0);
diff --git a/dlls/ddraw/tests/ddraw2.c b/dlls/ddraw/tests/ddraw2.c
index 23795d3..aa1b0b3 100644
--- a/dlls/ddraw/tests/ddraw2.c
+++ b/dlls/ddraw/tests/ddraw2.c
@@ -5589,6 +5589,8 @@ static void test_create_surface_pitch(void)
DDSD_PITCH, 0x100},
{DDSCAPS_VIDEOMEMORY, DDSD_PITCH, 0x0f8, DD_OK,
DDSD_PITCH, 0x100},
+ {DDSCAPS_SYSTEMMEMORY, DDSD_PITCH | DDSD_LINEARSIZE, 0, DD_OK,
+ DDSD_PITCH, 0x100},
{DDSCAPS_VIDEOMEMORY, DDSD_LPSURFACE | DDSD_PITCH, 0x100, DDERR_INVALIDCAPS,
0, 0 },
{DDSCAPS_SYSTEMMEMORY, 0, 0, DD_OK,
@@ -5602,7 +5604,7 @@ static void test_create_surface_pitch(void)
{DDSCAPS_SYSTEMMEMORY, DDSD_LPSURFACE | DDSD_PITCH, 0x100, DDERR_INVALIDPARAMS,
0, 0 },
};
- DWORD flags_mask = DDSD_PITCH | DDSD_LPSURFACE;
+ DWORD flags_mask = DDSD_PITCH | DDSD_LPSURFACE | DDSD_LINEARSIZE;
window = CreateWindowA("static", "ddraw_test", WS_OVERLAPPEDWINDOW,
0, 0, 640, 480, 0, 0, 0, 0);
diff --git a/dlls/ddraw/tests/ddraw4.c b/dlls/ddraw/tests/ddraw4.c
index 464d955..d1bbd4e 100644
--- a/dlls/ddraw/tests/ddraw4.c
+++ b/dlls/ddraw/tests/ddraw4.c
@@ -6478,32 +6478,40 @@ static void test_create_surface_pitch(void)
}
test_data[] =
{
- {DDSCAPS_VIDEOMEMORY, 0, 0, DD_OK,
- DDSD_PITCH, 0x100},
- {DDSCAPS_VIDEOMEMORY, DDSD_PITCH, 0x104, DD_OK,
- DDSD_PITCH, 0x100},
- {DDSCAPS_VIDEOMEMORY, DDSD_PITCH, 0x0f8, DD_OK,
- DDSD_PITCH, 0x100},
- {DDSCAPS_VIDEOMEMORY, DDSD_LPSURFACE | DDSD_PITCH, 0x100, DDERR_INVALIDCAPS,
- 0, 0 },
- {DDSCAPS_SYSTEMMEMORY, 0, 0, DD_OK,
- DDSD_PITCH, 0x100},
- {DDSCAPS_SYSTEMMEMORY, DDSD_PITCH, 0x104, DD_OK,
- DDSD_PITCH, 0x100},
- {DDSCAPS_SYSTEMMEMORY, DDSD_PITCH, 0x0f8, DD_OK,
- DDSD_PITCH, 0x100},
- {DDSCAPS_SYSTEMMEMORY, DDSD_LPSURFACE, 0, DDERR_INVALIDPARAMS,
- 0, 0 },
- {DDSCAPS_SYSTEMMEMORY, DDSD_LPSURFACE | DDSD_PITCH, 0x100, DD_OK,
- DDSD_PITCH, 0x100},
- {DDSCAPS_SYSTEMMEMORY, DDSD_LPSURFACE | DDSD_PITCH, 0x0fe, DDERR_INVALIDPARAMS,
- 0, 0 },
- {DDSCAPS_SYSTEMMEMORY, DDSD_LPSURFACE | DDSD_PITCH, 0x0fc, DD_OK,
- DDSD_PITCH, 0x0fc},
- {DDSCAPS_SYSTEMMEMORY, DDSD_LPSURFACE | DDSD_PITCH, 0x0f8, DDERR_INVALIDPARAMS,
- 0, 0 },
+ {DDSCAPS_VIDEOMEMORY, 0, 0, DD_OK,
+ DDSD_PITCH, 0x100},
+ {DDSCAPS_VIDEOMEMORY, DDSD_PITCH, 0x104, DD_OK,
+ DDSD_PITCH, 0x100},
+ {DDSCAPS_VIDEOMEMORY, DDSD_PITCH, 0x0f8, DD_OK,
+ DDSD_PITCH, 0x100},
+ {DDSCAPS_VIDEOMEMORY, DDSD_LPSURFACE | DDSD_PITCH, 0x100, DDERR_INVALIDCAPS,
+ 0, 0 },
+ {DDSCAPS_SYSTEMMEMORY, 0, 0, DD_OK,
+ DDSD_PITCH, 0x100},
+ {DDSCAPS_SYSTEMMEMORY, DDSD_PITCH, 0x104, DD_OK,
+ DDSD_PITCH, 0x100},
+ {DDSCAPS_SYSTEMMEMORY, DDSD_PITCH, 0x0f8, DD_OK,
+ DDSD_PITCH, 0x100},
+ {DDSCAPS_SYSTEMMEMORY, DDSD_PITCH | DDSD_LINEARSIZE, 0, DD_OK,
+ DDSD_PITCH, 0x100},
+ {DDSCAPS_SYSTEMMEMORY, DDSD_LPSURFACE, 0, DDERR_INVALIDPARAMS,
+ 0, 0 },
+ {DDSCAPS_SYSTEMMEMORY, DDSD_LPSURFACE | DDSD_PITCH, 0x100, DD_OK,
+ DDSD_PITCH, 0x100},
+ {DDSCAPS_SYSTEMMEMORY, DDSD_LPSURFACE | DDSD_PITCH, 0x0fe, DDERR_INVALIDPARAMS,
+ 0, 0 },
+ {DDSCAPS_SYSTEMMEMORY, DDSD_LPSURFACE | DDSD_PITCH, 0x0fc, DD_OK,
+ DDSD_PITCH, 0x0fc},
+ {DDSCAPS_SYSTEMMEMORY, DDSD_LPSURFACE | DDSD_PITCH, 0x0f8, DDERR_INVALIDPARAMS,
+ 0, 0 },
+ {DDSCAPS_SYSTEMMEMORY, DDSD_LPSURFACE | DDSD_LINEARSIZE, 0x100, DDERR_INVALIDPARAMS,
+ 0, 0 },
+ {DDSCAPS_SYSTEMMEMORY, DDSD_LPSURFACE | DDSD_LINEARSIZE, 0x3f00, DDERR_INVALIDPARAMS,
+ 0, 0 },
+ {DDSCAPS_SYSTEMMEMORY, DDSD_LPSURFACE | DDSD_PITCH | DDSD_LINEARSIZE, 0x100, DD_OK,
+ DDSD_PITCH, 0x100},
};
- DWORD flags_mask = DDSD_PITCH | DDSD_LPSURFACE;
+ DWORD flags_mask = DDSD_PITCH | DDSD_LPSURFACE | DDSD_LINEARSIZE;
window = CreateWindowA("static", "ddraw_test", WS_OVERLAPPEDWINDOW,
0, 0, 640, 480, 0, 0, 0, 0);
diff --git a/dlls/ddraw/tests/ddraw7.c b/dlls/ddraw/tests/ddraw7.c
index 1c5bc1d..3f4acfb 100644
--- a/dlls/ddraw/tests/ddraw7.c
+++ b/dlls/ddraw/tests/ddraw7.c
@@ -6301,32 +6301,40 @@ static void test_create_surface_pitch(void)
}
test_data[] =
{
- {DDSCAPS_VIDEOMEMORY, 0, 0, DD_OK,
- DDSD_PITCH, 0x100},
- {DDSCAPS_VIDEOMEMORY, DDSD_PITCH, 0x104, DD_OK,
- DDSD_PITCH, 0x100},
- {DDSCAPS_VIDEOMEMORY, DDSD_PITCH, 0x0f8, DD_OK,
- DDSD_PITCH, 0x100},
- {DDSCAPS_VIDEOMEMORY, DDSD_LPSURFACE | DDSD_PITCH, 0x100, DDERR_INVALIDCAPS,
- 0, 0 },
- {DDSCAPS_SYSTEMMEMORY, 0, 0, DD_OK,
- DDSD_PITCH, 0x100},
- {DDSCAPS_SYSTEMMEMORY, DDSD_PITCH, 0x104, DD_OK,
- DDSD_PITCH, 0x100},
- {DDSCAPS_SYSTEMMEMORY, DDSD_PITCH, 0x0f8, DD_OK,
- DDSD_PITCH, 0x100},
- {DDSCAPS_SYSTEMMEMORY, DDSD_LPSURFACE, 0, DDERR_INVALIDPARAMS,
- 0, 0 },
- {DDSCAPS_SYSTEMMEMORY, DDSD_LPSURFACE | DDSD_PITCH, 0x100, DD_OK,
- DDSD_PITCH, 0x100},
- {DDSCAPS_SYSTEMMEMORY, DDSD_LPSURFACE | DDSD_PITCH, 0x0fe, DDERR_INVALIDPARAMS,
- 0, 0 },
- {DDSCAPS_SYSTEMMEMORY, DDSD_LPSURFACE | DDSD_PITCH, 0x0fc, DD_OK,
- DDSD_PITCH, 0x0fc},
- {DDSCAPS_SYSTEMMEMORY, DDSD_LPSURFACE | DDSD_PITCH, 0x0f8, DDERR_INVALIDPARAMS,
- 0, 0 },
+ {DDSCAPS_VIDEOMEMORY, 0, 0, DD_OK,
+ DDSD_PITCH, 0x100},
+ {DDSCAPS_VIDEOMEMORY, DDSD_PITCH, 0x104, DD_OK,
+ DDSD_PITCH, 0x100},
+ {DDSCAPS_VIDEOMEMORY, DDSD_PITCH, 0x0f8, DD_OK,
+ DDSD_PITCH, 0x100},
+ {DDSCAPS_VIDEOMEMORY, DDSD_LPSURFACE | DDSD_PITCH, 0x100, DDERR_INVALIDCAPS,
+ 0, 0 },
+ {DDSCAPS_SYSTEMMEMORY, 0, 0, DD_OK,
+ DDSD_PITCH, 0x100},
+ {DDSCAPS_SYSTEMMEMORY, DDSD_PITCH, 0x104, DD_OK,
+ DDSD_PITCH, 0x100},
+ {DDSCAPS_SYSTEMMEMORY, DDSD_PITCH, 0x0f8, DD_OK,
+ DDSD_PITCH, 0x100},
+ {DDSCAPS_SYSTEMMEMORY, DDSD_PITCH | DDSD_LINEARSIZE, 0, DD_OK,
+ DDSD_PITCH, 0x100},
+ {DDSCAPS_SYSTEMMEMORY, DDSD_LPSURFACE, 0, DDERR_INVALIDPARAMS,
+ 0, 0 },
+ {DDSCAPS_SYSTEMMEMORY, DDSD_LPSURFACE | DDSD_PITCH, 0x100, DD_OK,
+ DDSD_PITCH, 0x100},
+ {DDSCAPS_SYSTEMMEMORY, DDSD_LPSURFACE | DDSD_PITCH, 0x0fe, DDERR_INVALIDPARAMS,
+ 0, 0 },
+ {DDSCAPS_SYSTEMMEMORY, DDSD_LPSURFACE | DDSD_PITCH, 0x0fc, DD_OK,
+ DDSD_PITCH, 0x0fc},
+ {DDSCAPS_SYSTEMMEMORY, DDSD_LPSURFACE | DDSD_PITCH, 0x0f8, DDERR_INVALIDPARAMS,
+ 0, 0 },
+ {DDSCAPS_SYSTEMMEMORY, DDSD_LPSURFACE | DDSD_LINEARSIZE, 0x100, DDERR_INVALIDPARAMS,
+ 0, 0 },
+ {DDSCAPS_SYSTEMMEMORY, DDSD_LPSURFACE | DDSD_LINEARSIZE, 0x3f00, DDERR_INVALIDPARAMS,
+ 0, 0 },
+ {DDSCAPS_SYSTEMMEMORY, DDSD_LPSURFACE | DDSD_PITCH | DDSD_LINEARSIZE, 0x100, DD_OK,
+ DDSD_PITCH, 0x100},
};
- DWORD flags_mask = DDSD_PITCH | DDSD_LPSURFACE;
+ DWORD flags_mask = DDSD_PITCH | DDSD_LPSURFACE | DDSD_LINEARSIZE;
window = CreateWindowA("static", "ddraw_test", WS_OVERLAPPEDWINDOW,
0, 0, 640, 480, 0, 0, 0, 0);
--
1.7.10.4
More information about the wine-patches
mailing list