1. 12 Nov, 2011 3 commits
  2. 04 Sep, 2011 1 commit
  3. 02 Sep, 2011 1 commit
    • Andrea Canciani's avatar
      Introduce the cairo-missing library · 6d6bfbd6
      Andrea Canciani authored
      The cairo-missing library provides the functions which are needed in
      order to correctly compile cairo (or its utilities) and which were not
      found during configuration.
      
      Fixes the build on MacOS X Lion, which failed because of collisons
      between the cairo internal getline and strndup and those in libc:
      
      cairo-analyse-trace.c:282: error: static declaration of ‘getline’ follows non-static declaration
      /usr/include/stdio.h:449: error: previous declaration of ‘getline’ was here
      cairo-analyse-trace.c:307: error: static declaration of ‘strndup’ follows non-static declaration
      ...
      6d6bfbd6
  4. 30 Aug, 2011 1 commit
  5. 20 Aug, 2011 1 commit
  6. 14 Aug, 2011 1 commit
    • Chris Wilson's avatar
      Introduce cairo_surface_observer_t for performance analysis · eee66899
      Chris Wilson authored
      Another logging passthrough surface that records the style of operations
      performed trying to categorise what is slow/fast/important.
      
      In combination with perf/cairo-analyse-trace it is very useful for
      understanding what a trace does. The next steps for this tool would be
      to identify the slow operations that the trace does. Baby steps.
      
      This should be generally useful in similar situations outside of perf/
      and should be extensible to become an online performance probe.
      Signed-off-by: Chris Wilson's avatarChris Wilson <chris@chris-wilson.co.uk>
      eee66899
  7. 31 Jul, 2011 1 commit
    • Andrea Canciani's avatar
      Remove useless checks for NULL before freeing · e04e3687
      Andrea Canciani authored
      This patch has been generated by the following Coccinelle semantic patch:
      // Remove useless checks for NULL before freeing
      //
      // free (NULL) is a no-op, so there is no need to avoid it
      
      @@
      expression E;
      @@
      + free (E);
      + E = NULL;
      - if (unlikely (E != NULL)) {
      -   free(E);
      (
      -   E = NULL;
      |
      -   E = 0;
      )
         ...
      - }
      
      @@
      expression E;
      @@
      + free (E);
      - if (unlikely (E != NULL)) {
      -   free (E);
      - }
      e04e3687
  8. 24 Jun, 2011 2 commits
    • Andrea Canciani's avatar
      perf: Fix build on win32 · 463a8b67
      Andrea Canciani authored
      The performance tools build system for Win32 hasn't been maintained
      for some time.  The makefiles are now structured as in other
      directories (Makefile.sources used by both Makefile.am and
      Makefile.win32) and some additional code hides os-specific parts.
      463a8b67
    • Andrea Canciani's avatar
      error: Do not define _cairo_error twice · f21ac5b1
      Andrea Canciani authored
      cairo-perf-trace uses cairo-hash.c, which calls _cairo_error.
      
      Instead of redefining it in cairo-perf-trace.c it can be abstracted in
      a separate source which is directly included in the build of
      cairo-perf-trace.
      
      This avoids visibility issues when compiling cairo-perf-trace with a
      statically linked cairo library on architectures which do not support
      hidden visibility (example: win32).
      f21ac5b1
  9. 02 Jun, 2011 1 commit
  10. 20 Oct, 2010 1 commit
  11. 03 Jul, 2010 1 commit
  12. 24 Jun, 2010 1 commit
  13. 27 Mar, 2010 1 commit
    • Chris Wilson's avatar
      boilerplate: Create an image16 target · 97f8c207
      Chris Wilson authored
      In order to exercise the newly restored r5g6g5 support, we need to
      create an appropriate surface and feed it through the test and
      performance suites.
      97f8c207
  14. 23 Mar, 2010 1 commit
  15. 04 Mar, 2010 1 commit
  16. 22 Jan, 2010 1 commit
    • Chris Wilson's avatar
      perf: Enable a surface cache for perf-trace · 411c09ee
      Chris Wilson authored
      Real applications that control their Drawable externally to Cairo are
      'disadvantaged' by cairo-perf-trace when it creates a similar surface
      for each new instance of the same Drawable. The difficulty in
      maintaining one perf surface for every application surface is that the
      traces do not track lifetimes for the application surfaces, so we would
      just accumulate stale surfaces. The surface cache takes a different
      approach and returns the same surface for each active Drawable, and
      maintains a hold-over of the MRU 16 surfaces. This achieves 60-80% hit
      rate with firefox, which is probably as good as can be expected.
      Obviously for double-buffered applications we only every draw to freshly
      created surfaces (and Gtk+ bypasses cairo to do the final copy -- the
      ideal application would just use a push-group for double buffering, in
      which case we would capture and replay the entire expose event).
      
      To enable use of the surface cache whilst replaying use -c:
      
        ./cairo-perf-trace -c firefox-talos-gfx
      411c09ee
  17. 21 Oct, 2009 1 commit
  18. 29 Aug, 2009 4 commits
    • Vladimir Vukicevic's avatar
      Add skia backend · d7faec02
      Vladimir Vukicevic authored
      Originally written by Vladimir Vukicevic to investigate using Skia for
      Mozilla, it provides a nice integration with a rather interesting code
      base. By hooking Skia underneath Cairo it allows us to directly compare
      code paths... which is interesting.
      
      [updated by Chris Wilson]
      d7faec02
    • Chris Wilson's avatar
      [perf] Match directory names · bdd3c5ba
      Chris Wilson authored
      In order to handle 'cairo-perf-trace benchmark', we need to perform the
      can_run? test on the directory name as opposed to the individual trace
      names. Make it so.
      bdd3c5ba
    • Chris Wilson's avatar
      [perf] Reset global caches after every trace · 77c11096
      Chris Wilson authored
      I'd disabled this to look at cairo-qt performance, then forgot about it.
      Be clean, cleanup globals -- this should fix the huge performance loss
      when running in series multiple backends that need separate font caches.
      77c11096
    • Chris Wilson's avatar
      [perf] Remove cpuset warning for cairo-perf-trace · 9c8e60f7
      Chris Wilson authored
      These traces run for much longer than the original synthetic benchmarks
      and seek to replicate 'real-world' applications, so the warning that the
      xserver and cairo-perf are not bound to any cpu is false.
      9c8e60f7
  19. 10 Aug, 2009 1 commit
    • Chris Wilson's avatar
      [qt] Fix compilation · d1b8e260
      Chris Wilson authored
      Enabling 'FAST CLIP' appears to trigger an infinite loop so disable.
      
      Enabling 'FAST FILL' has limited effect on performance, so disable whilst
      the basic QT surface is improved.
      d1b8e260
  20. 29 Jul, 2009 1 commit
    • Chris Wilson's avatar
      [perf] Remove the warning about failing to open a directory · 8c6ecfe6
      Chris Wilson authored
      The warning is repeated in the error message if we fail to find any
      traces, and now that we search a path it is likely that some elements do
      not exist. Thus we annoy the user with irrelevant, non-fatal warnings.
      
      Still looking for suggestions for the most appropriate home for the system
      wide cairo-traces dir...
      8c6ecfe6
  21. 23 Jul, 2009 1 commit
    • Chris Wilson's avatar
      [drm] Add an accelerated image surface. · c3f2db4f
      Chris Wilson authored
      Use the DRM interface to h/w accelerate composition on image surfaces.
      The purpose of the backend is simply to explore what such a hardware
      interface might look like and what benefits we might expect.  The
      use case that might justify writing such custom backends are embedded
      devices running a drm compositor like wayland - which would, for example,
      allow one to write applications that seamlessly integrated accelerated,
      dynamic, high quality 2D graphics using Cairo with advanced interaction
      (e.g. smooth animations in the UI) driven by a clutter framework...
      
      In this first step we introduce the fundamental wrapping of GEM for intel
      and radeon chipsets, and, for comparison, gallium. No acceleration, all
      we do is use buffer objects (that is use the kernel memory manager) to
      allocate images and simply use the fallback mechanism. This provides a
      suitable base to start writing chip specific drivers.
      c3f2db4f
  22. 22 Jul, 2009 1 commit
  23. 20 Jul, 2009 1 commit
  24. 01 Jul, 2009 1 commit
  25. 30 Jun, 2009 2 commits
  26. 27 Jun, 2009 1 commit
  27. 21 Jun, 2009 1 commit
    • Chris Wilson's avatar
      [perf] Need to version surface types · ef0d307d
      Chris Wilson authored
      As cairo-perf-diff will execute the current cairo-perf against historical
      revisions, any introduced api must be protect in order to compile on old
      versions.
      ef0d307d
  28. 19 Jun, 2009 1 commit
  29. 16 Jun, 2009 3 commits
  30. 15 Jun, 2009 1 commit
    • Chris Wilson's avatar
      Expose _cairo_null_surface_create() via a test surface · e5727e20
      Chris Wilson authored
      Using a null surface is a convenient method to measure the overhead of the
      performance testing framework, so export it although as a test-surface so
      that it will only be available in development builds and not pollute
      distributed libraries.
      e5727e20
  31. 12 Jun, 2009 1 commit