if(($ACT == 'edit' || $ACT == 'preview') && $INFO['editable']){ ?> } else { ?> } ?>
This shows you the differences between two versions of the page.
wiki:ardour_windows_gdk_and_cairo [26.10.2014 22:47] rgareus |
wiki:ardour_windows_gdk_and_cairo [28.10.2014 15:24] (current) 81.57.94.90 [Ardour, Windows, Gdk/GTK and Cairo] |
||
---|---|---|---|
Line 2: | Line 2: | ||
Lab Notes.\\ | Lab Notes.\\ | ||
- | Analysis the //slowness// and high CPU-usage of the [http://ardour.org|Ardour3]] GUI on the Windows platform. | + | Analysis the //slowness// and high CPU-usage of the [[http://ardour.org|Ardour3]] GUI on the Windows platform. |
===== Findings ===== | ===== Findings ===== | ||
Line 96: | Line 96: | ||
Probably the easiest way to mitigate the performance hog is to provide a custom GdkDrawable implementation for the main canvas (which does not use a hardware backed surface) and keep using default GdkDrawable for all other widgets. A similar solution would be to make the backing-store of GdkWindow persistent and access it directly. | Probably the easiest way to mitigate the performance hog is to provide a custom GdkDrawable implementation for the main canvas (which does not use a hardware backed surface) and keep using default GdkDrawable for all other widgets. A similar solution would be to make the backing-store of GdkWindow persistent and access it directly. | ||
- | A quick hack has been prototyped, basically bypass gdk/gtk and just mark selected cairo/win surfaces to not BitBlt (ardour's main canvas & meters): [[https://gist.github.com/x42/ef0b0f6e70d416b3af17|patch for ardour, cairo]]. With that patch Ardour/Windows CPU usage is similar to Ardour/OSX,Linux. | + | A quick hack has been prototyped. The cairo-surface user-data API is used to flag select cairo/win surfaces to not BitBlt (ardour's main canvas & meters): [[https://gist.github.com/x42/ef0b0f6e70d416b3af17|patch for ardour, libcairo]] ((In this case a dedicated user-data key - known to ardour and libcairo - is used to tunnel the information though gdk/gtk which remains unchanged.)). |
Still, while performance on Linux & OSX is OKish, the expose and invalidation strategy (see B -> F above) is abysmal and unsuitable for Ardour in general. It only works because CPUs are fast :) | Still, while performance on Linux & OSX is OKish, the expose and invalidation strategy (see B -> F above) is abysmal and unsuitable for Ardour in general. It only works because CPUs are fast :) |