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)

42 Branch
x86
Windows
enhancement

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.
Blocks: 1223869
Blocks: 1223870
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)
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
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(?).
Depends on: 1224246
Whiteboard: [gfx-noted]
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)

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.