Batching - BackBuffer copy fix
For fixing a previous issue state.canvas_texscreen_used was reset to false at the start of each render_joined_item. This was causing a later shader that used SCREEN_TEXTURE to force recapturing the back buffer immediately prior to use, which we don't want. This PR preserves the state across joined items, and also prevents joining of items that copy the back buffer as this may be problematic. It turns out that the original issue that needed the line is now fixed, and the later issue is also fixed by removing it.
This commit is contained in:
parent
5a66e66448
commit
7c4cf1c043
3 changed files with 5 additions and 8 deletions
|
@ -1946,10 +1946,6 @@ void RasterizerCanvasGLES2::render_joined_item(const BItemJoined &p_bij, RenderI
|
|||
}
|
||||
#endif
|
||||
|
||||
// this must be reset for each joined item,
|
||||
// it only exists to prevent capturing the screen more than once per item
|
||||
state.canvas_texscreen_used = false;
|
||||
|
||||
// all the joined items will share the same state with the first item
|
||||
Item *ci = bdata.item_refs[p_bij.first_item_ref].item;
|
||||
|
||||
|
|
|
@ -1203,10 +1203,6 @@ void RasterizerCanvasGLES3::render_joined_item(const BItemJoined &p_bij, RenderI
|
|||
}
|
||||
#endif
|
||||
|
||||
// this must be reset for each joined item,
|
||||
// it only exists to prevent capturing the screen more than once per item
|
||||
state.canvas_texscreen_used = false;
|
||||
|
||||
// all the joined items will share the same state with the first item
|
||||
Item *p_ci = bdata.item_refs[p_bij.first_item_ref].item;
|
||||
|
||||
|
|
|
@ -3048,6 +3048,11 @@ PREAMBLE(bool)::_detect_item_batch_break(RenderItemState &r_ris, RasterizerCanva
|
|||
|
||||
} // else
|
||||
|
||||
// special case, back buffer copy, so don't join
|
||||
if (p_ci->copy_back_buffer) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue