[Bug 42035] no way to turn off vsync
Michal Suchanek
hramrach at centrum.cz
Wed Oct 26 15:35:59 PDT 2011
2011/10/25 Michel Dänzer <michel at daenzer.net>:
> On Mon, 2011-10-24 at 23:23 +0200, Michal Suchanek wrote:
>> 2011/10/24 Michel Dänzer <michel at daenzer.net>:
>> > On Mon, 2011-10-24 at 16:25 +0200, Michal Suchanek wrote:
>> >> 2011/10/24 Michel Dänzer <michel at daenzer.net>:
>> >> > On Mon, 2011-10-24 at 14:00 +0200, Michal Suchanek wrote:
>>
>> >> I am asking this because my experiments with glxgears without the
>> >> patch show vrefresh limited fps, fps unlimited by vrefresh, and 0 fps
>> >> depending on some variables like what screen the window is on, if the
>> >> window is mapped or not,
>> >
>> > Sounds like issues with determining which CRTC to synchronize to.
>> >
>> >> if the screen is blanked or not,
>> >
>> > As you discovered recently, the hardware CRTCs only generate vertical
>> > blank interrupts while they're enabled.
>> >
>> >> and current phase of the Moon or some other variable I can't figure out.
>> >
>> > It's certainly nothing to do with the phase of the moon. :)
>>
>> I wonder what is it what determines if the application runs uncapped
>> or gets stuck in some GL call when the crtc is turned off.
>>
>> One week it would consistently stop applications on turning the crtcs
>> off, another it would consistently run them uncapped.
>
> It's hard to say without tracking down at least where they get stuck.
They get stuck in pretty much the same place as when vblank is enabled
and vline wait disabled.
Program received signal SIGINT, Interrupt.
0x00007ffff72f9773 in __GI___poll (fds=<optimized out>,
nfds=<optimized out>, timeout=<optimized out>) at
../sysdeps/unix/sysv/linux/poll.c:87
87 ../sysdeps/unix/sysv/linux/poll.c: No such file or directory.
in ../sysdeps/unix/sysv/linux/poll.c
(gdb) bt full
#0 0x00007ffff72f9773 in __GI___poll (fds=<optimized out>,
nfds=<optimized out>, timeout=<optimized out>) at
../sysdeps/unix/sysv/linux/poll.c:87
resultvar = <optimized out>
oldtype = 0
result = <optimized out>
#1 0x00007ffff5f9d4f2 in ?? () from /usr/lib/x86_64-linux-gnu/libxcb.so.1
No symbol table info available.
#2 0x00007ffff5f9eaaf in xcb_wait_for_reply () from
/usr/lib/x86_64-linux-gnu/libxcb.so.1
No symbol table info available.
#3 0x00007ffff7603b7d in _XReply () from /usr/lib/x86_64-linux-gnu/libX11.so.6
No symbol table info available.
#4 0x00007ffff7bc21b2 in DRI2GetBuffersWithFormat (dpy=0x606010,
drawable=75497474, width=0x62bfc4, height=0x62bfc8,
attachments=0x7fffffffe3d0,
count=<optimized out>, outCount=0x7fffffffe404) at dri2.c:470
info = <optimized out>
rep = {type = 8 '\b', pad1 = 0 '\000', sequenceNumber = 0,
length = 0, width = 1278, height = 1022, count = 2, pad2 = 0, pad3 =
2939134720,
pad4 = 3745632263}
req = <optimized out>
buffers = <optimized out>
repBuffer = {attachment = 9, name = 6, pitch = 1278, cpp = 0,
flags = 1022}
p = <optimized out>
i = <optimized out>
#5 0x00007ffff7bbff2c in dri2GetBuffersWithFormat
(driDrawable=<optimized out>, width=0x62bfc4, height=0x62bfc8,
attachments=<optimized out>,
count=<optimized out>, out_count=0x7fffffffe404,
loaderPrivate=0x62bec0) at dri2_glx.c:652
pdraw = 0x62bec0
buffers = <optimized out>
#6 0x00007ffff5465ed9 in dri2_drawable_get_buffers (count=<synthetic
pointer>, statts=0x6cecf0, drawable=0x6ce6c0) at dri2.c:149
dri_drawable = <optimized out>
buffers = <optimized out>
num_attachments = <optimized out>
i = <optimized out>
loader = 0x7ffff7dd9560
with_format = 1 '\001'
num_buffers = <optimized out>
attachments = {1, 32, 9, 32, 0, 0, 33273, 32767, 1, 0}
#7 dri2_allocate_textures (drawable=0x6ce6c0, statts=0x6cecf0,
count=2) at dri2.c:363
buffers = 0x8
num_buffers = 2
#8 0x00007ffff5466f17 in dri_st_framebuffer_validate
(stfbi=<optimized out>, statts=0x6cecf0, count=2, out=0x7fffffffe4b0)
at dri_drawable.c:75
drawable = 0x6ce6c0
screen = 0x1
statt_mask = <optimized out>
new_stamp = <optimized out>
i = <optimized out>
#9 0x00007ffff45dc9d6 in st_framebuffer_validate (stfb=0x6ce8a0,
st=<optimized out>) at state_tracker/st_manager.c:193
textures = {0x7542c0, 0x7ffff72f7bb9, 0x0, 0x7ffff5f9f365,
0x606010, 0xffffffff0062bec0, 0x6083d0}
width = <optimized out>
height = <optimized out>
i = <optimized out>
changed = 0 '\000'
new_stamp = 7087
#10 0x00007ffff45ddf7d in st_manager_validate_framebuffers
(st=0x6c7b30) at state_tracker/st_manager.c:882
stdraw = 0x6ce8a0
stread = 0x6ce8a0
#11 0x00007ffff45c5328 in st_validate_state (st=0x6c7b30) at
state_tracker/st_atom.c:144
state = 0x6c8398
#12 0x00007ffff45cbcd5 in st_Clear (ctx=0x6635d0, mask=18) at
state_tracker/st_cb_clear.c:499
st = 0x6c7b30
depthRb = 0x6ced20
stencilRb = 0x0
---Type <return> to continue, or q <return> to quit---
quad_buffers = 0
clear_buffers = 0
i = <optimized out>
#13 0x00000000004019de in ?? ()
No symbol table info available.
#14 0x0000000000403176 in ?? ()
No symbol table info available.
#15 0x00007ffff724530d in __libc_start_main (main=0x402aa0, argc=1,
ubp_av=0x7fffffffea58, init=<optimized out>, fini=<optimized out>,
rtld_fini=<optimized out>, stack_end=0x7fffffffea48) at libc-start.c:226
result = <optimized out>
unwind_buf = {cancel_jmp_buf = {{jmp_buf = {0,
-5931621068984936517, 4200336, 140737488349776, 0, 0,
5931621068529604539, 5931601728049649595},
mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x4037e0,
0x7fffffffea58}, data = {prev = 0x0, cleanup = 0x0, canceltype =
4208608}}}
not_first_call = <optimized out>
#16 0x00000000004017b9 in ?? ()
No symbol table info available.
#17 0x00007fffffffea48 in ?? ()
No symbol table info available.
#18 0x000000000000001c in ?? ()
No symbol table info available.
#19 0x0000000000000001 in ?? ()
No symbol table info available.
#20 0x00007fffffffecda in ?? ()
No symbol table info available.
#21 0x0000000000000000 in ?? ()
No symbol table info available.
More information about the xorg-driver-ati
mailing list