1. 09 Dec, 2016 1 commit
    • Benjamin Otte's avatar
      vulkan: Initial support · cca547e5
      Benjamin Otte authored
      Adds the gdk_display_ref_vulkan() and gdk_display_unref_vulkan()
      functions which setup/tear down VUlkan support for the display.
      Nothing is using those functions yet.
  2. 08 Dec, 2016 1 commit
  3. 06 Dec, 2016 3 commits
    • Benjamin Otte's avatar
      wayland: Sync attributes also when drawing with GL · cd2b8983
      Benjamin Otte authored
      Probably syncing attributes shouldn't happen when drawing in the first
      place, but what do I know about Wayland. ¯\_(ツ)_/¯
    • Benjamin Otte's avatar
      wayland: Uncomment erroneously commented out code · a85a97c1
      Benjamin Otte authored
      I read the code as if (use_gl) instead of if (!use_gl) and commented it
      out in bddfd7bb. That broke drawing on
      Wayland without OpenGL completely.
      Now it's back.
    • Chun-wei Fan's avatar
      GDK/Win32: Fix build after GDKGL refactoring · 060365a9
      Chun-wei Fan authored
      There were some parts that need some updates after the refactoring in
      GDKGL, so that the code will continue to build and run.
      For gdkwindow-win32.c, comment out the parts where we check for use_gl
      (which was removed), since we are going to move all drawing to OpenGL,
      but don't remove/disable the whole portion as that transition is not
      complete at this point.
      There a is new GDKGL function that checks for the damaged area of the back
      buffer, but since the notion of "damage" is for *NIX (GLX/EGL for
      Wayland/mir), meaning that there is no such extension for Windows in this
      regard, so we can't support this on Windows as-is, at least for now.
  4. 05 Dec, 2016 17 commits
    • William Hua's avatar
      mir: fix type warning · 3c2aefdd
      William Hua authored
    • William Hua's avatar
      mir: fix build failures · 32b3928e
      William Hua authored
    • William Hua's avatar
      mir: implement display monitor vfuncs · e27e8e6e
      William Hua authored
    • Benjamin Otte's avatar
      gdkgl: Add gdk_gl_context_get_damage() · 8915be00
      Benjamin Otte authored
      This is a way to query the damaged area of the backbuffer.
      The GL renderer uses this to compute the extents of that damage region
      (computed via buffer age) and use them to minimize the area to redraw.
      This changes the semantics of GL rendering to "When calling
      gdk_window_begin_frame() with a GL context, the area by
      gdk_gl_context_get_damage() needs to be redrawn and every other pixel of
      the backbuffer is guaranteed to be correct.
      After gdk_window_end_frame() on a GL-drawn window, the whole backbuffer
      must be correct.
      We can always glXBufferSwap() now because of this.
    • Benjamin Otte's avatar
      gdk: Make gdk_window_begin_draw_frame() take a draw context · ca78f5d3
      Benjamin Otte authored
      ... instead of a gl context.
      This requires some refactoring in the way we mark the shared context as
      drawing: We now call begin_frame/end_frame() on it and ignore the call
      on the main context.
      Unfortunately we need to do this check in all vfuncs, which sucks. But I
      haven't found a better way.
    • Benjamin Otte's avatar
    • Benjamin Otte's avatar
      gdk: Add GdkDrawContext · db8e3065
      Benjamin Otte authored
      This will be the base class for GdkVulkanContext and GdkGLContext.
    • Benjamin Otte's avatar
      gdk: Redo GL drawing · e38bd27d
      Benjamin Otte authored
      Reenable GL drawing, but do it without Cairo.
      Now, the context passed to gdk_window_begin_draw_frame() decides how
      drawing is going to happen. If it is NULL, Cairo is used like before.
      If a context is passed, Cairo may not be used for drawing and
      gdk_drawing_context_get_cairo_context() is going to return NULL.
      Instead, the GL renderer must draw to the GL backbuffer and
      end_draw_frame() is then swapping that to the front.
      The GskGLRenderer has lost the texture it used to render to and adapted
      to render directly to the backbuffer instead.
      The only thing missing is for GtkGLArea to gain back a performant way to
      render. But it didn't have one since the introduction of GSK, this
      patchset doesn't change anything about it.
      The new rendering avoids two indirections (the GSK renderer's texture
      and the GDK double buffering surface).
      It improves icon count in the fishbowl demo by 30%.
    • Benjamin Otte's avatar
      glcontext: Make begin/end_draw() paired · e87b4721
      Benjamin Otte authored
      This way, we can query the GL context's state via
      Use this function to make GL contexts as attached and grant them access
      to the front/backbuffer for rendering.
      All of this is still unused because GL drawing is still disabled.
    • Benjamin Otte's avatar
      gdk: Large GL refactoring · 182d18bc
      Benjamin Otte authored
      No visible changes as GL rendering is disabled at the moment.
      What was done:
      1. Move window->invalidate_for_new_frame to glcontext->begin_frame
      This moves the code to where it is used (the GLContext) and prepares it
      for being called where it is used when actually beginning to draw the
      2. Get rid of buffer-age usage
      We want to let the application render directly to the backbuffer.
      Because of that, we cannot make any assumptions about the contents the
      application renders outside the clip area.
      In particular GskGLRenderer renders random stuff there but not actual
      3. Pass the actual GL context
      Previously, we passed the shared context to end_frame, now we pass the
      actual GL context that the application uses for rendering. This is so
      that the vfuncs could prepare the actual contexts for rendering (they
      don't currently).
      4. Simplify the code
      The previous code set up the final drawing method in begin_frame.
      Instead, we now just ensure the clip area is something we can render
      and decide on the actual method in end_frame.
      This is both more robust (we can change the clip area in between if we
      want to) and less code.
    • Benjamin Otte's avatar
      gdk: Don't recurse when processing updates · 4967257f
      Benjamin Otte authored
      We don't need to send expose events for backwards compatibility anymore.
    • Benjamin Otte's avatar
      gdk: Remove all code that only existed because of use_gl · bddfd7bb
      Benjamin Otte authored
      Now that we don't use GL anymore, this code is unnecessary.
    • Benjamin Otte's avatar
      gdk: Never draw with GL · 77d336de
      Benjamin Otte authored
      This is a temporary switch-off of the GL dawing code that will make
      things keep running. All GL related code (like the GSK renderer or
      GtkGLArea will now fall back to software.
    • Benjamin Otte's avatar
      API: Require passing a GLContext to begin_draw_frame() · 332ed7be
      Benjamin Otte authored
      This is in preparation for requiring explicit passing of GL contexts
      when drawing.
    • Benjamin Otte's avatar
      window: Change behavior of gdk_window_begin_draw_frame() · 9c041f6b
      Benjamin Otte authored
      (1) Require a native window
      (2) Create the drawing context before calling begin_paint().
    • Benjamin Otte's avatar
      drawingcontext: Store the GL paint context · a860bbbe
      Benjamin Otte authored
    • Olivier Fourdan's avatar
      wayland: destroy subsurfaces along with parents · f6b44773
      Olivier Fourdan authored
      Wayland subsurfaces can have other native window parents, but those need
      to be destroyed along with the rest of the window hierarchy otherwise
      an assert() is reached.
  5. 30 Nov, 2016 5 commits
  6. 28 Nov, 2016 1 commit
  7. 24 Nov, 2016 5 commits
  8. 23 Nov, 2016 5 commits
  9. 22 Nov, 2016 2 commits