vk: Implement multithreaded command submission

- A few nagging issues remain, specifically that partial command stream
  largely caused by poor synchronization structures for partial CS flush
  and also the fact that occlusion map entries wait on a command buffer
  and not an EID!
This commit is contained in:
kd-11 2019-12-07 16:28:35 +03:00 committed by kd-11
parent 5be7f08965
commit a51395370e
14 changed files with 283 additions and 196 deletions

View file

@ -57,6 +57,9 @@ namespace rsx
static_cast<rsx::primitive_type>(m_current_job->aux_param0),
m_current_job->length);
break;
case callback:
rsx::get_current_renderer()->renderctl(m_current_job->aux_param0, m_current_job->src);
break;
default:
ASSUME(0);
fmt::throw_exception("Unreachable" HERE);
@ -119,6 +122,15 @@ namespace rsx
}
}
// Backend callback
void dma_manager::backend_ctrl(u32 request_code, void* args)
{
verify(HERE), g_cfg.video.multithreaded_rsx;
++m_enqueued_count;
m_work_queue.push(request_code, args);
}
// Synchronization
bool dma_manager::is_current_thread() const
{