On a ARM tablet device, it's SOC is RK3399, it's GPU drive power by libmali. The libmali only support EGL and GLES, Don't support desktop opengl.
In the environment, run the "qmlscene" command will crash at get a EGLConfig. The following is command log:
// Not limited the
"test.qml"
file, any qml file can be used
user@9dd487314198:~/zccrs$ QT_XCB_GL_INTEGRATION=xcb_egl qmlscene ./test.qml --gles
LIBGL: Initialising gl4es
LIBGL: v1.1.5 built on Dec 30 2020 08:00:08
LIBGL: Using GLES 2.0 backend
LIBGL: loaded: libGLESv2.so
LIBGL: loaded: libEGL.so
LIBGL: Using GLES 2.0 backend
arm_release_ver of this libmali is
'r18p0-01rel0'
, rk_so_ver is
'4'
.LIBGL: Hardware Full NPOT detected and used
LIBGL: Extension GL_EXT_blend_minmax detected and used
LIBGL: FBO are
in
core, and so used
LIBGL: PointSprite are
in
core, and so used
LIBGL: CubeMap are
in
core, and so used
LIBGL: BlendColor is
in
core, and so used
LIBGL: Blend Substract is
in
core, and so used
LIBGL: Blend Function and Equation Separation is
in
core, and so used
LIBGL: Texture Mirrored Repeat is
in
core, and so used
LIBGL: Extension GL_OES_mapbuffer detected
LIBGL: Extension GL_OES_element_index_uint detected and used
LIBGL: Extension GL_OES_packed_depth_stencil detected and used
LIBGL: Extension GL_OES_depth24 detected and used
LIBGL: Extension GL_OES_rgb8_rgba8 detected and used
LIBGL: Extension GL_EXT_texture_format_BGRA8888 detected and used
LIBGL: Extension GL_OES_depth_texture detected and used
LIBGL: Extension GL_OES_texture_stencil8 detected and used
LIBGL: Extension GL_EXT_texture_rg detected and used
LIBGL: Extension GL_EXT_color_buffer_float detected and used
LIBGL: Extension GL_EXT_color_buffer_half_float detected and used
LIBGL: high precision float
in
fragment shader available and used
LIBGL: Max vertex attrib: 16
LIBGL: Extension GL_OES_standard_derivatives detected and used
LIBGL: Max texture size: 8192
LIBGL: Max Varying Vector: 15
LIBGL: Texture Units: 16/16 (hardware: 16), Max lights: 8, Max planes: 6
LIBGL: Max Color Attachments: 1 / Draw buffers: 1
LIBGL: Hardware vendor is ARM
LIBGL: GLSL 300 es supported
LIBGL: GLSL 310 es supported and used
LIBGL: sRGB surface supported
LIBGL: EGLImage from Pixmap supported
LIBGL: EGLImage to Texture2D supported
LIBGL: EGLImage to RenderBuffer supported
LIBGL: Targeting OpenGL 2.1
LIBGL: NPOT texture handled
in
hardware
LIBGL: Not trying to batch small subsequent glDrawXXXX
LIBGL: try to use VBO
LIBGL: glXMakeCurrent FBO workaround enabled
LIBGL: FBO workaround
for
using binded texture enabled
LIBGL: Force texture
for
Attachment color0 on FBO
LIBGL: Hack to trigger a SwapBuffers when a Full Framebuffer Blit on default FBO is
done
LIBGL: glX Will try to recycle EGL Surface
LIBGL: Current folder is:/home/user/zccrs
qt.qpa.xcb: Has MIT-SHM : true
qt.qpa.xcb: Has MIT-SHM FD : true
qt.qpa.xcb: shmget() failed (38: Function not implemented)
for
size 1
qt.qpa.xcb: failed to create System V shared memory segment (remote X11 connection?), disabling SHM
qt.qpa.screen: Failed to parse EDID data
for
output
"DSI-1"
edid data: ""
qt.qpa.screen: adding QXcbScreen(0x557a19ace0, name=
"DSI-1"
, geometry=1536x2048+0+0, availableGeometry=1536x2048+0+0, devicePixelRatio=1.0, logicalDpi=QPair(96.0,96.0), physicalSize=405.0x540.0mm, screenNumber=0, virtualSize=1536x2048 (1536.0x2048.0mm), orientation=Qt::ScreenOrientation(LandscapeOrientation), depth=24, refreshRate=59.0, root=39d, windowManagerName=
"KWin"
) (Primary: true )
qt.qpa.screen: primary output is
"DSI-1"
qt.qpa.input: Plugin build with support
for
XInput 2 version up to 2.2
qt.qpa.input: Using XInput version 2.2
qt.qpa.input.devices: input device Virtual core XTEST pointer ID 4
qt.qpa.input.devices: has 10 buttons
qt.qpa.input.devices: has valuator
"Rel X"
recognized? true
qt.qpa.input.devices: has valuator
"Rel Y"
recognized? true
qt.qpa.input.devices: it's a scrolling device
qt.qpa.input.devices: input device ft5x26_ts ID 9
qt.qpa.input.devices: has 7 buttons
qt.qpa.input.devices: has valuator
"Abs MT Position X"
recognized? true
qt.qpa.input.devices: has valuator
"Abs MT Position Y"
recognized? true
qt.qpa.input.devices: has valuator
"Rel Horiz Scroll"
recognized? true
qt.qpa.input.devices: has valuator
"Rel Vert Scroll"
recognized? true
qt.qpa.input.devices: it's a scrolling device
qt.qpa.input.devices: has touch class with mode 1
qt.qpa.input.devices: it's a touchscreen with type 0 capabilities 0x21 max touch points 10
qt.qpa.input.devices: input device Wacom I2C Digitizer stylus ID 10
qt.qpa.input.devices: has 7 buttons
qt.qpa.input.devices: it's a keyboard
qt.qpa.input.devices: has valuator
"Abs X"
recognized? true
qt.qpa.input.devices: has valuator
"Abs Y"
recognized? true
qt.qpa.input.devices: has valuator
"Abs Pressure"
recognized? true
qt.qpa.input.devices: has valuator
"Abs Tilt X"
recognized? true
qt.qpa.input.devices: has valuator
"Abs Tilt Y"
recognized? true
qt.qpa.input.devices: has valuator
"Abs Wheel"
recognized? true
qt.qpa.input.devices: it's a tablet with pointer type
"pen"
qt.qpa.input.devices: it's a scrolling device
qt.qpa.input.devices: input device Wacom I2C Digitizer eraser ID 14
qt.qpa.input.devices: has 7 buttons
qt.qpa.input.devices: it's a keyboard
qt.qpa.input.devices: has valuator
"Abs X"
recognized? true
qt.qpa.input.devices: has valuator
"Abs Y"
recognized? true
qt.qpa.input.devices: has valuator
"Abs Pressure"
recognized? true
qt.qpa.input.devices: has valuator
"Abs Tilt X"
recognized? true
qt.qpa.input.devices: has valuator
"Abs Tilt Y"
recognized? true
qt.qpa.input.devices: has valuator "" recognized? false
qt.qpa.input.devices: it's a tablet with pointer type
"eraser"
qt.qpa.input.devices: it's a scrolling device
qt.qpa.gl: QT_XCB_GL_INTEGRATION is set to
"xcb_egl"
qt.qpa.gl: Choosing xcb gl-integration based on following priority
(
"xcb_egl"
,
"xcb_glx"
)
qt.qpa.gl: Xcb EGL gl-integration created
qt.qpa.gl: Xcb EGL gl-integration successfully initialized
Cannot find EGLConfig, returning null config
--->yzq eglCreateContext 240
QEGLPlatformContext: Failed to create context: 3005
qt.scenegraph.general: threaded render loop
qt.scenegraph.general: Using sg animation driver
qt.scenegraph.general: Animation Driver: using vsync: 16.95 ms
Cannot find EGLConfig, returning null config
qt.egl.xlib.debug: EGL did not suggest a VisualID (EGL_NATIVE_VISUAL_ID was zero)
for
EGLConfig 0
Unable to find an X11 visual which matches EGL config 0
Segmentation fault
If you don't use qmlscene, I wrote the following test code:
#include
<QGuiApplication>
#include
<QQuickView>
#include
<QSurfaceFormat>
int
main(
int
argc,
char
**argv)
QGuiApplication a(argc, argv);
QSurfaceFormat f = QSurfaceFormat::defaultFormat();
f.setRenderableType(QSurfaceFormat::OpenGLES);
QSurfaceFormat::setDefaultFormat(f);
QQuickView view;
view.setSource(QUrl::fromLocalFile(
"test.qml"
));
view.show();
a.exec();
If calling "setRenderableType(QSurfaceFormat::OpenGLES)", this test program can be used normally, otherwise it will crash like qmlscene. The following is the log output during normal operation:
LIBGL: Initialising gl4es
LIBGL: v1.1.5 built on Dec 30 2020 08:00:08
LIBGL: Using GLES 2.0 backend
LIBGL: loaded: libGLESv2.so
LIBGL: loaded: libEGL.so
LIBGL: Using GLES 2.0 backend
arm_release_ver of this libmali is
'r18p0-01rel0'
, rk_so_ver is
'4'
.LIBGL: Hardware Full NPOT detected and used
LIBGL: Extension GL_EXT_blend_minmax detected and used
LIBGL: FBO are
in
core, and so used
LIBGL: PointSprite are
in
core, and so used
LIBGL: CubeMap are
in
core, and so used
LIBGL: BlendColor is
in
core, and so used
LIBGL: Blend Substract is
in
core, and so used
LIBGL: Blend Function and Equation Separation is
in
core, and so used
LIBGL: Texture Mirrored Repeat is
in
core, and so used
LIBGL: Extension GL_OES_mapbuffer detected
LIBGL: Extension GL_OES_element_index_uint detected and used
LIBGL: Extension GL_OES_packed_depth_stencil detected and used
LIBGL: Extension GL_OES_depth24 detected and used
LIBGL: Extension GL_OES_rgb8_rgba8 detected and used
LIBGL: Extension GL_EXT_texture_format_BGRA8888 detected and used
LIBGL: Extension GL_OES_depth_texture detected and used
LIBGL: Extension GL_OES_texture_stencil8 detected and used
LIBGL: Extension GL_EXT_texture_rg detected and used
LIBGL: Extension GL_EXT_color_buffer_float detected and used
LIBGL: Extension GL_EXT_color_buffer_half_float detected and used
LIBGL: high precision float
in
fragment shader available and used
LIBGL: Max vertex attrib: 16
LIBGL: Extension GL_OES_standard_derivatives detected and used
LIBGL: Max texture size: 8192
LIBGL: Max Varying Vector: 15
LIBGL: Texture Units: 16/16 (hardware: 16), Max lights: 8, Max planes: 6
LIBGL: Max Color Attachments: 1 / Draw buffers: 1
LIBGL: Hardware vendor is ARM
LIBGL: GLSL 300 es supported
LIBGL: GLSL 310 es supported and used
LIBGL: sRGB surface supported
LIBGL: EGLImage from Pixmap supported
LIBGL: EGLImage to Texture2D supported
LIBGL: EGLImage to RenderBuffer supported
LIBGL: Targeting OpenGL 2.1
LIBGL: NPOT texture handled
in
hardware
LIBGL: Not trying to batch small subsequent glDrawXXXX
LIBGL: try to use VBO
LIBGL: glXMakeCurrent FBO workaround enabled
LIBGL: FBO workaround
for
using binded texture enabled
LIBGL: Force texture
for
Attachment color0 on FBO
LIBGL: Hack to trigger a SwapBuffers when a Full Framebuffer Blit on default FBO is
done
LIBGL: glX Will try to recycle EGL Surface
LIBGL: Current folder is:/home/user/zccrs
qt.qpa.xcb: Has MIT-SHM : true
qt.qpa.xcb: Has MIT-SHM FD : true
qt.qpa.xcb: shmget() failed (38: Function not implemented)
for
size 1
qt.qpa.xcb: failed to create System V shared memory segment (remote X11 connection?), disabling SHM
qt.qpa.screen: Failed to parse EDID data
for
output
"DSI-1"
edid data: ""
qt.qpa.screen: adding QXcbScreen(0x543a90, name=
"DSI-1"
, geometry=1536x2048+0+0, availableGeometry=1536x2048+0+0, devicePixelRatio=1.0, logicalDpi=QPair(96.0,96.0), physicalSize=405.0x540.0mm, screenNumber=0, virtualSize=1536x2048 (1536.0x2048.0mm), orientation=Qt::ScreenOrientation(LandscapeOrientation), depth=24, refreshRate=59.0, root=39d, windowManagerName=
"KWin"
) (Primary: true )
qt.qpa.screen: primary output is
"DSI-1"
qt.qpa.input: Plugin build with support
for
XInput 2 version up to 2.2
qt.qpa.input: Using XInput version 2.2
qt.qpa.input.devices: input device Virtual core XTEST pointer ID 4
qt.qpa.input.devices: has 10 buttons
qt.qpa.input.devices: has valuator
"Rel X"
recognized? true
qt.qpa.input.devices: has valuator
"Rel Y"
recognized? true
qt.qpa.input.devices: it's a scrolling device
qt.qpa.input.devices: input device ft5x26_ts ID 9
qt.qpa.input.devices: has 7 buttons
qt.qpa.input.devices: has valuator
"Abs MT Position X"
recognized? true
qt.qpa.input.devices: has valuator
"Abs MT Position Y"
recognized? true
qt.qpa.input.devices: has valuator
"Rel Horiz Scroll"
recognized? true
qt.qpa.input.devices: has valuator
"Rel Vert Scroll"
recognized? true
qt.qpa.input.devices: it's a scrolling device
qt.qpa.input.devices: has touch class with mode 1
qt.qpa.input.devices: it's a touchscreen with type 0 capabilities 0x21 max touch points 10
qt.qpa.input.devices: input device Wacom I2C Digitizer stylus ID 10
qt.qpa.input.devices: has 7 buttons
qt.qpa.input.devices: it's a keyboard
qt.qpa.input.devices: has valuator
"Abs X"
recognized? true
qt.qpa.input.devices: has valuator
"Abs Y"
recognized? true
qt.qpa.input.devices: has valuator
"Abs Pressure"
recognized? true
qt.qpa.input.devices: has valuator
"Abs Tilt X"
recognized? true
qt.qpa.input.devices: has valuator
"Abs Tilt Y"
recognized? true
qt.qpa.input.devices: has valuator
"Abs Wheel"
recognized? true
qt.qpa.input.devices: it's a tablet with pointer type
"pen"
qt.qpa.input.devices: it's a scrolling device
qt.qpa.input.devices: input device Wacom I2C Digitizer eraser ID 14
qt.qpa.input.devices: has 7 buttons
qt.qpa.input.devices: it's a keyboard
qt.qpa.input.devices: has valuator
"Abs X"
recognized? true
qt.qpa.input.devices: has valuator
"Abs Y"
recognized? true
qt.qpa.input.devices: has valuator
"Abs Pressure"
recognized? true
qt.qpa.input.devices: has valuator
"Abs Tilt X"
recognized? true
qt.qpa.input.devices: has valuator
"Abs Tilt Y"
recognized? true
qt.qpa.input.devices: has valuator "" recognized? false
qt.qpa.input.devices: it's a tablet with pointer type
"eraser"
qt.qpa.input.devices: it's a scrolling device
qt.qpa.gl: QT_XCB_GL_INTEGRATION is set to
"xcb_egl"
qt.qpa.gl: Choosing xcb gl-integration based on following priority
(
"xcb_egl"
,
"xcb_glx"
)
qt.qpa.gl: Xcb EGL gl-integration created
qt.qpa.gl: Xcb EGL gl-integration successfully initialized
qt.scenegraph.general: threaded render loop
qt.scenegraph.general: Using sg animation driver
qt.scenegraph.general: Animation Driver: using vsync: 16.95 ms
qt.egl.xlib.debug: Using Opaque Visual ID 33 provided by EGL
for
config 10
qt.scenegraph.renderloop: exposureChanged() QQuickView(0x7ff87cae68 exposed, visibility=QWindow::Visibility(Windowed), flags=QFlags<Qt::WindowType>(Window), geometry=0,0 100x100)
qt.scenegraph.renderloop: handleExposure() QQuickView(0x7ff87cae68 exposed, visibility=QWindow::Visibility(Windowed), flags=QFlags<Qt::WindowType>(Window), geometry=0,0 100x100)
qt.scenegraph.renderloop: - adding window to list
qt.scenegraph.renderloop: - starting render thread
qt.scenegraph.renderloop: - OpenGL context created
qt.scenegraph.renderloop: polishAndSync (
in
expose) QQuickView(0x7ff87cae68 exposed, visibility=QWindow::Visibility(Windowed), flags=QFlags<Qt::WindowType>(Window), geometry=0,0 100x100)
qt.scenegraph.renderloop: - lock
for
sync
qt.scenegraph.renderloop: - wait
for
sync
qt.scenegraph.renderloop: (RT) run()
qt.scenegraph.general: Using sg animation driver
qt.scenegraph.general: Animation Driver: using vsync: 16.95 ms
qt.scenegraph.renderloop: (RT) syncAndRender()
qt.scenegraph.renderloop: (RT) - rendering started
qt.scenegraph.renderloop: (RT) - window not ready, skipping render
qt.scenegraph.renderloop: (RT) - rendering
done
qt.scenegraph.
time
.renderloop: Frame rendered with
'threaded'
renderloop
in
0ms, sync=0, render=0, swap=0 - (on render thread)
qt.scenegraph.renderloop: (RT) --- begin processEvents()
qt.scenegraph.renderloop: (RT) WM_RequestSync
qt.scenegraph.renderloop: (RT) - triggered from expose
qt.scenegraph.renderloop: (RT) - repaint regardless
qt.scenegraph.renderloop: (RT) ---
done
processEvents()
qt.scenegraph.general: texture atlas dimensions: 512x512
qt.scenegraph.general: R/G/B/A Buffers: 8 8 8 0
qt.scenegraph.general: Depth Buffer: 24
qt.scenegraph.general: Stencil Buffer: 8
qt.scenegraph.general: Samples: 0
qt.scenegraph.general: GL_VENDOR: ARM
qt.scenegraph.general: GL_RENDERER: Mali-T860
qt.scenegraph.general: GL_VERSION: OpenGL ES 3.2 v1.r18p0-01rel0.5cb5681058e8e076ff89747c20c32578
qt.scenegraph.general: GL_EXTENSIONS: GL_EXT_texture_storage GL_OVR_multiview GL_EXT_multisampled_render_to_texture GL_KHR_blend_equation_advanced GL_OES_texture_storage_multisample_2d_array GL_EXT_texture_cube_map_array GL_EXT_gpu_shader5 GL_OES_EGL_sync GL_OES_compressed_paletted_texture GL_EXT_texture_format_BGRA8888 GL_OVR_multiview2 GL_KHR_texture_compression_astc_ldr GL_EXT_tessellation_shader GL_ARM_mali_shader_binary GL_EXT_YUV_target GL_OES_geometry_shader GL_OES_standard_derivatives GL_OES_mapbuffer GL_OES_surfaceless_context GL_EXT_disjoint_timer_query GL_OES_EGL_image GL_OES_required_internalformat GL_EXT_shader_io_blocks GL_KHR_robust_buffer_access_behavior GL_KHR_blend_equation_advanced_coherent GL_ANDROID_extension_pack_es31a GL_EXT_shader_pixel_local_storage GL_OES_fbo_render_mipmap GL_EXT_color_buffer_half_float GL_OES_depth_texture_cube_map GL_OES_tessellation_shader GL_EXT_texture_sRGB_R8 GL_OES_EGL_image_external GL_OES_EGL_image_external_essl3 GL_ARM_mali_program_binary GL_EXT_sRGB_write_control GL_OVR_multiview_multisampled_render_to_texture GL_OES_primitive_bounding_box GL_KHR_robustness GL_OES_sample_shading GL_KHR_debug GL_EXT_texture_buffer GL_EXT_texture_sRGB_decode GL_OES_draw_elements_base_vertex GL_EXT_blend_minmax GL_OES_texture_stencil8 GL_OES_texture_3D GL_EXT_geometry_shader GL_OES_texture_border_clamp GL_OES_compressed_ETC1_RGB8_texture GL_ARM_shader_framebuffer_fetch_depth_stencil GL_OES_sample_variables GL_OES_texture_buffer GL_OES_copy_image GL_OES_element_index_uint GL_OES_packed_depth_stencil GL_EXT_discard_framebuffer GL_OES_texture_cube_map_array GL_OES_rgb8_rgba8 GL_ARM_rgba8 GL_OES_depth24 GL_OES_vertex_array_object GL_EXT_copy_image GL_EXT_texture_sRGB_RG8 GL_OES_get_program_binary GL_EXT_texture_type_2_10_10_10_REV GL_KHR_texture_compression_astc_hdr GL_EXT_occlusion_query_boolean GL_ARM_shader_framebuffer_fetch GL_EXT_shadow_samplers GL_OES_texture_npot GL_EXT_texture_border_clamp GL_OES_gpu_shader5 GL_OES_depth_texture GL_EXT_read_format_bgra GL_OES_shader_io_blocks GL_OES_shader_multisample_interpolation GL_OES_draw_buffers_indexed GL_EXT_primitive_bounding_box GL_EXT_texture_rg GL_KHR_texture_compression_astc_sliced_3d GL_OES_vertex_half_float GL_OES_shader_image_atomic GL_EXT_draw_buffers_indexed GL_EXT_draw_elements_base_vertex GL_EXT_sRGB GL_EXT_robustness GL_EXT_color_buffer_float GL_OES_texture_compression_astc
qt.scenegraph.general: Max Texture Size: 8192
qt.scenegraph.general: Debug context: false
qt.scenegraph.renderloop: (RT) syncAndRender()
qt.scenegraph.renderloop: (RT) - updatePending, doing sync
qt.scenegraph.renderloop: (RT) sync()
qt.quick.dirty: QQuickWindowPrivate::updateDirtyNodes():
qt.quick.dirty: QSGNode: QQuickRootItem(0x57aad0, parent=0x0, geometry=0,0 100x100) Size|ChildrenChanged
qt.quick.dirty: QSGNode: QQuickRectangle(0x57cff0, parent=0x57aad0, geometry=0,0 100x100) Size|Content|ParentChanged|Window
qt.scenegraph.renderloop: (RT) - renderer was created
qt.scenegraph.renderloop: (RT) - rendering started
qt.opengl.diskcache: OpenGL ES v2 context
qt.opengl.diskcache: Shader cache supported = 0
qt.scenegraph.
time
.compilation: shader compiled
in
6ms
qt.scenegraph.
time
.renderer:
time
in
renderer: total=7ms, preprocess=0, updates=0, binding=0, rendering=7
qt.scenegraph.renderloop: (RT) - rendering
done
qt.scenegraph.renderloop: (RT) - wake Gui after initial expose
qt.scenegraph.renderloop: - unlock after sync
qt.scenegraph.
time
.renderloop: Frame prepared with
'threaded'
renderloop, polish=0, lock=0, blockedForSync=11, animations=0 - (on Gui thread) QQuickView(0x7ff87cae68 exposed, visibility=QWindow::Visibility(Windowed), flags=QFlags<Qt::WindowType>(Window), geometry=0,0 100x100)
qt.scenegraph.renderloop: -
done
with handleExposure()
qt.scenegraph.renderloop: exposureChanged() QQuickView(0x7ff87cae68 exposed, visibility=QWindow::Visibility(Windowed), flags=QFlags<Qt::WindowType>(Window), geometry=0,0 100x100)
qt.scenegraph.renderloop: handleExposure() QQuickView(0x7ff87cae68 exposed, visibility=QWindow::Visibility(Windowed), flags=QFlags<Qt::WindowType>(Window), geometry=0,0 100x100)
qt.scenegraph.renderloop: - render thread already running
qt.scenegraph.renderloop: polishAndSync (
in
expose) QQuickView(0x7ff87cae68 exposed, visibility=QWindow::Visibility(Windowed), flags=QFlags<Qt::WindowType>(Window), geometry=0,0 100x100)
qt.scenegraph.renderloop: - lock
for
sync
qt.scenegraph.renderloop: - wait
for
sync
qt.scenegraph.
time
.renderloop: Frame rendered with
'threaded'
renderloop
in
9ms, sync=0, render=7, swap=2 - (on render thread)
qt.scenegraph.renderloop: (RT) --- begin processEvents()
qt.scenegraph.renderloop: (RT) WM_RequestSync
qt.scenegraph.renderloop: (RT) - triggered from expose
qt.scenegraph.renderloop: (RT) ---
done
processEvents()
qt.scenegraph.renderloop: (RT) syncAndRender()
qt.scenegraph.renderloop: (RT) - updatePending, doing sync
qt.scenegraph.renderloop: (RT) sync()
qt.quick.dirty: QQuickWindowPrivate::updateDirtyNodes():
qt.scenegraph.renderloop: (RT) - rendering started
qt.scenegraph.
time
.renderer:
time
in
renderer: total=31ms, preprocess=0, updates=0, binding=0, rendering=31
qt.scenegraph.renderloop: (RT) - rendering
done
qt.scenegraph.renderloop: (RT) - wake Gui after initial expose
qt.scenegraph.
time
.renderloop: Frame rendered with
'threaded'
renderloop
in
42ms, sync=0, render=31, swap=11 - (on render thread)
qt.scenegraph.renderloop: - unlock after sync
qt.scenegraph.renderloop: (RT) --- begin processEvents()
qt.scenegraph.renderloop: (RT) ---
done
processEvents()
qt.scenegraph.renderloop: (RT)
done
drawing, sleep...
qt.scenegraph.renderloop: (RT) --- begin processEventsAndWaitForMore()
qt.scenegraph.
time
.renderloop: Frame prepared with
'threaded'
renderloop, polish=0, lock=0, blockedForSync=43, animations=0 - (on Gui thread) QQuickView(0x7ff87cae68 exposed, visibility=QWindow::Visibility(Windowed), flags=QFlags<Qt::WindowType>(Window), geometry=0,0 100x100)
qt.scenegraph.renderloop: -
done
with handleExposure()
qt.qpa.input.events: XI2 mouse enter 1080,1763, mode 0, detail 3,
time
2135233
qt.quick.focus: QQuickWindowPrivate::setFocusInScope():
qt.quick.focus: scope: QObject(0x0)
qt.quick.focus: item: QQuickRootItem(0x57aad0)
qt.quick.focus: activeFocusItem: QObject(0x0)
qt.scenegraph.renderloop: update from item QQuickView(0x7ff87cae68 active exposed, visibility=QWindow::Visibility(Maximized), flags=QFlags<Qt::WindowType>(Window), geometry=0,40 1536x2008)
qt.scenegraph.renderloop: update from item QQuickView(0x7ff87cae68 active exposed, visibility=QWindow::Visibility(Maximized), flags=QFlags<Qt::WindowType>(Window), geometry=0,40 1536x2008)
qt.scenegraph.renderloop: exposureChanged() QQuickView(0x7ff87cae68 active exposed, visibility=QWindow::Visibility(Maximized), flags=QFlags<Qt::WindowType>(Window), geometry=0,40 1536x2008)
qt.scenegraph.renderloop: handleExposure() QQuickView(0x7ff87cae68 active exposed, visibility=QWindow::Visibility(Maximized), flags=QFlags<Qt::WindowType>(Window), geometry=0,40 1536x2008)
qt.scenegraph.renderloop: - render thread already running
qt.scenegraph.renderloop: polishAndSync (
in
expose) QQuickView(0x7ff87cae68 active exposed, visibility=QWindow::Visibility(Maximized), flags=QFlags<Qt::WindowType>(Window), geometry=0,40 1536x2008)
qt.scenegraph.renderloop: - lock
for
sync
qt.scenegraph.renderloop: - wait
for
sync
qt.scenegraph.renderloop: (RT) WM_RequestSync
qt.scenegraph.renderloop: (RT) - triggered from expose
qt.scenegraph.renderloop: (RT) ---
done
processEventsAndWaitForMore()
qt.scenegraph.renderloop: (RT) syncAndRender()
qt.scenegraph.renderloop: (RT) - updatePending, doing sync
qt.scenegraph.renderloop: (RT) sync()
qt.quick.dirty: QQuickWindowPrivate::updateDirtyNodes():
qt.quick.dirty: QSGNode: QQuickRootItem(0x57aad0, parent=0x0, geometry=0,0 1536x2008) Size
qt.scenegraph.renderloop: (RT) - rendering started
qt.scenegraph.
time
.renderer:
time
in
renderer: total=0ms, preprocess=0, updates=0, binding=0, rendering=0
qt.scenegraph.renderloop: (RT) - rendering
done
qt.scenegraph.renderloop: (RT) - wake Gui after initial expose
qt.scenegraph.
time
.renderloop: Frame rendered with
'threaded'
renderloop
in
11ms, sync=1, render=1, swap=9 - (on render thread)
qt.scenegraph.renderloop: (RT) --- begin processEvents()
qt.scenegraph.renderloop: (RT) ---
done
processEvents()
qt.scenegraph.renderloop: - unlock after sync
qt.scenegraph.renderloop: (RT)
done
drawing, sleep...
qt.scenegraph.renderloop: (RT) --- begin processEventsAndWaitForMore()
qt.scenegraph.
time
.renderloop: Frame prepared with
'threaded'
renderloop, polish=0, lock=0, blockedForSync=11, animations=0 - (on Gui thread) QQuickView(0x7ff87cae68 active exposed, visibility=QWindow::Visibility(Maximized), flags=QFlags<Qt::WindowType>(Window), geometry=0,40 1536x2008)
qt.scenegraph.renderloop: -
done
with handleExposure()
qt.quick.hover.trace: QQuickView(0x7ff87cae68 active exposed, visibility=QWindow::Visibility(Maximized), flags=QFlags<Qt::WindowType>(Window), geometry=0,40 1536x2008) QQuickRootItem(0x57aad0, parent=0x0, geometry=0,0 1536x2008) QPointF(1080,1763) QPointF(0,0) subtreeHoverEnabled false
qt.scenegraph.renderloop: - polish and sync update request
qt.scenegraph.renderloop: polishAndSync (normal) QQuickView(0x7ff87cae68 active exposed, visibility=QWindow::Visibility(Maximized), flags=QFlags<Qt::WindowType>(Window), geometry=0,40 1536x2008)
qt.scenegraph.renderloop: - lock
for
sync
qt.scenegraph.renderloop: - wait
for
sync
qt.scenegraph.renderloop: (RT) WM_RequestSync
qt.scenegraph.renderloop: (RT) ---
done
processEventsAndWaitForMore()
qt.scenegraph.renderloop: (RT) syncAndRender()
qt.scenegraph.renderloop: (RT) - updatePending, doing sync
qt.scenegraph.renderloop: (RT) sync()
qt.quick.dirty: QQuickWindowPrivate::updateDirtyNodes():
qt.scenegraph.renderloop: (RT) - sync complete, waking Gui
qt.scenegraph.renderloop: (RT) - no changes, render aborted
qt.scenegraph.renderloop: - unlock after sync
qt.scenegraph.
time
.renderloop: Frame prepared with
'threaded'
renderloop, polish=0, lock=0, blockedForSync=1, animations=0 - (on Gui thread) QQuickView(0x7ff87cae68 active exposed, visibility=QWindow::Visibility(Maximized), flags=QFlags<Qt::WindowType>(Window), geometry=0,40 1536x2008)
qt.scenegraph.renderloop: (RT) --- begin processEvents()
qt.scenegraph.renderloop: (RT) ---
done
processEvents()
qt.scenegraph.renderloop: (RT)
done
drawing, sleep...
qt.scenegraph.renderloop: (RT) --- begin processEventsAndWaitForMore()
However, we cannot require every Qt program to use QSurfaceFormat::setRenderableType(QSurfaceFormat::OpenGLES), I think we should provide an environment variable that can be set at runtime to use gles or desktop opengl.