From: Nikolay Sivov nsivov@codeweavers.com
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com --- dlls/d2d1/tests/d2d1.c | 110 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+)
diff --git a/dlls/d2d1/tests/d2d1.c b/dlls/d2d1/tests/d2d1.c index 8653d2f2dcb..f29cfa6b89a 100644 --- a/dlls/d2d1/tests/d2d1.c +++ b/dlls/d2d1/tests/d2d1.c @@ -15194,6 +15194,115 @@ static void test_compute_geometry_area(BOOL d3d11) release_test_context(&ctx); }
+static void test_wic_target_format(BOOL d3d11) +{ + static const struct + { + D2D1_PIXEL_FORMAT pixel_format; + const GUID *wic_format; + HRESULT hr; + } + wic_target_formats[] = + { + { { DXGI_FORMAT_UNKNOWN, D2D1_ALPHA_MODE_PREMULTIPLIED }, + &GUID_WICPixelFormat32bppPBGRA }, + { { DXGI_FORMAT_UNKNOWN, D2D1_ALPHA_MODE_IGNORE }, + &GUID_WICPixelFormat32bppBGR }, + { { DXGI_FORMAT_UNKNOWN, D2D1_ALPHA_MODE_UNKNOWN }, + &GUID_WICPixelFormat32bppPBGRA }, + { { DXGI_FORMAT_UNKNOWN, D2D1_ALPHA_MODE_UNKNOWN }, + &GUID_WICPixelFormat32bppBGR }, + + { { DXGI_FORMAT_B8G8R8A8_UNORM, D2D1_ALPHA_MODE_PREMULTIPLIED }, + &GUID_WICPixelFormat32bppPBGRA }, + { { DXGI_FORMAT_B8G8R8A8_UNORM, D2D1_ALPHA_MODE_IGNORE }, + &GUID_WICPixelFormat32bppBGR }, + { { DXGI_FORMAT_B8G8R8A8_UNORM, D2D1_ALPHA_MODE_UNKNOWN }, + &GUID_WICPixelFormat32bppPBGRA }, + { { DXGI_FORMAT_B8G8R8A8_UNORM, D2D1_ALPHA_MODE_UNKNOWN }, + &GUID_WICPixelFormat32bppBGR }, + + { { DXGI_FORMAT_UNKNOWN, D2D1_ALPHA_MODE_PREMULTIPLIED }, + &GUID_WICPixelFormat32bppPRGBA }, + { { DXGI_FORMAT_UNKNOWN, D2D1_ALPHA_MODE_IGNORE }, + &GUID_WICPixelFormat32bppRGB }, + { { DXGI_FORMAT_UNKNOWN, D2D1_ALPHA_MODE_UNKNOWN }, + &GUID_WICPixelFormat32bppPRGBA }, + { { DXGI_FORMAT_UNKNOWN, D2D1_ALPHA_MODE_UNKNOWN }, + &GUID_WICPixelFormat32bppRGB }, + + { { DXGI_FORMAT_R8G8B8A8_UNORM, D2D1_ALPHA_MODE_PREMULTIPLIED }, + &GUID_WICPixelFormat32bppPRGBA }, + { { DXGI_FORMAT_R8G8B8A8_UNORM, D2D1_ALPHA_MODE_IGNORE }, + &GUID_WICPixelFormat32bppRGB }, + { { DXGI_FORMAT_R8G8B8A8_UNORM, D2D1_ALPHA_MODE_UNKNOWN }, + &GUID_WICPixelFormat32bppPRGBA }, + { { DXGI_FORMAT_R8G8B8A8_UNORM, D2D1_ALPHA_MODE_UNKNOWN }, + &GUID_WICPixelFormat32bppRGB }, + + { { DXGI_FORMAT_R8G8B8A8_UNORM, D2D1_ALPHA_MODE_PREMULTIPLIED }, + &GUID_WICPixelFormat32bppPBGRA, E_INVALIDARG }, + { { DXGI_FORMAT_R8G8B8A8_UNORM, D2D1_ALPHA_MODE_IGNORE }, + &GUID_WICPixelFormat32bppBGR, E_INVALIDARG }, + { { DXGI_FORMAT_R8G8B8A8_UNORM, D2D1_ALPHA_MODE_UNKNOWN }, + &GUID_WICPixelFormat32bppPBGRA, E_INVALIDARG }, + { { DXGI_FORMAT_R8G8B8A8_UNORM, D2D1_ALPHA_MODE_UNKNOWN }, + &GUID_WICPixelFormat32bppBGR, E_INVALIDARG }, + + { { DXGI_FORMAT_B8G8R8A8_UNORM, D2D1_ALPHA_MODE_PREMULTIPLIED }, + &GUID_WICPixelFormat32bppBGR, E_INVALIDARG }, + { { DXGI_FORMAT_B8G8R8A8_UNORM, D2D1_ALPHA_MODE_IGNORE }, + &GUID_WICPixelFormat32bppPBGRA, E_INVALIDARG }, + }; + D2D1_RENDER_TARGET_PROPERTIES rt_desc; + IWICImagingFactory *wic_factory; + struct d2d1_test_context ctx; + IWICBitmap *wic_bitmap; + ID2D1RenderTarget *rt; + unsigned int i; + HRESULT hr; + + if (!init_test_context(&ctx, d3d11)) + return; + + CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); + hr = CoCreateInstance(&CLSID_WICImagingFactory, NULL, CLSCTX_INPROC_SERVER, + &IID_IWICImagingFactory, (void **)&wic_factory); + ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); + + for (i = 0; i < ARRAY_SIZE(wic_target_formats); ++i) + { + winetest_push_context("Test %u", i); + + hr = IWICImagingFactory_CreateBitmap(wic_factory, 16, 16, + wic_target_formats[i].wic_format, WICBitmapCacheOnDemand, &wic_bitmap); + ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); + + rt_desc.type = D2D1_RENDER_TARGET_TYPE_DEFAULT; + rt_desc.pixelFormat = wic_target_formats[i].pixel_format; + rt_desc.dpiX = 96.0f; + rt_desc.dpiY = 96.0f; + rt_desc.usage = D2D1_RENDER_TARGET_USAGE_NONE; + rt_desc.minLevel = D2D1_FEATURE_LEVEL_DEFAULT; + hr = ID2D1Factory_CreateWicBitmapRenderTarget(ctx.factory, wic_bitmap, &rt_desc, &rt); + todo_wine_if(IsEqualGUID(wic_target_formats[i].wic_format, &GUID_WICPixelFormat32bppPRGBA) + || IsEqualGUID(wic_target_formats[i].wic_format, &GUID_WICPixelFormat32bppRGB) + || FAILED(wic_target_formats[i].hr)) + ok(hr == wic_target_formats[i].hr, "Got unexpected hr %#lx.\n", hr); + + IWICBitmap_Release(wic_bitmap); + + if (SUCCEEDED(hr)) + ID2D1RenderTarget_Release(rt); + + winetest_pop_context(); + } + IWICImagingFactory_Release(wic_factory); + + CoUninitialize(); + release_test_context(&ctx); +} + START_TEST(d2d1) { HMODULE d2d1_dll = GetModuleHandleA("d2d1.dll"); @@ -15289,6 +15398,7 @@ START_TEST(d2d1) queue_test(test_effect_custom_pixel_shader); queue_test(test_effect_vertex_buffer); queue_test(test_compute_geometry_area); + queue_test(test_wic_target_format);
run_queued_tests(); }
From: Agustin Principe principeagustin@gmail.com
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com --- dlls/d2d1/tests/d2d1.c | 4 +--- dlls/d2d1/wic_render_target.c | 6 ++++++ 2 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/dlls/d2d1/tests/d2d1.c b/dlls/d2d1/tests/d2d1.c index f29cfa6b89a..00beaf8f7a0 100644 --- a/dlls/d2d1/tests/d2d1.c +++ b/dlls/d2d1/tests/d2d1.c @@ -15285,9 +15285,7 @@ static void test_wic_target_format(BOOL d3d11) rt_desc.usage = D2D1_RENDER_TARGET_USAGE_NONE; rt_desc.minLevel = D2D1_FEATURE_LEVEL_DEFAULT; hr = ID2D1Factory_CreateWicBitmapRenderTarget(ctx.factory, wic_bitmap, &rt_desc, &rt); - todo_wine_if(IsEqualGUID(wic_target_formats[i].wic_format, &GUID_WICPixelFormat32bppPRGBA) - || IsEqualGUID(wic_target_formats[i].wic_format, &GUID_WICPixelFormat32bppRGB) - || FAILED(wic_target_formats[i].hr)) + todo_wine_if(FAILED(wic_target_formats[i].hr)) ok(hr == wic_target_formats[i].hr, "Got unexpected hr %#lx.\n", hr);
IWICBitmap_Release(wic_bitmap); diff --git a/dlls/d2d1/wic_render_target.c b/dlls/d2d1/wic_render_target.c index 858c187e3bc..ccbe194d291 100644 --- a/dlls/d2d1/wic_render_target.c +++ b/dlls/d2d1/wic_render_target.c @@ -187,6 +187,11 @@ HRESULT d2d_wic_render_target_init(struct d2d_wic_render_target *render_target, { texture_desc.Format = DXGI_FORMAT_B8G8R8A8_UNORM; } + else if (IsEqualGUID(&bitmap_format, &GUID_WICPixelFormat32bppPRGBA) + || IsEqualGUID(&bitmap_format, &GUID_WICPixelFormat32bppRGB)) + { + texture_desc.Format = DXGI_FORMAT_R8G8B8A8_UNORM; + } else { WARN("Unsupported WIC bitmap format %s.\n", debugstr_guid(&bitmap_format)); @@ -197,6 +202,7 @@ HRESULT d2d_wic_render_target_init(struct d2d_wic_render_target *render_target, switch (texture_desc.Format) { case DXGI_FORMAT_B8G8R8A8_UNORM: + case DXGI_FORMAT_R8G8B8A8_UNORM: render_target->bpp = 4; break;
Hi,
It looks like your patch introduced the new failures shown below. Please investigate and fix them before resubmitting your patch. If they are not new, fixing them anyway would help a lot. Otherwise please ask for the known failures list to be updated.
The tests also ran into some preexisting test failures. If you know how to fix them that would be helpful. See the TestBot job for the details:
The full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=149842
Your paranoid android.
=== debian11b (64 bit WoW report) ===
user32: input.c:4305: Test succeeded inside todo block: button_down_hwnd_todo 1: got MSG_TEST_WIN hwnd 00000000008A00DC, msg WM_LBUTTONDOWN, wparam 0x1, lparam 0x320032 win.c:4070: Test failed: Expected active window 0000000005E1013A, got 0000000000000000. win.c:4071: Test failed: Expected focus window 0000000005E1013A, got 0000000000000000.
Includes change from !5925 with some tests.
This merge request was approved by Nikolay Sivov.