@@ -110,7 +110,7 @@ void EntityPass::AddEntity(Entity entity) {
110
110
}
111
111
112
112
if (entity.GetBlendMode () > Entity::kLastPipelineBlendMode ) {
113
- advanced_blend_reads_from_pass_texture_ += 1 ;
113
+ advanced_blend_reads_from_pass_texture_ = true ;
114
114
}
115
115
elements_.emplace_back (std::move (entity));
116
116
}
@@ -277,34 +277,17 @@ EntityPass* EntityPass::AddSubpass(std::unique_ptr<EntityPass> pass) {
277
277
pass->superpass_ = this ;
278
278
279
279
if (pass->backdrop_filter_proc_ ) {
280
- backdrop_filter_reads_from_pass_texture_ += 1 ;
280
+ backdrop_filter_reads_from_pass_texture_ = true ;
281
281
}
282
282
if (pass->blend_mode_ > Entity::kLastPipelineBlendMode ) {
283
- advanced_blend_reads_from_pass_texture_ += 1 ;
283
+ advanced_blend_reads_from_pass_texture_ = true ;
284
284
}
285
285
286
286
auto subpass_pointer = pass.get ();
287
287
elements_.emplace_back (std::move (pass));
288
288
return subpass_pointer;
289
289
}
290
290
291
- void EntityPass::AddSubpassInline (std::unique_ptr<EntityPass> pass) {
292
- if (!pass) {
293
- return ;
294
- }
295
- FML_DCHECK (pass->superpass_ == nullptr );
296
-
297
- std::vector<Element>& elements = pass->elements_ ;
298
- for (auto i = 0u ; i < elements.size (); i++) {
299
- elements_.emplace_back (std::move (elements[i]));
300
- }
301
-
302
- backdrop_filter_reads_from_pass_texture_ +=
303
- pass->backdrop_filter_reads_from_pass_texture_ ;
304
- advanced_blend_reads_from_pass_texture_ +=
305
- pass->advanced_blend_reads_from_pass_texture_ ;
306
- }
307
-
308
291
static const constexpr RenderTarget::AttachmentConfig kDefaultStencilConfig =
309
292
RenderTarget::AttachmentConfig{
310
293
.storage_mode = StorageMode::kDeviceTransient ,
@@ -366,10 +349,10 @@ static EntityPassTarget CreateRenderTarget(ContentContext& renderer,
366
349
renderer.GetDeviceCapabilities ().SupportsImplicitResolvingMSAA ());
367
350
}
368
351
369
- uint32_t EntityPass::GetTotalPassReads (ContentContext& renderer) const {
352
+ bool EntityPass::DoesBackdropGetRead (ContentContext& renderer) const {
370
353
return renderer.GetDeviceCapabilities ().SupportsFramebufferFetch ()
371
354
? backdrop_filter_reads_from_pass_texture_
372
- : backdrop_filter_reads_from_pass_texture_ +
355
+ : backdrop_filter_reads_from_pass_texture_ ||
373
356
advanced_blend_reads_from_pass_texture_;
374
357
}
375
358
@@ -413,11 +396,10 @@ bool EntityPass::Render(ContentContext& renderer,
413
396
EntityPassClipStack clip_stack = EntityPassClipStack (
414
397
Rect::MakeSize (root_render_target.GetRenderTargetSize ()));
415
398
416
- bool reads_from_onscreen_backdrop = GetTotalPassReads (renderer) > 0 ;
417
399
// In this branch path, we need to render everything to an offscreen texture
418
400
// and then blit the results onto the onscreen texture. If using this branch,
419
401
// there's no need to set up a stencil attachment on the root render target.
420
- if (reads_from_onscreen_backdrop ) {
402
+ if (DoesBackdropGetRead (renderer) ) {
421
403
EntityPassTarget offscreen_target = CreateRenderTarget (
422
404
renderer, root_render_target.GetRenderTargetSize (),
423
405
GetRequiredMipCount (),
@@ -889,8 +871,7 @@ bool EntityPass::OnRender(
889
871
pass_depth);
890
872
}
891
873
892
- InlinePassContext pass_context (renderer, pass_target,
893
- GetTotalPassReads (renderer), GetElementCount (),
874
+ InlinePassContext pass_context (renderer, pass_target, GetElementCount (),
894
875
collapsed_parent_pass);
895
876
if (!pass_context.IsValid ()) {
896
877
VALIDATION_LOG << SPrintF (" Pass context invalid (Depth=%d)" , pass_depth);
0 commit comments