Closed Bug 1248183 Opened 8 years ago Closed 8 years ago

Canvas not updating anymore (Firefox Android)

Categories

(Firefox for Android Graveyard :: Toolbar, defect)

defect
Not set
normal

Tracking

(firefox49 fixed)

RESOLVED FIXED
Firefox 49
Tracking Status
firefox49 --- fixed

People

(Reporter: mbnatwork, Assigned: jnicol)

References

()

Details

(Keywords: testcase)

Attachments

(2 files)

Attached file test.html
User Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36
Firefox for Android

Steps to reproduce:

Upgraded the Firefox for Android today.


Actual results:

After the upgrade none of my games/demos are working anymore. The Canvas updates once and stops. This problem is occurring with the latest version of Firefox and Firefox Beta for Android. (On PC it still works correctly).

Even using Refresh it doesn't changes the states of the Canvas.

I wrote a demo updating a div and a canvas with current date at every second, the div is showing correctly while the Canvas is filled with first value and that remains.

I'm adding an example as attach. 

PS: On the same mobile, the example works on Chrome and the Native Browser.


Expected results:

Updated the Canvas as it was doing previously.
Just one more information, I had firstly posted this issue here: https://support.mozilla.org/en-US/questions/1109701
Component: Untriaged → General
Keywords: testcase
Product: Firefox → Firefox for Android
Works for me using a Galaxy S3 running Firefox 44.0.2 and 47.0a1. I also tried using a Nexus 5p and was unable to reproduce. Reporter what device are you using?
Flags: needinfo?(mbnatwork)
(In reply to Kevin Brosnan [:kbrosnan] from comment #2)
> Works for me using a Galaxy S3 running Firefox 44.0.2 and 47.0a1. I also
> tried using a Nexus 5p and was unable to reproduce. Reporter what device are
> you using?

Galaxy Tab 3 - Model Number: SM-T210.
Android: 4.4.2.

The FireFox version: 4.5.0b4
Flags: needinfo?(mbnatwork)
(In reply to Kevin Brosnan [:kbrosnan] from comment #2)
> Works for me using a Galaxy S3 running Firefox 44.0.2 and 47.0a1. I also
> tried using a Nexus 5p and was unable to reproduce. Reporter what device are
> you using?

By the way I've saw there was a new version of FF on Google Play Store. I installed but it isn't working neither. The FF is: 45.0b6, the same problem persists.
This works for me using a Galaxy Tab 3 45.0b6 and 47.0a1.
(In reply to Kevin Brosnan [:kbrosnan] from comment #5)
> This works for me using a Galaxy Tab 3 45.0b6 and 47.0a1.

I tried uninstalling and reinstalling it again and the problem remains. I even cleaned the folders and everything. I'm using Firefox "BETA".

I tried to uninstall the normal version of Firefox for android, but when I tried to install again via Google Play it shows the Error:-24 and stops.

The problem happened after the update from 11/02, on both versions.

Well unfortunately I can't test my games anymore with Firefox on Tablet.
Thanks to the user craigleat who answered here: https://support.mozilla.org/en-US/questions/1109701#answer-866381

The problem was solved, and the problem was happening because of the variable: "gfx.canvas.azure.accelerated" which needed to be toogled to false.

Matheus.
Reporter states that on the device in comment 3 they need to disable gfx.canvas.azure.accelerated to get canvas objects to display. Who should look at this?
Flags: needinfo?(milan)
The interesting part here is comment 3, comment 4, comment 5.  We have one Galaxy Tab 3 that works, one that does not.  We currently allow acceleration (by default) on any device, as long as the SDK version is 11 or higher (https://dxr.mozilla.org/mozilla-central/source/widget/android/GfxInfo.cpp#415)  We have specific hardware blocks in place for other features, but not for canvas acceleration.  On the other hand, if we have the same device both fail and not, there may be something else we need to test for.
:snorp, thoughts?
Component: General → Graphics, Panning and Zooming
Flags: needinfo?(milan) → needinfo?(snorp)
(In reply to Milan Sreckovic [:milan] from comment #10)
> The interesting part here is comment 3, comment 4, comment 5.  We have one
> Galaxy Tab 3 that works, one that does not.
> On the other hand, if we have the same device
> both fail and not, there may be something else we need to test for.

There's a reasonably high chance that some galaxy tab 3 variants have exynos socs and others have snapdragon socs.
(In reply to Jamie Nicol [:jnicol] from comment #11)
> (In reply to Milan Sreckovic [:milan] from comment #10)
> > The interesting part here is comment 3, comment 4, comment 5.  We have one
> > Galaxy Tab 3 that works, one that does not.
> > On the other hand, if we have the same device
> > both fail and not, there may be something else we need to test for.
> 
> There's a reasonably high chance that some galaxy tab 3 variants have exynos
> socs and others have snapdragon socs.

I thought that was more related with GPU than CPU or maybe I misunderstand. 

Anyway, here is some info collected about my device using CPU Z:

CPUs : 2
SoCs : 1

CPU 0 :  ARMv7 Processor rev 0 (v7l)
Name : ARM Cortex-A9
CPUs : 2

Core set 0 : ARM Cortex-A9
Core set 0 Nb Cores : 2
Core set 0 Max Clock : 1205 MHz
Core set 0 Impl.id : 0x41
Core set 0 Arch.id : 0x7
Core set 0 Var.id : 3
Core set 0 Part.id : 0xc09
Core set 0 Rev.id : 0
Core set 0 Revision : r3p0

Arch : 2x ARM Cortex-A9 @1.20 GHz
Codename : 
GPU Vendor : Vivante Corporation
GPU Renderer : Vivante GC1000

Model : SM-T210 (lt02wifixx)
Manufacturer : samsung
Board : PXA986
Hardware : pxa988
Android Ver. : 4.4.2
Kernel Arch. : armv7l

Battery capacity : 2100

--- CPUInfos ---
abi : armeabi-v7a
abi2 : armeabi
Processor	: ARMv7 Processor rev 0 (v7l)
processor	: 0
BogoMIPS	: 312.85

Features	: swp half thumb fastmult vfp edsp thumbee neon vfpv3 tls 
CPU implementer	: 0x41
CPU architecture: 7
CPU variant	: 0x3
CPU part	: 0xc09
CPU revision	: 0

Hardware	: PXA988
Revision	: 0007
Serial	: 4100cd2529fc9000
The device I tested on was the Galaxy Tab 3 10.1 which is an Intel x86 based device. http://www.gsmarena.com/samsung_galaxy_tab_3_10_1_p5220-5491.php So I was testing on a very different device.
Is there a way to block just the flavour that we know fails?
Both failing devices use the Vivante GC1000 GPU. This GPU is used on the Marvell PXA986 and PXA1088 SoC. HP and Samsung have shipped devices using these SoC. Can you blacklist based on the SoC identifier?
(In reply to craig.leat from comment #15)
> Both failing devices use the Vivante GC1000 GPU. This GPU is used on the
> Marvell PXA986 and PXA1088 SoC. HP and Samsung have shipped devices using
> these SoC. Can you blacklist based on the SoC identifier?

The SoC is not exposed in a consistent way, as the vendor can change the system properties to whatever values they feel like (ro.hardware, etc). We should be able to easily blacklist the Vivante GPU, though.
Flags: needinfo?(snorp)
I agree any blocking should be done based on the GPU. I can easily whip up a patch to do this, but from comment 0 this is a regression. so should we try to identify and fix the problem instead / as well?

@mbnatwork, @craig, @anyone else who can reproduce - are you able to run mozregression to find the regression range for this problem? https://mozilla.github.io/mozregression/
Flags: needinfo?(mbnatwork)
Flags: needinfo?(craig.leat)
Didn't Lee update Skia recently-ish?
Flags: needinfo?(lsalzman)
(In reply to James Willcox (:snorp) (jwillcox@mozilla.com) from comment #18)
> Didn't Lee update Skia recently-ish?

We were using a mid-development version of Skia's m49 branch. Eventually I updated to the actual released Skia m49 branch once that came out. I don't think that would impact this.
Flags: needinfo?(lsalzman)
Output from mozregression:
105:27.52 INFO: Narrowed inbound regression window from [1fb97bdb, 499fd454] (3 revisions) to [44e1b61e, 499fd454] (2 revisions) (~1 steps left)
105:27.52 INFO: Oh noes, no (more) inbound revisions :(
105:27.52 INFO: Last good revision: 44e1b61e30b5a663409a9be6b2104650c8103c46
105:27.52 INFO: First bad revision: 499fd45447a200cf0cc8a721c5ff85995e9c1340
105:27.52 INFO: Pushlog:
https://hg.mozilla.org/integration/mozilla-inbound/pushloghtml?fromchange=44e1b61e30b5a663409a9be6b2104650c8103c46&tochange=499fd45447a200cf0cc8a721c5ff85995e9c1340

105:30.33 INFO: Looks like the following bug has the changes which introduced the regression:
https://bugzilla.mozilla.org/show_bug.cgi?id=1206076

A note concerning the revision marked bad:
The behaviour I see with this revision is different to current builds. Instead of freezing the canvas pulsates showing the current time and then the time the page first loaded - using demo from #c0.
Flags: needinfo?(craig.leat)
Thanks Craig! Okay, so not an actual regression - accelerated canvas probably never worked on this gpu. I'll get the block patch uploaded.
Assignee: nobody → jnicol
Flags: needinfo?(mbnatwork)
Comment on attachment 8744881 [details]
MozReview Request: Bug 1248183 - Block accelerated canvas2d on Vivante GC1000 GPUs; r?snorp

https://reviewboard.mozilla.org/r/48715/#review45517

::: widget/android/GfxInfo.cpp:416
(Diff revision 1)
>    }
>  
>    // Don't evaluate special cases when evaluating the downloaded blocklist.
>    if (aDriverInfo.IsEmpty()) {
>      if (aFeature == nsIGfxInfo::FEATURE_CANVAS2D_ACCELERATION) {
> +      if (mSDKVersion < 11) {

You can remove this block if you want, since we only support 14+ (ICS) as of 48.
Attachment #8744881 - Flags: review?(snorp) → review+
We don't have downloadable blocking for Fennec, right?  We may want to uplift this, it seems to have been around since 44 (if uplifting, we need to keep the SDK version check.)
Yep, since we'll want to uplift this let's do that in a separate patch?

Try run here - https://treeherder.mozilla.org/#/jobs?repo=try&revision=309359fb3f71924b5df1403c88088b3e92943080

Requesting checkin please.

Milan: how far do we want to uplift this?
Flags: needinfo?(milan)
Keywords: checkin-needed
I'd go to 47, but that will be Beta soon, and we may need :snorp to tell us how common these devices are, so that we can justify the change.  On the other hand, it is a clear (and simple) regression (used to be off, now we're making it off again.)
Flags: needinfo?(milan) → needinfo?(snorp)
https://hg.mozilla.org/mozilla-central/rev/fb7111ef84f7
Status: UNCONFIRMED → RESOLVED
Closed: 8 years ago
Resolution: --- → FIXED
Target Milestone: --- → Firefox 49
Removing stale needinfo. It's too late now to uplift.
Flags: needinfo?(snorp)
Product: Firefox for Android → Firefox for Android Graveyard
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: