RSX exception fix

VBlank thread management fix
This commit is contained in:
Nekotekina 2016-07-20 15:16:19 +03:00
parent 2af86e363c
commit ae634bb87e
5 changed files with 20 additions and 3 deletions

View File

@ -278,6 +278,7 @@ D3D12GSRender::~D3D12GSRender()
void D3D12GSRender::on_exit()
{
return GSRender::on_exit();
}
bool D3D12GSRender::do_method(u32 cmd, u32 arg)

View File

@ -611,6 +611,8 @@ void GLGSRender::on_exit()
m_attrib_ring_buffer.remove();
m_uniform_ring_buffer.remove();
m_index_ring_buffer.remove();
return GSRender::on_exit();
}
void nv4097_clear_surface(u32 arg, GLGSRender* renderer)

View File

@ -62,7 +62,7 @@ namespace rsx
}
catch (...)
{
LOG_ERROR(RSX, "Cache file '%s' ignored", entry.name);
LOG_WARNING(RSX, "Cache file '%s' ignored", entry.name);
continue;
}
@ -376,7 +376,7 @@ namespace rsx
last_flip_time = get_system_time() - 1000000;
scope_thread vblank("VBlank Thread", [this]()
m_vblank_thread = thread_ctrl::spawn("VBlank Thread", [this]()
{
const u64 start_time = get_system_time();
@ -484,9 +484,18 @@ namespace rsx
}
}
void thread::on_exit()
{
if (m_vblank_thread)
{
m_vblank_thread->join();
m_vblank_thread.reset();
}
}
std::string thread::get_name() const
{
return "rsx::thread"s;
return "rsx::thread";
}
void thread::fill_scale_offset_data(void *buffer, bool is_d3d) const

View File

@ -189,6 +189,8 @@ namespace rsx
class thread : public named_thread
{
std::shared_ptr<thread_ctrl> m_vblank_thread;
protected:
std::stack<u32> m_call_stack;
@ -267,6 +269,7 @@ namespace rsx
virtual ~thread();
virtual void on_task() override;
virtual void on_exit() override;
public:
virtual std::string get_name() const override;

View File

@ -754,6 +754,8 @@ void VKGSRender::on_init_thread()
void VKGSRender::on_exit()
{
m_texture_cache.destroy();
return GSRender::on_exit();
}
void VKGSRender::clear_surface(u32 mask)