Flutter Engine
 
Loading...
Searching...
No Matches
flutter::testing::RenderEnvironment Class Reference

Public Member Functions

 RenderEnvironment (const DlSurfaceProvider *provider, PixelFormat format)
 
void init_ref (SkSetup &sk_setup, SkRenderer &sk_renderer, DlSetup &dl_setup, DlRenderer &dl_renderer, DlRenderer &imp_renderer, DlColor bg=DlColor::kTransparent())
 
std::unique_ptr< RenderResultgetResult (const RenderJobInfo &info, JobRenderer &renderer) const
 
std::unique_ptr< RenderResultgetResult (sk_sp< DisplayList > dl) const
 
std::unique_ptr< ImpellerRenderResultgetImpellerResult (const RenderJobInfo &info, DlJobRenderer &renderer) const
 
const DlSurfaceProviderprovider () const
 
bool valid () const
 
const std::string backend_name () const
 
bool supports_impeller () const
 
PixelFormat format () const
 
const DlPaintref_dl_paint () const
 
const DlMatrixref_matrix () const
 
const DlIRectref_clip_bounds () const
 
const RenderResultref_sk_result () const
 
const RenderResultref_dl_result () const
 
const ImpellerRenderResultref_impeller_result () const
 
const sk_sp< SkImage > sk_image () const
 
const sk_sp< DlImagedl_image () const
 
const sk_sp< DlImageimpeller_image () const
 

Static Public Member Functions

static RenderEnvironment Make565 (const DlSurfaceProvider *provider)
 
static RenderEnvironment MakeN32 (const DlSurfaceProvider *provider)
 

Static Public Attributes

static bool EnableImpeller = true
 

Detailed Description

Definition at line 600 of file dl_rendering_unittests.cc.

Constructor & Destructor Documentation

◆ RenderEnvironment()

flutter::testing::RenderEnvironment::RenderEnvironment ( const DlSurfaceProvider provider,
PixelFormat  format 
)
inline

Definition at line 604 of file dl_rendering_unittests.cc.

605 : provider_(provider), format_(format) {
606 if (provider->supports(format)) {
607 surface_1x_ =
609 surface_2x_ = provider->MakeOffscreenSurface(kTestWidth * 2,
610 kTestHeight * 2, format);
611 }
612 }
virtual bool supports(PixelFormat format) const =0
virtual std::shared_ptr< DlSurfaceInstance > MakeOffscreenSurface(size_t width, size_t height, PixelFormat format=kN32PremulPixelFormat) const =0
const DlSurfaceProvider * provider() const

References format(), flutter::testing::kTestHeight, flutter::testing::kTestWidth, flutter::testing::DlSurfaceProvider::MakeOffscreenSurface(), provider(), and flutter::testing::DlSurfaceProvider::supports().

Member Function Documentation

◆ backend_name()

const std::string flutter::testing::RenderEnvironment::backend_name ( ) const
inline

◆ dl_image()

const sk_sp< DlImage > flutter::testing::RenderEnvironment::dl_image ( ) const
inline

Definition at line 706 of file dl_rendering_unittests.cc.

706{ return kTestDlImage; }

Referenced by flutter::testing::CanvasCompareTester::RenderWith().

◆ format()

PixelFormat flutter::testing::RenderEnvironment::format ( ) const
inline

Definition at line 695 of file dl_rendering_unittests.cc.

695{ return format_; }

Referenced by flutter::testing::CanvasCompareTester::groupOpacityFudgeFactor(), and RenderEnvironment().

◆ getImpellerResult()

std::unique_ptr< ImpellerRenderResult > flutter::testing::RenderEnvironment::getImpellerResult ( const RenderJobInfo info,
DlJobRenderer renderer 
) const
inline

Definition at line 673 of file dl_rendering_unittests.cc.

675 {
676 FML_DCHECK(info.scale == SK_Scalar1);
677
678 DisplayListBuilder builder;
679 builder.Clear(info.bg);
680 auto render_dl = renderer.MakeDisplayList(info);
681 builder.DrawDisplayList(render_dl);
682 auto dl = builder.Build();
683 auto snap = provider_->ImpellerSnapshot(dl, kTestWidth, kTestHeight);
684 return std::make_unique<ImpellerRenderResult>(std::move(snap),
685 render_dl->GetBounds());
686 }
virtual sk_sp< DlPixelData > ImpellerSnapshot(const sk_sp< DisplayList > &list, int width, int height) const
#define FML_DCHECK(condition)
Definition logging.h:122

