@@ -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,10 +277,10 @@ 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 ();
@@ -299,9 +299,11 @@ void EntityPass::AddSubpassInline(std::unique_ptr<EntityPass> pass) {
299
299
elements_.emplace_back (std::move (elements[i]));
300
300
}
301
301
302
- backdrop_filter_reads_from_pass_texture_ +=
302
+ backdrop_filter_reads_from_pass_texture_ =
303
+ backdrop_filter_reads_from_pass_texture_ ||
303
304
pass->backdrop_filter_reads_from_pass_texture_ ;
304
- advanced_blend_reads_from_pass_texture_ +=
305
+ advanced_blend_reads_from_pass_texture_ =
306
+ advanced_blend_reads_from_pass_texture_ ||
305
307
pass->advanced_blend_reads_from_pass_texture_ ;
306
308
}
307
309
@@ -366,10 +368,10 @@ static EntityPassTarget CreateRenderTarget(ContentContext& renderer,
366
368
renderer.GetDeviceCapabilities ().SupportsImplicitResolvingMSAA ());
367
369
}
368
370
369
- uint32_t EntityPass::GetTotalPassReads (ContentContext& renderer) const {
371
+ bool EntityPass::DoesBackdropGetRead (ContentContext& renderer) const {
370
372
return renderer.GetDeviceCapabilities ().SupportsFramebufferFetch ()
371
373
? backdrop_filter_reads_from_pass_texture_
372
- : backdrop_filter_reads_from_pass_texture_ +
374
+ : backdrop_filter_reads_from_pass_texture_ ||
373
375
advanced_blend_reads_from_pass_texture_;
374
376
}
375
377
@@ -413,11 +415,10 @@ bool EntityPass::Render(ContentContext& renderer,
413
415
EntityPassClipStack clip_stack = EntityPassClipStack (
414
416
Rect::MakeSize (root_render_target.GetRenderTargetSize ()));
415
417
416
- bool reads_from_onscreen_backdrop = GetTotalPassReads (renderer) > 0 ;
417
418
// In this branch path, we need to render everything to an offscreen texture
418
419
// and then blit the results onto the onscreen texture. If using this branch,
419
420
// there's no need to set up a stencil attachment on the root render target.
420
- if (reads_from_onscreen_backdrop ) {
421
+ if (DoesBackdropGetRead (renderer) ) {
421
422
EntityPassTarget offscreen_target = CreateRenderTarget (
422
423
renderer, root_render_target.GetRenderTargetSize (),
423
424
GetRequiredMipCount (),
@@ -889,8 +890,7 @@ bool EntityPass::OnRender(
889
890
pass_depth);
890
891
}
891
892
892
- InlinePassContext pass_context (renderer, pass_target,
893
- GetTotalPassReads (renderer), GetElementCount (),
893
+ InlinePassContext pass_context (renderer, pass_target, GetElementCount (),
894
894
collapsed_parent_pass);
895
895
if (!pass_context.IsValid ()) {
896
896
VALIDATION_LOG << SPrintF (" Pass context invalid (Depth=%d)" , pass_depth);
0 commit comments