Flutter Engine Uber Docs
Docs for the entire Flutter Engine repo.
 
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 601 of file dl_rendering_unittests.cc.

Constructor & Destructor Documentation

◆ RenderEnvironment()

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

Definition at line 605 of file dl_rendering_unittests.cc.

606 : provider_(provider), format_(format) {
607 if (provider->supports(format)) {
608 surface_1x_ =
610 surface_2x_ = provider->MakeOffscreenSurface(kTestWidth * 2,
611 kTestHeight * 2, format);
612 }
613 }
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 707 of file dl_rendering_unittests.cc.

707{ return kTestDlImage; }

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

◆ format()

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

Definition at line 696 of file dl_rendering_unittests.cc.

696{ 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 674 of file dl_rendering_unittests.cc.

676 {
677 FML_DCHECK(info.scale == SK_Scalar1);
678
679 DisplayListBuilder builder;
680 builder.Clear(info.bg);
681 auto render_dl = renderer.MakeDisplayList(info);
682 builder.DrawDisplayList(render_dl);
683 auto dl = builder.Build();
684 auto snap = provider_->ImpellerSnapshot(dl, kTestWidth, kTestHeight);
685 return std::make_unique<ImpellerRenderResult>(std::move(snap),
686 render_dl->GetBounds());
687 }
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 649 of file dl_rendering_unittests.cc.

650 {
651 auto surface = getSurface(info.width, info.height);
652 FML_DCHECK(surface != nullptr);
653 auto canvas = surface->getCanvas();
654 canvas->clear(ToSkColor4f(info.bg));
655
656 int restore_count = canvas->save();
657 canvas->scale(info.scale, info.scale);
658 renderer.Render(canvas, info);
659 canvas->restoreToCount(restore_count);
660
661 if (GrDirectContext* dContext =
662 GrAsDirectContext(surface->recordingContext())) {
663 dContext->flushAndSubmit(surface.get(), GrSyncCpu::kYes);
664 }
665 return std::make_unique<SkRenderResult>(surface);
666 }
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 668 of file dl_rendering_unittests.cc.

668 {
669 DisplayListJobRenderer job(std::move(dl));
670 RenderJobInfo info = {};
671 return getResult(info, job);
672 }
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 708 of file dl_rendering_unittests.cc.

708{ 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 623 of file dl_rendering_unittests.cc.

628 {
629 SkJobRenderer sk_job(sk_setup, sk_renderer, kEmptySkRenderer, kTestSkImage);
630 RenderJobInfo info = {
631 .bg = bg,
632 };
633 ref_sk_result_ = getResult(info, sk_job);
634 DlJobRenderer dl_job(dl_setup, dl_renderer, kEmptyDlRenderer, kTestDlImage);
635 ref_dl_result_ = getResult(info, dl_job);
636 ref_dl_paint_ = dl_job.setup_paint();
637 ref_matrix_ = dl_job.setup_matrix();
638 ref_clip_bounds_ = dl_job.setup_clip_bounds();
639 ASSERT_EQ(sk_job.setup_matrix(), ref_matrix_);
640 ASSERT_EQ(sk_job.setup_clip_bounds(), ref_clip_bounds_);
641 if (supports_impeller()) {
642 test_impeller_image_ = makeTestImpellerImage(provider_);
643 DlJobRenderer imp_job(dl_setup, imp_renderer, kEmptyDlRenderer,
644 test_impeller_image_);
645 ref_impeller_result_ = getImpellerResult(info, imp_job);
646 }
647 }
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 615 of file dl_rendering_unittests.cc.

615 {
616 return RenderEnvironment(provider, PixelFormat::k565PixelFormat);
617 }
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 699 of file dl_rendering_unittests.cc.

699{ 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 701 of file dl_rendering_unittests.cc.

701{ 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 702 of file dl_rendering_unittests.cc.

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

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 698 of file dl_rendering_unittests.cc.

698{ 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 706 of file dl_rendering_unittests.cc.

706{ 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 690 of file dl_rendering_unittests.cc.

690{ 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: