yangqiaosheng / angleproject

Automatically exported from code.google.com/p/angleproject
Other
0 stars 0 forks source link

Potential performance regression in ANGLE D3D back-end #909

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
Looking at a heavy draw call benchmark like the WebGL aquarium, 
--use-gl=desktop vs D3D9 or D3D11 produces very skewed results.

Original issue reported on code.google.com by jmad...@chromium.org on 9 Feb 2015 at 6:58

GoogleCodeExporter commented 9 years ago

Original comment by jmad...@chromium.org on 9 Feb 2015 at 6:58

GoogleCodeExporter commented 9 years ago
Reproduction steps (important):

1. Compile & link your DLLs, drop them in Canary.
2. start chrome http://webglsamples.org/aquarium/aquarium.html
3. (Important) WAIT for the first few fish to load and swim around
4. Change number of fish to 4000 after the first scene stabilized

Issue is not as easy to repro if you immediately switch to 4000 fish.

We have one regression with this CL:

https://chromium-review.googlesource.com/235613

Profiling shows new hotspots in gl::Texture::getImageDesc and 
gl::ImageIndex::operator<.

From additional testing and previous benchmark results, I believe we have other 
regressions both before and after this patch. Continuing to look.

Original comment by jmad...@chromium.org on 9 Feb 2015 at 7:08

GoogleCodeExporter commented 9 years ago
Found another regression with this CL:

https://chromium-review.googlesource.com/240241

Attached are some profiler screen captures. They show that with the first 
regression, getImageDesc becomes a hotspot. With the second, operator< becomes 
a hotspot. Also a screenshot of modules shows ANGLE overhead vs the D3D11 
runtime layer and the driver layer overhead.

Original comment by jmad...@chromium.org on 9 Feb 2015 at 7:42

Attachments:

GoogleCodeExporter commented 9 years ago
Also confirmed using bisect-builds.py we see a big drop in FPS in this Chromium 
range:

https://chromium.googlesource.com/chromium/src/+log/f4704598a63e2effd53b638700e4
80e7e218fb85..bf734cdda75f3314996270eef0e924c63cac9743

This supports the above data, due to the ANGLE roll included. Assigning to 
Geoff so he can look at replacing the std::map in gl::Texture.

Original comment by jmad...@chromium.org on 9 Feb 2015 at 8:26

GoogleCodeExporter commented 9 years ago

Original comment by jmad...@chromium.org on 9 Feb 2015 at 8:26

GoogleCodeExporter commented 9 years ago
Fixed in:

https://chromium-review.googlesource.com/#/c/248051/
https://chromium-review.googlesource.com/#/c/248052/
https://chromium-review.googlesource.com/#/c/248070/

Original comment by geofflang@chromium.org on 12 Feb 2015 at 6:09