Design doc: go/pixel-canvas This feature will record all canvas draw commands at pixel size, thus eliminating majority of the fractional dsf bugs. This will also allow the device to work at any non-discrete values of device scale factors.
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e commit 55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e Author: malaykeshav <malaykeshav@chromium.org> Date: Thu Aug 03 01:06:04 2017 Implements core logic for Pixel Canvas This patch implements the core logic for Pixel Canvas while hiding it behind a compositor switch (Disabled by default). Pixel Canvas enables all canvas draw commands to be recorded at pixel size, helping eliminate a majority of fractional device scale factor bugs. This also allows devices to work at all non discrete fractional scales with reduced(or no) overhead. Subsequent changes will fix bugs that happen when this mode is enabled. This is to avoid one massive CL. DesignDoc=go/pixel-canvas Slides=go/pixel-canvas-slide BUG= 720596 COMPONENT=Canvas, View, Layer, Paint Context, Paint Recorder CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel Review-Url: https://codereview.chromium.org/2877483003 Cr-Commit-Position: refs/heads/master@{#491587} [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/ash/system/tray/tray_details_view.cc [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/ash/wm/drag_window_controller.cc [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/cc/layers/picture_layer.cc [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/cc/layers/recording_source.cc [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/cc/layers/recording_source.h [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/cc/raster/raster_source.cc [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/cc/raster/raster_source.h [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/cc/raster/raster_source_unittest.cc [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/cc/trees/layer_tree_host.cc [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/cc/trees/layer_tree_host.h [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/chrome/browser/ui/views/autofill/card_unmask_prompt_views.cc [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/chrome/browser/ui/views/autofill/card_unmask_prompt_views.h [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/chrome/browser/ui/views/bookmarks/bookmark_bar_view.h [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/chrome/browser/ui/views/frame/browser_view.cc [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/chrome/browser/ui/views/frame/browser_view.h [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/chrome/browser/ui/views/frame/top_container_view.cc [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/chrome/browser/ui/views/frame/top_container_view.h [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/chrome/browser/ui/views/omnibox/omnibox_popup_contents_view.cc [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/chrome/browser/ui/views/omnibox/omnibox_popup_contents_view.h [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/chrome/browser/ui/views/profiles/profile_chooser_view.cc [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/chrome/browser/ui/views/tabs/tab_strip.cc [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/chrome/browser/ui/views/tabs/tab_strip.h [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/components/web_contents_delegate_android/validation_message_bubble_android.cc [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/content/browser/compositor/reflector_impl_unittest.cc [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/content/browser/compositor/software_browser_compositor_output_surface_unittest.cc [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/content/browser/compositor/software_output_device_ozone_unittest.cc [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/content/browser/renderer_host/browser_compositor_view_mac.mm [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/ui/aura/window_tree_host.cc [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/ui/compositor/canvas_painter.cc [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/ui/compositor/canvas_painter.h [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/ui/compositor/compositor.cc [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/ui/compositor/compositor.h [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/ui/compositor/compositor_switches.cc [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/ui/compositor/compositor_switches.h [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/ui/compositor/compositor_unittest.cc [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/ui/compositor/layer.cc [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/ui/compositor/layer.h [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/ui/compositor/layer_owner_unittest.cc [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/ui/compositor/paint_context.cc [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/ui/compositor/paint_context.h [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/ui/compositor/paint_recorder.cc [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/ui/compositor/paint_recorder.h [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/ui/compositor/test/test_compositor_host_android.cc [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/ui/compositor/test/test_compositor_host_mac.mm [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/ui/compositor/test/test_compositor_host_ozone.cc [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/ui/compositor/test/test_compositor_host_win.cc [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/ui/compositor/test/test_compositor_host_x11.cc [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/ui/gfx/geometry/rect.h [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/ui/message_center/views/message_list_view.cc [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/ui/message_center/views/message_list_view.h [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/ui/views/BUILD.gn [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/ui/views/DEPS [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/ui/views/bubble/bubble_frame_view.cc [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/ui/views/bubble/bubble_frame_view.h [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/ui/views/button_drag_utils.cc [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/ui/views/cocoa/bridged_native_widget.mm [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/ui/views/controls/label_unittest.cc [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/ui/views/controls/menu/submenu_view.cc [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/ui/views/controls/menu/submenu_view.h [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/ui/views/controls/textfield/textfield.cc [add] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/ui/views/paint_info.cc [add] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/ui/views/paint_info.h [add] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/ui/views/paint_info_unittest.cc [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/ui/views/view.cc [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/ui/views/view.h [modify] https://crrev.com/55c9f6d21086e418dac45a58e5f51a3a5ef7bc1e/ui/views/view_unittest.cc
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/420b7dbf716f2fcdb4043c60d8beae9738f6d125 commit 420b7dbf716f2fcdb4043c60d8beae9738f6d125 Author: F#m <malaykeshav@chromium.org> Date: Fri Aug 11 18:46:00 2017 Minor bug fix to adjust clip_path_ used by BubbleFrameView The |clip_path_| is transformed to the paint recording coordinates by multiplying it with a transform matrix. This matrix contains a scale transform and an offset transform. The scale matrix needs to be applied before the translate matrix. But currently the order is reveresed, leading to bugs in places that use a clip path for clipping. This change corrects the order of transform applied. BUG= 720596 COMPONENT=Clipping, Views, Dialog, BubbleFrameView Change-Id: If8fd69470c502822338b64f4384660df05150812 Reviewed-on: https://chromium-review.googlesource.com/610683 Reviewed-by: Scott Violet <sky@chromium.org> Commit-Queue: Malay Keshav <malaykeshav@chromium.org> Cr-Commit-Position: refs/heads/master@{#493825} [modify] https://crrev.com/420b7dbf716f2fcdb4043c60d8beae9738f6d125/ui/views/view.cc
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/f2f5c7377b0268f8255c86f3fd21753ba0a9b49a commit f2f5c7377b0268f8255c86f3fd21753ba0a9b49a Author: F#m <malaykeshav@chromium.org> Date: Mon Aug 14 22:22:43 2017 Renames PaintInfo ScaleType to have more meaningful enum This patch renames the ScaleType enum in Paint info to have names more representative of what effect they have on scaling. BUG= 720596 COMPONENT=View, PaintInfo, Scaling Change-Id: Idfbaefde9be4c70637cb90380e8effd5176fd8a4 Reviewed-on: https://chromium-review.googlesource.com/612468 Reviewed-by: Scott Violet <sky@chromium.org> Commit-Queue: Malay Keshav <malaykeshav@chromium.org> Cr-Commit-Position: refs/heads/master@{#494213} [modify] https://crrev.com/f2f5c7377b0268f8255c86f3fd21753ba0a9b49a/ash/frame/caption_buttons/frame_caption_button.cc [modify] https://crrev.com/f2f5c7377b0268f8255c86f3fd21753ba0a9b49a/ui/views/paint_info.cc [modify] https://crrev.com/f2f5c7377b0268f8255c86f3fd21753ba0a9b49a/ui/views/paint_info.h [modify] https://crrev.com/f2f5c7377b0268f8255c86f3fd21753ba0a9b49a/ui/views/paint_info_unittest.cc [modify] https://crrev.com/f2f5c7377b0268f8255c86f3fd21753ba0a9b49a/ui/views/view.cc
Comment 1 by malaykeshav@chromium.org
, May 24 2017