diff options
| author | 2020-12-10 16:03:35 -0800 | |
|---|---|---|
| committer | 2020-12-28 16:33:47 -0800 | |
| commit | 8bc3d66354972c8a288a56c9b75c9705597778f8 (patch) | |
| tree | 24a1fb294cf8c9fbcd716f03ebd40b431676eeb6 /src | |
| parent | hle: service: nvflinger: Refactor locking and interfaces. (diff) | |
| download | yuzu-8bc3d66354972c8a288a56c9b75c9705597778f8.tar.gz yuzu-8bc3d66354972c8a288a56c9b75c9705597778f8.tar.xz yuzu-8bc3d66354972c8a288a56c9b75c9705597778f8.zip | |
hle: kernel: service_thread: Add parameter for thread pool size.
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/hle/kernel/server_session.cpp | 2 | ||||
| -rw-r--r-- | src/core/hle/kernel/service_thread.cpp | 10 | ||||
| -rw-r--r-- | src/core/hle/kernel/service_thread.h | 2 |
3 files changed, 7 insertions, 7 deletions
diff --git a/src/core/hle/kernel/server_session.cpp b/src/core/hle/kernel/server_session.cpp index 079c3911a..ed42452ff 100644 --- a/src/core/hle/kernel/server_session.cpp +++ b/src/core/hle/kernel/server_session.cpp | |||
| @@ -34,7 +34,7 @@ ResultVal<std::shared_ptr<ServerSession>> ServerSession::Create(KernelCore& kern | |||
| 34 | 34 | ||
| 35 | session->name = std::move(name); | 35 | session->name = std::move(name); |
| 36 | session->parent = std::move(parent); | 36 | session->parent = std::move(parent); |
| 37 | session->service_thread = std::make_unique<ServiceThread>(kernel); | 37 | session->service_thread = std::make_unique<ServiceThread>(kernel, 1); |
| 38 | 38 | ||
| 39 | return MakeResult(std::move(session)); | 39 | return MakeResult(std::move(session)); |
| 40 | } | 40 | } |
diff --git a/src/core/hle/kernel/service_thread.cpp b/src/core/hle/kernel/service_thread.cpp index 59a6045df..4ceb7e56a 100644 --- a/src/core/hle/kernel/service_thread.cpp +++ b/src/core/hle/kernel/service_thread.cpp | |||
| @@ -22,7 +22,7 @@ namespace Kernel { | |||
| 22 | 22 | ||
| 23 | class ServiceThread::Impl final { | 23 | class ServiceThread::Impl final { |
| 24 | public: | 24 | public: |
| 25 | explicit Impl(KernelCore& kernel); | 25 | explicit Impl(KernelCore& kernel, std::size_t num_threads); |
| 26 | ~Impl(); | 26 | ~Impl(); |
| 27 | 27 | ||
| 28 | void QueueSyncRequest(ServerSession& session, std::shared_ptr<HLERequestContext>&& context); | 28 | void QueueSyncRequest(ServerSession& session, std::shared_ptr<HLERequestContext>&& context); |
| @@ -35,9 +35,8 @@ private: | |||
| 35 | bool stop{}; | 35 | bool stop{}; |
| 36 | }; | 36 | }; |
| 37 | 37 | ||
| 38 | ServiceThread::Impl::Impl(KernelCore& kernel) { | 38 | ServiceThread::Impl::Impl(KernelCore& kernel, std::size_t num_threads) { |
| 39 | constexpr std::size_t SizeOfPool{1}; | 39 | for (std::size_t i = 0; i < num_threads; ++i) |
| 40 | for (std::size_t i = 0; i < SizeOfPool; ++i) | ||
| 41 | threads.emplace_back([&] { | 40 | threads.emplace_back([&] { |
| 42 | // Wait for first request before trying to acquire a render context | 41 | // Wait for first request before trying to acquire a render context |
| 43 | { | 42 | { |
| @@ -88,7 +87,8 @@ ServiceThread::Impl::~Impl() { | |||
| 88 | } | 87 | } |
| 89 | } | 88 | } |
| 90 | 89 | ||
| 91 | ServiceThread::ServiceThread(KernelCore& kernel) : impl{std::make_unique<Impl>(kernel)} {} | 90 | ServiceThread::ServiceThread(KernelCore& kernel, std::size_t num_threads) |
| 91 | : impl{std::make_unique<Impl>(kernel, num_threads)} {} | ||
| 92 | 92 | ||
| 93 | ServiceThread::~ServiceThread() = default; | 93 | ServiceThread::~ServiceThread() = default; |
| 94 | 94 | ||
diff --git a/src/core/hle/kernel/service_thread.h b/src/core/hle/kernel/service_thread.h index d252490bb..91ad7ae85 100644 --- a/src/core/hle/kernel/service_thread.h +++ b/src/core/hle/kernel/service_thread.h | |||
| @@ -14,7 +14,7 @@ class ServerSession; | |||
| 14 | 14 | ||
| 15 | class ServiceThread final { | 15 | class ServiceThread final { |
| 16 | public: | 16 | public: |
| 17 | explicit ServiceThread(KernelCore& kernel); | 17 | explicit ServiceThread(KernelCore& kernel, std::size_t num_threads); |
| 18 | ~ServiceThread(); | 18 | ~ServiceThread(); |
| 19 | 19 | ||
| 20 | void QueueSyncRequest(ServerSession& session, std::shared_ptr<HLERequestContext>&& context); | 20 | void QueueSyncRequest(ServerSession& session, std::shared_ptr<HLERequestContext>&& context); |