As an Android GLES driver on top of Vulkan, ANGLE must pre-rotate rendering on behalf of the application. This involves modifying the vertex shader to multiply gl_Position with a mat2 "rotation matrix". Not doing so means that SurfaceFlinger (SF) will perform a costly rotation blit before presenting every image. Setting WindowSurfaceVk::mPreTransform to mCurrentTransform tells SF to not do the blit. When the surface is rotated 90 or 270 degrees, the width and height must be swapped for: - The swapchain images, and for any depth, stencil, and/or multisample attachments used with the swapchain image. - The viewport, scissor, and render area. Because the Metal back-end shares the TranslatorVulkan, it will define the same preRotation (mat2) DriverUniform that is used for Vulkan. Bug: angleproject:3502 Change-Id: I968dbe8869ba0f50de18dd41f1195e847c06b545 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2038272 Commit-Queue: Ian Elliott <ianelliott@google.com> Reviewed-by:Jamie Madill <jmadill@chromium.org>
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| doc | Loading commit data... | |
| shaders | Loading commit data... | |
| BUILD.gn | Loading commit data... | |
| BufferMtl.h | Loading commit data... | |
| BufferMtl.mm | Loading commit data... | |
| CompilerMtl.h | Loading commit data... | |
| CompilerMtl.mm | Loading commit data... | |
| ContextMtl.h | Loading commit data... | |
| ContextMtl.mm | Loading commit data... | |
| DisplayMtl.h | Loading commit data... | |
| DisplayMtl.mm | Loading commit data... | |
| DisplayMtl_api.h | Loading commit data... | |
| FrameBufferMtl.h | Loading commit data... | |
| FrameBufferMtl.mm | Loading commit data... | |
| ProgramMtl.h | Loading commit data... | |
| ProgramMtl.mm | Loading commit data... | |
| RenderBufferMtl.h | Loading commit data... | |
| RenderBufferMtl.mm | Loading commit data... | |
| RenderTargetMtl.h | Loading commit data... | |
| RenderTargetMtl.mm | Loading commit data... | |
| ShaderMtl.h | Loading commit data... | |
| ShaderMtl.mm | Loading commit data... | |
| SurfaceMtl.h | Loading commit data... | |
| SurfaceMtl.mm | Loading commit data... | |
| TextureMtl.h | Loading commit data... | |
| TextureMtl.mm | Loading commit data... | |
| VertexArrayMtl.h | Loading commit data... | |
| VertexArrayMtl.mm | Loading commit data... | |
| gen_mtl_format_table.py | Loading commit data... | |
| mtl_buffer_pool.h | Loading commit data... | |
| mtl_buffer_pool.mm | Loading commit data... | |
| mtl_command_buffer.h | Loading commit data... | |
| mtl_command_buffer.mm | Loading commit data... | |
| mtl_common.h | Loading commit data... | |
| mtl_common.mm | Loading commit data... | |
| mtl_format_map.json | Loading commit data... | |
| mtl_format_table_autogen.mm | Loading commit data... | |
| mtl_format_utils.h | Loading commit data... | |
| mtl_format_utils.mm | Loading commit data... | |
| mtl_glslang_utils.h | Loading commit data... | |
| mtl_glslang_utils.mm | Loading commit data... | |
| mtl_render_utils.h | Loading commit data... | |
| mtl_render_utils.mm | Loading commit data... | |
| mtl_resources.h | Loading commit data... | |
| mtl_resources.mm | Loading commit data... | |
| mtl_state_cache.h | Loading commit data... | |
| mtl_state_cache.mm | Loading commit data... | |
| mtl_utils.h | Loading commit data... | |
| mtl_utils.mm | Loading commit data... |