24 bool has_depth_stencil_attachments =
45 std::move(coverage_proc));
58 const std::optional<Rect>& current_clip_coverage)
const {
60 .coverage = current_clip_coverage};
66 std::optional<Rect> coverage_limit,
67 const std::optional<SamplerDescriptor>& sampler_descriptor,
70 const std::string& label)
const {
76 std::shared_ptr<CommandBuffer> command_buffer =
77 renderer.GetContext()->CreateCommandBuffer();
78 if (!command_buffer) {
88 if (coverage_limit.has_value()) {
97 label, subpass_size, command_buffer,
105 return contents.Render(
renderer, sub_entity, pass);
110 if (!render_target.
ok()) {
115 ->Submit({std::move(command_buffer)})
121 .
texture = render_target.
value().GetRenderTargetTexture(),
124 if (sampler_descriptor.has_value()) {
125 snapshot.sampler_descriptor = sampler_descriptor.value();
136 VALIDATION_LOG <<
"Contents::SetInheritedOpacity should never be called when "
137 "Contents::CanAcceptOpacity returns false.";
141 ISize target_size)
const {
155 const std::optional<Rect> clip_coverage)
const {
156 if (!clip_coverage.has_value()) {
166 return clip_coverage->IntersectsWithRect(
coverage.value());
170 coverage_hint_ = coverage_hint;
174 return coverage_hint_;
178 return color_source_size_;
182 color_source_size_ =
size;
static bool ok(int result)
static std::shared_ptr< Contents > Make(RenderProc render_proc, CoverageProc coverage_proc)
virtual bool CanInheritOpacity(const Entity &entity) const
Whether or not this contents can accept the opacity peephole optimization.
virtual std::optional< Color > AsBackgroundColor(const Entity &entity, ISize target_size) const
Returns a color if this Contents will flood the given target_size with a color. This output color is ...
virtual std::optional< Rect > GetCoverage(const Entity &entity) const =0
Get the area of the render pass that will be affected when this contents is rendered.
std::optional< Size > GetColorSourceSize() const
Return the color source's intrinsic size, if available.
virtual bool ApplyColorFilter(const ColorFilterProc &color_filter_proc)
If possible, applies a color filter to this contents inputs on the CPU.
const std::optional< Rect > & GetCoverageHint() const
virtual std::optional< Snapshot > RenderToSnapshot(const ContentContext &renderer, const Entity &entity, std::optional< Rect > coverage_limit=std::nullopt, const std::optional< SamplerDescriptor > &sampler_descriptor=std::nullopt, bool msaa_enabled=true, int32_t mip_count=1, const std::string &label="Snapshot") const
Render this contents to a snapshot, respecting the entity's transform, path, clip depth,...
virtual ClipCoverage GetClipCoverage(const Entity &entity, const std::optional< Rect > ¤t_clip_coverage) const
Given the current pass space bounding rectangle of the clip buffer, return the expected clip coverage...
void SetColorSourceSize(Size size)
virtual bool IsOpaque() const
Whether this Contents only emits opaque source colors from the fragment stage. This value does not ac...
virtual bool ShouldRender(const Entity &entity, const std::optional< Rect > clip_coverage) const
std::function< std::optional< Rect >(const Entity &entity)> CoverageProc
virtual void SetInheritedOpacity(Scalar opacity)
Inherit the provided opacity.
static std::shared_ptr< Contents > MakeAnonymous(RenderProc render_proc, CoverageProc coverage_proc)
std::function< Color(Color)> ColorFilterProc
void SetCoverageHint(std::optional< Rect > coverage_hint)
Hint that specifies the coverage area of this Contents that will actually be used during rendering....
virtual const FilterContents * AsFilter() const
Cast to a filter. Returns nullptr if this Contents is not a filter.
std::function< bool(const ContentContext &renderer, const Entity &entity, RenderPass &pass)> RenderProc
void SetTransform(const Matrix &transform)
Set the global transform matrix for this Entity.
BlendMode GetBlendMode() const
void SetBlendMode(BlendMode blend_mode)
const Matrix & GetTransform() const
Get the global transform matrix for this Entity.
Render passes encode render commands directed as one specific render target into an underlying comman...
SampleCount GetSampleCount() const
The sample count of the attached render target.
PixelFormat GetRenderTargetPixelFormat() const
The pixel format of the attached render target.
bool HasStencilAttachment() const
Whether the render target has an stencil attachment.
bool HasDepthAttachment() const
Whether the render target has a depth attachment.
#define FML_DCHECK(condition)
static float min(float r, float g, float b)
it will be possible to load the file into Perfetto s trace viewer disable asset Prevents usage of any non test fonts unless they were explicitly Loaded via prefetched default font Indicates whether the embedding started a prefetch of the default font manager before creating the engine run In non interactive keep the shell running after the Dart script has completed enable serial On low power devices with low core running concurrent GC tasks on threads can cause them to contend with the UI thread which could potentially lead to jank This option turns off all concurrent GC activities domain network JSON encoded network policy per domain This overrides the DisallowInsecureConnections switch Embedder can specify whether to allow or disallow insecure connections at a domain level old gen heap size
@ kGreater
Comparison test passes if new_value > current_value.
ContentContextOptions OptionsFromPassAndEntity(const RenderPass &pass, const Entity &entity)
ContentContextOptions OptionsFromPass(const RenderPass &pass)
bool has_depth_stencil_attachments
PixelFormat color_attachment_pixel_format
CompareFunction depth_compare
static constexpr Matrix MakeTranslation(const Vector3 &t)
Represents a texture and its intended draw transform/sampler configuration.
std::shared_ptr< Texture > texture
static constexpr TRect MakeMaximum()
constexpr TSize Ceil() const
constexpr size_t MipCount() const