Open Bug 1267516 Opened 5 years ago Updated 4 years ago

"Use hardware acceleration when available" preference should show more information

Categories

(Firefox :: Preferences, defect)

48 Branch
defect
Not set
normal

Tracking

()

People

(Reporter: ajones, Unassigned, NeedInfo)

References

Details

(Keywords: feature)

Attachments

(3 files)

The setting "Use hardware acceleration when available" in about:preferences#advanced would be a useful and appropriate place to add more information about HW acceleration. For example if the drivers are blacklisted then the checkbox does *nothing* but that isn't conveyed to the user. In some cases we know that there is an updated driver available but we don't convey it to the user.
Milan - I think we need this to make it easier for people to understand that clicking the checkbox doesn't make a difference. It also makes blacklisting discoverable in our UI.
Flags: needinfo?(milan)
It makes sense to do something about informing the user, although I'm not convinced that the advanced preferences is the place for it.  It does say "if available", and we don't know if it's available unless we try it, and we only try it when it's enabled.  It'd be difficult to actually have the information in there in advance, but we could certainly put the information that their acceleration choice was ignored, because of different possible reasons.  This will depend on bug 1254899 and some kind of a follow up to bug 1263249. Both of those are aimed at telemetry and about:support, and that code isn't internationalized at all, so there is that piece as well.
Restarting when the state changes (like e10s) would help. When it is checked (i.e enabled) we would therefore know whether it actually is available.
The "why are things the way they are" is probably best handled by a pointer to about:support.
Flags: needinfo?(milan)
Keywords: feature
Flags: needinfo?(milan)
Milan, did you have more information you were planning on adding to this bug?
There are two parts to this:

1. Report why the acceleration failed, even when the user selected the option.  We have this information today, with a note in about:preferences and a link to about:support.

