| 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 |
|
|
- |