Re: [Development] New SceneGraph related issue

2013-09-13 Thread Sletta Gunnar
Ok, that stack trace doesn't tell me much as the interesting parameters are 
optimized out :/

If this was a general bug, I suspect the issue would be present in a lot of 
places though, so my immediate reaction is to point towards the emulator :) You 
can compare the buffer size used in uploadBatches() to the offsets and sizes 
used in the renderMergedBatch() function, but from what I can see, they are all 
correct.

There is no way to disable optimizations or use the old renderer. The new logic 
is here to stay.

cheers,
Gunnar


Fra: Tomasz Olszak [olszak.tom...@gmail.com]
Sendt: 12. september 2013 18:53
To: Sletta Gunnar
Cc: development@qt-project.org
Emne: Re: [Development] New SceneGraph related issue

I got stracktrace. It is as you predicted glDrwaElements. Is there any 
possibility to make some kind of workaround patch to make it work on emulator 
(I suppose it is emulator GL issue), perhabs by turning off some optimizations 
and so on? I would like to add such patch to rpm emulator package until problem 
will be fixed.

#0  0xb7fe1424 in __kernel_vsyscall ()
No symbol table info available.
#1  0xb69a0cc1 in raise () from /lib/libc.so.6
No symbol table info available.
#2  0xb69a40ee in abort () from /lib/libc.so.6
No symbol table info available.
#3  0xb6999888 in __assert_fail () from /lib/libc.so.6
No symbol table info available.
#4  0xb4866d2c in glGetBufferSubDataARB () from /usr/lib/host-gl/libGL.so.1.2
No symbol table info available.
#5  0xb4866d62 in glGetBufferSubData () from /usr/lib/host-gl/libGL.so.1.2
No symbol table info available.
#6  0xb6c20dec in glDrawElements () from /usr/lib/libGLESv2.so.1
No symbol table info available.
#7  0xb7cc3096 in QSGBatchRenderer::Renderer::renderMergedBatch (
this=0x84e6800, batch=0x84e8100)
at scenegraph/coreapi/qsgbatchrenderer.cpp:1863
draw = value optimized out
offset = value optimized out
i = value optimized out
e = value optimized out
__PRETTY_FUNCTION__ = void 
QSGBatchRenderer::Renderer::renderMergedBatch(const QSGBatchRenderer::Batch*)
---Type return to continue, or q return to quit---
sms = 0x84e5420
g = 0x84e7bbc
attrNames = value optimized out
gn = 0xb7fc2e5c
material = value optimized out
program = value optimized out
#8  0xb7cc4e3f in QSGBatchRenderer::Renderer::renderBatches (this=0x84e6800)
at scenegraph/coreapi/qsgbatchrenderer.cpp:2008
b = value optimized out
i = value optimized out
__PRETTY_FUNCTION__ = void QSGBatchRenderer::Renderer::renderBatches()
renderOpaque = value optimized out
renderAlpha = true
#9  0xb7cc6718 in QSGBatchRenderer::Renderer::render (this=0x84e6800)
at scenegraph/coreapi/qsgbatchrenderer.cpp:2168
__PRETTY_FUNCTION__ = virtual void 
QSGBatchRenderer::Renderer::render()
#10 0xb7cd5e10 in QSGRenderer::renderScene (this=0x84e6800, bindable=...)
at scenegraph/coreapi/qsgrenderer.cpp:274
profileFrames = value optimized out
bindTime = 0
renderTime = 0
---Type return to continue, or q return to quit---
__PRETTY_FUNCTION__ = void QSGRenderer::renderScene(const 
QSGBindable)
#11 0xb7cd60dd in QSGRenderer::renderScene (this=0x84e6800)
at scenegraph/coreapi/qsgrenderer.cpp:231
b = warning: RTTI symbol not found for class 
'QSGRenderer::renderScene()::B'
{QSGBindable = {
_vptr.QSGBindable = 0xb7fb4240}, No data fields}
#12 0xb7ce7e4c in QSGContext::renderNextFrame (this=0x845d620,
renderer=0x84e6800, fboId=0) at scenegraph/qsgcontext.cpp:367
No locals.
#13 0xb7d3273e in QQuickWindowPrivate::renderSceneGraph (this=0x848c870,
size=...) at items/qquickwindow.cpp:358
_qml_memory_scope = {pushed = false}
q = 0x845dc30
fboId = 0
devicePixelRatio = value optimized out
#14 0xb7d0bb04 in QSGGuiThreadRenderLoop::renderWindow (this=0x8498128,
window=0x845dc30) at scenegraph/qsgrenderloop.cpp:288
data = @0x8489ba4
current = value optimized out
alsoSwap = true
cd = 0x848c870
renderTime = 0
swapTime = value optimized out
---Type return to continue, or q return to quit---
__PRETTY_FUNCTION__ = void 
QSGGuiThreadRenderLoop::renderWindow(QQuickWindow*)
syncTime = 0
renderTimer = {t1 = -4611697219702095867, t2 = 55969188728}
profileFrames = false
#15 0xb7d0c4ee in QSGGuiThreadRenderLoop::exposureChanged (this=0x8498128,
window=0x845dc30) at scenegraph/qsgrenderloop.cpp:335
No locals.
#16 0xb7d319be in QQuickWindow::exposeEvent (this=0x845dc30)
at items/qquickwindow.cpp:214
d = value optimized out
#17 0xb71f6b94 in QWindow::event(QEvent*) () from /usr/lib/libQt5Gui.so.5
No symbol table info available.
#18 0xb7d3dcb4 in QQuickWindow::event (this=0x845dc30, e=0xb880)
at items/qquickwindow.cpp:1241
d = value optimized out
#19 0xb6ec782a

