Name Description Size Coverage
adaptations -
compressedtexture -
coreapi -
qsgadaptationlayer.cpp 14708 -
qsgadaptationlayer_p.h 18138 -
qsgbasicinternalimagenode.cpp 22843 -
qsgbasicinternalimagenode_p.h 2500 -
qsgbasicinternalrectanglenode.cpp 50581 -
qsgbasicinternalrectanglenode_p.h 2507 -
qsgcontext.cpp Comments about this class from Gunnar: The QSGContext class is right now two things.. The first is the adaptation layer and central storage ground for all the things in the scene graph, like textures and materials. This part really belongs inside the scene graph coreapi. The other part is the QML adaptation classes, like how to implement rectangle nodes. This is not part of the scene graph core API, but more part of the QML adaptation of scene graph. If we ever move the scene graph core API into its own thing, this class needs to be split in two. Right now its one because we're lazy when it comes to defining plugin interfaces.. 17762 -
qsgcontext_p.h 8334 -
qsgcontextplugin.cpp 8159 -
qsgcontextplugin_p.h 1918 -
qsgcurveabstractnode_p.h 905 -
qsgcurvefillnode.cpp 2235 -
qsgcurvefillnode_p.cpp 15198 -
qsgcurvefillnode_p.h 7971 -
qsgcurvefillnode_p_p.h 1424 -
qsgcurveglyphatlas.cpp extrusions 7052 -
qsgcurveglyphatlas_p.h 1701 -
qsgcurveglyphnode.cpp 5592 -
qsgcurveglyphnode_p.h 1858 -
qsgcurveprocessor.cpp Clever triangle overlap algorithm. Stack Overflow says: You can prove that the two triangles do not collide by finding an edge (out of the total 6 edges that make up the two triangles) that acts as a separating line where all the vertices of one triangle lie on one side and the vertices of the other triangle lie on the other side. If you can find such an edge then it means that the triangles do not intersect otherwise the triangles are colliding. 101402 -
qsgcurveprocessor_p.h 2387 -
qsgcurvestrokenode.cpp ! \class QSGCurveStrokeNode \inmodule QtQuick \internal 6403 -
qsgcurvestrokenode_p.cpp 10644 -
qsgcurvestrokenode_p.h 4683 -
qsgcurvestrokenode_p_p.h 3129 -
qsgdefaultcontext.cpp 10693 -
qsgdefaultcontext_p.h 2851 -
qsgdefaultglyphnode.cpp 8733 -
qsgdefaultglyphnode_p.cpp 24417 -
qsgdefaultglyphnode_p.h 1908 -
qsgdefaultglyphnode_p_p.h 3735 -
qsgdefaultinternalimagenode.cpp 5198 -
qsgdefaultinternalimagenode_p.h 1913 -
qsgdefaultinternalrectanglenode.cpp 3790 -
qsgdefaultinternalrectanglenode_p.h 1412 -
qsgdefaultrendercontext.cpp ! \class QSGDefaultRenderContext \inmodule QtQuick \internal 15572 -
qsgdefaultrendercontext_p.h 5542 -
qsgdefaultspritenode.cpp 8251 -
qsgdefaultspritenode_p.h 1485 -
qsgdistancefieldglyphnode.cpp 13942 -
qsgdistancefieldglyphnode_p.cpp 25678 -
qsgdistancefieldglyphnode_p.h 2773 -
qsgdistancefieldglyphnode_p_p.h 4433 -
qsgrenderloop.cpp - Uses one QRhi per window. (and so each window has its own QOpenGLContext or ID3D11Device(Context) etc.) - Animations are advanced using the standard timer (no custom animation driver is installed), so QML animations run as expected even when vsync throttling is broken. 31197 -
qsgrenderloop_p.h 3571 -
qsgrhidistancefieldglyphcache.cpp 24318 -
qsgrhidistancefieldglyphcache_p.h 3200 -
qsgrhiinternaltextnode.cpp f 5468 -
qsgrhiinternaltextnode_p.h 984 -
qsgrhilayer.cpp 18917 -
qsgrhilayer_p.h 2969 -
qsgrhishadereffectnode.cpp 42451 -
qsgrhishadereffectnode_p.h 4089 -
qsgrhisupport.cpp 58580 -
qsgrhisupport_mac.mm 6494 -
qsgrhisupport_p.h 3815 -
qsgrhitextureglyphcache.cpp 7975 -
qsgrhitextureglyphcache_p.h 2164 -
qsgthreadedrenderloop.cpp Overall design: There are two classes here. QSGThreadedRenderLoop and QSGRenderThread. All communication between the two is based on event passing and we have a number of custom events. In this implementation, the render thread is never blocked and the GUI thread will initiate a polishAndSync which will block and wait for the render thread to pick it up and release the block only after the render thread is done syncing. The reason for this is: 1. Clear blocking paradigm. We only have one real "block" point (polishAndSync()) and all blocking is initiated by GUI and picked up by Render at specific times based on events. This makes the execution deterministic. 2. Render does not have to interact with GUI. This is done so that the render thread can run its own animation system which stays alive even when the GUI thread is blocked doing i/o, object instantiation, QPainter-painting or any other non-trivial task. --- There is one thread per window and one QRhi instance per thread. --- The render thread has affinity to the GUI thread until a window is shown. From that moment and until the window is destroyed, it will have affinity to the render thread. (moved back at the end of run for cleanup). --- The render loop is active while any window is exposed. All visible windows are tracked, but only exposed windows are actually added to the render thread and rendered. That means that if all windows are obscured, we might end up cleaning up the SG and GL context (if all windows have disabled persistency). Especially for multiprocess, low-end systems, this should be quite important. 68856 -
qsgthreadedrenderloop_p.h 3167 -
shaders_ng -
util -