New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 757020 link

Starred by 3 users

Issue metadata

Status: Assigned
Owner:
Last visit > 30 days ago
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 2
Type: Bug



Sign in to add a comment

Bad aliasing artifacts and poor rendering performance in overview mode.

Project Member Reported by reve...@chromium.org, Aug 18 2017

Issue description

We should add trilinear filtering support to compositor and use it for overview mode. This will reduce aliasing artifacts and improve rendering performance.
 
It should be possible to do this efficiently now that we have render surface caching. The idea is:

- Add a new layer flag to enable trilinear filtering.
- Layers with trilinear filtering will require a render surface.
- GenerateMipmap will be called after updating the render surface.
- GLRenderer will use GL_LINEAR_MIPMAP_LINEAR when drawing the render surface.
- Chrome OS UI can enable render surface caching to avoid unnecessary updates of render surface and calls to GenerateMipmap.


Components: Internals>Compositing
Created a short document to describe this problem and the solution in more detail: https://docs.google.com/a/google.com/document/d/1jxo-80UX2tSatReRKg1RYuOgVnLxE3msi3cVoKnjps4/edit?usp=sharing
Project Member

Comment 4 by bugdroid1@chromium.org, Sep 12 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/0d133634f10cc828d8f7d45dbeef628e94d908d1

commit 0d133634f10cc828d8f7d45dbeef628e94d908d1
Author: David Reveman <reveman@chromium.org>
Date: Tue Sep 12 17:05:40 2017

cc: Add trilinear filtering support.

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
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Commit-Queue: David Reveman <reveman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#501318}
[modify] https://crrev.com/0d133634f10cc828d8f7d45dbeef628e94d908d1/cc/ipc/cc_param_traits.cc
[modify] https://crrev.com/0d133634f10cc828d8f7d45dbeef628e94d908d1/cc/ipc/cc_param_traits_unittest.cc
[modify] https://crrev.com/0d133634f10cc828d8f7d45dbeef628e94d908d1/cc/ipc/cc_serialization_perftest.cc
[modify] https://crrev.com/0d133634f10cc828d8f7d45dbeef628e94d908d1/cc/layers/layer.cc
[modify] https://crrev.com/0d133634f10cc828d8f7d45dbeef628e94d908d1/cc/layers/layer.h
[modify] https://crrev.com/0d133634f10cc828d8f7d45dbeef628e94d908d1/cc/layers/layer_impl.cc
[modify] https://crrev.com/0d133634f10cc828d8f7d45dbeef628e94d908d1/cc/layers/layer_impl.h
[modify] https://crrev.com/0d133634f10cc828d8f7d45dbeef628e94d908d1/cc/layers/layer_impl_test_properties.cc
[modify] https://crrev.com/0d133634f10cc828d8f7d45dbeef628e94d908d1/cc/layers/layer_impl_test_properties.h
[modify] https://crrev.com/0d133634f10cc828d8f7d45dbeef628e94d908d1/cc/layers/render_surface_impl.cc
[modify] https://crrev.com/0d133634f10cc828d8f7d45dbeef628e94d908d1/cc/layers/render_surface_impl.h
[modify] https://crrev.com/0d133634f10cc828d8f7d45dbeef628e94d908d1/cc/output/direct_renderer.cc
[modify] https://crrev.com/0d133634f10cc828d8f7d45dbeef628e94d908d1/cc/output/direct_renderer.h
[modify] https://crrev.com/0d133634f10cc828d8f7d45dbeef628e94d908d1/cc/output/renderer_pixeltest.cc
[modify] https://crrev.com/0d133634f10cc828d8f7d45dbeef628e94d908d1/cc/output/software_renderer.cc
[modify] https://crrev.com/0d133634f10cc828d8f7d45dbeef628e94d908d1/cc/output/software_renderer.h
[modify] https://crrev.com/0d133634f10cc828d8f7d45dbeef628e94d908d1/cc/quads/render_pass.cc
[modify] https://crrev.com/0d133634f10cc828d8f7d45dbeef628e94d908d1/cc/quads/render_pass.h
[modify] https://crrev.com/0d133634f10cc828d8f7d45dbeef628e94d908d1/cc/quads/render_pass_unittest.cc
[modify] https://crrev.com/0d133634f10cc828d8f7d45dbeef628e94d908d1/cc/resources/resource_provider.cc
[modify] https://crrev.com/0d133634f10cc828d8f7d45dbeef628e94d908d1/cc/resources/resource_provider.h
[modify] https://crrev.com/0d133634f10cc828d8f7d45dbeef628e94d908d1/cc/resources/scoped_resource.cc
[modify] https://crrev.com/0d133634f10cc828d8f7d45dbeef628e94d908d1/cc/resources/scoped_resource.h
[modify] https://crrev.com/0d133634f10cc828d8f7d45dbeef628e94d908d1/cc/trees/effect_node.cc
[modify] https://crrev.com/0d133634f10cc828d8f7d45dbeef628e94d908d1/cc/trees/effect_node.h
[modify] https://crrev.com/0d133634f10cc828d8f7d45dbeef628e94d908d1/cc/trees/layer_tree_host_common_unittest.cc
[modify] https://crrev.com/0d133634f10cc828d8f7d45dbeef628e94d908d1/cc/trees/property_tree_builder.cc
[modify] https://crrev.com/0d133634f10cc828d8f7d45dbeef628e94d908d1/components/viz/service/display/gl_renderer.cc
[modify] https://crrev.com/0d133634f10cc828d8f7d45dbeef628e94d908d1/components/viz/service/display/gl_renderer.h
[modify] https://crrev.com/0d133634f10cc828d8f7d45dbeef628e94d908d1/components/viz/service/display/skia_renderer.cc
[modify] https://crrev.com/0d133634f10cc828d8f7d45dbeef628e94d908d1/components/viz/service/display/skia_renderer.h
[modify] https://crrev.com/0d133634f10cc828d8f7d45dbeef628e94d908d1/components/viz/service/display/surface_aggregator.cc
[add] https://crrev.com/0d133634f10cc828d8f7d45dbeef628e94d908d1/components/viz/test/data/trilinear_filtering.png
[modify] https://crrev.com/0d133634f10cc828d8f7d45dbeef628e94d908d1/gpu/command_buffer/common/capabilities.h
[modify] https://crrev.com/0d133634f10cc828d8f7d45dbeef628e94d908d1/gpu/command_buffer/service/gles2_cmd_decoder.cc
[modify] https://crrev.com/0d133634f10cc828d8f7d45dbeef628e94d908d1/gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc
[modify] https://crrev.com/0d133634f10cc828d8f7d45dbeef628e94d908d1/gpu/ipc/common/gpu_command_buffer_traits_multi.h
[modify] https://crrev.com/0d133634f10cc828d8f7d45dbeef628e94d908d1/services/viz/public/cpp/compositing/struct_traits_unittest.cc
[modify] https://crrev.com/0d133634f10cc828d8f7d45dbeef628e94d908d1/ui/compositor/layer.cc
[modify] https://crrev.com/0d133634f10cc828d8f7d45dbeef628e94d908d1/ui/compositor/layer.h

