Closed
Bug 1223866
Opened 9 years ago
Closed 3 years ago
Microsoft Edge gets a +112% better score on Unity3D WebGL "Asteroid Field" benchmark.
Categories
(Core :: Graphics: CanvasWebGL, enhancement, P2)
Tracking
()
RESOLVED
INCOMPLETE
People
(Reporter: jujjyl, Unassigned)
References
Details
(Whiteboard: [gfx-noted])
STR:
1. Visit http://beta.unity3d.com/jonas/WebGLBenchmark/
2. Run the Asteroid Field demo.
Observed:
Firefox 42 release gets a score of 1546.
Edge 20.10240.16384.0 gets a score of 3283.
Higher is better in this demo, so Edge gets a score 2.12x that of Firefox, or +112% better.
Reporter | ||
Comment 1•9 years ago
|
||
A geckoprofiler profile of the benchmark URL: http://people.mozilla.org/~bgirard/cleopatra/#report=126a7ae6f5cd3c6c15a225337ebcb9bc834be799&invertCallback=true&filter=%5B%7B%22type%22%3A%22RangeSampleFilter%22,%22start%22%3A104311,%22end%22%3A117530%7D%5D .
Conducted on the following system:
HASWELL
-------
Custom built desktop PC
Windows 8.1 64-bit
3.0 GHz Intel 8-Core i7-5960X
16GB of RAM
3840x2160 pixels display @ 60 Hz
System DirectX version: DirectX 11.0
NVIDIA GeForce GTX 980, 12GB of RAM, driver version 358.91 (2015-11-09)
- nvd3dumx.dll, nvwgf2umx.dll:
- version 10.18.13.5891 (2015-11-05)
- D3D Version 11.1, WDDM 1.3, WHQL approved
Firefox Nightly 45.0a1 (2015-11-10)
Reporter | ||
Comment 2•9 years ago
|
||
Here is another geckoprofiler profile of a custom-built version of the benchmark, which is nonminifed so that it has symbols intact: http://people.mozilla.org/~bgirard/cleopatra/#report=2540877866e46fdf5d1c78bca3d1b7720fedd8cb&filter=%5B%7B%22type%22%3A%22RangeSampleFilter%22,%22start%22%3A484578,%22end%22%3A489291%7D%5D
Reporter | ||
Comment 3•9 years ago
|
||
Observations of the second profile:
- 84.4% of CPU time is spent in glDrawElements().
- 12.9% of CPU time is spent in glUniformMatrix4fv().
- The remaining time, ~2.7% is application logic execution itself.
The benchmark is heavily CPU-side bound inside GL. The big bottleneck is the function mozilla::WebGLContext::DrawElements(), of which:
- 21.9% of time is spent in rx::Renderer11::applyVertexBuffer()
- 13.3% is rx::VertexDataManager::prepareVertexData()
- 8.4% is rx::InputLayoutCache::applyVertexBuffers()
- 18.7% of time is spent in rx::RendererD3D::applyTextures()
- 6.0% is rx::Renderer11::setSamplerState()
- 5.2% is rx::Renderer11::setTexture()
- 2.2% is gl::TextureCapsMap::get()
- 16.2% of time is spent in rx::RendererD3D::applyShaders()
- 9.3% is rx::ProgramD3D::applyUniforms()
- 4.0% is rx::Renderer11::applyShaders()
- 2.6% is rx::ProgramD3D::updateCachedInputLayout()
- 13.2% of time is spent in rx::RendererD3D::applyRenderTarget()
- 5.0% is rx::Framebuffer11::invalidateSwizzles()
- 2.3% is rx::Renderer11::unsetConflictingSRVs()
- 1.9% is rx::TextureD3D::getAttachmentRenderTarget()
- 7.3% of time is spent in mozilla::WebGLContext::Draw_cleanup(
- 6.2% is mozilla::WebGLFramebuffer::PrecheckFramebufferStatus()
- 7.1% of time is spent in gl::ValidateDrawElements()
- 4.4% is gl::Framebuffer::checkStatus()
- 4.9% of time is spent in rx::RendererD3D::applyState()
- 4.0% is gl::Framebuffer::checkStatus()
- 4.4% of time is spent in mozilla::WebGLContext::DrawElements_check()
- 2.0% of time is spent in rx::RendererD3D::applyIndexBuffer()
If the function names are to believe, then framebuffer completeness is checked up to three times per draw call(?), and more or less full GL state is (re)applied on each draw(?).
Updated•9 years ago
|
Whiteboard: [gfx-noted]
Updated•6 years ago
|
Type: defect → enhancement
Priority: -- → P2
Hi jeff
We are checking old bugs to see if there is any that can be closed as outdated.
I tried to open the link but firefox gave me an error.
is this still a valid enhancement?
please let me know
thanks
Flags: needinfo?(jgilbert)
Comment 5•3 years ago
|
||
We can just mark it incomplete for that error.
Status: NEW → RESOLVED
Closed: 3 years ago
Flags: needinfo?(jgilbert)
Resolution: --- → INCOMPLETE
You need to log in
before you can comment on or make changes to this bug.
Description
•