mirror of
https://github.com/RPCSX/rpcsx.git
synced 2026-04-19 13:25:14 +00:00
rsx: Texture cache fixes
1. rsx: Rework section synchronization using the new memory mirrors
2. rsx: Tweaks
- Simplify peeking into the current rsx::thread instance.
Use a simple rsx::get_current_renderer instead of asking fxm for the same
- Fix global rsx super memory shm block management
3. rsx: Improve memory validation. test_framebuffer() and
tag_framebuffer() are simplified due to mirror support
4. rsx: Only write back confirmed memory range to avoid overapproximation errors in blit engine
5. rsx: Explicitly mark clobbered flushable sections as dirty to have them
removed
6. rsx: Cumulative fixes
- Reimplement rsx::buffered_section management routines
- blit engine subsections are not hit-tested against confirmed/committed memory range
Not all applications are 'honest' about region bounds, making the real cpu range useless for blit ops
This commit is contained in:
parent
f8a0be8c3e
commit
8fcd5c1e5a
14 changed files with 512 additions and 280 deletions
|
|
@ -30,6 +30,7 @@ rsx::frame_capture_data frame_capture;
|
|||
namespace rsx
|
||||
{
|
||||
std::function<bool(u32 addr, bool is_writing)> g_access_violation_handler;
|
||||
thread* g_current_renderer = nullptr;
|
||||
|
||||
//TODO: Restore a working shaders cache
|
||||
|
||||
|
|
@ -239,10 +240,12 @@ namespace rsx
|
|||
|
||||
thread::thread()
|
||||
{
|
||||
g_current_renderer = this;
|
||||
g_access_violation_handler = [this](u32 address, bool is_writing)
|
||||
{
|
||||
return on_access_violation(address, is_writing);
|
||||
};
|
||||
|
||||
m_rtts_dirty = true;
|
||||
memset(m_textures_dirty, -1, sizeof(m_textures_dirty));
|
||||
memset(m_vertex_textures_dirty, -1, sizeof(m_vertex_textures_dirty));
|
||||
|
|
@ -253,6 +256,7 @@ namespace rsx
|
|||
thread::~thread()
|
||||
{
|
||||
g_access_violation_handler = nullptr;
|
||||
g_current_renderer = nullptr;
|
||||
}
|
||||
|
||||
void thread::capture_frame(const std::string &name)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue