Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-84623

Remove remaining scenegraph/Quick direct OpenGL bits



    • Task
    • Resolution: Done
    • P2: Important
    • 6.0
    • None
    • Qt RHI, Quick: SceneGraph
    • None


      1. Render loops. QTBUG-84718

      2. QSGDepthStencilBuffer [DONE - Paul]
      Remove completely.

      3. QSGGeometry [DONE - Paul]
      just some small legacy extension checks

      4. QSGTexture (coreapi) + QSGPlainTexture (util) QTBUG-84717 [DONE]

      5. QSGDefaultPainterNode, Context2DTexture [DONE - Paul]
      The Framebuffer mode is not implemented for RHI. So that path is full of direct OpenGL stuff. Should just remove that path completely. (the API in QQuickPaintedItem can remain, it will just have no effect for now - documentation update needed?)

      6. QSGDefaultContext, QSGDefaultRenderContext [DONE - Laszlo]
      qsgdefaultcontext.cpp - renderContextInitialized purge OpenGL path
      qsgdefaultrendercontext.cpp lots of OpenGL-isms here and there, all can be removed

      7. QSGMaterialShader [DONE - Laszlo]
      Look for ### glpurge and remove the QT_CONFIG(opengl) bits in the header and in the cpp. Those should not be used anymore from within qtdeclarative. Documentation needs to be revised as well.

      8. Default glyph node [DONE - Eirik]
      qsgdefaultglyphnode_p.cpp - keep if (m_rhi) path remove the OpenGL one (everywhere)

      9. qsgshaderrewriter removal (from qtdeclarative) [DONE]
      This is not used anymore. The functionality is still there, but lives in qtshadertools. (there is a duplicated (but updated) version of this in qtshadertools, this code here is not used anymore). Can be removed.

      10. Others [DONE - Eirik]
      qsgadaptationlayer.cpp - QSG_DISTANCEFIELD_CACHE_DEBUG stuff
      qsgdefaultspritenode.cpp - just an include (QOpenGLShaderProgram)

      11. Why are there leftover legacy GLSL files in scenegraph/shaders? That folder should be empty now. Remove them. [DONE]

      12. ShaderEffect related work handled separately in QTBUG-83977 [DONE]

      13. QTBUG-84027 - qmake, CMake, and internal #if QT_CONFIG(opengl) update
      This should be the final piece and is tricky. Traditional assumptions about !opengl meaning no accelerated 3D graphics (only software backend) do not hold anymore in Qt 6.

      14. Remove the now-unused qsgshadersourcebuilder [DONE - Laszlo]

      15. Porting guide updates. Materials and textures are mentioned already. [DONE - Laszlo]
      To be added:
      Deprecated QQuickWindow::createTextureFromId is removed.
      QQuickPaintedItem and Context2D's FBO mode needs to be mentioned.
      Not defaulting to OpenGL (Metal on macOS, D3D on Windows) needs to be mentioned (how to switch away with env.var or C++ API, etc.)
      QQuickWindow::openGLContextCreated signal removed
      QQuickWindow::setPersistentOpenGLContext function renaming

      16. the compressed texture implementation has a QOpenGLTexture dependency just to get the format enum values. Would be nice to get rid of this. [DONE - Paul]

      17. QQuickWindow public API:

      • openglContextCreated signal, setPersistentOpenGLContext, openglContext() getter. [DONE - Laszlo]
        Remove the signal, rename the function, make the context getter private.
      • resetOpenGLState(). [DONE - Laszlo]
        Can this really be removed? Used both internally in QQuickFbo and also common in applications that use QQuickFbo or the before/afterRendering signals.


        Issue Links

          No reviews matched the request. Check your Options in the drop-down menu of this sections header.



              qt.team.graphics.and.multimedia Qt Graphics Team
              lagocs Laszlo Agocs
              0 Vote for this issue
              1 Start watching this issue