summaryrefslogtreecommitdiffstats
path: root/TODO
blob: 23cb6ddda3ec6d6e3b3dfdec76e0790b65020921 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
-focus handling (rather large change in qt-qml to this recently)
-key handling
-tiling modes in borderimage
-anywhere there is a XXX
-there have been numerous fixes in qt-qml (+ some API changes) that need to be integrated

- Remove the unused nodes in src/scenegraph/convenience, like SolidRectnode...
- Move QxParticles into its own plugin as it is not part of the QML core API
- Remove QxPaintedItem and friends from sourcertree..

- New directory structure perhaps?
  declarative/
              canvas/
                     view
              items/
                    all the qxitems
  scenegraph/
             coreapi/
                     node
                     material
                     renderer

             materials/
                      TextureMaterial
                      FlatColorMaterial
                      VertexColorMaterial

             nodes/
                   VertexColorRectNode
                   TextureColorRectNode




- Make QxImage push normalized source coords into TextureNode so we don't have to renormalize for
  every geometry change. It also makes a lot more sense, now that TextureNode doesn't know the
  size of the original pixmap anymore...

- Fix any reference to "// ### gunnar: port properly". Some of these will be pointless to port
  as the upgrade to new QML items is pretty close, so we'll have to evaluate those individually..

- Threaded texture uploads on Mac OS X seems pretty pointless. No matter what I try it seems
  like I get a hit of 25 ms in the main thread even though shark tells me that a lot of effort
  has been spent in the background thread too. From the shark traces it looks like the driver
  does a texture memcpy for the first glDrawElements() that uses the texture in the UI thread.
  I guess that only leaves PBO uploads, but that won't remedy the problem, I recon...
  EDIT: CLIENT_STORAGE + TEXTURE_STORAGE as SHARED + seems to kill ALL performance problems


- Scene Graph
  - Product Finalization:
    - API Review and proper d-ptr implementations where required
    - Documentation for all public classes
    - Autotests for all public classes
    - NodeInterfaces, Scene Graph structure, QSGContext, Texture classes, Renderer
    - graphical tests through lancelot
  - Solve the texture problem. Convenient base class, asynchronous uploads (threading?), atlasses?
  - Multimedia, through Qt Mobility or directly to native API's like gstreamer
    - We have phonon, but it doesn't work for devices
    - Gstreamer, would work on meego / linux
    - Lacking solution on symbian
  - Upgrade to proper QML Items
  - Examples for most common usecases
  - Solve the text problem
    - Investigate mipmapping
    - Investigate distance field
    - Investigate curve rendering on gpu
    - Scalable unhinted text layout
    - text as geometry over a physical size?
    - decide and implement at least one working solution
  - Optimal backends for SGX, N8 and others.
  - Pluggable vsync animation
    - Wayland based
    - eglSwapBuffers based
    - signal based?
  - ShaderEffectItem
    - Use source to grab static image of subtree for later use
    - Feed arbitrary texture values into shader effects?
  - Adaptation layer plugin infrastructure?
  - Outstanding bugs:
    - Vsync driver never pauses

- TextureManager:
  - In base class:
    - Caching structure
      - list of cached image->texture
      - list of about to upload textures
    - virtual sync upload
    - virtual partial upload...
    - threading enablers, though disabled by default
  - Known sub classes:
    - SGX: supports threaded async uploads + plain normal uploads
    - default: partial in-thread upload
    - mac: fast all sync uploads
    - dumb:
  - add tests for that createTexture does indeed return something...