[D3D12] Subsystem management order cleanup
This commit is contained in:
parent
60052fb4fc
commit
f9b3b90a68
|
@ -862,6 +862,13 @@ bool D3D12CommandProcessor::SetupContext() {
|
||||||
draw_resolution_scale_x, draw_resolution_scale_y);
|
draw_resolution_scale_x, draw_resolution_scale_y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
shared_memory_ =
|
||||||
|
std::make_unique<D3D12SharedMemory>(*this, *memory_, trace_writer_);
|
||||||
|
if (!shared_memory_->Initialize()) {
|
||||||
|
XELOGE("Failed to initialize shared memory");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// Initialize the render target cache before configuring binding - need to
|
// Initialize the render target cache before configuring binding - need to
|
||||||
// know if using rasterizer-ordered views for the bindless root signature.
|
// know if using rasterizer-ordered views for the bindless root signature.
|
||||||
render_target_cache_ = std::make_unique<D3D12RenderTargetCache>(
|
render_target_cache_ = std::make_unique<D3D12RenderTargetCache>(
|
||||||
|
@ -1144,13 +1151,6 @@ bool D3D12CommandProcessor::SetupContext() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
shared_memory_ =
|
|
||||||
std::make_unique<D3D12SharedMemory>(*this, *memory_, trace_writer_);
|
|
||||||
if (!shared_memory_->Initialize()) {
|
|
||||||
XELOGE("Failed to initialize shared memory");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
primitive_processor_ = std::make_unique<D3D12PrimitiveProcessor>(
|
primitive_processor_ = std::make_unique<D3D12PrimitiveProcessor>(
|
||||||
*register_file_, *memory_, trace_writer_, *shared_memory_, *this);
|
*register_file_, *memory_, trace_writer_, *shared_memory_, *this);
|
||||||
if (!primitive_processor_->Initialize()) {
|
if (!primitive_processor_->Initialize()) {
|
||||||
|
@ -1615,13 +1615,11 @@ void D3D12CommandProcessor::ShutdownContext() {
|
||||||
gamma_ramp_upload_buffer_.Reset();
|
gamma_ramp_upload_buffer_.Reset();
|
||||||
gamma_ramp_buffer_.Reset();
|
gamma_ramp_buffer_.Reset();
|
||||||
|
|
||||||
pipeline_cache_.reset();
|
|
||||||
|
|
||||||
texture_cache_.reset();
|
texture_cache_.reset();
|
||||||
|
|
||||||
primitive_processor_.reset();
|
pipeline_cache_.reset();
|
||||||
|
|
||||||
shared_memory_.reset();
|
primitive_processor_.reset();
|
||||||
|
|
||||||
// Shut down binding - bindless descriptors may be owned by subsystems like
|
// Shut down binding - bindless descriptors may be owned by subsystems like
|
||||||
// the texture cache.
|
// the texture cache.
|
||||||
|
@ -1654,6 +1652,8 @@ void D3D12CommandProcessor::ShutdownContext() {
|
||||||
|
|
||||||
render_target_cache_.reset();
|
render_target_cache_.reset();
|
||||||
|
|
||||||
|
shared_memory_.reset();
|
||||||
|
|
||||||
deferred_command_list_.Reset();
|
deferred_command_list_.Reset();
|
||||||
ui::d3d12::util::ReleaseAndNull(command_list_1_);
|
ui::d3d12::util::ReleaseAndNull(command_list_1_);
|
||||||
ui::d3d12::util::ReleaseAndNull(command_list_);
|
ui::d3d12::util::ReleaseAndNull(command_list_);
|
||||||
|
@ -2787,10 +2787,10 @@ void D3D12CommandProcessor::CheckSubmissionFence(uint64_t await_submission) {
|
||||||
|
|
||||||
shared_memory_->CompletedSubmissionUpdated();
|
shared_memory_->CompletedSubmissionUpdated();
|
||||||
|
|
||||||
primitive_processor_->CompletedSubmissionUpdated();
|
|
||||||
|
|
||||||
render_target_cache_->CompletedSubmissionUpdated();
|
render_target_cache_->CompletedSubmissionUpdated();
|
||||||
|
|
||||||
|
primitive_processor_->CompletedSubmissionUpdated();
|
||||||
|
|
||||||
texture_cache_->CompletedSubmissionUpdated(submission_completed_);
|
texture_cache_->CompletedSubmissionUpdated(submission_completed_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2870,10 +2870,10 @@ bool D3D12CommandProcessor::BeginSubmission(bool is_guest_command) {
|
||||||
}
|
}
|
||||||
primitive_topology_ = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED;
|
primitive_topology_ = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED;
|
||||||
|
|
||||||
primitive_processor_->BeginSubmission();
|
|
||||||
|
|
||||||
render_target_cache_->BeginSubmission();
|
render_target_cache_->BeginSubmission();
|
||||||
|
|
||||||
|
primitive_processor_->BeginSubmission();
|
||||||
|
|
||||||
texture_cache_->BeginSubmission(submission_current_);
|
texture_cache_->BeginSubmission(submission_current_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3043,12 +3043,10 @@ bool D3D12CommandProcessor::EndSubmission(bool is_swap) {
|
||||||
}
|
}
|
||||||
constant_buffer_pool_->ClearCache();
|
constant_buffer_pool_->ClearCache();
|
||||||
|
|
||||||
pipeline_cache_->ClearCache();
|
|
||||||
|
|
||||||
render_target_cache_->ClearCache();
|
|
||||||
|
|
||||||
texture_cache_->ClearCache();
|
texture_cache_->ClearCache();
|
||||||
|
|
||||||
|
pipeline_cache_->ClearCache();
|
||||||
|
|
||||||
for (auto it : root_signatures_bindful_) {
|
for (auto it : root_signatures_bindful_) {
|
||||||
it.second->Release();
|
it.second->Release();
|
||||||
}
|
}
|
||||||
|
@ -3056,6 +3054,8 @@ bool D3D12CommandProcessor::EndSubmission(bool is_swap) {
|
||||||
|
|
||||||
primitive_processor_->ClearCache();
|
primitive_processor_->ClearCache();
|
||||||
|
|
||||||
|
render_target_cache_->ClearCache();
|
||||||
|
|
||||||
shared_memory_->ClearCache();
|
shared_memory_->ClearCache();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -427,6 +427,8 @@ class D3D12CommandProcessor : public CommandProcessor {
|
||||||
// of UpdateBindings time, and that's outside the emulator's control even).
|
// of UpdateBindings time, and that's outside the emulator's control even).
|
||||||
bool bindless_resources_used_ = false;
|
bool bindless_resources_used_ = false;
|
||||||
|
|
||||||
|
std::unique_ptr<D3D12SharedMemory> shared_memory_;
|
||||||
|
|
||||||
std::unique_ptr<D3D12RenderTargetCache> render_target_cache_;
|
std::unique_ptr<D3D12RenderTargetCache> render_target_cache_;
|
||||||
|
|
||||||
std::unique_ptr<ui::d3d12::D3D12UploadBufferPool> constant_buffer_pool_;
|
std::unique_ptr<ui::d3d12::D3D12UploadBufferPool> constant_buffer_pool_;
|
||||||
|
@ -491,8 +493,6 @@ class D3D12CommandProcessor : public CommandProcessor {
|
||||||
ID3D12RootSignature* root_signature_bindless_vs_ = nullptr;
|
ID3D12RootSignature* root_signature_bindless_vs_ = nullptr;
|
||||||
ID3D12RootSignature* root_signature_bindless_ds_ = nullptr;
|
ID3D12RootSignature* root_signature_bindless_ds_ = nullptr;
|
||||||
|
|
||||||
std::unique_ptr<D3D12SharedMemory> shared_memory_;
|
|
||||||
|
|
||||||
std::unique_ptr<D3D12PrimitiveProcessor> primitive_processor_;
|
std::unique_ptr<D3D12PrimitiveProcessor> primitive_processor_;
|
||||||
|
|
||||||
std::unique_ptr<PipelineCache> pipeline_cache_;
|
std::unique_ptr<PipelineCache> pipeline_cache_;
|
||||||
|
|
Loading…
Reference in New Issue