Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
xserver
xserver
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 888
    • Issues 888
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge Requests 94
    • Merge Requests 94
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Incidents
    • Environments
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • CI / CD
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • xorg
  • xserverxserver
  • Issues
  • #22

Closed
Open
Opened Jan 26, 2017 by Bugzilla Migration User@bugzilla-migration

OpenGL window refreshes extremely slow on UDL

Submitted by Tad

Assigned to Xorg Project Team

Link to original bug (#99547)

Description

When I move glxgears (or any other app that uses opengl) to the screen on monitor attached to UDL device, it starts refreshing itself in about one second periods, so monitors attached to UDL are not usable.

Here's backtrace from glxgears during hang:

#0  0x00007f80ac3330a0 in __poll_nocancel () at ../sysdeps/unix/syscall-template.S:84
#1  0x00007f80aa742c62 in poll (__timeout=-1, __nfds=1, __fds=0x7ffc0e905c80) at /usr/include/x86_64-linux-gnu/bits/poll2.h:46
#2  _xcb_conn_wait (c=c@entry=0x558195104410, cond=cond@entry=0x558195112bf8, vector=vector@entry=0x0, count=count@entry=0x0) at ../../src/xcb_conn.c:459
#3  0x00007f80aa7449a9 in xcb_wait_for_special_event (c=0x558195104410, se=0x558195112bd0) at ../../src/xcb_in.c:789
#4  0x00007f80acc914b7 in dri3_find_back (draw=draw@entry=0x5581951129d8) at loader_dri3_helper.c:380
#5  0x00007f80acc92280 in dri3_get_buffer (driDrawable=0x7ffc0e905e80, draw=0x5581951129d8, buffer_type=loader_dri3_buffer_back, format=4098) at loader_dri3_helper.c:1196
#6  loader_dri3_get_buffers (driDrawable=driDrawable@entry=0x558195112ad0, format=4098, stamp=stamp@entry=0x558195112b00, loaderPrivate=loaderPrivate@entry=0x5581951129d8, buffer_mask=<optimized out>, buffer_mask@entry=1, buffers=buffers@entry=0x7ffc0e905e80)
    at loader_dri3_helper.c:1373
#7  0x00007f80a93b8918 in intel_update_image_buffers (drawable=0x558195112ad0, brw=0x7f80ad082038) at brw_context.c:1682
#8  intel_update_renderbuffers (context=context@entry=0x55819524d610, drawable=drawable@entry=0x558195112ad0) at brw_context.c:1397
#9  0x00007f80a93b8c71 in intel_prepare_render (brw=brw@entry=0x7f80ad082038) at brw_context.c:1418
#10 0x00007f80a9396c70 in brw_clear (ctx=0x7f80ad082038, mask=18) at brw_clear.c:232
#11 0x00005581932c94ae in draw () at glxgears.c:254
#12 0x00005581932c8c28 in draw_gears () at glxgears.c:316
#13 draw_frame (win=52428802, dpy=0x558195103010) at glxgears.c:341
#14 event_loop (win=52428802, dpy=0x558195103010) at glxgears.c:703
#15 main (argc=<optimized out>, argv=<optimized out>) at glxgears.c:798

It looks like it's waiting till xserver sends back idle event. And its going to do that after it receives vblank associated to that particular opengl window. But vblank is scheduled with timer (which executes in about a second) because xserver cannot find proper crtc. XServer uses ms_covering_crtc function to match window dimensions to those available in scrn's config. Looks like proper crtc not exists on the list:

#0  ms_covering_crtc (scrn=0x558aea71f110, box=box@entry=0x7ffe4c160de0, desired=desired@entry=0x0, crtc_box_ret=crtc_box_ret@entry=0x7ffe4c160df0) at ../../../../../hw/xfree86/drivers/modesetting/vblank.c:103
#1  0x00007f507ba5c976 in ms_dri2_crtc_covering_drawable (pDraw=0x558aeba85780) at ../../../../../hw/xfree86/drivers/modesetting/vblank.c:151
#2  0x00007f507ba5c1f9 in ms_present_get_crtc (window=<optimized out>) at ../../../../../hw/xfree86/drivers/modesetting/present.c:62
#3  0x0000558ae842f0d1 in present_pixmap (window=0x558aeba85780, pixmap=0x558aeb898330, serial=3644, valid=0x0, update=0x0, x_off=<optimized out>, y_off=0, target_crtc=<optimized out>, wait_fence=0x0, idle_fence=0x558aec0a8af0, options=0, window_msc=2987391, divisor=0, remainder=0, notifies=0x0, num_notifies=0) at ../../present/present.c:812
#4  0x0000558ae8430775 in proc_present_pixmap (client=0x558aec1afd40) at ../../present/present_request.c:138
#5  0x0000558ae83473bf in Dispatch () at ../../dix/dispatch.c:430
#6  0x0000558ae834b413 in dix_main (argc=11, argv=0x7ffe4c161168, envp=<optimized out>) at ../../dix/main.c:300
#7  0x00007f507f93c3f1 in __libc_start_main (main=0x558ae8335300 <main>, argc=11, argv=0x7ffe4c161168, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffe4c161158) at ../csu/libc-start.c:291
#8  0x0000558ae833533a in _start ()

XServer version: X.Org X Server 1.18.4 Release Date: 2016-07-19 X Protocol Version 11, Revision 0 Build Operating System: Linux 4.4.0-45-generic x86_64 Ubuntu Current Operating System: Linux 4.8.0-34-generic #36-Ubuntu SMP Wed Dec 21 17:24:18 UTC 2016 x86_64 Kernel command line: BOOT_IMAGE=/boot/vmlinuz-4.8.0-34-generic root=UUID=046d556a-159d-4ea2-a644-664d550b3395 ro quiet splash vt.handoff=7 xorg-server 2:1.18.4-1ubuntu6.1 (For technical support please see http://www.ubuntu.com/support) Current version of pixman: 0.33.6

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking
None
Due date
None
Reference: xorg/xserver#22