From 096164c275429754fa1630466e3d78cf5b9835b4 Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Sat, 28 Nov 2015 23:23:06 +0100 Subject: [PATCH] Added patch to silence repeated FIXME message in surface_cpu_blt. --- README.md | 3 +- patches/patchinstall.sh | 16 +++++ .../wined3d-CSMT_Main/9999-IfDefined.patch | 62 +++++++++---------- ...t-FIXME-only-once-in-surface_cpu_blt.patch | 26 ++++++++ patches/wined3d-surface_cpu_blt/definition | 1 + staging/changelog | 1 + 6 files changed, 77 insertions(+), 32 deletions(-) create mode 100644 patches/wined3d-surface_cpu_blt/0001-wined3d-Print-FIXME-only-once-in-surface_cpu_blt.patch create mode 100644 patches/wined3d-surface_cpu_blt/definition diff --git a/README.md b/README.md index f4022d6e..bcaa239a 100644 --- a/README.md +++ b/README.md @@ -34,12 +34,13 @@ Wine. All those differences are also documented on the Included bug fixes and improvements ----------------------------------- -**Bug fixes and features included in the next upcoming release [5]:** +**Bug fixes and features included in the next upcoming release [6]:** * Add information for delayed end of DST in Europe/Istanbul * Also send WM_CAPTURECHANGE when capture has not changed ([Wine Bug #13683](https://bugs.winehq.org/show_bug.cgi?id=13683)) * Check handle type for HSPFILEQ handles ([Wine Bug #12332](https://bugs.winehq.org/show_bug.cgi?id=12332)) * Fix font loading in Capella ([Wine Bug #12377](https://bugs.winehq.org/show_bug.cgi?id=12377)) +* Silence repeated FIXME message in surface_cpu_blt * Skip invalid entries in GetPrivateProfileString16 ([Wine Bug #9919](https://bugs.winehq.org/show_bug.cgi?id=9919)) diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index 89783438..fce71759 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -312,6 +312,7 @@ patch_enable_all () enable_wined3d_Revert_PixelFormat="$1" enable_wined3d_UnhandledBlendFactor="$1" enable_wined3d_resource_check_usage="$1" + enable_wined3d_surface_cpu_blt="$1" enable_wined3d_wined3d_swapchain_present="$1" enable_winedbg_Windows_Version="$1" enable_winedevice_Fix_Relocation="$1" @@ -1045,6 +1046,9 @@ patch_enable () wined3d-resource_check_usage) enable_wined3d_resource_check_usage="$2" ;; + wined3d-surface_cpu_blt) + enable_wined3d_surface_cpu_blt="$2" + ;; wined3d-wined3d_swapchain_present) enable_wined3d_wined3d_swapchain_present="$2" ;; @@ -5908,6 +5912,18 @@ if test "$enable_wined3d_resource_check_usage" -eq 1; then ) >> "$patchlist" fi +# Patchset wined3d-surface_cpu_blt +# | +# | Modified files: +# | * dlls/wined3d/surface.c +# | +if test "$enable_wined3d_surface_cpu_blt" -eq 1; then + patch_apply wined3d-surface_cpu_blt/0001-wined3d-Print-FIXME-only-once-in-surface_cpu_blt.patch + ( + echo '+ { "Christian Costa", "wined3d: Print FIXME only once in surface_cpu_blt.", 1 },'; + ) >> "$patchlist" +fi + # Patchset wined3d-wined3d_swapchain_present # | # | Modified files: diff --git a/patches/wined3d-CSMT_Main/9999-IfDefined.patch b/patches/wined3d-CSMT_Main/9999-IfDefined.patch index a6111393..ad62dbeb 100644 --- a/patches/wined3d-CSMT_Main/9999-IfDefined.patch +++ b/patches/wined3d-CSMT_Main/9999-IfDefined.patch @@ -8600,7 +8600,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c flags &= ~WINEDDBLT_COLORFILL; } -@@ -4522,6 +5741,7 @@ +@@ -4523,6 +5742,7 @@ for (y = 0; y < dstheight; ++y) { memcpy(dbuf, sbuf, width); @@ -8608,7 +8608,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c sbuf += src_row_pitch; dbuf += dst_row_pitch; } -@@ -4535,6 +5755,21 @@ +@@ -4536,6 +5756,21 @@ { sbuf -= src_row_pitch; dbuf -= dst_row_pitch; @@ -8630,7 +8630,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c memcpy(dbuf, sbuf, width); } } -@@ -4544,8 +5779,13 @@ +@@ -4545,8 +5780,13 @@ for (y = 0; y < dstheight; ++y) { memmove(dbuf, sbuf, width); @@ -8644,7 +8644,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c } } } -@@ -4554,9 +5794,15 @@ +@@ -4555,9 +5795,15 @@ /* Stretching in y direction only. */ for (y = sy = 0; y < dstheight; ++y, sy += yinc) { @@ -8660,7 +8660,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c } } } -@@ -4566,6 +5812,7 @@ +@@ -4567,6 +5813,7 @@ int last_sy = -1; for (y = sy = 0; y < dstheight; ++y, sy += yinc) { @@ -8668,7 +8668,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c sbuf = sbase + (sy >> 16) * src_row_pitch; if ((sy >> 16) == (last_sy >> 16)) -@@ -4573,6 +5820,15 @@ +@@ -4574,6 +5821,15 @@ /* This source row is the same as last source row - * Copy the already stretched row. */ memcpy(dbuf, dbuf - dst_row_pitch, width); @@ -8684,7 +8684,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c } else { -@@ -4619,6 +5875,7 @@ +@@ -4620,6 +5876,7 @@ } #undef STRETCH_ROW } @@ -8692,7 +8692,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c dbuf += dst_row_pitch; last_sy = sy; } -@@ -4627,6 +5884,16 @@ +@@ -4628,6 +5885,16 @@ else { LONG dstyinc = dst_row_pitch, dstxinc = bpp; @@ -8709,7 +8709,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c DWORD keylow = 0xffffffff, keyhigh = 0, keymask = 0xffffffff; DWORD destkeylow = 0x0, destkeyhigh = 0xffffffff, destkeymask = 0xffffffff; if (flags & (WINEDDBLT_KEYSRC | WINEDDBLT_KEYDEST | WINEDDBLT_KEYSRCOVERRIDE | WINEDDBLT_KEYDESTOVERRIDE)) -@@ -4676,7 +5943,11 @@ +@@ -4677,7 +5944,11 @@ LONG tmpxy; dTopLeft = dbuf; dTopRight = dbuf + ((dstwidth - 1) * bpp); @@ -8721,7 +8721,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c dBottomRight = dBottomLeft + ((dstwidth - 1) * bpp); if (fx->dwDDFX & WINEDDBLTFX_ARITHSTRETCHY) -@@ -4753,6 +6024,7 @@ +@@ -4754,6 +6025,7 @@ flags &= ~(WINEDDBLT_DDFX); } @@ -8729,7 +8729,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c #define COPY_COLORKEY_FX(type) \ do { \ const type *s; \ -@@ -4774,6 +6046,29 @@ +@@ -4775,6 +6047,29 @@ d = (type *)(((BYTE *)d) + dstyinc); \ } \ } while(0) @@ -8759,7 +8759,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c switch (bpp) { -@@ -4792,7 +6087,11 @@ +@@ -4793,7 +6088,11 @@ BYTE *d = dbuf, *dx; for (y = sy = 0; y < dstheight; ++y, sy += yinc) { @@ -8771,7 +8771,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c dx = d; for (x = sx = 0; x < dstwidth; ++x, sx+= xinc) { -@@ -4823,10 +6122,12 @@ +@@ -4824,10 +6123,12 @@ } } @@ -8784,7 +8784,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c error: if (flags && FIXME_ON(d3d_surface)) { -@@ -4834,6 +6135,7 @@ +@@ -4835,6 +6136,7 @@ } release: @@ -8792,7 +8792,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c if (dst_data) { wined3d_resource_release_map_ptr(&dst_surface->resource, context); -@@ -4852,6 +6154,14 @@ +@@ -4853,6 +6155,14 @@ wined3d_texture_decref(src_texture); if (context) context_release(context); @@ -8807,7 +8807,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c return hr; } -@@ -4896,6 +6206,7 @@ +@@ -4897,6 +6207,7 @@ cpu_blit_blit_surface, }; @@ -8815,7 +8815,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c void surface_blt_ugly(struct wined3d_surface *dst_surface, const RECT *dst_rect, struct wined3d_surface *src_surface, const RECT *src_rect, DWORD flags, const WINEDDBLTFX *fx, enum wined3d_texture_filter_type filter) -@@ -4903,6 +6214,16 @@ +@@ -4904,6 +6215,16 @@ struct wined3d_swapchain *src_swapchain, *dst_swapchain; struct wined3d_device *device = dst_surface->resource.device; DWORD src_ds_flags, dst_ds_flags; @@ -8832,7 +8832,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c BOOL scale, convert; static const DWORD simple_blit = WINEDDBLT_ASYNC -@@ -4913,6 +6234,106 @@ +@@ -4914,6 +6235,106 @@ | WINEDDBLT_DEPTHFILL | WINEDDBLT_DONOTWAIT; @@ -8939,7 +8939,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c if (!device->d3d_initialized) { WARN("D3D not initialized, using fallback.\n"); -@@ -4955,8 +6376,13 @@ +@@ -4956,8 +6377,13 @@ } scale = src_surface @@ -8953,7 +8953,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c convert = src_surface && src_surface->resource.format->id != dst_surface->resource.format->id; dst_ds_flags = dst_surface->container->resource.format_flags -@@ -4976,6 +6402,7 @@ +@@ -4977,6 +6403,7 @@ TRACE("Depth fill.\n"); if (!surface_convert_depth_to_float(dst_surface, fx->u5.dwFillDepth, &depth)) @@ -8961,7 +8961,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c return; if (SUCCEEDED(wined3d_surface_depth_fill(dst_surface, dst_rect, depth))) -@@ -4986,6 +6413,24 @@ +@@ -4987,6 +6414,24 @@ if (SUCCEEDED(wined3d_surface_depth_blt(src_surface, src_surface->container->resource.draw_binding, src_rect, dst_surface, dst_surface->container->resource.draw_binding, dst_rect))) return; @@ -8986,7 +8986,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c } } else -@@ -4994,8 +6439,13 @@ +@@ -4995,8 +6440,13 @@ /* In principle this would apply to depth blits as well, but we don't * implement those in the CPU blitter at the moment. */ @@ -9000,7 +9000,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c { if (scale) TRACE("Not doing sysmem blit because of scaling.\n"); -@@ -5016,8 +6466,13 @@ +@@ -5017,8 +6467,13 @@ palette, fx->u5.dwFillColor, &color)) goto fallback; @@ -9014,7 +9014,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c } else { -@@ -5035,8 +6490,13 @@ +@@ -5036,8 +6491,13 @@ color_key = &src_surface->container->async.src_blt_color_key; blit_op = WINED3D_BLIT_OP_COLOR_BLIT_CKEY; } @@ -9028,7 +9028,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c { /* Upload */ if (scale) -@@ -5045,6 +6505,7 @@ +@@ -5046,6 +6506,7 @@ TRACE("Not doing upload because of format conversion.\n"); else { @@ -9036,7 +9036,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c POINT dst_point = {dst_rect->left, dst_rect->top}; if (SUCCEEDED(surface_upload_from_surface(dst_surface, &dst_point, src_surface, src_rect))) -@@ -5057,6 +6518,19 @@ +@@ -5058,6 +6519,19 @@ context_release(context); } return; @@ -9056,7 +9056,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c } } } -@@ -5080,6 +6554,7 @@ +@@ -5081,6 +6555,7 @@ wined3d_swapchain_present(dst_swapchain, NULL, NULL, dst_swapchain->win_handle, NULL, 0); dst_swapchain->desc.swap_effect = swap_effect; @@ -9064,7 +9064,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c return; } -@@ -5287,6 +6762,53 @@ +@@ -5288,6 +6763,53 @@ wined3d_surface_location_invalidated, wined3d_surface_load_location, }; @@ -9118,7 +9118,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c static HRESULT surface_init(struct wined3d_surface *surface, struct wined3d_texture *container, const struct wined3d_resource_desc *desc, GLenum target, unsigned int level, unsigned int layer, DWORD flags) -@@ -5348,7 +6870,11 @@ +@@ -5349,7 +6871,11 @@ } surface->container = container; @@ -9130,7 +9130,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c list_init(&surface->renderbuffers); list_init(&surface->overlays); -@@ -5380,9 +6906,14 @@ +@@ -5381,9 +6907,14 @@ if (surface->resource.map_binding == WINED3D_LOCATION_DIB) { wined3d_resource_free_sysmem(&surface->resource); @@ -9145,7 +9145,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c } return hr; -@@ -5409,7 +6940,11 @@ +@@ -5410,7 +6941,11 @@ if (FAILED(hr = surface_init(object, container, desc, target, level, layer, flags))) { WARN("Failed to initialize surface, returning %#x.\n", hr); diff --git a/patches/wined3d-surface_cpu_blt/0001-wined3d-Print-FIXME-only-once-in-surface_cpu_blt.patch b/patches/wined3d-surface_cpu_blt/0001-wined3d-Print-FIXME-only-once-in-surface_cpu_blt.patch new file mode 100644 index 00000000..f7e6a97f --- /dev/null +++ b/patches/wined3d-surface_cpu_blt/0001-wined3d-Print-FIXME-only-once-in-surface_cpu_blt.patch @@ -0,0 +1,26 @@ +From e4f44b72b638d9404ad264565687a5d5c4b60b9b Mon Sep 17 00:00:00 2001 +From: Christian Costa +Date: Sun, 25 Oct 2015 12:50:31 +0100 +Subject: wined3d: Print FIXME only once in surface_cpu_blt. + +--- + dlls/wined3d/surface.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c +index a8f7179..ca4fe5d 100644 +--- a/dlls/wined3d/surface.c ++++ b/dlls/wined3d/surface.c +@@ -4660,7 +4660,8 @@ static HRESULT surface_cpu_blt(struct wined3d_surface *dst_surface, const RECT * + && (srcwidth != dstwidth || srcheight != dstheight)) + { + /* Can happen when d3d9 apps do a StretchRect() call which isn't handled in GL. */ +- FIXME("Filter %s not supported in software blit.\n", debug_d3dtexturefiltertype(filter)); ++ static int once; ++ if (!once++) FIXME("Filter %s not supported in software blit.\n", debug_d3dtexturefiltertype(filter)); + } + + xinc = (srcwidth << 16) / dstwidth; +-- +2.6.2 + diff --git a/patches/wined3d-surface_cpu_blt/definition b/patches/wined3d-surface_cpu_blt/definition new file mode 100644 index 00000000..9d3b447e --- /dev/null +++ b/patches/wined3d-surface_cpu_blt/definition @@ -0,0 +1 @@ +Fixes: Silence repeated FIXME message in surface_cpu_blt diff --git a/staging/changelog b/staging/changelog index 4d8b4cbc..f5acb5f6 100644 --- a/staging/changelog +++ b/staging/changelog @@ -15,6 +15,7 @@ wine-staging (1.8~rc2) UNRELEASED; urgency=low * Added patch for delayed end of DST in Europe/Istanbul. * Added patch to skip invalid entries in GetPrivateProfileString16. * Added patch to send WM_CAPTURECHANGE also when capture has not changed. + * Added patch to silence repeated FIXME message in surface_cpu_blt. -- Sebastian Lackner Wed, 25 Nov 2015 20:21:46 +0100 wine-staging (1.8~rc1) unstable; urgency=low