References flutter::testing::RenderJobInfo::bg, flutter::DisplayListBuilder::Build(), flutter::DlCanvas::Clear(), flutter::DisplayListBuilder::DrawDisplayList(), FML_DCHECK, flutter::testing::DlSurfaceProvider::ImpellerSnapshot(), flutter::testing::kTestHeight, flutter::testing::kTestWidth, flutter::testing::DlJobRenderer::MakeDisplayList(), and flutter::testing::RenderJobInfo::scale.

Referenced by init_ref(), and flutter::testing::CanvasCompareTester::RenderWith().

◆ getResult() [1/2]

std::unique_ptr< RenderResult > flutter::testing::RenderEnvironment::getResult ( const RenderJobInfo info,
JobRenderer renderer 
) const
inline

Definition at line 648 of file dl_rendering_unittests.cc.

649 {
650 auto surface = getSurface(info.width, info.height);
651 FML_DCHECK(surface != nullptr);
652 auto canvas = surface->getCanvas();
653 canvas->clear(ToSkColor4f(info.bg));
654
655 int restore_count = canvas->save();
656 canvas->scale(info.scale, info.scale);
657 renderer.Render(canvas, info);
658 canvas->restoreToCount(restore_count);
659
660 if (GrDirectContext* dContext =
661 GrAsDirectContext(surface->recordingContext())) {
662 dContext->flushAndSubmit(surface.get(), GrSyncCpu::kYes);
663 }
664 return std::make_unique<SkRenderResult>(surface);
665 }
VkSurfaceKHR surface
Definition main.cc:65
SkColor4f ToSkColor4f(DlColor color)

References flutter::testing::RenderJobInfo::bg, FML_DCHECK, flutter::testing::RenderJobInfo::height, flutter::testing::JobRenderer::Render(), flutter::testing::RenderJobInfo::scale, surface, flutter::ToSkColor4f(), and flutter::testing::RenderJobInfo::width.

Referenced by flutter::testing::CanvasCompareTester::checkGroupOpacity(), getResult(), init_ref(), and flutter::testing::CanvasCompareTester::RenderWith().

◆ getResult() [2/2]

std::unique_ptr< RenderResult > flutter::testing::RenderEnvironment::getResult ( sk_sp< DisplayList dl) const
inline

Definition at line 667 of file dl_rendering_unittests.cc.

667 {
668 DisplayListJobRenderer job(std::move(dl));
669 RenderJobInfo info = {};
670 return getResult(info, job);
671 }
std::unique_ptr< RenderResult > getResult(const RenderJobInfo &info, JobRenderer &renderer) const

References getResult().

◆ impeller_image()

const sk_sp< DlImage > flutter::testing::RenderEnvironment::impeller_image ( ) const
inline

Definition at line 707 of file dl_rendering_unittests.cc.

707{ return test_impeller_image_; }

Referenced by flutter::testing::CanvasCompareTester::RenderWith().

◆ init_ref()

void flutter::testing::RenderEnvironment::init_ref ( SkSetup sk_setup,
SkRenderer sk_renderer,
DlSetup dl_setup,
DlRenderer dl_renderer,
DlRenderer imp_renderer,
DlColor  bg = DlColor::kTransparent() 
)
inline

Definition at line 622 of file dl_rendering_unittests.cc.

627 {
628 SkJobRenderer sk_job(sk_setup, sk_renderer, kEmptySkRenderer, kTestSkImage);
629 RenderJobInfo info = {
630 .bg = bg,
631 };
632 ref_sk_result_ = getResult(info, sk_job);
633 DlJobRenderer dl_job(dl_setup, dl_renderer, kEmptyDlRenderer, kTestDlImage);
634 ref_dl_result_ = getResult(info, dl_job);
635 ref_dl_paint_ = dl_job.setup_paint();
636 ref_matrix_ = dl_job.setup_matrix();
637 ref_clip_bounds_ = dl_job.setup_clip_bounds();
638 ASSERT_EQ(sk_job.setup_matrix(), ref_matrix_);
639 ASSERT_EQ(sk_job.setup_clip_bounds(), ref_clip_bounds_);
640 if (supports_impeller()) {
641 test_impeller_image_ = makeTestImpellerImage(provider_);
642 DlJobRenderer imp_job(dl_setup, imp_renderer, kEmptyDlRenderer,
643 test_impeller_image_);
644 ref_impeller_result_ = getImpellerResult(info, imp_job);
645 }
646 }
std::unique_ptr< ImpellerRenderResult > getImpellerResult(const RenderJobInfo &info, DlJobRenderer &renderer) const
static const SkRenderer kEmptySkRenderer
static const DlRenderer kEmptyDlRenderer

