Commit 0d162e1b authored by danakj's avatar danakj Committed by Commit Bot

Move cc::SoftwareRenderer to viz:: display service.

This is part of the display compositor so belongs in viz not with the
cc layer compositor.

R=staraz@chromium.org

Bug: 722935
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
Change-Id: Ie8c19de1350375de05172c46b50c816f5d095de6
Reviewed-on: https://chromium-review.googlesource.com/668956
Commit-Queue: danakj <danakj@chromium.org>
Reviewed-by: default avatarXingyu Zhang <staraz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#502882}
parent be29ef38
......@@ -177,8 +177,6 @@ cc_component("cc") {
"output/overlay_strategy_underlay_cast.h",
"output/software_output_device.cc",
"output/software_output_device.h",
"output/software_renderer.cc",
"output/software_renderer.h",
"output/swap_promise.h",
"raster/bitmap_raster_buffer_provider.cc",
"raster/bitmap_raster_buffer_provider.h",
......@@ -646,7 +644,6 @@ cc_test("cc_unittests") {
"output/layer_tree_frame_sink_unittest.cc",
"output/overlay_unittest.cc",
"output/renderer_pixeltest.cc",
"output/software_renderer_unittest.cc",
"paint/discardable_image_map_unittest.cc",
"paint/display_item_list_unittest.cc",
"paint/paint_image_unittest.cc",
......
......@@ -652,7 +652,7 @@ void CreateTestY16TextureDrawQuad_TwoColor(
}
typedef ::testing::Types<viz::GLRenderer,
SoftwareRenderer,
viz::SoftwareRenderer,
GLRendererWithExpandedViewport,
SoftwareRendererWithExpandedViewport>
RendererTypes;
......@@ -661,7 +661,8 @@ TYPED_TEST_CASE(RendererPixelTest, RendererTypes);
template <typename RendererType>
class SoftwareRendererPixelTest : public RendererPixelTest<RendererType> {};
typedef ::testing::Types<SoftwareRenderer, SoftwareRendererWithExpandedViewport>
typedef ::testing::Types<viz::SoftwareRenderer,
SoftwareRendererWithExpandedViewport>
SoftwareRendererTypes;
TYPED_TEST_CASE(SoftwareRendererPixelTest, SoftwareRendererTypes);
......@@ -679,8 +680,8 @@ class FuzzyForSoftwareOnlyPixelComparator : public PixelComparator {
ExactPixelComparator exact_;
};
template<>
bool FuzzyForSoftwareOnlyPixelComparator<SoftwareRenderer>::Compare(
template <>
bool FuzzyForSoftwareOnlyPixelComparator<viz::SoftwareRenderer>::Compare(
const SkBitmap& actual_bmp,
const SkBitmap& expected_bmp) const {
return fuzzy_.Compare(actual_bmp, expected_bmp);
......@@ -975,7 +976,8 @@ template <typename TypeParam>
class IntersectingQuadSoftwareTest
: public IntersectingQuadPixelTest<TypeParam> {};
typedef ::testing::Types<SoftwareRenderer, SoftwareRendererWithExpandedViewport>
typedef ::testing::Types<viz::SoftwareRenderer,
SoftwareRendererWithExpandedViewport>
SoftwareRendererTypes;
typedef ::testing::Types<viz::GLRenderer, GLRendererWithExpandedViewport>
GLRendererTypes;
......@@ -2267,7 +2269,7 @@ class RendererPixelTestWithBackgroundFilter
gfx::Rect filter_pass_layer_rect_;
};
typedef ::testing::Types<viz::GLRenderer, SoftwareRenderer>
typedef ::testing::Types<viz::GLRenderer, viz::SoftwareRenderer>
BackgroundFilterRendererTypes;
TYPED_TEST_CASE(RendererPixelTestWithBackgroundFilter,
BackgroundFilterRendererTypes);
......@@ -2769,8 +2771,8 @@ template<typename TypeParam> bool IsSoftwareRenderer() {
return false;
}
template<>
bool IsSoftwareRenderer<SoftwareRenderer>() {
template <>
bool IsSoftwareRenderer<viz::SoftwareRenderer>() {
return true;
}
......
......@@ -13,7 +13,6 @@
#include "cc/output/compositor_frame_metadata.h"
#include "cc/output/output_surface_client.h"
#include "cc/output/software_output_device.h"
#include "cc/output/software_renderer.h"
#include "cc/raster/raster_buffer_provider.h"
#include "cc/resources/resource_provider.h"
#include "cc/test/fake_output_surface_client.h"
......@@ -26,6 +25,7 @@
#include "components/viz/common/quads/copy_output_request.h"
#include "components/viz/common/quads/copy_output_result.h"
#include "components/viz/service/display/gl_renderer.h"
#include "components/viz/service/display/software_renderer.h"
#include "components/viz/service/display/texture_mailbox_deleter.h"
#include "components/viz/test/paths.h"
#include "components/viz/test/test_gpu_memory_buffer_manager.h"
......@@ -205,7 +205,7 @@ void PixelTest::SetUpSoftwareRenderer() {
main_thread_task_runner_.get(), delegated_sync_points_required,
settings_.enable_color_correct_rasterization,
settings_.resource_settings);
auto renderer = std::make_unique<SoftwareRenderer>(
auto renderer = std::make_unique<viz::SoftwareRenderer>(
&renderer_settings_, output_surface_.get(), resource_provider_.get());
software_renderer_ = renderer.get();
renderer_ = std::move(renderer);
......
......@@ -4,11 +4,11 @@
#include "base/files/file_util.h"
#include "cc/output/output_surface.h"
#include "cc/output/software_renderer.h"
#include "cc/test/pixel_comparator.h"
#include "cc/trees/layer_tree_settings.h"
#include "components/viz/common/quads/render_pass.h"
#include "components/viz/service/display/gl_renderer.h"
#include "components/viz/service/display/software_renderer.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/gfx/geometry/size.h"
#include "ui/gl/gl_implementation.h"
......@@ -19,6 +19,7 @@
namespace viz {
class CopyOutputResult;
class TestGpuMemoryBufferManager;
class TextureMailboxDeleter;
}
namespace cc {
......@@ -26,7 +27,6 @@ class DisplayResourceProvider;
class DirectRenderer;
class FakeOutputSurfaceClient;
class OutputSurface;
class SoftwareRenderer;
class TestSharedBitmapManager;
class PixelTest : public testing::Test {
......@@ -69,7 +69,7 @@ class PixelTest : public testing::Test {
std::unique_ptr<DisplayResourceProvider> resource_provider_;
std::unique_ptr<viz::TextureMailboxDeleter> texture_mailbox_deleter_;
std::unique_ptr<DirectRenderer> renderer_;
SoftwareRenderer* software_renderer_ = nullptr;
viz::SoftwareRenderer* software_renderer_ = nullptr;
std::unique_ptr<SkBitmap> result_bitmap_;
void SetUpGLRenderer(bool flipped_output_surface);
......@@ -113,7 +113,7 @@ class GLRendererWithExpandedViewport : public viz::GLRenderer {
texture_mailbox_deleter) {}
};
class SoftwareRendererWithExpandedViewport : public SoftwareRenderer {
class SoftwareRendererWithExpandedViewport : public viz::SoftwareRenderer {
public:
SoftwareRendererWithExpandedViewport(
const viz::RendererSettings* settings,
......@@ -151,7 +151,7 @@ inline void RendererPixelTest<GLRendererWithFlippedSurface>::SetUp() {
}
template <>
inline void RendererPixelTest<SoftwareRenderer>::SetUp() {
inline void RendererPixelTest<viz::SoftwareRenderer>::SetUp() {
SetUpSoftwareRenderer();
}
......@@ -161,7 +161,7 @@ inline void RendererPixelTest<SoftwareRendererWithExpandedViewport>::SetUp() {
}
typedef RendererPixelTest<viz::GLRenderer> GLRendererPixelTest;
typedef RendererPixelTest<SoftwareRenderer> SoftwareRendererPixelTest;
typedef RendererPixelTest<viz::SoftwareRenderer> SoftwareRendererPixelTest;
} // namespace cc
......
......@@ -34,6 +34,8 @@ viz_component("service") {
"display/shader.h",
"display/skia_renderer.cc",
"display/skia_renderer.h",
"display/software_renderer.cc",
"display/software_renderer.h",
"display/static_geometry_binding.cc",
"display/static_geometry_binding.h",
"display/surface_aggregator.cc",
......@@ -186,6 +188,7 @@ viz_source_set("unit_tests") {
"display/gl_renderer_unittest.cc",
"display/layer_quad_unittest.cc",
"display/shader_unittest.cc",
"display/software_renderer_unittest.cc",
"display/surface_aggregator_pixeltest.cc",
"display/surface_aggregator_unittest.cc",
"display/texture_mailbox_deleter_unittest.cc",
......
......@@ -14,13 +14,13 @@
#include "cc/output/compositor_frame.h"
#include "cc/output/direct_renderer.h"
#include "cc/output/output_surface.h"
#include "cc/output/software_renderer.h"
#include "components/viz/common/display/renderer_settings.h"
#include "components/viz/common/frame_sinks/begin_frame_source.h"
#include "components/viz/service/display/display_client.h"
#include "components/viz/service/display/display_scheduler.h"
#include "components/viz/service/display/gl_renderer.h"
#include "components/viz/service/display/skia_renderer.h"
#include "components/viz/service/display/software_renderer.h"
#include "components/viz/service/display/surface_aggregator.h"
#include "components/viz/service/display/texture_mailbox_deleter.h"
#include "components/viz/service/surfaces/surface.h"
......@@ -206,7 +206,7 @@ void Display::InitializeRenderer() {
NOTREACHED();
#endif
} else {
auto renderer = base::MakeUnique<cc::SoftwareRenderer>(
auto renderer = base::MakeUnique<SoftwareRenderer>(
&settings_, output_surface_.get(), resource_provider_.get());
software_renderer_ = renderer.get();
renderer_ = std::move(renderer);
......
......@@ -29,7 +29,6 @@ class DirectRenderer;
class DisplayResourceProvider;
class OutputSurface;
class RendererSettings;
class SoftwareRenderer;
} // namespace cc
namespace gpu {
......@@ -44,6 +43,7 @@ namespace viz {
class DisplayClient;
class SharedBitmapManager;
class SoftwareRenderer;
class TextureMailboxDeleter;
class VIZ_SERVICE_EXPORT DisplayObserver {
......@@ -137,7 +137,7 @@ class VIZ_SERVICE_EXPORT Display : public DisplaySchedulerClient,
std::unique_ptr<SurfaceAggregator> aggregator_;
std::unique_ptr<TextureMailboxDeleter> texture_mailbox_deleter_;
std::unique_ptr<cc::DirectRenderer> renderer_;
cc::SoftwareRenderer* software_renderer_ = nullptr;
SoftwareRenderer* software_renderer_ = nullptr;
std::vector<ui::LatencyInfo> stored_latency_info_;
private:
......
......@@ -2,14 +2,20 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CC_OUTPUT_SOFTWARE_RENDERER_H_
#define CC_OUTPUT_SOFTWARE_RENDERER_H_
#ifndef COMPONENTS_VIZ_SERVICE_DISPLAY_SOFTWARE_RENDERER_H_
#define COMPONENTS_VIZ_SERVICE_DISPLAY_SOFTWARE_RENDERER_H_
#include "base/macros.h"
#include "cc/cc_export.h"
#include "cc/output/direct_renderer.h"
#include "components/viz/service/viz_service_export.h"
#include "ui/latency/latency_info.h"
namespace cc {
class OutputSurface;
class DisplayResourceProvider;
class SoftwareOutputDevice;
} // namespace cc
namespace viz {
class DebugBorderDrawQuad;
class PictureDrawQuad;
......@@ -17,18 +23,12 @@ class RenderPassDrawQuad;
class SolidColorDrawQuad;
class TextureDrawQuad;
class TileDrawQuad;
} // namespace viz
namespace cc {
class OutputSurface;
class DisplayResourceProvider;
class SoftwareOutputDevice;
class CC_EXPORT SoftwareRenderer : public DirectRenderer {
class VIZ_SERVICE_EXPORT SoftwareRenderer : public cc::DirectRenderer {
public:
SoftwareRenderer(const viz::RendererSettings* settings,
OutputSurface* output_surface,
DisplayResourceProvider* resource_provider);
SoftwareRenderer(const RendererSettings* settings,
cc::OutputSurface* output_surface,
cc::DisplayResourceProvider* resource_provider);
~SoftwareRenderer() override;
......@@ -40,21 +40,19 @@ class CC_EXPORT SoftwareRenderer : public DirectRenderer {
protected:
bool CanPartialSwap() override;
viz::ResourceFormat BackbufferFormat() const override;
ResourceFormat BackbufferFormat() const override;
void BindFramebufferToOutputSurface() override;
bool BindFramebufferToTexture(const ScopedResource* texture) override;
bool BindFramebufferToTexture(const cc::ScopedResource* texture) override;
void SetScissorTestRect(const gfx::Rect& scissor_rect) override;
void PrepareSurfaceForPass(SurfaceInitializationMode initialization_mode,
const gfx::Rect& render_pass_scissor) override;
void DoDrawQuad(const viz::DrawQuad* quad,
const gfx::QuadF* draw_region) override;
void DoDrawQuad(const DrawQuad* quad, const gfx::QuadF* draw_region) override;
void BeginDrawingFrame() override;
void FinishDrawingFrame() override;
bool FlippedFramebuffer() const override;
void EnsureScissorTestEnabled() override;
void EnsureScissorTestDisabled() override;
void CopyDrawnRenderPass(
std::unique_ptr<viz::CopyOutputRequest> request) override;
void CopyDrawnRenderPass(std::unique_ptr<CopyOutputRequest> request) override;
void SetEnableDCLayers(bool enable) override;
void DidChangeVisibility() override;
void GenerateMipmap() override;
......@@ -63,30 +61,30 @@ class CC_EXPORT SoftwareRenderer : public DirectRenderer {
void ClearCanvas(SkColor color);
void ClearFramebuffer();
void SetClipRect(const gfx::Rect& rect);
bool IsSoftwareResource(viz::ResourceId resource_id) const;
void DrawDebugBorderQuad(const viz::DebugBorderDrawQuad* quad);
void DrawPictureQuad(const viz::PictureDrawQuad* quad);
void DrawRenderPassQuad(const viz::RenderPassDrawQuad* quad);
void DrawSolidColorQuad(const viz::SolidColorDrawQuad* quad);
void DrawTextureQuad(const viz::TextureDrawQuad* quad);
void DrawTileQuad(const viz::TileDrawQuad* quad);
void DrawUnsupportedQuad(const viz::DrawQuad* quad);
bool IsSoftwareResource(ResourceId resource_id) const;
void DrawDebugBorderQuad(const DebugBorderDrawQuad* quad);
void DrawPictureQuad(const PictureDrawQuad* quad);
void DrawRenderPassQuad(const RenderPassDrawQuad* quad);
void DrawSolidColorQuad(const SolidColorDrawQuad* quad);
void DrawTextureQuad(const TextureDrawQuad* quad);
void DrawTileQuad(const TileDrawQuad* quad);
void DrawUnsupportedQuad(const DrawQuad* quad);
bool ShouldApplyBackgroundFilters(
const viz::RenderPassDrawQuad* quad,
const FilterOperations* background_filters) const;
const RenderPassDrawQuad* quad,
const cc::FilterOperations* background_filters) const;
sk_sp<SkImage> ApplyImageFilter(SkImageFilter* filter,
const viz::RenderPassDrawQuad* quad,
const RenderPassDrawQuad* quad,
const SkBitmap& to_filter,
SkIRect* auto_bounds) const;
gfx::Rect GetBackdropBoundingBoxForRenderPassQuad(
const viz::RenderPassDrawQuad* quad,
const RenderPassDrawQuad* quad,
const gfx::Transform& contents_device_transform,
const FilterOperations* background_filters,
const cc::FilterOperations* background_filters,
gfx::Rect* unclipped_rect) const;
SkBitmap GetBackdropBitmap(const gfx::Rect& bounding_rect) const;
sk_sp<SkShader> GetBackgroundFilterShader(
const viz::RenderPassDrawQuad* quad,
const RenderPassDrawQuad* quad,
SkShader::TileMode content_tile_mode) const;
bool disable_picture_quad_image_filtering_ = false;
......@@ -94,17 +92,17 @@ class CC_EXPORT SoftwareRenderer : public DirectRenderer {
bool is_scissor_enabled_ = false;
gfx::Rect scissor_rect_;
SoftwareOutputDevice* output_device_;
cc::SoftwareOutputDevice* output_device_;
SkCanvas* root_canvas_ = nullptr;
SkCanvas* current_canvas_ = nullptr;
SkPaint current_paint_;
std::unique_ptr<ResourceProvider::ScopedWriteLockSoftware>
std::unique_ptr<cc::ResourceProvider::ScopedWriteLockSoftware>
current_framebuffer_lock_;
std::unique_ptr<SkCanvas> current_framebuffer_canvas_;
DISALLOW_COPY_AND_ASSIGN(SoftwareRenderer);
};
} // namespace cc
} // namespace viz
#endif // CC_OUTPUT_SOFTWARE_RENDERER_H_
#endif // COMPONENTS_VIZ_SERVICE_DISPLAY_SOFTWARE_RENDERER_H_
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment