mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-07-06 06:51:26 +12:00
rsx: Remove sections that are wholly inherited by new blocks
- Allows sections reclaimed by the surface store due to overlap/inheritance to be identified and removed. - Additionally, potentially lowers the number of flushes required per block with multiple overlaps improving efficiency and theoretically performance.
This commit is contained in:
parent
f6e90b4c72
commit
7d2ed9200d
1 changed files with 8 additions and 0 deletions
|
@ -749,6 +749,14 @@ namespace rsx
|
||||||
tex.is_flushable() &&
|
tex.is_flushable() &&
|
||||||
tex.get_section_base() != fault_range_in.start)
|
tex.get_section_base() != fault_range_in.start)
|
||||||
{
|
{
|
||||||
|
if (tex.get_context() == texture_upload_context::framebuffer_storage &&
|
||||||
|
tex.inside(fault_range, section_bounds::full_range))
|
||||||
|
{
|
||||||
|
// FBO data 'lives on' in the new region. Surface cache handles memory intersection for us.
|
||||||
|
verify(HERE), tex.inside(fault_range, section_bounds::locked_range);
|
||||||
|
tex.discard(false);
|
||||||
|
}
|
||||||
|
|
||||||
// HACK: When being superseded by an fbo, we preserve overlapped flushables unless the start addresses match
|
// HACK: When being superseded by an fbo, we preserve overlapped flushables unless the start addresses match
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue