1. 15 Sep, 2015 1 commit
    • Ken Thomases's avatar
      winemac: Add a new registry setting, OpenGLSurfaceMode, to control how GL… · 47708c26
      Ken Thomases authored
      winemac: Add a new registry setting, OpenGLSurfaceMode, to control how GL surfaces relate to the window.
      
      The default behavior is that GL surfaces are on top of all non-GL content in
      the window.  This maximizes the performance for the common case of games, but
      clipping by parents, siblings, and child windows isn't respected.
      
      Setting OpenGLSurfaceMode to "behind" pushes the GL surface to be behind the
      Mac window.  The window has transparent holes punched through it so that the GL
      surface shows through.  USER32 and the wineserver take care of making sure the
      holes are only where the GL windows would be unclipped and unoccluded.  Because
      the OS X window server has to composite the GL surface with the window, this
      limits the framerate.
      
      Since the Mac driver has no server-side rendering path, GDI rendering to a
      window which has a GL surface doesn't work.  As a partial workaround, mostly
      for cases where a GL surface is created but never used, setting
      OpenGLSurfaceMode to "transparent" allows the GDI rendering to show through the
      transparent parts of the GL surface.  The GDI rendering is drawn to the
      top-level window's surface as normal.  (The behavior of user32 to exclude the
      portion covered by a GL window from GDI rendering is disabled.)  The GL surface
      is in front of the window but potentially wholly or partially transparent.  It
      is composited with the window behind it.
      
      The GL surface is initially cleared to be completely transparent.  So, if
      no GL rendering is done, the window will appear as though the GL surface didn't
      exist.
      47708c26
  2. 08 Jan, 2015 1 commit
  3. 24 Mar, 2014 2 commits
  4. 21 Mar, 2014 2 commits
  5. 16 Jan, 2014 1 commit
  6. 19 Dec, 2013 1 commit
  7. 05 Nov, 2013 1 commit
  8. 22 Oct, 2013 1 commit
  9. 09 Oct, 2013 1 commit
  10. 12 Sep, 2013 3 commits
  11. 16 Aug, 2013 1 commit
  12. 27 Jul, 2013 1 commit
  13. 02 Jul, 2013 3 commits
  14. 21 Jun, 2013 2 commits
  15. 06 May, 2013 1 commit
  16. 25 Apr, 2013 2 commits
  17. 18 Apr, 2013 1 commit
  18. 27 Mar, 2013 2 commits
  19. 25 Mar, 2013 1 commit
  20. 08 Mar, 2013 1 commit
  21. 06 Mar, 2013 7 commits