Re: [Development] New SceneGraph related issue

2013-09-12 Thread Sletta Gunnar

On Sep 11, 2013, at 11:12 PM, Tomasz Olszak olszak.tom...@gmail.com wrote:

 Hi,
 I have strange issue running most recent Qt sources on Tizen emulator (qemu 
 i586).
 Also I know that there are issues with supporting HW acceleration. For 
 example I need to export QML_BAD_GUI_RENDER_LOOP=1 because multithreaded 
 OpenGl is a little broken there.
 
 Anyway:
 When I run simple Qml App (ApplicationWindow with rectangle) I get:
 
 
 QtHelloWorld: client_gl.c:1585: glGetBufferSubDataARB: Assertion `offset + 
 size = buffer-size' failed.

do you have the rest of the stack trace? Though I suspect it would be coming 
from the glDrawElements call in renderMergedBatches.

 Aborted (core dumped)
 
 
 after setting (noopaque is significant because it prevents app from crash)
 QSG_RENDERER_DEBUG=render,build,change,upload,rootfs,dump,noalpha,noopaque,noclip

setting noopaque means for this example that you are not drawing anything, so 
it greatly reduces the stuff that the renderer does :)

 
 I get:
 
 Batch thresholds: nodes: 64  vertices: 1024 
 Using buffer strategy: static 
 dirty: Added RootNode 0x9ba3a58 dirty= 0  ) 
 dirty: Matrix TransformNode( 0x9ba3a90 identity dirty= 0  ) 
 dirty: Added Node( 0x9bc79b0 dirty= 0 flags= 1  ) 
 dirty: Added TransformNode( 0x9bc73e0 identity dirty= 0  ) 
 Updater::updateStates() 
  - nodes have been added 
  - transforms have changed 
 
 
  RootNode 0x9ba3a58 dirty= 0  ) 
TransformNode( 0x9ba3a90 identity dirty= 0  ) 
  Node( 0x9bc79b0 dirty= 0 flags= 1  ) 
TransformNode( 0x9bc73e0 identity dirty= 0  ) 
  Node( 0x9bc72d8 dirty= 0 flags= 1  ) 
TransformNode( 0x9bc7498 identity dirty= 0  ) 
  Node( 0x9bc76c0 dirty= 0 flags= 1  ) 
TransformNode( 0x9bc76f0 identity dirty= 0  ) 
  Node( 0x9bc7808 dirty= 0 flags= 1  ) 
GeometryNode( 0x9bc7838 strip #V: 4 #I: 4 x1= 0 y1= 0 x2= 
 100 y2= 100 materialtype= 0xb77093e4 ) dirty= 0 
TransformNode( 0x9bc7550 identity dirty= 0  ) 
  Node( 0x9bc77a8 dirty= 0 flags= 1  ) 
TransformNode( 0x9bc7608 translate 0 600 0 dirty= 0  ) 
  Node( 0x9bc77d8 dirty= 0 flags= 1  ) 
 Renderer::render() QSGRenderer(0x9bc6528) rebuild: full 
 Opaque render lists (complete) : 
  - element: 0x9bc79e0  batch: 0x0  node: GeometryNode( 0x9bc7838 strip #V: 4 
 #I: 4 x1= 0 y1= 0 x2= 100 y2= 100 materialtype= 0xb77093e4 ) dirty= 0  order: 
 1 
 Alpha render list: (complete) : 
 Opaque Batches: 
  - Batch  0 0x9bc7ff8 upload  root: 0x0 
- element: 0x9bc79e0  node: GeometryNode( 0x9bc7838 strip #V: 4 #I: 4 x1= 
 0 y1= 0 x2= 100 y2= 100 materialtype= 0xb77093e4 ) dirty= 0 1 
 Alpha Batches: 
 Uploading Opaque Batches: 
  - batch 0x9bc7ff8  first: 0x9bc79e0  root: 0x0  merged: 1  positionAttribute 
 0  vbo: 0 : 76 
   - uploading element: 0x9bc79e0 GeometryNode( 0x9bc7838 strip #V: 4 #I: 4 
 x1= 0 y1= 0 x2= 100 y2= 100 materialtype= 0xb77093e4 ) dirty= 0 0x9bc7e78 48 
 64 
   -- Vertex Data, count: 4  -  12 bytes/vertex 
   --- 0: 0:(2,float * 100 0 ) 1:(4,ubyte 255 0 0 255 )  Z:(0)
   --- 1: 0:(2,float * 0 0 ) 1:(4,ubyte 255 0 0 255 )  Z:(0)
   --- 2: 0:(2,float * 100 100 ) 1:(4,ubyte 255 0 0 255 )  Z:(0)
   --- 3: 0:(2,float * 0 100 ) 1:(4,ubyte 255 0 0 255 )  Z:(0)
   -- Index Data, count: 6 
   ---  0 0 1 2 3 3 
   -- DrawSet: indexCount: 6  vertices: 0  z: 48  indices: 64 
   --- vertex/index buffers unmapped, batch upload completed... 
 Uploading Alpha Batches: 
 Rendering:
  - Opaque: 1 nodes in 1 batches...
  - Alpha: 0 nodes in 0 batches...
  - Breakdown of render time: preprocess=0, updates=0, binding=0, render=10, 
 total=11
 - Breakdown of frame time; sync: 0 ms render: 11 ms swap: 33 ms total: 46 ms 
 time since last frame: 1 ms 
 dirty: Matrix TransformNode( 0x9bc7498 identity dirty= 0  ) 
 dirty: Matrix TransformNode( 0x9bc7608 translate 0 1280 0 dirty= 0  ) 
 dirty: Matrix TransformNode( 0x9bc73e0 identity dirty= 0  ) 
 dirty: Matrix TransformNode( 0x9ba3a90 identity dirty= 0  ) 
 Updater::updateStates() 
  - transforms have changed 
 
 
  RootNode 0x9ba3a58 dirty= 0  ) 
TransformNode( 0x9ba3a90 identity dirty= 0  ) 
  Node( 0x9bc79b0 dirty= 0 flags= 1  ) 
TransformNode( 0x9bc73e0 identity dirty= 0  ) 
  Node( 0x9bc72d8 dirty= 0 flags= 1  ) 
TransformNode( 0x9bc7498 identity dirty= 0  ) 
  Node( 0x9bc76c0 dirty= 0 flags= 1  ) 
TransformNode( 0x9bc76f0 identity dirty= 0  ) 
  Node( 0x9bc7808 dirty= 0 flags= 1  ) 
GeometryNode( 0x9bc7838 strip #V: 4 #I: 4 x1= 0 y1= 0 x2= 
 100 y2= 100 materialtype= 0xb77093e4 ) dirty= 0 
TransformNode( 0x9bc7550 identity dirty= 0  ) 
  Node( 0x9bc77a8 dirty= 0 flags= 1  ) 
TransformNode( 0x9bc7608 translate 0 1280 0 dirty= 0  ) 
  Node( 0x9bc77d8 dirty= 0 flags= 1  ) 
 Renderer::render() QSGRenderer(0x9bc6528) rebuild: none 
 

Re: [Development] New SceneGraph related issue

2013-09-12 Thread Tomasz Olszak
2013/9/12 Sletta Gunnar gunnar.sle...@digia.com


 On Sep 11, 2013, at 11:12 PM, Tomasz Olszak olszak.tom...@gmail.com
 wrote:

  Hi,
  I have strange issue running most recent Qt sources on Tizen emulator
 (qemu i586).
  Also I know that there are issues with supporting HW acceleration. For
 example I need to export QML_BAD_GUI_RENDER_LOOP=1 because multithreaded
 OpenGl is a little broken there.
 
  Anyway:
  When I run simple Qml App (ApplicationWindow with rectangle) I get:
 
  
  QtHelloWorld: client_gl.c:1585: glGetBufferSubDataARB: Assertion `offset
 + size = buffer-size' failed.

 do you have the rest of the stack trace? Though I suspect it would be
 coming from the glDrawElements call in renderMergedBatches.

 I will get and send the stacktrace soon, It was difficult to get because
