Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | List of all members
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 SkMatrixref_matrix () const
 
const SkIRectref_clip_bounds () const
 
const RenderResultref_sk_result () const
 
const RenderResultref_dl_result () const
 
const ImpellerRenderResultref_impeller_result () const
 
const sk_sp< SkImagesk_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)
 

Detailed Description

Definition at line 584 of file dl_rendering_unittests.cc.

Constructor & Destructor Documentation

◆ RenderEnvironment()

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

Definition at line 586 of file dl_rendering_unittests.cc.

587 : provider_(provider), format_(format) {
588 if (provider->supports(format)) {
589 surface_1x_ =
591 surface_2x_ = provider->MakeOffscreenSurface(kTestWidth * 2,
592 kTestHeight * 2, format);
593 }
594 }
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

Member Function Documentation

◆ backend_name()

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

Definition at line 672 of file dl_rendering_unittests.cc.

672{ return provider_->backend_name(); }
virtual const std::string backend_name() const =0

◆ dl_image()

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

Definition at line 686 of file dl_rendering_unittests.cc.

686{ return kTestDlImage; }

◆ format()

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

Definition at line 675 of file dl_rendering_unittests.cc.

675{ return format_; }

◆ getImpellerResult()

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

Definition at line 655 of file dl_rendering_unittests.cc.

657 {
658 FML_DCHECK(info.scale == SK_Scalar1);
659
660 DisplayListBuilder builder;
661 builder.Clear(info.bg);
662 auto render_dl = renderer.MakeDisplayList(info);
663 builder.DrawDisplayList(render_dl);
664 auto dl = builder.Build();
665 auto snap = provider_->ImpellerSnapshot(dl, kTestWidth, kTestHeight);
666 return std::make_unique<ImpellerRenderResult>(std::move(snap),
667 render_dl->bounds());
668 }
static void info(const char *fmt,...) SK_PRINTF_LIKE(1
Definition DM.cpp:213
#define SK_Scalar1
Definition SkScalar.h:18
virtual sk_sp< DlPixelData > ImpellerSnapshot(const sk_sp< DisplayList > &list, int width, int height) const
#define FML_DCHECK(condition)
Definition logging.h:103

◆ getResult() [1/2]

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

Definition at line 630 of file dl_rendering_unittests.cc.

631 {
632 auto surface = getSurface(info.width, info.height);
633 FML_DCHECK(surface != nullptr);
634 auto canvas = surface->getCanvas();
635 canvas->clear(ToSk(info.bg));
636
637 int restore_count = canvas->save();
638 canvas->scale(info.scale, info.scale);
639 renderer.Render(canvas, info);
640 canvas->restoreToCount(restore_count);
641
642 if (GrDirectContext* dContext =
643 GrAsDirectContext(surface->recordingContext())) {
644 dContext->flushAndSubmit(surface.get(), GrSyncCpu::kYes);
645 }
646 return std::make_unique<SkRenderResult>(surface);
647 }
static GrDirectContext * GrAsDirectContext(GrContext_Base *base)
VkSurfaceKHR surface
Definition main.cc:49
SkPaint ToSk(const DlPaint &paint)

◆ getResult() [2/2]

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

Definition at line 649 of file dl_rendering_unittests.cc.

649 {
650 DisplayListJobRenderer job(std::move(dl));
651 RenderJobInfo info = {};
652 return getResult(info, job);
653 }
std::unique_ptr< RenderResult > getResult(const RenderJobInfo &info, JobRenderer &renderer) const

◆ impeller_image()

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

Definition at line 687 of file dl_rendering_unittests.cc.

687{ return test_impeller_image_; }

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

609 {
610 SkJobRenderer sk_job(sk_setup, sk_renderer, kEmptySkRenderer, kTestSkImage);
611 RenderJobInfo info = {
612 .bg = bg,
613 };
614 ref_sk_result_ = getResult(info, sk_job);
615 DlJobRenderer dl_job(dl_setup, dl_renderer, kEmptyDlRenderer, kTestDlImage);
616 ref_dl_result_ = getResult(info, dl_job);
617 ref_dl_paint_ = dl_job.setup_paint();
618 ref_matrix_ = dl_job.setup_matrix();
619 ref_clip_bounds_ = dl_job.setup_clip_bounds();
620 ASSERT_EQ(sk_job.setup_matrix(), ref_matrix_);
621 ASSERT_EQ(sk_job.setup_clip_bounds(), ref_clip_bounds_);
622 if (provider_->supports_impeller()) {
623 test_impeller_image_ = makeTestImpellerImage(provider_);
624 DlJobRenderer imp_job(dl_setup, imp_renderer, kEmptyDlRenderer,
625 test_impeller_image_);
626 ref_impeller_result_ = getImpellerResult(info, imp_job);
627 }
628 }
std::unique_ptr< ImpellerRenderResult > getImpellerResult(const RenderJobInfo &info, DlJobRenderer &renderer) const
static const SkRenderer kEmptySkRenderer
static const DlRenderer kEmptyDlRenderer

◆ Make565()

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

Definition at line 596 of file dl_rendering_unittests.cc.

596 {
597 return RenderEnvironment(provider, PixelFormat::k565PixelFormat);
598 }
RenderEnvironment(const DlSurfaceProvider *provider, PixelFormat format)

◆ MakeN32()

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

Definition at line 600 of file dl_rendering_unittests.cc.

600 {
601 return RenderEnvironment(provider, PixelFormat::kN32PremulPixelFormat);
602 }

◆ provider()

const DlSurfaceProvider * flutter::testing::RenderEnvironment::provider ( ) const
inline

Definition at line 670 of file dl_rendering_unittests.cc.

670{ return provider_; }

◆ ref_clip_bounds()

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

Definition at line 678 of file dl_rendering_unittests.cc.

678{ return ref_clip_bounds_; }

◆ ref_dl_paint()

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

Definition at line 676 of file dl_rendering_unittests.cc.

676{ return ref_dl_paint_; }

◆ ref_dl_result()

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

Definition at line 680 of file dl_rendering_unittests.cc.

680{ return ref_dl_result_.get(); }

◆ ref_impeller_result()

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

Definition at line 681 of file dl_rendering_unittests.cc.

681 {
682 return ref_impeller_result_.get();
683 }

◆ ref_matrix()

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

Definition at line 677 of file dl_rendering_unittests.cc.

677{ return ref_matrix_; }

◆ ref_sk_result()

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

Definition at line 679 of file dl_rendering_unittests.cc.

679{ return ref_sk_result_.get(); }

◆ sk_image()

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

Definition at line 685 of file dl_rendering_unittests.cc.

685{ return kTestSkImage; }

◆ supports_impeller()

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

Definition at line 673 of file dl_rendering_unittests.cc.

673{ return provider_->supports_impeller(); }

◆ valid()

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

Definition at line 671 of file dl_rendering_unittests.cc.

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

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