30class GlxPixmapTexturePrivate;
 
   32class X11StandaloneBackend;
 
   34class GLRenderTimeQuery;
 
   56    SwapEventFilter(xcb_drawable_t drawable, xcb_glx_drawable_t glxDrawable);
 
   57    bool event(xcb_generic_event_t *
event) 
override;
 
   60    xcb_drawable_t m_drawable;
 
   61    xcb_glx_drawable_t m_glxDrawable;
 
 
   69    std::optional<OutputLayerBeginFrameInfo> 
beginFrame() 
override;
 
   70    bool endFrame(
const QRegion &renderedRegion, 
const QRegion &damagedRegion) 
override;
 
 
   89    void endFrame(
const QRegion &renderedRegion, 
const QRegion &damagedRegion);
 
   91    void present(
Output *output, 
const std::shared_ptr<OutputFrame> &frame) 
override;
 
  104    void vblank(std::chrono::nanoseconds timestamp);
 
  105    void present(
const QRegion &damage);
 
  108    void initExtensions();
 
  110    void initVisualDepthHashTable();
 
  111    void setSwapInterval(
int interval);
 
  112    void screenGeometryChanged();
 
  114    int visualDepth(xcb_visualid_t visual) 
const;
 
  115    const FBConfigInfo &infoForVisual(xcb_visualid_t visual);
 
  120    std::unique_ptr<OverlayWindow> m_overlayWindow;
 
  122    GLXFBConfig fbconfig;
 
  124    std::unique_ptr<GlxContext> m_context;
 
  125    QHash<xcb_visualid_t, FBConfigInfo> m_fbconfigHash;
 
  126    QHash<xcb_visualid_t, int> m_visualDepthHash;
 
  127    std::unique_ptr<SwapEventFilter> m_swapEventFilter;
 
  128    std::unique_ptr<GLFramebuffer> m_fbo;
 
  130    QRegion m_lastRenderedRegion;
 
  132    bool m_haveMESACopySubBuffer = 
false;
 
  133    bool m_haveMESASwapControl = 
false;
 
  134    bool m_haveEXTSwapControl = 
false;
 
  135    bool m_haveSGISwapControl = 
false;
 
  138    std::unique_ptr<VsyncMonitor> m_vsyncMonitor;
 
  139    std::unique_ptr<GlxLayer> m_layer;
 
  140    std::unique_ptr<GLRenderTimeQuery> m_query;
 
  142    std::shared_ptr<OutputFrame> m_frame;
 
 
  155    void onDamage() 
override;
 
  158    GLXPixmap m_glxPixmap;
 
 
  167    void update(
const QRegion ®ion) 
override;
 
 
OpenGL Backend using GLX over an X overlay window.
OutputLayerBeginFrameInfo beginFrame()
GlxBackend(::Display *display, X11StandaloneBackend *backend)
std::chrono::nanoseconds queryRenderTime()
OverlayWindow * overlayWindow() const override
::Display * display() const
void present(Output *output, const std::shared_ptr< OutputFrame > &frame) override
void doneCurrent() override
OutputLayer * primaryLayer(Output *output) override
void endFrame(const QRegion &renderedRegion, const QRegion &damagedRegion)
std::unique_ptr< SurfaceTexture > createSurfaceTextureX11(SurfacePixmapX11 *pixmap) override
bool makeCurrent() override
std::optional< OutputLayerBeginFrameInfo > beginFrame() override
std::chrono::nanoseconds queryRenderTime() const override
bool endFrame(const QRegion &renderedRegion, const QRegion &damagedRegion) override
GlxLayer(GlxBackend *backend)
GlxPixmapTexture(GlxBackend *backend)
void update(const QRegion ®ion) override
GlxSurfaceTextureX11(GlxBackend *backend, SurfacePixmapX11 *pixmap)
The OpenGLBackend creates and holds the OpenGL context and is responsible for Texture from Pixmap.
OpenGLBackend * backend() const
bool event(xcb_generic_event_t *event) override
SwapEventFilter(xcb_drawable_t drawable, xcb_glx_drawable_t glxDrawable)
glXSwapIntervalMESA_func glXSwapIntervalMESA
int(*)(unsigned int interval) glXSwapIntervalMESA_func