of SMACK configuration.


  Aborted (core dumped)
 
 
  after setting (noopaque is significant because it prevents app from
 crash)
 
 QSG_RENDERER_DEBUG=render,build,change,upload,rootfs,dump,noalpha,noopaque,noclip

 setting noopaque means for this example that you are not drawing anything,
 so it greatly reduces the stuff that the renderer does :)

 Ok :)

Thanks. I will be back with more gdb output.

-- 
regards / pozdrawiam, Tomasz Olszak
Qt for Tizen | http://qt-project.org/wiki/Tizen
Qt Certified Developer | http://qt-project.org
http://linkedin.com/in/tolszak
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] New SceneGraph related issue

2013-09-12 Thread Tomasz Olszak
I got stracktrace. It is as you predicted glDrwaElements. Is there any
possibility to make some kind of workaround patch to make it work on
emulator (I suppose it is emulator GL issue), perhabs by turning off some
optimizations and so on? I would like to add such patch to rpm emulator
package until problem will be fixed.

#0  0xb7fe1424 in __kernel_vsyscall ()
No symbol table info available.
#1  0xb69a0cc1 in raise () from /lib/libc.so.6
No symbol table info available.
#2  0xb69a40ee in abort () from /lib/libc.so.6
No symbol table info available.
#3  0xb6999888 in __assert_fail () from /lib/libc.so.6
No symbol table info available.
#4  0xb4866d2c in glGetBufferSubDataARB () from
/usr/lib/host-gl/libGL.so.1.2
No symbol table info available.
#5  0xb4866d62 in glGetBufferSubData () from /usr/lib/host-gl/libGL.so.1.2
No symbol table info available.
#6  0xb6c20dec in glDrawElements () from /usr/lib/libGLESv2.so.1
No symbol table info available.
#7  0xb7cc3096 in QSGBatchRenderer::Renderer::renderMergedBatch (
this=0x84e6800, batch=0x84e8100)
at scenegraph/coreapi/qsgbatchrenderer.cpp:1863
draw = value optimized out
offset = value optimized out
i = value optimized out
e = value optimized out
__PRETTY_FUNCTION__ = void
QSGBatchRenderer::Renderer::renderMergedBatch(const
QSGBatchRenderer::Batch*)
---Type return to continue, or q return to quit---
sms = 0x84e5420
g = 0x84e7bbc
attrNames = value optimized out
gn = 0xb7fc2e5c
material = value optimized out
program = value optimized out
#8  0xb7cc4e3f in QSGBatchRenderer::Renderer::renderBatches (this=0x84e6800)
at scenegraph/coreapi/qsgbatchrenderer.cpp:2008
b = value optimized out
i = value optimized out
__PRETTY_FUNCTION__ = void
QSGBatchRenderer::Renderer::renderBatches()
renderOpaque = value optimized out
renderAlpha = true
#9  0xb7cc6718 in QSGBatchRenderer::Renderer::render (this=0x84e6800)
at scenegraph/coreapi/qsgbatchrenderer.cpp:2168
__PRETTY_FUNCTION__ = virtual void
QSGBatchRenderer::Renderer::render()
#10 0xb7cd5e10 in QSGRenderer::renderScene (this=0x84e6800, bindable=...)
at scenegraph/coreapi/qsgrenderer.cpp:274
profileFrames = value optimized out
bindTime = 0
renderTime = 0
---Type return to continue, or q return to quit---
__PRETTY_FUNCTION__ = void QSGRenderer::renderScene(const
QSGBindable)
#11 0xb7cd60dd in QSGRenderer::renderScene (this=0x84e6800)
at scenegraph/coreapi/qsgrenderer.cpp:231
b = warning: RTTI symbol not found for class
'QSGRenderer::renderScene()::B'
{QSGBindable = {
_vptr.QSGBindable = 0xb7fb4240}, No data fields}
#12 0xb7ce7e4c in QSGContext::renderNextFrame (this=0x845d620,
renderer=0x84e6800, fboId=0) at scenegraph/qsgcontext.cpp:367
No locals.
#13 0xb7d3273e in QQuickWindowPrivate::renderSceneGraph (this=0x848c870,
size=...) at items/qquickwindow.cpp:358
_qml_memory_scope = {pushed = false}
q = 0x845dc30
fboId = 0
devicePixelRatio = value optimized out
#14 0xb7d0bb04 in QSGGuiThreadRenderLoop::renderWindow (this=0x8498128,
window=0x845dc30) at scenegraph/qsgrenderloop.cpp:288
data = @0x8489ba4
current = value optimized out
alsoSwap = true
cd = 0x848c870
renderTime = 0
swapTime = value optimized out
---Type return to continue, or q return to quit---
__PRETTY_FUNCTION__ = void
QSGGuiThreadRenderLoop::renderWindow(QQuickWindow*)
syncTime = 0
renderTimer = {t1 = -4611697219702095867, t2 = 55969188728}
profileFrames = false
#15 0xb7d0c4ee in QSGGuiThreadRenderLoop::exposureChanged (this=0x8498128,
window=0x845dc30) at scenegraph/qsgrenderloop.cpp:335
No locals.
#16 0xb7d319be in QQuickWindow::exposeEvent (this=0x845dc30)
at items/qquickwindow.cpp:214
d = value optimized out
#17 0xb71f6b94 in QWindow::event(QEvent*) () from /usr/lib/libQt5Gui.so.5
No symbol table info available.
#18 0xb7d3dcb4 in QQuickWindow::event (this=0x845dc30, e=0xb880)
at items/qquickwindow.cpp:1241
d = value optimized out
#19 0xb6ec782a in QCoreApplicationPrivate::notify_helper (this=0x8055458,
receiver=0x845dc30, event=0xb880) at kernel/qcoreapplication.cpp:986
No locals.
#20 0xb6ec78cb in QCoreApplication::notify (this=0xbc80,
receiver=0x845dc30, event=0xb880) at kernel/qcoreapplication.cpp:931
d = 0x8055458
__PRETTY_FUNCTION__ = virtual bool
QCoreApplication::notify(QObject*, Q---Type return to continue, or q
return to quit---
Event*)
#21 0xb71e643b in QGuiApplication::notify(QObject*, QEvent*) ()
   from /usr/lib/libQt5Gui.so.5
