Bug 10542

Summary: Non-accelerated renderer on pipe B
Product: Mesa Reporter: Ross Burton <ross>
Component: GLXAssignee: mesa-dev
Status: RESOLVED MOVED QA Contact:
Severity: normal    
Priority: medium CC: r.atwood, zdzichu
Version: unspecified   
Hardware: x86 (IA32)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:
Attachments: xrandr when no VGA is connected
I830DRISetVBlankInterrupt debugging output
Xorg log with patch
Kernel log
xorg.log
xrandr --verbose when GL is good
xrandr --verbose when GL is bad
Mesa debugging output

Description Ross Burton 2007-04-06 04:39:31 UTC
GL performance on my LVDS is very poor (appears to be software rendering), but on external VGA displays it is good.

ThinkPad X60, with Intel Corporation Mobile 945GM

xserver-xorg 1.2.9.903
Intel driver 1.9.93
Mesa 6.5.2

The LVDS is on Pipe B, VGA to Pipe A.
Comment 1 Michel Dänzer 2007-04-06 06:19:12 UTC
Please attach log files, kernel output and the output of xrandr --verbose.

Does running GL apps with the environment variable vblank_mode=0 make any difference?
Comment 2 Ross Burton 2007-04-06 08:43:56 UTC
Created attachment 9500 [details]
xrandr when no VGA is connected
Comment 3 Michel Dänzer 2007-04-08 07:15:59 UTC
Would the patch attached to bug 10546 happen to help?
Comment 4 Eric Anholt 2007-04-09 11:11:26 UTC
All of the log files requested are required to help you with this bug.
Comment 5 Ross Burton 2007-04-09 11:18:12 UTC
I know, but I can't reach my LCD because we're doing a little DIY. :)  Hopefully this week I'll be able to reach it again!
Comment 6 Michel Dänzer 2007-04-10 02:28:28 UTC
*** Bug 10581 has been marked as a duplicate of this bug. ***
Comment 7 Michel Dänzer 2007-04-10 02:43:23 UTC
Created attachment 9549 [details] [review]
I830DRISetVBlankInterrupt debugging output

Actually, I think that other patch is bogus. Please attach a log file from starting the X server with this patch attached.
Comment 8 Ross Burton 2007-04-11 01:59:00 UTC
Created attachment 9562 [details]
Xorg log with patch
Comment 9 Ross Burton 2007-04-11 02:03:58 UTC
Created attachment 9563 [details]
Kernel log
Comment 10 Ross Burton 2007-04-11 02:06:30 UTC
No, using vblank_mode=0 doesn't help.
Comment 11 Michel Dänzer 2007-04-11 02:19:18 UTC
(In reply to comment #10)
> No, using vblank_mode=0 doesn't help.

Do you get a line like

ATTENTION: option value of option vblank_mode ignored.

when running a GL client though?

I can't see anything wrong in the logs... How is performance if you enable both outputs at the same time?
Comment 12 Ross Burton 2007-04-11 02:26:10 UTC
Yes, I get the line when I use the option.

At some point today I'll be able to reach the LCD, so I can test with both inputs enabled.
Comment 13 Ross Burton 2007-04-16 02:15:14 UTC
I've just upgraded to -intel 1.9.94 and xserver-org 1.2.99.095, and can still replicate this.
Comment 14 Michel Dänzer 2007-04-17 01:02:10 UTC
What about the followup to comment #11 / comment #12?
Comment 15 Ross Burton 2007-04-17 01:52:25 UTC
Right, I can finally reach my external LCD!

If I enable both outputs I get good performance. 

I sit at my desk with my laptop and start woohaa (a GL-based media player).  It barely starts, and basically hangs when it is meant to be fading in.

I connected external TFT, xrandr --auto to enable it, and start woohaa: works great.

Disconnect external TFT without re-running xrandr, still good.

Run xrandr --auto to disable VGA, run woohaa and performance is back to glacial again. 

Attaching my xorg.log.
Comment 16 Ross Burton 2007-04-17 01:53:51 UTC
Created attachment 9628 [details]
xorg.log
Comment 17 Ross Burton 2007-04-17 01:55:05 UTC
Created attachment 9629 [details]
xrandr --verbose when GL is good
Comment 18 Ross Burton 2007-04-17 01:56:16 UTC
Created attachment 9630 [details]
xrandr --verbose when GL is bad
Comment 19 Michel Dänzer 2007-04-17 03:42:28 UTC
Created attachment 9631 [details] [review]
Mesa debugging output

Please apply this patch to Mesa and provide the stderr output of GL apps in both cases.
Comment 20 Ross Burton 2007-04-17 04:40:44 UTC
For both bad and good GL I get

Vsync to pipe B

I never see the "Waiting for sequence" message.
Comment 21 Michel Dänzer 2007-04-17 04:49:51 UTC
Thanks. All the evidence seems to agree it's not a vsync issue, so I'm not sure what it could be.
Comment 22 Ross Burton 2007-04-20 03:36:37 UTC
I just upgraded to xorg-server 1.3 and -intel 2.0.0, and I can still replicate this.
Comment 23 Ross Burton 2007-04-25 03:02:34 UTC
Aha, found something out.

My test applications are using Clutter, a GL-based canvas.  If I do CLUTTER_VBLANK=0 to turn off all attempts at vblanking, it is fast.

Clutter can use either GL and DRI for vblanking, and neither of these work correctly.

So the question is why does vblanking only work at a reasonable speed when the external display is enabled, and not when just the LVDS is enabled?
Comment 24 Michel Dänzer 2007-05-21 01:34:25 UTC
(In reply to comment #23)
> My test applications are using Clutter, a GL-based canvas.  If I do
> CLUTTER_VBLANK=0 to turn off all attempts at vblanking, it is fast.

What about

CLUTTER_VBLANK=0 vblank_mode=2

or

CLUTTER_VBLANK=0 vblank_mode=3

?
Comment 25 Ross Burton 2007-05-21 01:46:55 UTC
Attempting both of those produce the same, very slow, output, and always syncing to pipe B.
Comment 26 Michel Dänzer 2007-06-14 03:19:31 UTC
The problem is that clutter uses the GLX_SGI_video_sync extension, which is currently broken with secondary vblank due to shortcomings of some Mesa internal interfaces used for it. This will hopefully be fixed with the upcoming libGL/driver interface overhaul, but in the meantime the simplest solution might be for clutter to use the GLX_SGI_swap_control extension instead.

(The alternative method of clutter using the DRM device directly for sync-to-vblank can't support secondary vblank either and is generally a bad idea)
Comment 27 Ross Burton 2007-06-14 03:29:30 UTC
Thanks Michael.  Is GLX_SGI_swap_control the best way to vblank on Intel hardware?  Is using that a temporary measure until GLX_SGI_video_sync works?
Comment 28 Michel Dänzer 2007-06-14 03:34:21 UTC
(In reply to comment #27)
> Is GLX_SGI_swap_control the best way to vblank on Intel hardware?

Currently, yes.

> Is using that a temporary measure until GLX_SGI_video_sync works?

Depends on the functionality needed.
Comment 29 Ross Burton 2007-06-14 07:10:01 UTC
Woo cheer etc etc.  Now clutter is fast on my machine again. :)

Thanks Michael.
Comment 30 GitLab Migration User 2019-09-18 17:11:02 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/mesa/mesa/issues/50.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.