Pages

Friday, September 6, 2013

Direct3D Performance Improvements Coming To Wine

Stefan Dösinger of CodeWeavers has been working on some Direct3D performance improvements for Wine by creating a separate command stream / worker thread for WineD3D. This work moves OpenGL calls into a separate thread in order to improve performance while also fixing some outstanding bugs. This work can yield 50~100% performance improvements and in some cases making the games under Wine faster than on Windows.

If you want to help support this work consider purchasing a copy of CrossOver  12.5 from CodeWeavers. You can use promo code TOM23 and receive a instant 20% discount off the normal selling price.

Stefan's email sent to the wine Development mailing list :


Hi,

In the past months I have been working on a command stream / worker
thread for wined3d. It moves most OpenGL calls into a separate thread
to improve performance (bug 11674) and fix some bugs that are
otherwise hard to fix (24684).

You can test the attached patches by applying them (git am
/path/to/patches/*) and setting HKCU/Software/Wine/Direct3D/CSMT =
"enabled". Make sure to disable StrictDrawOrdering. It is no longer
required with those patches and will destroy any performance gains.
(It might be useful for debugging though). The patches apply on top of
Wine 1.7.1.

Please test those patches with your games. I'm interested in any
successes or failures and performance differences. Performance numbers
with plain Wine 1.7.1, this patchset with CSMT off and on, and Wine
1.7.7 + bugzilla attachment 44420 and __GL_THREADED_OPTIMIZATIONS
would be greatly appreciated.

A notes for non-developers:
*) GPU limited games don't see any improvement. If you're GPU limited
heavilly depends on your hardware

*) So far I have not tested anything but Nvidia hardware. It should
work on all GPUs and drivers though.

*) Yes, this is essentially the same as Nvidia's
__GL_THREADED_OPTIMIZATIONS. Just driver independent, under our
control, and thus easier to fix bugs.

*) A lot of games see 50%-100% performance improvements and now run as
fast as on Windows or even faster. Examples are Source-Engine based
games, StarCraft 2, 3DMark 2001.

*) Call of Duty Modern Warfare 2 is improved a lot because you no
longer need StrictDrawOrdering. It's still not as good as it could be,
because it uses dynamic surfaces, which aren't properly implemented in
the patchset yet.

*) Some games have CPU-side bottlenecks outside d3d. Mass Effect 2
seems to be one of those.

*) Some games have CPU-side bottlenecks in the GL driver, and
comparably little game logic on their own. I think this applies to Civ
V, which doesn't see much improvement with those patches.

Some implementation notes:
*) One of the big design decisions is to do all OpenGL calls from one
thread, including resource creation and buffer maps. This is faster
than using glFlush calls to synchronize anything we do from the main
thread, and easier than trying to sync everything in a performant
fashion with ARB_sync. This means I need the priority command queue.
This is not yet fully implemented though, so you see GL calls from the
main thread as well.

*) There seem to be driver bugs when calling into GL from two threads,
even though those are two different contexts. Remember, we don't have
the GL lock any longer.

*) The other controversial design decision is that the command stream
does not hold any references to objects stored in pending commands or
its own state structure. This prevents the client libraries and
applications from "seeing" the CS via delayed destruction of objects
and freeing of application private data.

*) Currently resource destruction waits for the CS to execute all
pending commands. The goal is to handle private resources and removal
from the device's resource list in the main thread and freeing of GL
resources, freeing of resource->heap_memory and freeing of the main
structure in the worker thread.

*) A big issue that needs fixing is that there isn't a clear
separation between functions that are called from the main thread and
functions that are called from the worker thread. The plan is to
introduce comments similar to those that clarify who is responsible
for context activation.

*) Buffers are double-buffered and use glBufferSubData when the
multithreaded CS is in use. This is necessary because we can't draw
from a mapped buffer. In the long run GL_ARB_buffer_storage should be
able to fix this.

*) You can roughly see how surface and volume handling is going to
work in the volume code. I am not entirely happy with the code yet, I
hacked it together in the past few days...

*) The plan behind wined3d_device_get_bo and wined3d_device_release_bo
is to cache created GL BOs. Before I do that I have to write a
benchmark for dynamic volumes to verify that this is really a
performance improvement.

*) Before this can be merged, surfaces need a cleanup similar to
volumes. It's going to be a lot trickier though.

*) The tests should run with the single-threaded and multi-threaded
command stream.

*) There should not be any temporary regressions with the
single-threaded CS. If something's broken, git bisect should work with
CSMT off.

*) With CSMT on, there are a few known regressions and test failures.
The d3d9 and ddraw tests fail between patch 18 and 71. Occlusion
queries are broken between 22 and 108. In general nothing's working
right between 80 and 99. Some of those problems can be fixed or their
impact reduced, but I will not be able to completely avoid them. The
ddraw test failure is a driver bug and GL occlusion queries break by
design when used from a different thread. So if you try to bisect a
regression in this patch series with CSMT on YMMV.

*) This work was originally started by Henri. Some patches in the
series are from him and either unmodified or with minor adjustments.
Some patches are based on his work, but with heavy modifications.

Cheers,
Stefan
 
 

Saturday, August 31, 2013

New International Pricing for CodeWeavers CrossOver Save up to 75% off full retail

Save up to 75% off CodeWeavers CrossOver with their new international pricing, click on the image below to see the new pricing. Keep in mind you can save a additional 20% off CrossOver by using TOM23 as your promo code in CodeWeavers store. The new prices are automatically calculated based on your IP number, So why wait go and get a copy of CrossOver for as low as $11.00 now!



Putty for Mac
Putty for Mac
$15.00

https://winereviews.onfastspring.com/putty-for-mac



Run Windows apps on both OS X & Linux with CrossOver 12.5

Most Mac and Linux users think anything Windows can do their operating systems can do better. Often, they're right, but then there comes that day when they really need to run that one special Windows application and then they're stuck.

Run Windows programs from your Linux desktop or Mac? With CrossOver, it's easy.
There are many ways of handling this. Some people keep old Windows PC around; others dual boot their computers; and quite a few run virtual machines (VM)s of Windows on their Linux PCs and Macs. That's all fine, but it's also a fair amount of trouble.


Then, there's CodeWeaver's approach: Use a program, CrossOver, which enables you to install and run the one or two Windows applications you need on your favorite operating system.
CrossOver is based on the open-source project Wine, an implementation of the Windows application programming interface (API) on top of the Unix/Linux operating system family. For each application, CrossOver/Wine creates a small Windows virtual machine just for that program.

You actually don't need CrossOver to run Windows applications on Linux or a Mac. You can do it with Wine alone -- if you know precisely what you're doing. What CrossOver gives you is easy, automated installation of Windows applications, and technical support. And in this latest version, the CrossOver interface has been improved so it's easier than ever to install and manage Windows applications.
The latest version -- CrossOver 12.5, which is based on Wine 1.6 -- supports  thousands of Windows programs. These include: Quicken, Adobe Photoshop, various versions of the Microsoft Office suite; and, of course lots and lots of games. On the fun side of computing, CrossOver supports Guild Wars, World of Warcraft, Star Wars: The Old Republic, and thousands of others.

Not all programs run equally well. Before you invest in buying CrossOver, which runs $59.95, you'll want to take CodeWeavers up on its offer of a free two-week trial to make sure that your particular must-have program will run right with it.

In particular, this latest version offers better support for Microsoft Outlook, Quicken, Internet Explorer 7, and improved compatibility with the Microsoft Office suite. The company has also fixed several crashes and made numerous usability improvements.

This edition also offers a real improvement in its interoperability with Mac OS X. CrossOver 12.5, which will run with Snow Leopard or later, now has the"Mac Driver" technology enabled by default for all applications. The company claims that this brings improved integration with the OS X desktop environment and improves functions such as drag-and-drop, command-tab switching, Dock and Menu Bar integration, and window transparency. In my limited testing with my Mountain Lion-powered Mac Mini, Mac Driver lived up to these claims.

On Linux, CrossOver boasts a new user interface. This makes it much easier to launch your installed Windows applications. I also found it easier in general to install Windows apps on Linux with CrossOver 12.5.

CrossOver isn't perfect. Many Windows applications won't run properly with it. But, many will work with it, and if you only need a couple of Windows apps to make your Linux or Mac computing life complete then CrossOver may well be exactly what you need.

Run Microsoft Windows Applications and Games on Mac, Linux or ChromeOS save up to 20% off  CodeWeavers CrossOver+ today.

Friday, August 30, 2013

Wine 1.7.1 Released

The Wine development release 1.7.1 is now available.
What's new in this release:
  • Support for keyed event objects.
  • Support for the "init once" synchronization mechanism.
  • Activation context support for DLLs, typelibs, and COM classes.
  • Support for loading 32-bit typelibs on 64-bit.
  • Various Mac driver fixes.
  • Some fixes for serial port devices.
  • Various bug fixes.
The source is available now. Binary packages are in the process of being built, and will appear soon at their respective download locations.

 Bugs fixed in 1.7.1 (total 56):

   3456  Gazillionaire Game Background not fully drawn.
  11837  Popup has magenta background - should be transparent
  12272  Aliens Versus Predator 2 1.0.9.6 mouse axis problem
  15032  Problems with Webpage content in Station Launcher
  16576  Warlords Battlecry III crashes on exit.
  20265  TR4W program starts if I go into terminal mode ctrl-alt-F1 and then back to GUI ctrl-alt-f7
  21146  safari's welcome page crashes in d3d
  22097  Starcraft II has a crash on exit in win7 mode (but not XP)
  22136  Starcraft II - very slow on ultra shaders (fps 1/4 that in windows)
  23362  The Starcraft 2 Editor crashes when you open the terrain view after opening and closing the previewer.
  23421  unimplemented function SHLWAPI.dll.AssocGetPerceivedType (affects Windows Live Photo Gallery)
  25212  piwigo ploader can't connect to the net
  25994  Process Hacker 2.x needs ntdll.dll.NtCreateKeyedEvent
  26076  shdocvw/shdocvw tests show a memory leak in winemenubuilder?
  26077  setupapi/misc tests show a memory leak in winemenubuilder?
  26084  Total Commander: Incorrect character appears instead of backslash in the UI
  26089  MS Office 2003 install needs msi.Migrate10CachedPackagesW
  26245  DC++: "Select text style" in "Colors and sounds" settings crashes
  26254  King School computer aided course will not execute
  26495  Some games crash with Gstreamer issues
  27034  USB-over-Network installer crashes on destination folder selection (_BrowseProperty not handled)
  27691  Star Wars Battlefront II renders textures incorrectly on certain maps
  28143  GODS-Lands of Infinity: foliage of trees has graphical glitches
  29448  GameShield/SoftwareShield protected apps/games won't start (SetCurrentDirectoryA calling W API causes detours recursion)
  29720  Eclipse (Europa) crashes when tries to display welcome window
  30004  Scrollbars flicker while searching in regedit
  30813  1by1 player crashes by jumping to the next song
  31319  Age of Mythology: slow performance
  31435  git lastest version(1.5.10) don't show korean text
  31487  kernel32.dll.InitOnceExecuteOnce needed for several MS installer (Office2013 / Windows Essentials 2012 / .NET Framework 4.5 / Skydrive / ARM Applications)
  31756  Borderlands 2 crash on startup (once ingame)
  31773  Torchlight 2 shadows are rendered incorrectly on some areas
  31917  vb6 fails to open project after wine's update
  32132  Starcraft 2 crashes on startup
  32794  Batman: Arkham City missing text in launcher
  32976  TaxAct 2012: tax forms do not display correctly on screen
  33378  measuring/painting strings needs better tests
  33573  Trillian Basic v.5.3.0.15: Crashes when trying to launch it
  33657  Garena didn't start with ADMINISTRATOR privileges
  34037  XNA 4 install does not recognize wine mono
  34057  .Net Framework 3.0 installer fails
  34077  Sins of a Solar Empire Font Size Regression
  34102  It is not drawn when specify 0 for the width and height in GdipDrawString.
  34142  Nullsoft installer appearance is broken
  34162  CGDirectPaletteRef has been deprecated so winemac.drv can't be compiled in Mavericks.
  34177  -pipe makes mingw-g++ work unreliably
  34188  crash when creating a new wineprefix with winemac.drv
  34190  number.c could not compile due to "dtoa" naming conflict in Cygwin
  34211  strncpy C library function doesn't compliant C standard.
  34214  Printing from notepad crashes
  34275  Louisiana Adventure Demo fails with 'OLE error 80004001' (HTMLStyleSheet_GetIDsOfNames is a stub)
  34276  native msvc* stopped working
  34305  League of Legends 3.10.13_07_26_19_59: page fault in read_map()
  34316  The Guild 2: loading screen is blank (white)
  34353  The Ur-Quan Masters fails to start
  34378  ePub DRM Removal crashes importing files

Run Microsoft Windows Applications and Games on Mac, Linux or ChromeOS save up to 20% off  CodeWeavers CrossOver+ today.