Ziqing Hui : d3dx10: Introduce get_d3dx10_dds_format().
Alexandre Julliard
julliard at winehq.org
Tue Sep 1 15:43:31 CDT 2020
Module: wine
Branch: master
Commit: b4d273e7fee0b39fe9dbba346d11974f5039c864
URL: https://source.winehq.org/git/wine.git/?a=commit;h=b4d273e7fee0b39fe9dbba346d11974f5039c864
Author: Ziqing Hui <zhui at codeweavers.com>
Date: Mon Aug 17 19:33:47 2020 +0800
d3dx10: Introduce get_d3dx10_dds_format().
Signed-off-by: Ziqing Hui <zhui at codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/d3dx10_43/d3dx10_43_main.c | 26 +++++++++++++++++++++++++-
dlls/d3dx10_43/tests/d3dx10.c | 2 --
2 files changed, 25 insertions(+), 3 deletions(-)
diff --git a/dlls/d3dx10_43/d3dx10_43_main.c b/dlls/d3dx10_43/d3dx10_43_main.c
index 53781f5de6..005b234437 100644
--- a/dlls/d3dx10_43/d3dx10_43_main.c
+++ b/dlls/d3dx10_43/d3dx10_43_main.c
@@ -54,6 +54,18 @@ file_formats[] =
{ &GUID_ContainerFormatWmp, D3DX10_IFF_WMP },
};
+static const DXGI_FORMAT to_be_converted_format[] =
+{
+ DXGI_FORMAT_UNKNOWN,
+ DXGI_FORMAT_R8_UNORM,
+ DXGI_FORMAT_R8G8_UNORM,
+ DXGI_FORMAT_B5G6R5_UNORM,
+ DXGI_FORMAT_B4G4R4A4_UNORM,
+ DXGI_FORMAT_B5G5R5A1_UNORM,
+ DXGI_FORMAT_B8G8R8X8_UNORM,
+ DXGI_FORMAT_B8G8R8A8_UNORM
+};
+
static D3DX10_IMAGE_FILE_FORMAT wic_container_guid_to_file_format(GUID *container_format)
{
unsigned int i;
@@ -82,6 +94,18 @@ static D3D10_RESOURCE_DIMENSION wic_dimension_to_d3dx10_dimension(WICDdsDimensio
}
}
+static DXGI_FORMAT get_d3dx10_dds_format(DXGI_FORMAT format)
+{
+ unsigned int i;
+
+ for (i = 0; i < ARRAY_SIZE(to_be_converted_format); ++i)
+ {
+ if (format == to_be_converted_format[i])
+ return DXGI_FORMAT_R8G8B8A8_UNORM;
+ }
+ return format;
+}
+
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
switch (fdwReason)
@@ -339,7 +363,7 @@ HRESULT WINAPI D3DX10GetImageInfoFromMemory(const void *src_data, SIZE_T src_dat
img_info->Depth = dds_params.Depth;
img_info->MipLevels = dds_params.MipLevels;
img_info->ResourceDimension = wic_dimension_to_d3dx10_dimension(dds_params.Dimension);
- img_info->Format = dds_params.DxgiFormat;
+ img_info->Format = get_d3dx10_dds_format(dds_params.DxgiFormat);
img_info->MiscFlags = 0;
if (dds_params.Dimension == WICDdsTextureCube)
{
diff --git a/dlls/d3dx10_43/tests/d3dx10.c b/dlls/d3dx10_43/tests/d3dx10.c
index e1d3ba0b83..e39025a930 100644
--- a/dlls/d3dx10_43/tests/d3dx10.c
+++ b/dlls/d3dx10_43/tests/d3dx10.c
@@ -1346,8 +1346,6 @@ static void test_get_image_info(void)
ok(image_info.MiscFlags == test_image[i].expected.MiscFlags,
"Test %u: Got unexpected MiscFlags %#x, expected %#x.\n",
i, image_info.MiscFlags, test_image[i].expected.MiscFlags);
- todo_wine_if(test_image[i].expected.ImageFileFormat == D3DX10_IFF_DDS
- && test_image[i].expected.Format == DXGI_FORMAT_R8G8B8A8_UNORM)
ok(image_info.Format == test_image[i].expected.Format,
"Test %u: Got unexpected Format %#x, expected %#x.\n",
i, image_info.Format, test_image[i].expected.Format);
More information about the wine-cvs
mailing list