cc: Add trilinear filtering support

Desktop / Chromium - David Reveman [chromium.org] - 12 September 2017 13:05 EDT

This adds trilinear filtering support to layers. All layers with this type of filtering a rendered to a render surface and mipmaps are generated for the render surface when supported by renderer.

This allows for more efficient and higher quality down-sampling. It can provide a significant performance improvement when combined with render surface caching.

BUG=757020 TEST=cc_unittests --gtest_also_run_disabled_tests --use-gpu-in-tests --gtest_filter=GLRendererPixelTest.DISABLED_TrilinearFiltering

Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel Change-Id: I14eb1b06231c9732651670f0cd4b95f95344f5b2 Reviewed-on: https://chromium-review.googlesource.com/621540

0d13363 cc: Add trilinear filtering support.
cc/ipc/cc_param_traits.cc | 6 +-
cc/ipc/cc_param_traits_unittest.cc | 23 ++++----
cc/ipc/cc_serialization_perftest.cc | 2 +-
cc/layers/layer.cc | 10 ++++
cc/layers/layer.h | 5 ++
cc/layers/layer_impl.cc | 7 +++
cc/layers/layer_impl.h | 4 ++
cc/layers/layer_impl_test_properties.cc | 1 +
cc/layers/layer_impl_test_properties.h | 1 +
cc/layers/render_surface_impl.cc | 5 ++
cc/layers/render_surface_impl.h | 2 +
cc/output/direct_renderer.cc | 32 ++++++++---
cc/output/direct_renderer.h | 3 +
cc/output/renderer_pixeltest.cc | 62 ++++++++++++++++++++-
cc/output/software_renderer.cc | 4 ++
cc/output/software_renderer.h | 1 +
cc/quads/render_pass.cc | 9 ++-
cc/quads/render_pass.h | 6 +-
cc/quads/render_pass_unittest.cc | 18 ++++--
cc/resources/resource_provider.cc | 43 +++++++++++++-
cc/resources/resource_provider.h | 15 ++++-
cc/resources/scoped_resource.cc | 2 +
cc/resources/scoped_resource.h | 4 ++
cc/trees/effect_node.cc | 7 ++-
cc/trees/effect_node.h | 1 +
cc/trees/layer_tree_host_common_unittest.cc | 36 ++++++++++++
cc/trees/property_tree_builder.cc | 14 +++++
components/viz/service/display/gl_renderer.cc | 5 ++
components/viz/service/display/gl_renderer.h | 1 +
components/viz/service/display/skia_renderer.cc | 5 ++
components/viz/service/display/skia_renderer.h | 1 +
.../viz/service/display/surface_aggregator.cc | 24 ++++----
components/viz/test/data/trilinear_filtering.png | Bin 0 -> 601 bytes
gpu/command_buffer/common/capabilities.h | 2 +
gpu/command_buffer/service/gles2_cmd_decoder.cc | 1 +
.../service/gles2_cmd_decoder_passthrough.cc | 1 +
gpu/ipc/common/gpu_command_buffer_traits_multi.h | 1 +
.../cpp/compositing/struct_traits_unittest.cc | 6 +-
ui/compositor/layer.cc | 4 ++
ui/compositor/layer.h | 3 +
40 files changed, 327 insertions(+), 50 deletions(-)

Upstream: git.chromium.org


  • Share