gdiplus: Boost performance of GdipDrawImagePointsRect.
By not using floorf from external library ucrtbase.dll the performance of GdipDrawImagePointsRect was improved.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=53947
After applying patch the game performance is similar to native gdiplus.dll.
Result of oprofile before patch:
samples % image name app name symbol name
895705 33.4761 ucrtbase.dll.so wine floor
351683 13.1438 no-vmlinux wine /no-vmlinux
330995 12.3706 gdiplus.dll.so wine resample_bitmap_pixel
300093 11.2157 win32u.so wine blend_rects_8888
272645 10.1898 gdiplus.dll.so wine GdipDrawImagePointsRect
137421 5.1360 gdiplus.dll.so wine sample_bitmap_pixel
112476 4.2037 gdiplus.dll.so wine convert_32bppARGB_to_32bppPARGB
35455 1.3251 no-vmlinux wineserver /no-vmlinux
35223 1.3164 no-vmlinux wine64-preloader /no-vmlinux
30252 1.1306 libc.so.6 wine /usr/lib/i386-linux-gnu/libc.so.6
and after patch:
samples % image name app name symbol name
248581 18.3279 no-vmlinux wine /no-vmlinux
200141 14.7564 gdiplus.dll.so wine resample_bitmap_pixel
199840 14.7342 win32u.so wine blend_rects_8888
179135 13.2076 gdiplus.dll.so wine GdipDrawImagePointsRect
105785 7.7995 no-vmlinux wine-preloader /no-vmlinux
89534 6.6013 gdiplus.dll.so wine sample_bitmap_pixel
83947 6.1894 no-vmlinux wine64-preloader /no-vmlinux
74132 5.4658 gdiplus.dll.so wine convert_32bppARGB_to_32bppPARGB
22978 1.6942 anon (tgid:374066 range:0x7bc10000-0x7bffffff) wine anon (tgid:374066 range:0x7bc10000-0x7bffffff)
19747 1.4559 libc.so.6 wine /usr/lib/i386-linux-gnu/libc.so.6
14570 1.0742 win32u.so wine solid_rects_32
Can we stop using floorf and ceilf from math.h
?
Edited by Bartosz Kosiorek