angle/util
Austin Kinross 2a63b3f860 Re-land "Implement EGL_experimental_present_path_angle"
- Re-land with clang fix.

This allows ANGLE to render directly onto a D3D swapchain in the correct
orientation when using the D3D11 renderer.

The trick is to add an extra uniform to each shader which takes either
the value +1.0 or -1.0. When rendering to a texture, ANGLE sets this
value to -1.0. When rendering to the default framebuffer, ANGLE sets
this value to +1.0. ANGLE multiplies vertex positions by this value in
the VS to invert rendering when appropriate. It also corrects other
state (e.g. viewport/scissor rect) and shader built-in values
(e.g. gl_FragCoord).

This saves a substantial amount of GPU time and lowers power
consumption. For example, the old method (where ANGLE renders all
content onto an offscreen texture, and then copies/inverts this onto the
swapchain at eglSwapBuffers() time) uses about 20% of the GPU each frame
on a Lumia 630.

Verification:
+ dEQP GL ES2 tests pass when "present path fast" is enabled
+ all ANGLE_end2end_tests pass when "present path fast" is enabled

BUG=angleproject:1219

Change-Id: I56b339897828753a616d7bae837a2f354dba9c63
Reviewed-on: https://chromium-review.googlesource.com/326730
Tryjob-Request: Austin Kinross <aukinros@microsoft.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
2016-02-08 21:05:16 +00:00
..
linux Implement missing util/ functions on Mac 2015-09-16 20:22:46 +00:00
osx Revert "Revert "OSXWindow: fix window size and position computations"" 2016-01-21 15:26:00 +00:00
posix Windows: Write test name in debug log. 2015-12-09 19:16:58 +00:00
windows Win32Window: Implement Event::EVENT_MOUSE_ENTERED 2015-12-14 19:47:23 +00:00
x11 X11Window: fix the behavior of setVisible 2016-01-28 15:18:01 +00:00
EGLWindow.cpp Re-land "Implement EGL_experimental_present_path_angle" 2016-02-08 21:05:16 +00:00
EGLWindow.h Re-land "Implement EGL_experimental_present_path_angle" 2016-02-08 21:05:16 +00:00
Event.h
Matrix.cpp Move more sample_util sources to util. 2015-09-28 19:00:21 +00:00
Matrix.h Move more sample_util sources to util. 2015-09-28 19:00:21 +00:00
OSPixmap.h Implement missing util/ functions on Mac 2015-09-16 20:22:46 +00:00
OSWindow.cpp OSWindow: small fix to the formatting of key event debugging 2015-07-15 20:29:46 +00:00
OSWindow.h In Chromium Mac builds do not find cstdint, use stdint.h instead 2015-09-14 20:43:53 +00:00
Timer.h
Vector.cpp D3D: Rework varying packing code. 2015-11-18 19:23:25 +00:00
Vector.h D3D: Rework varying packing code. 2015-11-18 19:23:25 +00:00
com_utils.h
geometry_utils.cpp Move more sample_util sources to util. 2015-09-28 19:00:21 +00:00
geometry_utils.h Move more sample_util sources to util. 2015-09-28 19:00:21 +00:00
keyboard.h
mouse.h
random_utils.cpp Use std::random functions for test and samples RNG. 2016-01-26 19:37:18 +00:00
random_utils.h Use std::random functions for test and samples RNG. 2016-01-26 19:37:18 +00:00
shader_utils.cpp Add an instancing perf test. 2015-12-16 14:04:14 +00:00
shader_utils.h Update to the latest versions of the GL and EGL headers. 2015-09-15 20:13:55 +00:00
system_utils.h Windows: Write test name in debug log. 2015-12-09 19:16:58 +00:00
util.gyp gyp: Always use pkg-config wrapper 2015-12-18 14:49:29 +00:00