Qml very slow
-
Hi,
I'm running Qt 5.3.2 under Debian Jessie on this machine:http://www.advantech.it/products/todatasheet.aspx?Mod_ID=4be6fe03-9aa1-4097-a9b1-8977a7a49289
The qml rendering is very slow. I mean a page with a couple of Text items take over 2 seconds to be rendered. I see each character drawn one by one. Of course there's something wrong.
What should I check to find out what's happening?
Thanks -
Are there any warnings on a console when you start the app?
-
Nothing.
I compile in release mode.I noticed something I don't know if it's related. Anyway, the output of qtchooser -l is:
@
4
5
default
qt4-i386-linux-gnu
qt4
qt5-i385-linux-gnu
qt5
@There is a /usr/bin/qmlviewer which seems to a symlink to qtchooser.
But when I invoke it from console I get:@
qmlviewer: could not exec '/usr/lib/i386-linux-gnu/qt5/bin/qmlviewer': No such file or directory
@ -
It seems the problem raises when I try to show the qml page in fullscreen:
@
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);QtQuick2ApplicationViewer viewer; viewer.setMainQmlFile(QStringLiteral("qml/CuddleCore/main.qml")); viewer.showFullscreen(); return app.exec();
}
@If I write viewer.show() it's a lot better. Any idea why? I must show the qml page in fullscreen...
-
IIRC( If I Recall Correctly) QML requires OpenGL.
Have you tried too run any OpenGL app on full screen? -
I have the package libqt5opengl5 installed.
Launching/usr/lib/i386-linux-gnu/qt5/examples/quick/scenegraph/textureinthread/textureinthread
says:
bq. Platform does not support threaded OpenGL needed by this example
Is there any other debian package I should install?
-
I found:
/usr/lib/i386-linux-gnu/qt5/examples/quick/scenegraph/openglunderqml/
It works, but with a bad frame rate. I see only few step during the rendering.
-
I also tried to remove all libqt5* debian packages and to install Qt5 from online installer.
It's the same :-(
It takes 1-2 seconds to change the color of the rectangle in this simple page:@
import QtQuick 2.3Rectangle {
id: root
width: 1024
height: 768Component.onCompleted: { root.state = "normal" } states: [ State { name: "normal" PropertyChanges { target: btn; color: "yellow" } }, State { name: "rollover" PropertyChanges { target: btn; color: "red" } } ] Rectangle { id: btn width: 600 height: 300 MouseArea { id: mouseArea anchors.fill: parent hoverEnabled: true onEntered: root.state = "rollover" onExited: root.state = "normal" } }
}
@ -
Sounds like your OpenGL support is pretty poor. What does it say about your when you run with QSG_INFO=1 in the environment? Does it end up using llvmpipe for instance?
What about Qt's opengl examples? Like qtbase/examples/gui/openglwindow. Does that also run at an equally slow frame rate?
-
Here the output:
@
QML debugging is enabled. Only use this in a safe environment.
QSG: basic render loop
QSG: texture atlas dimensions: 2048 x 1024
R/G/B/A Buffers: 8 8 8 8
Depth Buffer: 24
Stencil Buffer: 8
Samples: -1
GL_VENDOR: Intel Open Source Technology Center
GL_RENDERER: Mesa DRI Intel(R) IGD x86/MMX/SSE2
GL_VERSION: 1.4 Mesa 10.2.6
GL_EXTENSIONS: GL_EXT_texture_object GL_OES_read_format GL_ARB_occlusion_query GL_EXT_blend_color GL_EXT_texture_env_dot3 GL_KHR_debug GL_EXT_texture_edge_clamp GL_EXT_compiled_vertex_array GL_EXT_texture_lod_bias GL_EXT_texture GL_EXT_texture_env_combine GL_ARB_texture_env_dot3 GL_3DFX_texture_compression_FXT1 GL_EXT_secondary_color GL_ATI_blend_equation_separate GL_ARB_draw_elements_base_vertex GL_ARB_multisample GL_ARB_pixel_buffer_object GL_INGR_blend_func_separate GL_EXT_packed_depth_stencil GL_ARB_vertex_array_object GL_IBM_texture_mirrored_repeat GL_SUN_multi_draw_arrays GL_EXT_shadow_funcs GL_ARB_half_float_pixel GL_ARB_vertex_shader GL_ARB_separate_shader_objects GL_ARB_draw_buffers GL_EXT_subtexture GL_EXT_texture_env_add GL_NV_texture_env_combine4 GL_ARB_ES2_compatibility GL_ARB_invalidate_subdata GL_EXT_framebuffer_blit GL_ARB_explicit_attrib_location GL_ARB_clear_buffer_object GL_ARB_multi_bind GL_NV_light_max_exponent GL_AMD_shader_trinary_minmax GL_EXT_rescale_normal GL_NV_blend_square GL_ATI_draw_buffers GL_EXT_vertex_array GL_NV_packed_depth_stencil GL_EXT_separate_specular_color GL_EXT_blend_subtract GL_SGIS_generate_mipmap GL_EXT_bgra GL_EXT_point_parameters GL_ARB_copy_buffer GL_EXT_fog_coord GL_ARB_sync GL_ARB_vertex_program GL_ARB_internalformat_query GL_IBM_rasterpos_clip GL_ARB_fragment_shader GL_ARB_texture_rectangle GL_EXT_blend_minmax GL_EXT_texture_compression_dxt1 GL_EXT_texture_rectangle GL_EXT_provoking_vertex GL_ARB_point_parameters GL_ARB_shading_language_100 GL_ARB_fragment_program GL_SGIS_texture_edge_clamp GL_ARB_sampler_objects GL_MESA_window_pos GL_ARB_texture_env_crossbar GL_MESA_ycbcr_texture GL_ATI_separate_stencil GL_ARB_vertex_attrib_binding GL_ARB_shadow GL_ARB_window_pos GL_ARB_point_sprite GL_EXT_texture3D GL_ARB_vertex_buffer_object GL_ARB_texture_env_combine GL_ARB_provoking_vertex GL_ANGLE_texture_compression_dxt3 GL_EXT_stencil_two_side GL_ANGLE_texture_compression_dxt5 GL_APPLE_vertex_array_object GL_OES_EGL_image GL_EXT_texture_sRGB GL_NV_texture_rectangle GL_ARB_robustness GL_EXT_stencil_wrap GL_EXT_copy_texture GL_EXT_draw_range_elements GL_ARB_texture_non_power_of_two GL_ARB_texture_mirrored_repeat GL_ARB_texture_border_clamp GL_EXT_pixel_buffer_object GL_EXT_packed_pixels GL_EXT_multi_draw_arrays GL_EXT_texture_filter_anisotropic GL_EXT_texture_sRGB_decode GL_IBM_multimode_draw_arrays GL_ARB_texture_cube_map GL_ARB_get_program_binary GL_ARB_texture_storage GL_EXT_framebuffer_object GL_EXT_texture_cube_map GL_ARB_debug_output GL_MESA_pack_invert GL_ARB_shader_objects GL_ARB_transpose_matrix GL_EXT_abgr GL_ARB_texture_env_add GL_ARB_map_buffer_alignment GL_ARB_multitexture GL_EXT_texture_compression_s3tc GL_EXT_polygon_offset GL_ARB_texture_compression GL_EXT_blend_equation_separate GL_SGIS_texture_lod GL_ATI_texture_env_combine3 GL_ARB_map_buffer_range GL_EXT_gpu_program_parameters GL_APPLE_packed_pixels GL_APPLE_object_purgeable GL_EXT_blend_func_separate GL_NV_texgen_reflection GL_ARB_framebuffer_object GL_S3_s3tc GL_ARB_depth_texture GL_SGIS_texture_border_clamp
@The openglwindow example works fine. Also the examples in opengl directory runs smoothly (I don't know how to measure the fps, but I don't see any problems).
I'm pretty confused.
If I launch the example quick/animation and I select the "easing" page, I see the rounded squares jump directly from the left to the right, sometimes with only 1-2 steps in between.
The same happens with quick/particles/customparticles: I estimated 3-4 fps.
Also the examples in qml/ (launched as qml filename) renders very slow.
Renders and reacts slowy. I mean I notice the events (i.e. a mouse click) leads to the action related after about 1 second.I investigate a bit further with the qml page above and it seems the click is handled immediately (I see a message in console and also the qml profiler doesn't show any time spent in the event handler).
But the redraw of the window, to change the color of the rect, take a huge time. -
Have you solved the issue? I came across exactly the same thing on one PanelPC running Ubuntu and having Intel graphics.
Old GraphicsView examples work fine - "Animated Tiles" runs very smoothly. Also the "Cube" example is very smooth.
But any QML rendering is just abnormally slow - not possible to use at all.