References flutter::testing::RenderJobInfo::bg, getImpellerResult(), getResult(), flutter::testing::kEmptyDlRenderer, flutter::testing::kEmptySkRenderer, flutter::testing::MatrixClipJobRenderer::setup_clip_bounds(), flutter::testing::MatrixClipJobRenderer::setup_matrix(), flutter::testing::DlJobRenderer::setup_paint(), and supports_impeller().

Referenced by flutter::testing::CanvasCompareTester::RenderAll(), flutter::testing::CanvasCompareTester::RenderWithAttributes(), flutter::testing::CanvasCompareTester::RenderWithSaveRestore(), flutter::testing::CanvasCompareTester::RenderWithStrokes(), and flutter::testing::TEST_F().

◆ Make565()

static RenderEnvironment flutter::testing::RenderEnvironment::Make565 ( const DlSurfaceProvider provider)
inlinestatic

Definition at line 614 of file dl_rendering_unittests.cc.

614 {
615 return RenderEnvironment(provider, PixelFormat::k565PixelFormat);
616 }
RenderEnvironment(const DlSurfaceProvider *provider, PixelFormat format)

References provider().

◆ MakeN32()

◆ provider()

◆ ref_clip_bounds()

const DlIRect & flutter::testing::RenderEnvironment::ref_clip_bounds ( ) const
inline

Definition at line 698 of file dl_rendering_unittests.cc.

698{ return ref_clip_bounds_; }

Referenced by flutter::testing::TestParameters::should_match().

◆ ref_dl_paint()

const DlPaint & flutter::testing::RenderEnvironment::ref_dl_paint ( ) const
inline

◆ ref_dl_result()

const RenderResult * flutter::testing::RenderEnvironment::ref_dl_result ( ) const
inline

Definition at line 700 of file dl_rendering_unittests.cc.

700{ return ref_dl_result_.get(); }

Referenced by flutter::testing::CanvasCompareTester::quickCompareToReference().

◆ ref_impeller_result()

const ImpellerRenderResult * flutter::testing::RenderEnvironment::ref_impeller_result ( ) const
inline

Definition at line 701 of file dl_rendering_unittests.cc.

701 {
702 return ref_impeller_result_.get();
703 }

Referenced by flutter::testing::CanvasCompareTester::RenderAll(), and flutter::testing::CanvasCompareTester::RenderWith().

◆ ref_matrix()

const DlMatrix & flutter::testing::RenderEnvironment::ref_matrix ( ) const
inline

Definition at line 697 of file dl_rendering_unittests.cc.

697{ return ref_matrix_; }

Referenced by flutter::testing::TestParameters::should_match().

◆ ref_sk_result()

const RenderResult * flutter::testing::RenderEnvironment::ref_sk_result ( ) const
inline

◆ sk_image()

const sk_sp< SkImage > flutter::testing::RenderEnvironment::sk_image ( ) const
inline

Definition at line 705 of file dl_rendering_unittests.cc.

705{ return kTestSkImage; }

Referenced by flutter::testing::CanvasCompareTester::RenderWith().

◆ supports_impeller()

bool flutter::testing::RenderEnvironment::supports_impeller ( ) const
inline

◆ valid()

bool flutter::testing::RenderEnvironment::valid ( ) const
inline

Definition at line 689 of file dl_rendering_unittests.cc.

689{ return provider_->supports(format_); }

References flutter::testing::DlSurfaceProvider::supports().

Member Data Documentation

◆ EnableImpeller

bool flutter::testing::RenderEnvironment::EnableImpeller = true
static

The documentation for this class was generated from the following file: