ddraw: SetSurfaceDesc does not work on primaries.
This commit is contained in:
parent
03fe6f3e07
commit
0fdb1aaff6
|
@ -4293,8 +4293,9 @@ static HRESULT WINAPI ddraw_surface7_SetSurfaceDesc(IDirectDrawSurface7 *iface,
|
||||||
WARN("Flags is %x, returning DDERR_INVALIDPARAMS\n", Flags);
|
WARN("Flags is %x, returning DDERR_INVALIDPARAMS\n", Flags);
|
||||||
return DDERR_INVALIDPARAMS;
|
return DDERR_INVALIDPARAMS;
|
||||||
}
|
}
|
||||||
if (!(This->surface_desc.ddsCaps.dwCaps & DDSCAPS_SYSTEMMEMORY) ||
|
if (!(This->surface_desc.ddsCaps.dwCaps & DDSCAPS_SYSTEMMEMORY)
|
||||||
This->surface_desc.ddsCaps.dwCaps2 & (DDSCAPS2_TEXTUREMANAGE | DDSCAPS2_D3DTEXTUREMANAGE))
|
|| This->surface_desc.ddsCaps.dwCaps & DDSCAPS_PRIMARYSURFACE
|
||||||
|
|| This->surface_desc.ddsCaps.dwCaps2 & (DDSCAPS2_TEXTUREMANAGE | DDSCAPS2_D3DTEXTUREMANAGE))
|
||||||
{
|
{
|
||||||
WARN("Surface is not in system memory, returning DDERR_INVALIDSURFACETYPE.\n");
|
WARN("Surface is not in system memory, returning DDERR_INVALIDSURFACETYPE.\n");
|
||||||
return DDERR_INVALIDSURFACETYPE;
|
return DDERR_INVALIDSURFACETYPE;
|
||||||
|
|
|
@ -4580,6 +4580,7 @@ static void test_set_surface_desc(void)
|
||||||
{
|
{
|
||||||
{DDSCAPS_VIDEOMEMORY, FALSE, "videomemory plain"},
|
{DDSCAPS_VIDEOMEMORY, FALSE, "videomemory plain"},
|
||||||
{DDSCAPS_TEXTURE | DDSCAPS_SYSTEMMEMORY, TRUE, "systemmemory texture"},
|
{DDSCAPS_TEXTURE | DDSCAPS_SYSTEMMEMORY, TRUE, "systemmemory texture"},
|
||||||
|
{DDSCAPS_PRIMARYSURFACE | DDSCAPS_SYSTEMMEMORY, FALSE, "systemmemory primary"},
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!(ddraw = create_ddraw()))
|
if (!(ddraw = create_ddraw()))
|
||||||
|
@ -4810,16 +4811,20 @@ static void test_set_surface_desc(void)
|
||||||
for (i = 0; i < sizeof(invalid_caps_tests) / sizeof(*invalid_caps_tests); i++)
|
for (i = 0; i < sizeof(invalid_caps_tests) / sizeof(*invalid_caps_tests); i++)
|
||||||
{
|
{
|
||||||
reset_ddsd(&ddsd);
|
reset_ddsd(&ddsd);
|
||||||
ddsd.dwFlags = DDSD_WIDTH | DDSD_HEIGHT | DDSD_CAPS | DDSD_PIXELFORMAT;
|
ddsd.dwFlags = DDSD_CAPS;
|
||||||
ddsd.dwWidth = 8;
|
|
||||||
ddsd.dwHeight = 8;
|
|
||||||
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;
|
|
||||||
ddsd.ddsCaps.dwCaps = invalid_caps_tests[i].caps;
|
ddsd.ddsCaps.dwCaps = invalid_caps_tests[i].caps;
|
||||||
|
if (!(invalid_caps_tests[i].caps & DDSCAPS_PRIMARYSURFACE))
|
||||||
|
{
|
||||||
|
ddsd.dwFlags |= DDSD_WIDTH | DDSD_HEIGHT | DDSD_PIXELFORMAT;
|
||||||
|
ddsd.dwWidth = 8;
|
||||||
|
ddsd.dwHeight = 8;
|
||||||
|
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(ddraw, &ddsd, &surface, NULL);
|
hr = IDirectDraw_CreateSurface(ddraw, &ddsd, &surface, NULL);
|
||||||
ok(SUCCEEDED(hr) || hr == DDERR_NODIRECTDRAWHW, "Failed to create surface, hr %#x.\n", hr);
|
ok(SUCCEEDED(hr) || hr == DDERR_NODIRECTDRAWHW, "Failed to create surface, hr %#x.\n", hr);
|
||||||
|
|
|
@ -5185,6 +5185,7 @@ static void test_set_surface_desc(void)
|
||||||
{DDSCAPS_TEXTURE | DDSCAPS_SYSTEMMEMORY, 0, TRUE, "systemmemory texture"},
|
{DDSCAPS_TEXTURE | DDSCAPS_SYSTEMMEMORY, 0, TRUE, "systemmemory texture"},
|
||||||
{DDSCAPS_TEXTURE, DDSCAPS2_D3DTEXTUREMANAGE, FALSE, "managed texture"},
|
{DDSCAPS_TEXTURE, DDSCAPS2_D3DTEXTUREMANAGE, FALSE, "managed texture"},
|
||||||
{DDSCAPS_TEXTURE, DDSCAPS2_TEXTUREMANAGE, FALSE, "managed texture"},
|
{DDSCAPS_TEXTURE, DDSCAPS2_TEXTUREMANAGE, FALSE, "managed texture"},
|
||||||
|
{DDSCAPS_PRIMARYSURFACE | DDSCAPS_SYSTEMMEMORY, 0, FALSE, "systemmemory primary"},
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!(ddraw = create_ddraw()))
|
if (!(ddraw = create_ddraw()))
|
||||||
|
@ -5414,17 +5415,21 @@ static void test_set_surface_desc(void)
|
||||||
for (i = 0; i < sizeof(invalid_caps_tests) / sizeof(*invalid_caps_tests); i++)
|
for (i = 0; i < sizeof(invalid_caps_tests) / sizeof(*invalid_caps_tests); i++)
|
||||||
{
|
{
|
||||||
reset_ddsd(&ddsd);
|
reset_ddsd(&ddsd);
|
||||||
ddsd.dwFlags = DDSD_WIDTH | DDSD_HEIGHT | DDSD_CAPS | DDSD_PIXELFORMAT;
|
ddsd.dwFlags = DDSD_CAPS;
|
||||||
ddsd.dwWidth = 8;
|
|
||||||
ddsd.dwHeight = 8;
|
|
||||||
U4(ddsd).ddpfPixelFormat.dwSize = sizeof(U4(ddsd).ddpfPixelFormat);
|
|
||||||
U4(ddsd).ddpfPixelFormat.dwFlags = DDPF_RGB;
|
|
||||||
U1(U4(ddsd).ddpfPixelFormat).dwRGBBitCount = 32;
|
|
||||||
U2(U4(ddsd).ddpfPixelFormat).dwRBitMask = 0x00ff0000;
|
|
||||||
U3(U4(ddsd).ddpfPixelFormat).dwGBitMask = 0x0000ff00;
|
|
||||||
U4(U4(ddsd).ddpfPixelFormat).dwBBitMask = 0x000000ff;
|
|
||||||
ddsd.ddsCaps.dwCaps = invalid_caps_tests[i].caps;
|
ddsd.ddsCaps.dwCaps = invalid_caps_tests[i].caps;
|
||||||
ddsd.ddsCaps.dwCaps2 = invalid_caps_tests[i].caps2;
|
ddsd.ddsCaps.dwCaps2 = invalid_caps_tests[i].caps2;
|
||||||
|
if (!(invalid_caps_tests[i].caps & DDSCAPS_PRIMARYSURFACE))
|
||||||
|
{
|
||||||
|
ddsd.dwFlags |= DDSD_WIDTH | DDSD_HEIGHT | DDSD_PIXELFORMAT;
|
||||||
|
ddsd.dwWidth = 8;
|
||||||
|
ddsd.dwHeight = 8;
|
||||||
|
U4(ddsd).ddpfPixelFormat.dwSize = sizeof(U4(ddsd).ddpfPixelFormat);
|
||||||
|
U4(ddsd).ddpfPixelFormat.dwFlags = DDPF_RGB;
|
||||||
|
U1(U4(ddsd).ddpfPixelFormat).dwRGBBitCount = 32;
|
||||||
|
U2(U4(ddsd).ddpfPixelFormat).dwRBitMask = 0x00ff0000;
|
||||||
|
U3(U4(ddsd).ddpfPixelFormat).dwGBitMask = 0x0000ff00;
|
||||||
|
U4(U4(ddsd).ddpfPixelFormat).dwBBitMask = 0x000000ff;
|
||||||
|
}
|
||||||
|
|
||||||
hr = IDirectDraw4_CreateSurface(ddraw, &ddsd, &surface, NULL);
|
hr = IDirectDraw4_CreateSurface(ddraw, &ddsd, &surface, NULL);
|
||||||
ok(SUCCEEDED(hr) || hr == DDERR_NODIRECTDRAWHW, "Failed to create surface, hr %#x.\n", hr);
|
ok(SUCCEEDED(hr) || hr == DDERR_NODIRECTDRAWHW, "Failed to create surface, hr %#x.\n", hr);
|
||||||
|
|
|
@ -5072,6 +5072,7 @@ static void test_set_surface_desc(void)
|
||||||
{DDSCAPS_TEXTURE | DDSCAPS_SYSTEMMEMORY, 0, TRUE, "systemmemory texture"},
|
{DDSCAPS_TEXTURE | DDSCAPS_SYSTEMMEMORY, 0, TRUE, "systemmemory texture"},
|
||||||
{DDSCAPS_TEXTURE, DDSCAPS2_D3DTEXTUREMANAGE, FALSE, "managed texture"},
|
{DDSCAPS_TEXTURE, DDSCAPS2_D3DTEXTUREMANAGE, FALSE, "managed texture"},
|
||||||
{DDSCAPS_TEXTURE, DDSCAPS2_TEXTUREMANAGE, FALSE, "managed texture"},
|
{DDSCAPS_TEXTURE, DDSCAPS2_TEXTUREMANAGE, FALSE, "managed texture"},
|
||||||
|
{DDSCAPS_PRIMARYSURFACE | DDSCAPS_SYSTEMMEMORY, 0, FALSE, "systemmemory primary"},
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!(ddraw = create_ddraw()))
|
if (!(ddraw = create_ddraw()))
|
||||||
|
@ -5302,17 +5303,21 @@ static void test_set_surface_desc(void)
|
||||||
for (i = 0; i < sizeof(invalid_caps_tests) / sizeof(*invalid_caps_tests); i++)
|
for (i = 0; i < sizeof(invalid_caps_tests) / sizeof(*invalid_caps_tests); i++)
|
||||||
{
|
{
|
||||||
reset_ddsd(&ddsd);
|
reset_ddsd(&ddsd);
|
||||||
ddsd.dwFlags = DDSD_WIDTH | DDSD_HEIGHT | DDSD_CAPS | DDSD_PIXELFORMAT;
|
ddsd.dwFlags = DDSD_CAPS;
|
||||||
ddsd.dwWidth = 8;
|
|
||||||
ddsd.dwHeight = 8;
|
|
||||||
U4(ddsd).ddpfPixelFormat.dwSize = sizeof(U4(ddsd).ddpfPixelFormat);
|
|
||||||
U4(ddsd).ddpfPixelFormat.dwFlags = DDPF_RGB;
|
|
||||||
U1(U4(ddsd).ddpfPixelFormat).dwRGBBitCount = 32;
|
|
||||||
U2(U4(ddsd).ddpfPixelFormat).dwRBitMask = 0x00ff0000;
|
|
||||||
U3(U4(ddsd).ddpfPixelFormat).dwGBitMask = 0x0000ff00;
|
|
||||||
U4(U4(ddsd).ddpfPixelFormat).dwBBitMask = 0x000000ff;
|
|
||||||
ddsd.ddsCaps.dwCaps = invalid_caps_tests[i].caps;
|
ddsd.ddsCaps.dwCaps = invalid_caps_tests[i].caps;
|
||||||
ddsd.ddsCaps.dwCaps2 = invalid_caps_tests[i].caps2;
|
ddsd.ddsCaps.dwCaps2 = invalid_caps_tests[i].caps2;
|
||||||
|
if (!(invalid_caps_tests[i].caps & DDSCAPS_PRIMARYSURFACE))
|
||||||
|
{
|
||||||
|
ddsd.dwFlags |= DDSD_WIDTH | DDSD_HEIGHT | DDSD_PIXELFORMAT;
|
||||||
|
ddsd.dwWidth = 8;
|
||||||
|
ddsd.dwHeight = 8;
|
||||||
|
U4(ddsd).ddpfPixelFormat.dwSize = sizeof(U4(ddsd).ddpfPixelFormat);
|
||||||
|
U4(ddsd).ddpfPixelFormat.dwFlags = DDPF_RGB;
|
||||||
|
U1(U4(ddsd).ddpfPixelFormat).dwRGBBitCount = 32;
|
||||||
|
U2(U4(ddsd).ddpfPixelFormat).dwRBitMask = 0x00ff0000;
|
||||||
|
U3(U4(ddsd).ddpfPixelFormat).dwGBitMask = 0x0000ff00;
|
||||||
|
U4(U4(ddsd).ddpfPixelFormat).dwBBitMask = 0x000000ff;
|
||||||
|
}
|
||||||
|
|
||||||
hr = IDirectDraw7_CreateSurface(ddraw, &ddsd, &surface, NULL);
|
hr = IDirectDraw7_CreateSurface(ddraw, &ddsd, &surface, NULL);
|
||||||
ok(SUCCEEDED(hr) || hr == DDERR_NODIRECTDRAWHW, "Failed to create surface, hr %#x.\n", hr);
|
ok(SUCCEEDED(hr) || hr == DDERR_NODIRECTDRAWHW, "Failed to create surface, hr %#x.\n", hr);
|
||||||
|
|
Loading…
Reference in New Issue