diff options
Diffstat (limited to 'src/core/hle/kernel')
| -rw-r--r-- | src/core/hle/kernel/k_process.cpp | 14 | ||||
| -rw-r--r-- | src/core/hle/kernel/k_process.h | 4 |
2 files changed, 4 insertions, 14 deletions
diff --git a/src/core/hle/kernel/k_process.cpp b/src/core/hle/kernel/k_process.cpp index 53735a225..0b08e877e 100644 --- a/src/core/hle/kernel/k_process.cpp +++ b/src/core/hle/kernel/k_process.cpp | |||
| @@ -5,6 +5,7 @@ | |||
| 5 | #include "common/scope_exit.h" | 5 | #include "common/scope_exit.h" |
| 6 | #include "common/settings.h" | 6 | #include "common/settings.h" |
| 7 | #include "core/core.h" | 7 | #include "core/core.h" |
| 8 | #include "core/gpu_dirty_memory_manager.h" | ||
| 8 | #include "core/hle/kernel/k_process.h" | 9 | #include "core/hle/kernel/k_process.h" |
| 9 | #include "core/hle/kernel/k_scoped_resource_reservation.h" | 10 | #include "core/hle/kernel/k_scoped_resource_reservation.h" |
| 10 | #include "core/hle/kernel/k_shared_memory.h" | 11 | #include "core/hle/kernel/k_shared_memory.h" |
| @@ -320,7 +321,7 @@ Result KProcess::Initialize(const Svc::CreateProcessParameter& params, const KPa | |||
| 320 | 321 | ||
| 321 | // Ensure our memory is initialized. | 322 | // Ensure our memory is initialized. |
| 322 | m_memory.SetCurrentPageTable(*this); | 323 | m_memory.SetCurrentPageTable(*this); |
| 323 | m_memory.SetGPUDirtyManagers(m_dirty_memory_managers); | 324 | m_memory.SetGPUDirtyManagers(m_kernel.System().GetGPUDirtyMemoryManager()); |
| 324 | 325 | ||
| 325 | // Ensure we can insert the code region. | 326 | // Ensure we can insert the code region. |
| 326 | R_UNLESS(m_page_table.CanContain(params.code_address, params.code_num_pages * PageSize, | 327 | R_UNLESS(m_page_table.CanContain(params.code_address, params.code_num_pages * PageSize, |
| @@ -417,7 +418,7 @@ Result KProcess::Initialize(const Svc::CreateProcessParameter& params, | |||
| 417 | 418 | ||
| 418 | // Ensure our memory is initialized. | 419 | // Ensure our memory is initialized. |
| 419 | m_memory.SetCurrentPageTable(*this); | 420 | m_memory.SetCurrentPageTable(*this); |
| 420 | m_memory.SetGPUDirtyManagers(m_dirty_memory_managers); | 421 | m_memory.SetGPUDirtyManagers(m_kernel.System().GetGPUDirtyMemoryManager()); |
| 421 | 422 | ||
| 422 | // Ensure we can insert the code region. | 423 | // Ensure we can insert the code region. |
| 423 | R_UNLESS(m_page_table.CanContain(params.code_address, code_size, KMemoryState::Code), | 424 | R_UNLESS(m_page_table.CanContain(params.code_address, code_size, KMemoryState::Code), |
| @@ -1141,8 +1142,7 @@ void KProcess::Switch(KProcess* cur_process, KProcess* next_process) {} | |||
| 1141 | KProcess::KProcess(KernelCore& kernel) | 1142 | KProcess::KProcess(KernelCore& kernel) |
| 1142 | : KAutoObjectWithSlabHeapAndContainer(kernel), m_page_table{kernel}, m_state_lock{kernel}, | 1143 | : KAutoObjectWithSlabHeapAndContainer(kernel), m_page_table{kernel}, m_state_lock{kernel}, |
| 1143 | m_list_lock{kernel}, m_cond_var{kernel.System()}, m_address_arbiter{kernel.System()}, | 1144 | m_list_lock{kernel}, m_cond_var{kernel.System()}, m_address_arbiter{kernel.System()}, |
| 1144 | m_handle_table{kernel}, m_dirty_memory_managers{}, | 1145 | m_handle_table{kernel}, m_exclusive_monitor{}, m_memory{kernel.System()} {} |
| 1145 | m_exclusive_monitor{}, m_memory{kernel.System()} {} | ||
| 1146 | KProcess::~KProcess() = default; | 1146 | KProcess::~KProcess() = default; |
| 1147 | 1147 | ||
| 1148 | Result KProcess::LoadFromMetadata(const FileSys::ProgramMetadata& metadata, std::size_t code_size, | 1148 | Result KProcess::LoadFromMetadata(const FileSys::ProgramMetadata& metadata, std::size_t code_size, |
| @@ -1324,10 +1324,4 @@ bool KProcess::RemoveWatchpoint(KProcessAddress addr, u64 size, DebugWatchpointT | |||
| 1324 | return true; | 1324 | return true; |
| 1325 | } | 1325 | } |
| 1326 | 1326 | ||
| 1327 | void KProcess::GatherGPUDirtyMemory(std::function<void(VAddr, size_t)>& callback) { | ||
| 1328 | for (auto& manager : m_dirty_memory_managers) { | ||
| 1329 | manager.Gather(callback); | ||
| 1330 | } | ||
| 1331 | } | ||
| 1332 | |||
| 1333 | } // namespace Kernel | 1327 | } // namespace Kernel |
diff --git a/src/core/hle/kernel/k_process.h b/src/core/hle/kernel/k_process.h index 53c0e3316..ab1358a12 100644 --- a/src/core/hle/kernel/k_process.h +++ b/src/core/hle/kernel/k_process.h | |||
| @@ -7,7 +7,6 @@ | |||
| 7 | 7 | ||
| 8 | #include "core/arm/arm_interface.h" | 8 | #include "core/arm/arm_interface.h" |
| 9 | #include "core/file_sys/program_metadata.h" | 9 | #include "core/file_sys/program_metadata.h" |
| 10 | #include "core/gpu_dirty_memory_manager.h" | ||
| 11 | #include "core/hle/kernel/code_set.h" | 10 | #include "core/hle/kernel/code_set.h" |
| 12 | #include "core/hle/kernel/k_address_arbiter.h" | 11 | #include "core/hle/kernel/k_address_arbiter.h" |
| 13 | #include "core/hle/kernel/k_capabilities.h" | 12 | #include "core/hle/kernel/k_capabilities.h" |
| @@ -128,7 +127,6 @@ private: | |||
| 128 | #ifdef HAS_NCE | 127 | #ifdef HAS_NCE |
| 129 | std::unordered_map<u64, u64> m_post_handlers{}; | 128 | std::unordered_map<u64, u64> m_post_handlers{}; |
| 130 | #endif | 129 | #endif |
| 131 | std::array<Core::GPUDirtyMemoryManager, Core::Hardware::NUM_CPU_CORES> m_dirty_memory_managers; | ||
| 132 | std::unique_ptr<Core::ExclusiveMonitor> m_exclusive_monitor; | 130 | std::unique_ptr<Core::ExclusiveMonitor> m_exclusive_monitor; |
| 133 | Core::Memory::Memory m_memory; | 131 | Core::Memory::Memory m_memory; |
| 134 | 132 | ||
| @@ -511,8 +509,6 @@ public: | |||
| 511 | return m_memory; | 509 | return m_memory; |
| 512 | } | 510 | } |
| 513 | 511 | ||
| 514 | void GatherGPUDirtyMemory(std::function<void(VAddr, size_t)>& callback); | ||
| 515 | |||
| 516 | Core::ExclusiveMonitor& GetExclusiveMonitor() const { | 512 | Core::ExclusiveMonitor& GetExclusiveMonitor() const { |
| 517 | return *m_exclusive_monitor; | 513 | return *m_exclusive_monitor; |
| 518 | } | 514 | } |