Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-74406 Abstract away the graphics APIs in Qt
  3. QTBUG-82997

Implement Quick scenegraph Qt 6 RHI todos (API changes) to enable purging the direct OpenGL code path

    XMLWordPrintable

    Details

    • Type: Technical task
    • Status: Closed
    • Priority: P2: Important
    • Resolution: Done
    • Fix Version/s: 6.0
    • Component/s: Qt RHI, Quick: SceneGraph
    • Labels:
      None

      Description

      Split off from QTBUG-79268.

      A list of todos from the 5.15 codebase (note that the non-rhi items on this list are to be reviewed as some of them is something we will not actually do)

      quick/scenegraph/coreapi/qsgmaterial.h(63):                    RhiShaderWanted = 0x1000 // // ### Qt 6: remove
      quick/scenegraph/coreapi/qsgmaterialrhishader.h(58):   class Q_QUICK_EXPORT QSGMaterialRhiShader : public QSGMaterialShader // ### Qt 6: remove inheritance
      quick/scenegraph/coreapi/qsgnode.h(180):                   DirtyState m_dirtyState; // Obsolete, remove in Qt 6
      quick/scenegraph/coreapi/qsgopenglvisualizer_p.h(63):  // ### Qt 6: remove
      quick/scenegraph/coreapi/qsgtexture.cpp(795):              // before Qt 6 because the simple QSGTexture ctor must be kept working.
      quick/scenegraph/coreapi/qsgtexture.h(88):                 virtual int textureId() const = 0; // ### Qt 6: remove
      quick/scenegraph/coreapi/qsgtexture.h(120):                // ### Qt 6: make these virtual
      quick/scenegraph/coreapi/qsgtexture.h(124):                // ### Qt 6: make this an argument for removedFromAtlas()
      quick/scenegraph/coreapi/qsgtexture_p.h(88):               // ### Qt 6: these should be virtuals in the public class instead
      quick/scenegraph/coreapi/qsgtexture_p.h(89):               virtual int comparisonKey() const; // ### Qt 6: pure virtual
      quick/scenegraph/coreapi/qsgtexture_p.h(92):               QRhiResourceUpdateBatch *workResourceUpdateBatch = nullptr; // ### Qt 6: remove
      quick/scenegraph/qsgdefaultrendercontext_p.h(96):              QOpenGLContext *openGLContext = nullptr; // ### Qt 6: remove
      quick/scenegraph/qsgrenderloop.cpp(87):                // and the related classes. To be cleaned up in Qt 6 when the direct
      quick/scenegraph/util/qsgengine.h(57):                 // ### Qt 6: Remove or redesign.
      quick/scenegraph/util/qsgimagenode.h(70):                  // ### Qt6: Add anisotropy support here, and possibly a virtual hook or another mean to extend this class.
      quick/scenegraph/util/qsgrhiatlastexture.cpp(468):                     QRhiResourceUpdateBatch *resUpd = workResourceUpdateBatch(); // ### Qt 6: should be an arg to this function
      quick/scenegraph/util/qsgsimplematerial.h(74):             // ### Qt 6: make both virtual and fix docs
      

      Also there are at least 2 classes that have \deprecated since 5.8, these should be undeprecated in fact:
      QSGSimpleRectNode
      QSGSimpleTextureNode

      The textureprovider example should be removed. It is using OpenGL directly to demonstrate compressed texture support, this is bad on multiple levels now (uses OpenGL directly, and re-implements something that is built-in since 5.12)

      There areĀ also some make-public TODOs in QSGRenderNodePrivate.

      Additionally, the 'windows' render loop's fate has to be decided: QTBUG-78578

        Attachments

          Issue Links

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

            Activity

              People

              Assignee:
              lagocs Laszlo Agocs
              Reporter:
              lagocs Laszlo Agocs
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: