[Chromium issue 447140] WebGL hardware instancing problem on 37.0.1 (works on previous versions)

RESOLVED FIXED

Status

()

RESOLVED FIXED
4 years ago
3 years ago

People

(Reporter: vousk, Unassigned)

Tracking

({regression, testcase})

37 Branch
x86_64
Windows 7
regression, testcase
Points:
---

Firefox Tracking Flags

(Not tracked)

Details

(Whiteboard: [parity-ie][parity-chrome][parity-opera][gfx-noted], URL)

Attachments

(4 attachments)

(Reporter)

Description

4 years ago
Created attachment 8594345 [details]
WebGL_hardware_instancing_problem_FF.jpg

User Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:37.0) Gecko/20100101 Firefox/37.0
Build ID: 20150402191859

Steps to reproduce:

1. Create a WebGL scene with a mesh that contains submeshes and submaterials, and create instances of this mesh
(test scene url : http://www.babylonjs-playground.com/#1MYQJJ#59 )
2. Display scene on latest Firefox 37.0.1 version

Bug appears for the first time in the 37.0.1 version, it's works as expected in 36.0.4 and previous versions.

More info :
When a mesh has submeshes and submaterials, everything is ok. 
When instancing a simple mesh (with no submeshes), everything is ok.
But when instancing a mesh with submeshes and submaterials, submeshes other than the first one don't appear anymore.

Strangely, Google Chrome had the exact same bug a few month ago (fixed now):
https://code.google.com/p/chromium/issues/detail?id=457269


Actual results:

Mesh's submeshes and instances submeshes other than the first submesh don't appear anymore.
(In test scene provided, the 3 spheres show only the first subset of submeshes.)


Expected results:

Original mesh and all instances should display correctly, with all submaterials.
(In test scene provided, 3 spheres with 2 colors should be rendered.)

Comment 1

4 years ago
I tested in FF38+ and it's already fixed. Could you download and test FF38 (beta) to confirm it's fixed on your side, please.
https://www.mozilla.org/en-US/firefox/beta/all/
Flags: needinfo?(vousk)
(Reporter)

Comment 2

4 years ago
I've just installed 38 beta but the bug is still there.
Flags: needinfo?(vousk)

Comment 3

4 years ago
Created attachment 8594360 [details]
FF38-screenshot.jpg

WFM with FF38
(Reporter)

Comment 4

4 years ago
Created attachment 8594365 [details]
WebGL_hardware_instancing_problem_FF38.jpg

Doesn't work for me with FF38.0b5 (tested on 32bits and 64bits versions)

Comment 5

4 years ago
could you tyoe about:support in the location bar and copy the section "graphics", please.
(Reporter)

Comment 6

4 years ago
Here it is :
Date du pilote:	11-20-2014
Description de la carte:	AMD Radeon HD 5800 Series
Direct2D activé:	true
DirectWrite activé:	true (6.2.9200.16571)
Fenêtres avec accélération graphique:	3/3 Direct3D 11 (OMTC)
GPU 2 actif:	false
ID du périphérique:	0x6899
ID du sous-système:	0b001002
ID du vendeur:	0x1002
Pilotes de la carte:	aticfx64 aticfx64 aticfx64 aticfx32 aticfx32 aticfx32 atiumd64 atidxx64 atidxx64 atiumdag atidxx32 atidxx32 atiumdva atiumd6a atitmm64
RAM de la carte:	1024
Rendu WebGL:	Google Inc. -- ANGLE (AMD Radeon HD 5800 Series Direct3D11 vs_5_0 ps_5_0)
Version du pilote:	14.501.1003.0
windowLayerManagerRemote:	true
AzureCanvasBackend:	direct2d 1.1
AzureContentBackend:	direct2d 1.1
AzureFallbackCanvasBackend:	cairo
AzureSkiaAccelerated:	0

Comment 7

4 years ago
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0
Build ID: 20150416143048

Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:40.0) Gecko/20100101 Firefox/40.0
Build ID: 20150418030216

I can reproduce this. Disabling hardware acceleration makes no difference.

Adapter Description: NVIDIA GeForce 210
Adapter Drivers: nvd3dumx,nvwgf2umx,nvwgf2umx nvd3dum,nvwgf2um,nvwgf2um
Adapter RAM: 128
Asynchronous Pan/Zoom: none
Device ID: 0x0a65
Direct2D Enabled: true
DirectWrite Enabled: true (6.2.9200.16571)
Driver Date: 7-2-2014
Driver Version: 9.18.13.4052
GPU #2 Active: false
GPU Accelerated Windows: 2/2 Direct3D 11 (OMTC)
Subsys ID: 34ee1458
Vendor ID: 0x10de
WebGL Renderer: Google Inc. -- ANGLE (NVIDIA GeForce 210 Direct3D11 vs_4_1 ps_4_1)
windowLayerManagerRemote: true
AzureCanvasBackend: direct2d 1.1
AzureContentBackend: direct2d 1.1
AzureFallbackCanvasBackend: cairo
AzureSkiaAccelerated: 0

(In reply to Vousk-prod. from comment #0)
> Strangely, Google Chrome had the exact same bug a few month ago (fixed now):

Both browsers use Google's ANGLE.
https://en.wikipedia.org/wiki/ANGLE_%28software%29
Status: UNCONFIRMED → NEW
Component: Untriaged → Canvas: WebGL
Ever confirmed: true
Keywords: regression, testcase
Product: Firefox → Core
Summary: WebGL hardware instancing problem on 37.0.1 (works on previous versions) → [Chromium issue 447140] WebGL hardware instancing problem on 37.0.1 (works on previous versions)
Whiteboard: [parity-chrome][parity-opera]

Comment 8

4 years ago
Created attachment 8594448 [details]
index.html
(Reporter)

Comment 9

4 years ago
May I ask if this bug is planned to be fixed ? We need to plan accordingly to be able to release softwares. Thanks!

Comment 10

4 years ago
regressionwindow
Push log
http://hg.mozilla.org/mozilla-central/pushloghtml?fromchange=33c0181c4a25&tochange=29fbfc1b31aa

Last good: 2014-10-20
Built from https://hg.mozilla.org/mozilla-central/rev/33c0181c4a25

First bad: 2014-10-21
Built from https://hg.mozilla.org/mozilla-central/rev/29fbfc1b31aa

The web page pops up the following error message:
Compilation error
SIMD.float32x4.reciprocalSqrtApproximation is not a function
Whiteboard: [parity-chrome][parity-opera] → [parity-ie][parity-chrome][parity-opera]

Comment 11

4 years ago
I don't understand why I'm not able to reproduce the issue with FF38 on Win 7.

Comment 12

4 years ago
(In reply to Loic from comment #11)
> I don't understand why I'm not able to reproduce the issue with FF38 on Win
> 7.

Maybe we'll spot a difference if you post your about:support Graphics section.
(Reporter)

Comment 13

4 years ago
Loic, I don't know why you can't reproduce the bug with FF38 on your computer, but most of our customers report us this bug since FF37 update, so I'm sure it's not specificaly related to my computer.
(Reporter)

Comment 14

4 years ago
(In reply to Gingerbread Man from comment #10)

> The web page pops up the following error message:
> Compilation error
> SIMD.float32x4.reciprocalSqrtApproximation is not a function

The test scene URL I provided ( http://www.babylonjs-playground.com/#1MYQJJ#59 ) is using a constantly updated framework (BabylonJS). I know they're currently implementing SIMD, but the WebGL instancing bug appeared first time far before the first steps of SIMD integration into BabylonJS (I think SIMD activates itself in the framework with FF40 nightly only)

Comment 15

4 years ago
(In reply to Gingerbread Man from comment #12)
> (In reply to Loic from comment #11)
> > I don't understand why I'm not able to reproduce the issue with FF38 on Win
> > 7.
> 
> Maybe we'll spot a difference if you post your about:support Graphics
> section.

Adapter Description	Intel(R) HD Graphics 3000
Adapter Description (GPU #2)	NVIDIA GeForce GT 550M
Adapter Drivers	igdumd64 igd10umd64 igd10umd64 igdumd32 igd10umd32 igd10umd32
Adapter Drivers (GPU #2)	nvd3dumx,nvwgf2umx,nvwgf2umx nvd3dum,nvwgf2um,nvwgf2um
Adapter RAM	Unknown
Adapter RAM (GPU #2)	2048
Asynchronous Pan/Zoom	none
ClearType Parameters	Gamma: 2200 Pixel Structure: R ClearType Level: 100 Enhanced Contrast: 50
Device ID	0x0116
Device ID (GPU #2)	0x0df6
Direct2D Enabled	true
DirectWrite Enabled	true (6.2.9200.17292)
Driver Date	1-30-2015
Driver Date (GPU #2)	9-13-2014
Driver Version	9.17.10.4101
Driver Version (GPU #2)	9.18.13.4411
GPU #2 Active	false
GPU Accelerated Windows	1/1 Direct3D 11 (OMTC)
Subsys ID	17121043
Subsys ID (GPU #2)	17121043
Supports Hardware H264 Decoding	true
Vendor ID	0x8086
Vendor ID (GPU #2)	0x10de
WebGL Renderer	Google Inc. -- ANGLE (Intel(R) HD Graphics 3000 Direct3D9Ex vs_3_0 ps_3_0)
windowLayerManagerRemote	true
AzureCanvasBackend	direct2d 1.1
AzureContentBackend	direct2d 1.1
AzureFallbackCanvasBackend	cairo
AzureSkiaAccelerated	0

Comment 16

4 years ago
(In reply to Vousk-prod. from comment #6)
> Rendu WebGL:	Google Inc. -- ANGLE (AMD Radeon HD 5800 Series Direct3D11
> vs_5_0 ps_5_0)
(In reply to Gingerbread Man from comment #7)
> WebGL Renderer: Google Inc. -- ANGLE (NVIDIA GeForce 210 Direct3D11 vs_4_1
> ps_4_1)
(In reply to Loic from comment #15)
> WebGL Renderer	Google Inc. -- ANGLE (Intel(R) HD Graphics 3000 Direct3D9Ex
> vs_3_0 ps_3_0)

Maybe Direct3D9Ex versus Direct3D11 is the relevant difference.

(In reply to Vousk-prod. from comment #14)
> The test scene URL I provided (
> http://www.babylonjs-playground.com/#1MYQJJ#59 ) is using a constantly
> updated framework (BabylonJS). I know they're currently implementing SIMD,
> but the WebGL instancing bug appeared first time far before the first steps
> of SIMD integration into BabylonJS (I think SIMD activates itself in the
> framework with FF40 nightly only)

Like I said, the build dated 2014-10-20 was the last to work — that's Firefox 36.0a1. After that, the only thing that changes is which particular way the testcase fails to render:

1. 2014-10-20 | https://hg.mozilla.org/mozilla-central/rev/33c0181c4a25
No problem. The three spheres render fully.

2. 2014-10-21 | https://hg.mozilla.org/mozilla-central/rev/29fbfc1b31aa
Nothing renders. Website says, “Compilation error | SIMD.float32x4.reciprocalSqrtApproximation is not a function”

3. 2015-03-17 | https://hg.mozilla.org/mozilla-central/rev/008b3f65a7e0
Only the top part of the spheres renders, as shown in attachment 8594345 [details]. There's no website error message.

4. 2015-05-19 | https://hg.mozilla.org/mozilla-central/rev/4fb7ff694bf5
N.B.: This is the current build; I haven't tested prior ones between the above-mentioned and this one.
Nothing renders. Website says, “Compilation error | SIMD.float32x4.loadXYZ is not a function”


It would be helpful if we knew which bug report caused this regression, but nothing in the push log strikes me as relevant.
(Reporter)

Comment 17

4 years ago
(In reply to Gingerbread Man from comment #16)
> (In reply to Vousk-prod. from comment #6)
> > Rendu WebGL:	Google Inc. -- ANGLE (AMD Radeon HD 5800 Series Direct3D11
> > vs_5_0 ps_5_0)
> (In reply to Gingerbread Man from comment #7)
> > WebGL Renderer: Google Inc. -- ANGLE (NVIDIA GeForce 210 Direct3D11 vs_4_1
> > ps_4_1)
> (In reply to Loic from comment #15)
> > WebGL Renderer	Google Inc. -- ANGLE (Intel(R) HD Graphics 3000 Direct3D9Ex
> > vs_3_0 ps_3_0)
> 
> Maybe Direct3D9Ex versus Direct3D11 is the relevant difference.
> 

In fact we already knew that it's a D3D11 related problem, in the chrome isue I reported we can read: 
____
quote "ANGLE team: theoretically should reproduce on a desktop AMD GPU?"
Yes, AMD GPU. Radeon HD 5800
Issue also reproducible on GPU Iris Pro Graphics 5200

@vousk: if you launch chrome.exe from the Command Prompt and add the argument "--disable-d3d11", does the instancing problem disappear?
____
--disable-d3d11 : the problem disappear !!
____
Sounds like a regression in ANGLE's instancing implementation in its D3D11 backend.
____
Flags: needinfo?(mchang)
Flags: needinfo?(jgilbert)
Whiteboard: [parity-ie][parity-chrome][parity-opera] → [parity-ie][parity-chrome][parity-opera][gfx-noted]
Noting that this might be a useful test case for bug 1167477.
Flags: needinfo?(mchang)
(Reporter)

Comment 19

3 years ago
Any news about this bug ?
Wouldn't it be possible to check the way the issue was solved in Chromium to fight that same ANGLE regression ?
Working in Nightly46.
Status: NEW → RESOLVED
Last Resolved: 3 years ago
Flags: needinfo?(jgilbert)
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.