No symbol table info available.
#22 0xb6ec752b in QCoreApplication::notifyInternal (this=0xbc80,
receiver=0x845dc30, event=0xb880) at kernel/qcoreapplication.cpp:869
threadData = 0x80545b0
result = false
  

[Development] New SceneGraph related issue

2013-09-11 Thread Tomasz Olszak
Hi,
I have strange issue running most recent Qt sources on Tizen emulator (qemu
i586).
Also I know that there are issues with supporting HW acceleration. For
example I need to export QML_BAD_GUI_RENDER_LOOP=1 because multithreaded
OpenGl is a little broken there.

Anyway:
When I run simple Qml App (ApplicationWindow with rectangle) I get:


QtHelloWorld: client_gl.c:1585: glGetBufferSubDataARB: Assertion `offset +
size = buffer-size' failed.
Aborted (core dumped)


after setting (noopaque is significant because it prevents app from crash)
QSG_RENDERER_DEBUG=render,build,change,upload,rootfs,dump,noalpha,noopaque,noclip

I get:

Batch thresholds: nodes: 64  vertices: 1024
Using buffer strategy: static
dirty: Added RootNode 0x9ba3a58 dirty= 0  )
dirty: Matrix TransformNode( 0x9ba3a90 identity dirty= 0  )
dirty: Added Node( 0x9bc79b0 dirty= 0 flags= 1  )
dirty: Added TransformNode( 0x9bc73e0 identity dirty= 0  )
Updater::updateStates()
 - nodes have been added
 - transforms have changed


 RootNode 0x9ba3a58 dirty= 0  )
   TransformNode( 0x9ba3a90 identity dirty= 0  )
 Node( 0x9bc79b0 dirty= 0 flags= 1  )
   TransformNode( 0x9bc73e0 identity dirty= 0  )
 Node( 0x9bc72d8 dirty= 0 flags= 1  )
   TransformNode( 0x9bc7498 identity dirty= 0  )
 Node( 0x9bc76c0 dirty= 0 flags= 1  )
   TransformNode( 0x9bc76f0 identity dirty= 0  )
 Node( 0x9bc7808 dirty= 0 flags= 1  )
   GeometryNode( 0x9bc7838 strip #V: 4 #I: 4 x1= 0 y1= 0
x2= 100 y2= 100 materialtype= 0xb77093e4 ) dirty= 0
   TransformNode( 0x9bc7550 identity dirty= 0  )
 Node( 0x9bc77a8 dirty= 0 flags= 1  )
   TransformNode( 0x9bc7608 translate 0 600 0 dirty= 0  )
 Node( 0x9bc77d8 dirty= 0 flags= 1  )
Renderer::render() QSGRenderer(0x9bc6528) rebuild: full
Opaque render lists (complete) :
 - element: 0x9bc79e0  batch: 0x0  node: GeometryNode( 0x9bc7838 strip #V:
4 #I: 4 x1= 0 y1= 0 x2= 100 y2= 100 materialtype= 0xb77093e4 ) dirty= 0
 order: 1
Alpha render list: (complete) :
Opaque Batches:
 - Batch  0 0x9bc7ff8 upload  root: 0x0
   - element: 0x9bc79e0  node: GeometryNode( 0x9bc7838 strip #V: 4 #I: 4
x1= 0 y1= 0 x2= 100 y2= 100 materialtype= 0xb77093e4 ) dirty= 0 1
Alpha Batches:
Uploading Opaque Batches:
 - batch 0x9bc7ff8  first: 0x9bc79e0  root: 0x0  merged: 1
 positionAttribute 0  vbo: 0 : 76
  - uploading element: 0x9bc79e0 GeometryNode( 0x9bc7838 strip #V: 4 #I: 4
x1= 0 y1= 0 x2= 100 y2= 100 materialtype= 0xb77093e4 ) dirty= 0 0x9bc7e78
48 64
  -- Vertex Data, count: 4  -  12 bytes/vertex
  --- 0: 0:(2,float * 100 0 ) 1:(4,ubyte 255 0 0 255 )  Z:(0)
  --- 1: 0:(2,float * 0 0 ) 1:(4,ubyte 255 0 0 255 )  Z:(0)
  --- 2: 0:(2,float * 100 100 ) 1:(4,ubyte 255 0 0 255 )  Z:(0)
  --- 3: 0:(2,float * 0 100 ) 1:(4,ubyte 255 0 0 255 )  Z:(0)
  -- Index Data, count: 6
  ---  0 0 1 2 3 3
  -- DrawSet: indexCount: 6  vertices: 0  z: 48  indices: 64
  --- vertex/index buffers unmapped, batch upload completed...
Uploading Alpha Batches:
Rendering:
 - Opaque: 1 nodes in 1 batches...
 - Alpha: 0 nodes in 0 batches...
 - Breakdown of render time: preprocess=0, updates=0, binding=0, render=10,
total=11
- Breakdown of frame time; sync: 0 ms render: 11 ms swap: 33 ms total: 46
ms time since last frame: 1 ms
dirty: Matrix TransformNode( 0x9bc7498 identity dirty= 0  )
dirty: Matrix TransformNode( 0x9bc7608 translate 0 1280 0 dirty= 0  )
dirty: Matrix TransformNode( 0x9bc73e0 identity dirty= 0  )
dirty: Matrix TransformNode( 0x9ba3a90 identity dirty= 0  )
Updater::updateStates()
 - transforms have changed


 RootNode 0x9ba3a58 dirty= 0  )
   TransformNode( 0x9ba3a90 identity dirty= 0  )
 Node( 0x9bc79b0 dirty= 0 flags= 1  )
   TransformNode( 0x9bc73e0 identity dirty= 0  )
 Node( 0x9bc72d8 dirty= 0 flags= 1  )
   TransformNode( 0x9bc7498 identity dirty= 0  )
 Node( 0x9bc76c0 dirty= 0 flags= 1  )
   TransformNode( 0x9bc76f0 identity dirty= 0  )
 Node( 0x9bc7808 dirty= 0 flags= 1  )
   GeometryNode( 0x9bc7838 strip #V: 4 #I: 4 x1= 0 y1= 0
x2= 100 y2= 100 materialtype= 0xb77093e4 ) dirty= 0
   TransformNode( 0x9bc7550 identity dirty= 0  )
 Node( 0x9bc77a8 dirty= 0 flags= 1  )
   TransformNode( 0x9bc7608 translate 0 1280 0 dirty= 0  )
 Node( 0x9bc77d8 dirty= 0 flags= 1  )
Renderer::render() QSGRenderer(0x9bc6528) rebuild: none
Uploading Opaque Batches:
 - batch 0x9bc7ff8  first: 0x9bc79e0  root: 0x0  merged: 1
 positionAttribute 0  vbo: 1 : 76
  - uploading element: 0x9bc79e0 GeometryNode( 0x9bc7838 strip #V: 4 #I: 4
x1= 0 y1= 0 x2= 100 y2= 100 materialtype= 0xb77093e4 ) dirty= 0 0x9bc7e78
48 64
  -- Vertex Data, count: 4  -  12 bytes/vertex
  --- 0: 0:(2,float * 100 0 ) 1:(4,ubyte 255 0 0 255 )  Z:(0)
  --- 1: 0:(2,float * 0 0 ) 1:(4,ubyte 255 0 0 255 )  Z:(0)
  --- 2: 0:(2,float * 100 100 ) 1:(4,ubyte 255 0 0 255 )  Z:(0)
  --- 3: 0:(2,float * 0