2. When this option is modified, inform the user that a restart is needed before it takes effect.  This can be done without bug 1240198, but it would be easier if that was done.
Flags: needinfo?(milan)
Flags: needinfo?(bgirard)
Interesting to note that this checkbox maps only to layers/scrolling acceleration: layers.acceleration.disabled. Not other features such as D2D, WebGL, Video decoding.
D2D is involved somewhat (https://dxr.mozilla.org/mozilla-central/source/browser/components/preferences/in-content/advanced.js#207), but, yes, agreed that it doesn't do everything.  Not sure if we want it to get more complicated, but that's a separate topic :)
Attached image Screenshot
Off the top of my head I'm thinking we could show the strings:
- Hardware acceleration is currently active and is running normally
- Hardware acceleration is blacklisted on your system
- Hardware acceleration is disabled because you're running in safe mode
- Hardware acceleration was disabled at startup (better wording?)
- Hardware acceleration is not available on your system (if it's not covered by the above)

We could optionally show an 'Support' link and anchor that to about:support#layers but mconley thinks that might be to advanced for the advanced setting tab. Or we could optionally write support article for each failure string.
From a discussion with Milan for now we want to keep things simple. We're just going to note that hardware acceleration is not active and link to about:support. This is under advanced options so I think it's appropriate to link there. It will also prevent us from duplicating logic here.
I'm hitting this security error:
https://dxr.mozilla.org/mozilla-central/rev/ceb63dec9267e9bb62f5e5e1f4c9d32d3ac1fbac/caps/nsScriptSecurityManager.cpp#906

Looks like about:preferences doesn't have permission to link to about:support. Is there a good fix for this?
Flags: needinfo?(bgirard) → needinfo?(mconley)
My guess is because you're probably using a label for the link. I'd wager you're seeing "Cannot open a about: link using the text-link binding." in the Browser Console.

A normal anchor link like this:

<html:a target="about:support">Ohai there</html:a>

Should do the job.

I believe Tina Hsieh is currently in charge of about:preferences, so I suspect we need her input here.
Flags: needinfo?(mconley) → needinfo?(thsieh)
(In reply to Mike Conley (:mconley) - (Needinfo me!) from comment #13)
> 
> I believe Tina Hsieh is currently in charge of about:preferences, so I
> suspect we need her input here.

To be clear, the input I'm requesting is whether or not we think it's appropriate to link to about:support from a "Support" link next to the Hardware Acceleration toggle under Advanced > General. I'm just a tad worried that users might interpret a link saying "Support" to take them to some kind of support service - and about:support is definitely not that (although certainly useful for more technical users).
Yes, I'd like some input on deciding if we should include this link and if so what's the most appropriate label? I agree "Support" is probably not the label we want.
Hi guys, thanks for pinning me!

I agree with Mike's opinion. Most of the users will probably expect all links in Preferences have similar action, e.g. "Learn more" takes users to Mozilla Support. I'd avoid taking users to see information that is too technical to understand.

Can you explain more about the restrictions of this option? When will it happen and how long will this option be disabled? 
- safe mode?
- startup?
- hardware driver updated?
- restart?
Flags: needinfo?(thsieh) → needinfo?(bgirard)
(In reply to Tina Hsieh[:Tina_Hsieh] UX from comment #16)
> Can you explain more about the restrictions of this option? When will it
> happen and how long will this option be disabled? 
> - safe mode?
> - startup?
> - hardware driver updated?
> - restart?

You might already know some or all of this, but I'm going to give some background just in case.

For the option itself, "Use hardware acceleration when available", I believe this is always enabled. However, just because it's checked, doesn't mean that Firefox was _successful_ in attempting to use hardware acceleration - just that it's supposed to try to use it if it can.

In the event that hardware acceleration is not possible (a blacklisted graphics driver is a classic reason why), normally there'd be no feedback to the user here that attempting to use hardware acceleration failed.

So I believe the Graphics team is attempting to display a status of hardware acceleration support below the toggle.

Regarding the reasons why using hardware acceleration may have failed, I believe we can use about:support to tell us some of the reasons why: http://searchfox.org/mozilla-central/rev/a3aa2c099970654c82999246a3c27444421f8dcd/toolkit/locales/en-US/chrome/global/aboutSupport.properties#39

The reasons I'm seeing in here are:
* Blocked graphics driver
* Blocked graphics driver, but we have a suggestion as to which driver version to use
* Blocked graphics card
* Blocked OS version
* "Blocked for your graphics driver version mismatch between registry and DLL."

There might be more reasons, and perhaps BenWa can supply them. Safe Mode sounds like one, certainly.
Yes, there's also safe mode (which can be fixed after a reboot), if the preference was changed will the app is running then it needs a reboot to take into affect.

I don't think we want to expose all the details to the user, and it's quite tedious to detect them all properly. We might be fine with displaying a general error message or two here or something that isn't too complicated for the user.
Flags: needinfo?(bgirard)
So, the simple thing is to put the link to about:support, but tag that link as "Technical details..." or something like that.  Not too inviting for the naive user :)

The next step would be to distinguish the "you can do something about this" and "you're out of luck" type errors.  The first group would include things like "your driver is out of date and there is a better one", and the later would include things like "you're on Linux, and currently we don't accelerate Linux".  That step requires more data and infrastructure, so we can probably postpone it.
Flags: needinfo?(bgirard)
Attached image Screenshot 2
Here's what I have now. It's very basic. If we're running we don't show anything. If we're not then we notify that we're not and have a 'Technical Details...' link which maps to about:support#graphics . I think this caption is a lot better.

If we happy with this we can start reviewing the change.
I can't quite tell from that single image, but I like what you said, so:

1. The preference is not checked.  Nothing changes from what we have today.
2. The preference is checked, and acceleration is successfully on.  Nothing changes from what we have today.
3. The preference is checked, but we failed to accelerate.  The text below says "Hardware acceleration is not available" and the links says "Technical details...".

(Slight wording change from "not running" to "not available", but we're very close to a bike shed at this point :)

The reason I listed #1, rather than displaying a message when the user hasn't even asked for acceleration -  since this is a "restart Firefox" preference, something like that would come from us implementing the other states:

* We asked for acc, got it, now asked for off (but it's still on), need a restart to change.
* We asked for acc, didn't get it, now asked for off (it was never on), need a restart to change.
* We didn't ask for acc, now asked for on (but it's still off), need a restart to change.
Not running better captures that it might work, it just doesn't right now (pref flipped_. Not available implies that it's harder to get to run at all. But for users that are blacklisted 'not available' is a lot more clear.
Can you give UX feedback on what we have now?
Flags: needinfo?(bgirard) → needinfo?(thsieh)
For using the copy "not running" or "not available", I think Michelle Heubusch can give us some suggestions :)

For the position of the "Technical Details...", I'd suggest it to stick next to the message. Although currently there are links show in different positions in Preferences, we'll make them all next to the message in our Preferences redesign work.
Flags: needinfo?(thsieh) → needinfo?(mheubusch)
Hi Tina - do you still need copy review? Sorry, I lost track of this.
Flags: needinfo?(mheubusch) → needinfo?(thsieh)
Yes please :)

We have 2 copy proposals from Milan:
1. "Hardware acceleration is not running" 
2. "Hardware acceleration is not available" 

After the description, we're going to have a link to about:support. Since it's too technical for general users, they proposed to use "Technical details" instead of "Learn more".
Flags: needinfo?(thsieh) → needinfo?(mheubusch)
I would write: 
Hardware acceleration is not currently available

That way we have a parallel construction with the "Use acceleration when available" and the insertion of "currently" implies it could be a transient issue, but isn't necessarily one.  

Also why wouldn't we link to this for a Mac and the equivalent pages for Win and Linux? https://support.mozilla.org/en-US/kb/upgrade-graphics-drivers-use-hardware-acceleration

It helps you find the location of the tech specs you need and helps troubleshoot.  It would serve the needs of both technical and non-technical users.
Flags: needinfo?(mheubusch) → needinfo?(thsieh)
Thank you Michelle!

I think the link is good! But I'd like to know if it can troubleshoot every situation. If not, we might need to add some content in there.
Flags: needinfo?(thsieh) → needinfo?(mconley)
I guess the appropriateness of that SUMO page is something that milan might be able to comment on.

milan: are the steps in the SUMO page, which essentially recommends that the user find the latest graphics drivers, the only thing we could realistically ask the user to do if HWA is not available?
Flags: needinfo?(mconley) → needinfo?(milan)
You need to log in before you can comment on or make changes to this bug.