d3dx9: Improve generated DDS file header.

Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Christian Costa 2015-12-22 18:26:32 +11:00 committed by Alexandre Julliard
parent 54ebbfdc63
commit d2307b1ffc
2 changed files with 8 additions and 10 deletions

View File

@ -487,13 +487,11 @@ static HRESULT save_dds_surface_to_memory(ID3DXBuffer **dst_buffer, IDirect3DSur
memset(header, 0, sizeof(*header));
header->signature = MAKEFOURCC('D','D','S',' ');
header->size = sizeof(*header);
header->flags = DDS_CAPS | DDS_HEIGHT | DDS_WIDTH | DDS_PITCH | DDS_PIXELFORMAT | DDS_MIPMAPCOUNT;
/* The signature is not really part of the DDS header */
header->size = sizeof(*header) - FIELD_OFFSET(struct dds_header, size);
header->flags = DDS_CAPS | DDS_HEIGHT | DDS_WIDTH | DDS_PIXELFORMAT;
header->height = src_desc.Height;
header->width = src_desc.Width;
header->pitch_or_linear_size = dst_pitch;
header->depth = 1;
header->miplevels = 1;
header->caps = DDS_CAPS_TEXTURE;
hr = d3dformat_to_dds_pixel_format(&header->pixel_format, src_desc.Format);
if (FAILED(hr))

View File

@ -1277,14 +1277,14 @@ static void test_D3DXSaveSurfaceToFileInMemory(IDirect3DDevice9 *device)
header = ID3DXBuffer_GetBufferPointer(buffer);
ok(header->magic == MAKEFOURCC('D','D','S',' '), "Invalid DDS signature.\n");
todo_wine ok(header->size == 124, "Invalid DDS size %u.\n", header->size);
ok(header->size == 124, "Invalid DDS size %u.\n", header->size);
ok(header->height == 4, "Got unexpected height %u.\n", header->height);
ok(header->width == 4, "Got unexpected width %u.\n", header->width);
todo_wine ok(!header->depth, "Got unexpected depth %u.\n", header->depth);
todo_wine ok(!header->miplevels, "Got unexpected miplevels %u.\n", header->miplevels);
todo_wine ok(!header->pitch_or_linear_size, "Got unexpected pitch_or_linear_size %u.\n", header->pitch_or_linear_size);
ok(!header->depth, "Got unexpected depth %u.\n", header->depth);
ok(!header->miplevels, "Got unexpected miplevels %u.\n", header->miplevels);
ok(!header->pitch_or_linear_size, "Got unexpected pitch_or_linear_size %u.\n", header->pitch_or_linear_size);
todo_wine ok(header->caps == (DDS_CAPS_TEXTURE | DDSCAPS_ALPHA), "Got unexpected caps %x.\n", header->caps);
todo_wine ok(header->flags == (DDS_CAPS | DDS_HEIGHT | DDS_WIDTH | DDS_PIXELFORMAT),
ok(header->flags == (DDS_CAPS | DDS_HEIGHT | DDS_WIDTH | DDS_PIXELFORMAT),
"Got unexpected flags %x.\n", header->flags);
ID3DXBuffer_Release(buffer);