зеркало из https://github.com/AvaloniaUI/angle.git
2a63b3f860
- 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> |
||
---|---|---|
.. | ||
linux | ||
osx | ||
posix | ||
windows | ||
x11 | ||
EGLWindow.cpp | ||
EGLWindow.h | ||
Event.h | ||
Matrix.cpp | ||
Matrix.h | ||
OSPixmap.h | ||
OSWindow.cpp | ||
OSWindow.h | ||
Timer.h | ||
Vector.cpp | ||
Vector.h | ||
com_utils.h | ||
geometry_utils.cpp | ||
geometry_utils.h | ||
keyboard.h | ||
mouse.h | ||
random_utils.cpp | ||
random_utils.h | ||
shader_utils.cpp | ||
shader_utils.h | ||
system_utils.h | ||
util.gyp |