1. 23 Nov, 2017 1 commit
  2. 04 Nov, 2017 1 commit
    • Benjamin Otte's avatar
      renderer: Assert having been unrealized in dispose · bd287ba3
      Benjamin Otte authored
      We cannot unrealize a renderer in the dispose function, because that
      would cause this chain to happen:
        gsk_gl_renderer_dispose
        gsk_renderer_dispose
        gsk_renderer_unrealize
        gsk_gl_renderer_unrealize
      So we would call into thje GL renderers unrealize when it has already
      (partially) disposed itself and ause accesses to dead variables.
      bd287ba3
  3. 03 Nov, 2017 1 commit
  4. 28 Oct, 2017 1 commit
  5. 06 Oct, 2017 2 commits
    • Matthias Clasen's avatar
      gskrenderer: Make the window property not construct · b9b03cf5
      Matthias Clasen authored
      We never set this, since it is assigned as a side-effect
      of realizing the renderer. Make this a plain readonly property.
      b9b03cf5
    • Benjamin Otte's avatar
      build: Enable -Wswitch-enum and -Wswitch-default · 43c212ac
      Benjamin Otte authored
      This patch makes that work using 1 of 2 options:
      
      1. Add all missing enums to the switch statement
        or
      2. Cast the switch argument to a uint to avoid having to do that (mostly
         for GdkEventType).
      
      I even found a bug while doing that: clearing a GtkImage with a surface
      did not notify thae surface property.
      
      The reason for enabling this flag even though it is tedious at times is
      that it is very useful when adding values to an enum, because it makes
      GTK immediately warn about all the switch statements where this enum is
      relevant.
      And I expect changes to enums to be frequent during the GTK4 development
      cycle.
      43c212ac
  6. 28 Sep, 2017 1 commit
    • Matthias Clasen's avatar
      gsk: Change the profiler setup · 72d043d5
      Matthias Clasen authored
      Move away from the idea of intra-frame sampling, since we only
      push samples once per frame, anyway. Instead, make the profiler
      keep a rolling average of the last n frames.
      72d043d5
  7. 25 Sep, 2017 1 commit
  8. 27 Mar, 2017 1 commit
  9. 19 Mar, 2017 1 commit
  10. 18 Mar, 2017 1 commit
  11. 17 Mar, 2017 1 commit
    • Alexander Larsson's avatar
      Allow custom renderer for the inspector · 1fe4b138
      Alexander Larsson authored
      If you set GTK_INSPECTOR_RENDERER to the same type of
      values that GSK_RENDERER takes this can change the renderer
      used for the inspector. This is useful if you're debugging
      one renderer and don't want to affect the inspector.
      1fe4b138
  12. 26 Dec, 2016 1 commit
    • Benjamin Otte's avatar
      gsk: Add GSK_RENDERING_MODE=full-redraw · 68b39a47
      Benjamin Otte authored
      Forces a full redraw every frame.
      This is done generically, so it's supported on every renderer.
      
      For widget-factory first page (with the spinner spinning and progressbar
      pulsing), I get these numbers per frame:
      
      action                  clipped         full redraw
      snapshot                   0ms           7-10ms
      cairo rendering            0ms          10-15ms
      Vulkan rendering         3-5ms          18-20ms
      Vulkan expected *          0ms            1-2ms
      GL rendering            unsupported     55-62ms
      
      * expected means disabling rendering of unsupported render nodes,
      instead of doing fallback drawing. So it overestimates the performance,
      because borders and box-shadows are disabled.
      68b39a47
  13. 23 Dec, 2016 2 commits
  14. 21 Dec, 2016 1 commit
  15. 20 Dec, 2016 4 commits
  16. 09 Dec, 2016 3 commits
  17. 05 Dec, 2016 4 commits
  18. 30 Nov, 2016 3 commits
  19. 16 Nov, 2016 1 commit
    • Benjamin Otte's avatar
      gsk: Rework GskTexture · 40565fb0
      Benjamin Otte authored
      We do no longer bind textures to a renderer, instead they are a way for
      applications to provide texture data.
      
      For now, that's it. We've reverted to uploading it from scratch every
      frame.
      40565fb0
  20. 08 Nov, 2016 1 commit
  21. 01 Nov, 2016 1 commit
  22. 31 Oct, 2016 1 commit
    • Emmanuele Bassi's avatar
      gsk: Add internal Renderer.create_cairo_surface() · 50a5deb8
      Emmanuele Bassi authored
      We need an overridable entry point for GskRenderer to create Cairo
      surfaces.
      
      Implementations of GskRenderer can override create_cairo_surface() to
      create efficient surfaces, possibly with zero copies involved, depending
      on the GDK backend.
      50a5deb8
  23. 18 Oct, 2016 6 commits
    • Emmanuele Bassi's avatar
      gsk: Clear the profiler instance · 14322b03
      Emmanuele Bassi authored
      When disposing the GskRenderer.
      14322b03
    • Emmanuele Bassi's avatar
      gsk: Bump up all version annotations · 69781c25
      Emmanuele Bassi authored
      GSK is part of the 4.0 development cycle.
      69781c25
    • Emmanuele Bassi's avatar
      gsk: Add the ability to create fallback renderers · dace0791
      Emmanuele Bassi authored
      While porting GTK to GskRenderer we noticed that the current fallback
      code for widgets using Cairo to draw is not enough to cover all the
      possible cases.
      
      For instance, if a container widget still uses GtkWidget::draw to render
      its children, and at least one of them has been ported to using render
      nodes instead, the container won't know how to draw it.
      
      For this reason we want to provide to layers above GSK the ability to
      create a "fallback" renderer instance, created using a "parent"
      GskRenderer instance, but using a Cairo context as the rendering target
      instead of a GdkDrawingContext.
      
      GTK will use this inside the gtk_widget_draw() implementation, if a
      widget implements GtkWidgetClass.get_render_node().
      dace0791
    • Emmanuele Bassi's avatar
      gsk: Make GskRenderer.render() drawing context-agnostic · 6b3c0052
      Emmanuele Bassi authored
      We're going to need to allow rendering on a specific cairo_t in order to
      implement fallback code paths inside GTK; this means that there will be
      times when we have a transient GskRenderer instance that does not have a
      GdkDrawingContext to draw on.
      
      Instead of adding a new render() implementation for those cases and then
      decide which one to use, we can remove the drawing context argument from
      the virtual function itself, and allow using a NULL GdkDrawingContext
      when calling gsk_renderer_render(). A later commit will add a generic
      function to create a transient GskRenderer with a cairo_t attached to
      it.
      
      Renderers inside GSK will have to check whether we have access to a
      GdkDrawingContext, in which case we're going to use it; or if we have
      access to a cairo_t and a window.
      6b3c0052
    • Emmanuele Bassi's avatar
      gsk: Remove GskRenderer:auto-clear · 7de49fb7
      Emmanuele Bassi authored
      We control the clearing inside each GskRenderer implementation, and we
      don't allow providing a target surface any more.
      7de49fb7
    • Emmanuele Bassi's avatar
      gsk: Remove :use-alpha from GskRenderer · f764d03c
      Emmanuele Bassi authored
      It's unused, and we always assume we render with an alpha channel
      enabled because it's 2016.
      f764d03c