1. 20 Nov, 2014 1 commit
  2. 10 Nov, 2014 4 commits
  3. 08 Nov, 2014 2 commits
  4. 07 Nov, 2014 1 commit
  5. 06 Nov, 2014 4 commits
  6. 30 Oct, 2014 1 commit
  7. 28 Oct, 2014 5 commits
  8. 27 Oct, 2014 2 commits
  9. 16 Oct, 2014 1 commit
    • Benjamin Otte's avatar
      gdk: Add GDK_DEBUG=nogl · 672a67d0
      Benjamin Otte authored
      This is mostly useful for fallback testing.
      
      I suppose if people want finer grained GL ability testing, they can use
      Mesa environment variables to tune things.
      672a67d0
  10. 15 Oct, 2014 1 commit
  11. 13 Oct, 2014 7 commits
    • Matthias Clasen's avatar
      Correct Since tags · 7a80c3b0
      Matthias Clasen authored
      7a80c3b0
    • Alexander Larsson's avatar
      gl: Make gdk_gl_context_make_current() return void · fdeb4f8c
      Alexander Larsson authored
      Its not really reasonable to handle failures to make_current, it
      basically only happens if you pass invalid arguments to it, and
      thats not something we trap on similar things on the X drawing side.
      
      If GL is not supported that should be handled by the context creation
      failing, and anything going wrong after that is essentially a critical
      (or an async X error).
      fdeb4f8c
    • Alexander Larsson's avatar
      gl: Make all user GdkGLContexts not attached to any window · 236d08c3
      Alexander Larsson authored
      We make user facing gl contexts not attached to a surface if possible,
      or attached to dummy surfaces. This means nothing can accidentally
      read/write to the toplevel back buffer.
      236d08c3
    • Alexander Larsson's avatar
      Add GDK_ALWAYS_USE_GL debug hack · 87970ea2
      Alexander Larsson authored
      If this is set we always use GL to render each window, even
      if there are no GL widgets in the window.
      87970ea2
    • Alexander Larsson's avatar
      gdk: Add support for OpenGL · 038aac62
      Alexander Larsson authored
      This adds the new type GdkGLContext that wraps an OpenGL context for a
      particular native window. It also adds support for the gdk paint
      machinery to use OpenGL to draw everything. As soon as anyone creates
      a GL context for a native window we create a "paint context" for that
      GdkWindow and switch to using GL for painting it.
      
      This commit contains only an implementation for X11 (using GLX).
      
      The way painting works is that all client gl contexts draw into
      offscreen buffers rather than directly to the back buffer, and the
      way something gets onto the window is by using gdk_cairo_draw_from_gl()
      to draw part of that buffer onto the draw cairo context.
      
      As a fallback (if we're doing redirected drawing or some effect like a
      cairo_push_group()) we read back the gl buffer into memory and composite
      using cairo. This means that GL rendering works in all cases, including
      rendering to a PDF. However, this is not particularly fast.
      
      In the *typical* case, where we're drawing directly to the window in
      the regular paint loop we hit the fast path. The fast path uses opengl
      to draw the buffer to the window back buffer, either by blitting or
      texturing. Then we track the region that was drawn, and when the draw
      ends we paint the normal cairo surface to the window (using
      texture-from-pixmap in the X11 case, or texture from cairo image
      otherwise) in the regions where there is no gl painted.
      
      There are some complexities wrt layering of gl and cairo areas though:
      * We track via gdk_window_mark_paint_from_clip() whenever gtk is
        painting over a region we previously rendered with opengl
        (flushed_region). This area (needs_blend_region) is blended
        rather than copied at the end of the frame.
      * If we're drawing a gl texture with alpha we first copy the current
        cairo_surface inside the target region to the back buffer before
        we blend over it.
      
      These two operations allow us full stacking of transparent gl and cairo
      regions.
      038aac62
    • Alexander Larsson's avatar
      Add gdk_window_mark_paint_from_clip and call from widget drawing · d0147a6f
      Alexander Larsson authored
      This is a new function that gets called every time we're drawing
      some area in the Gtk paint machinery. It is a no-op right now, but
      it will be required later to keep track of what areas which
      we previously rendered with GL was overwritten with cairo contents.
      d0147a6f
    • Alexander Larsson's avatar
      Change the way the update area is tracked during paint · a8f11835
      Alexander Larsson authored
      First of all we track the current update area during an
      update in window->active_update_area. This will be used later
      in end_paint to know the damaged area.
      
      Secondly we keep track of old update areas for the last 2
      frames. This will later allow us to reuse old framebuffer
      contents in double or tripple buffer setups, only painting
      what has changed since then.
      a8f11835
  12. 12 Oct, 2014 1 commit
  13. 06 Oct, 2014 3 commits
  14. 05 Oct, 2014 1 commit
    • Benjamin Otte's avatar
      gdk: Remove overeager checks · 66be6a01
      Benjamin Otte authored
      Parent is guaranteed to not be NULL. It can only ever be NULL for root
      windows and root windows cannot be created with gdk_window_new() and
      gdk_window_ensure_native() will exit early because they already are
      native.
      
      Also, both functions would crash a few lines below where parent gets
      dereferenced.
      66be6a01
  15. 23 Sep, 2014 1 commit
  16. 02 Sep, 2014 1 commit
    • Alexander Larsson's avatar
      gdkwindow: Fix update area calculations for native subwindows · 6243c712
      Alexander Larsson authored
      When recursing the update area down into native subwindows we forgot
      to apply the native window position. This caused us to repaint the
      wrong thing in certain cases. I noticed this when playing with the
      wip/gdk-gl branch, because it was triggering unnecessary repaints
      of the (native window) gl widgets.
      6243c712
  17. 26 Aug, 2014 2 commits
  18. 14 Jul, 2014 1 commit
    • Jasper St. Pierre's avatar
      window: Use CAIRO_OPERATOR_SOURCE to clear to background · 38785194
      Jasper St. Pierre authored
      Some windows, like GtkWindow and some other apps, set a transparent
      background. The guarantee for begin_paint_region is that there should
      be a full clear to the specified background color, not a composite
      against what was there before.
      
      This fixes repaint artifacts in Wayland and Weston in a better way than
      76922c16.
      38785194
  19. 03 Jul, 2014 1 commit