Project Member

Comment 5 by bugdroid1@chromium.org, Sep 13 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/cefe5557b34e3cb4723508c9856d8fd964de9f26

commit cefe5557b34e3cb4723508c9856d8fd964de9f26
Author: David Reveman <reveman@chromium.org>
Date: Wed Sep 13 17:59:28 2017

viz: Add generate_mipmap to render_pass.mojom.

Trilinear filtering support that landed recently uses this.

BUG=757020
TEST=services_unittests --gtest_filter=StructTraitsTest.RenderPass

Change-Id: Iaa5f00b619f385f313aabf858e9f2309d67c7fdf
Reviewed-on: https://chromium-review.googlesource.com/665060
Reviewed-by: Fady Samuel <fsamuel@chromium.org>
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Commit-Queue: David Reveman <reveman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#501687}
[modify] https://crrev.com/cefe5557b34e3cb4723508c9856d8fd964de9f26/services/viz/public/cpp/compositing/render_pass_struct_traits.cc
[modify] https://crrev.com/cefe5557b34e3cb4723508c9856d8fd964de9f26/services/viz/public/cpp/compositing/render_pass_struct_traits.h
[modify] https://crrev.com/cefe5557b34e3cb4723508c9856d8fd964de9f26/services/viz/public/cpp/compositing/struct_traits_unittest.cc
[modify] https://crrev.com/cefe5557b34e3cb4723508c9856d8fd964de9f26/services/viz/public/interfaces/compositing/render_pass.mojom

Project Member

Comment 6 by bugdroid1@chromium.org, Jan 17 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/b5f7b1f9b9adb4c34dfc9611917e2a92df1fddda

commit b5f7b1f9b9adb4c34dfc9611917e2a92df1fddda
Author: David Reveman <reveman@chromium.org>
Date: Wed Jan 17 01:59:33 2018

viz: Use valid color space for TrilinearFiltering test.

This was causing a DCHECK to fail in debug builds.

Bug: 757020
Test: viz_unittests --gtest_also_run_disabled_tests --use-gpu-in-tests --gtest_filter=GLRendererPixelTest.DISABLED_TrilinearFiltering
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel
Change-Id: I11394b57f594142fc57f3fff52e5e5b1737ed889
Reviewed-on: https://chromium-review.googlesource.com/868178
Commit-Queue: David Reveman <reveman@chromium.org>
Commit-Queue: Daniele Castagna <dcastagna@chromium.org>
Reviewed-by: Daniele Castagna <dcastagna@chromium.org>
Cr-Commit-Position: refs/heads/master@{#529542}
[modify] https://crrev.com/b5f7b1f9b9adb4c34dfc9611917e2a92df1fddda/components/viz/service/display/renderer_pixeltest.cc

Sign in to add a comment