summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt17
-rw-r--r--src/audio_core/renderer/performance/detail_aspect.h1
-rw-r--r--src/audio_core/renderer/performance/entry_aspect.h1
-rw-r--r--src/core/hle/kernel/service_thread.cpp3
-rw-r--r--src/core/memory.cpp2
-rw-r--r--src/video_core/engines/draw_manager.cpp2
6 files changed, 18 insertions, 8 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index cd59e7485..16f31b3a6 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -51,6 +51,8 @@ option(YUZU_USE_BUNDLED_VCPKG "Use vcpkg for yuzu dependencies" "${MSVC}")
51 51
52option(YUZU_CHECK_SUBMODULES "Check if submodules are present" ON) 52option(YUZU_CHECK_SUBMODULES "Check if submodules are present" ON)
53 53
54CMAKE_DEPENDENT_OPTION(YUZU_USE_FASTER_LD "Check if a faster linker is available" ON "NOT WIN32" OFF)
55
54if (YUZU_USE_BUNDLED_VCPKG) 56if (YUZU_USE_BUNDLED_VCPKG)
55 if (YUZU_TESTS) 57 if (YUZU_TESTS)
56 list(APPEND VCPKG_MANIFEST_FEATURES "yuzu-tests") 58 list(APPEND VCPKG_MANIFEST_FEATURES "yuzu-tests")
@@ -579,6 +581,21 @@ if (MSVC AND CMAKE_GENERATOR STREQUAL "Ninja")
579 ) 581 )
580endif() 582endif()
581 583
584if (YUZU_USE_FASTER_LD AND CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
585 # We will assume that if the compiler is GCC, it will attempt to use ld.bfd by default.
586 # Try to pick a faster linker.
587 find_program(LLD lld)
588 find_program(MOLD mold)
589
590 if (MOLD AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "12.1")
591 message(NOTICE "Selecting mold as linker")
592 add_link_options("-fuse-ld=mold")
593 elseif (LLD)
594 message(NOTICE "Selecting lld as linker")
595 add_link_options("-fuse-ld=lld")
596 endif()
597endif()
598
582enable_testing() 599enable_testing()
583add_subdirectory(externals) 600add_subdirectory(externals)
584add_subdirectory(src) 601add_subdirectory(src)
diff --git a/src/audio_core/renderer/performance/detail_aspect.h b/src/audio_core/renderer/performance/detail_aspect.h
index ee4ac2f76..736c331b9 100644
--- a/src/audio_core/renderer/performance/detail_aspect.h
+++ b/src/audio_core/renderer/performance/detail_aspect.h
@@ -16,7 +16,6 @@ class CommandGenerator;
16 */ 16 */
17class DetailAspect { 17class DetailAspect {
18public: 18public:
19 DetailAspect() = default;
20 DetailAspect(CommandGenerator& command_generator, PerformanceEntryType entry_type, s32 node_id, 19 DetailAspect(CommandGenerator& command_generator, PerformanceEntryType entry_type, s32 node_id,
21 PerformanceDetailType detail_type); 20 PerformanceDetailType detail_type);
22 21
diff --git a/src/audio_core/renderer/performance/entry_aspect.h b/src/audio_core/renderer/performance/entry_aspect.h
index 01c1eb3f1..14c9e3baf 100644
--- a/src/audio_core/renderer/performance/entry_aspect.h
+++ b/src/audio_core/renderer/performance/entry_aspect.h
@@ -16,7 +16,6 @@ class CommandGenerator;
16 */ 16 */
17class EntryAspect { 17class EntryAspect {
18public: 18public:
19 EntryAspect() = default;
20 EntryAspect(CommandGenerator& command_generator, PerformanceEntryType type, s32 node_id); 19 EntryAspect(CommandGenerator& command_generator, PerformanceEntryType type, s32 node_id);
21 20
22 /// Command generator the command will be generated into 21 /// Command generator the command will be generated into
diff --git a/src/core/hle/kernel/service_thread.cpp b/src/core/hle/kernel/service_thread.cpp
index e72c3d35d..38afa720b 100644
--- a/src/core/hle/kernel/service_thread.cpp
+++ b/src/core/hle/kernel/service_thread.cpp
@@ -163,9 +163,6 @@ ServiceThread::Impl::~Impl() {
163 m_wakeup_event->Signal(); 163 m_wakeup_event->Signal();
164 m_host_thread.join(); 164 m_host_thread.join();
165 165
166 // Lock mutex.
167 m_session_mutex.lock();
168
169 // Close all remaining sessions. 166 // Close all remaining sessions.
170 for (const auto& [server_session, manager] : m_sessions) { 167 for (const auto& [server_session, manager] : m_sessions) {
171 server_session->Close(); 168 server_session->Close();
diff --git a/src/core/memory.cpp b/src/core/memory.cpp
index 3141122f1..b3f50223b 100644
--- a/src/core/memory.cpp
+++ b/src/core/memory.cpp
@@ -195,13 +195,11 @@ struct Memory::Impl {
195 break; 195 break;
196 } 196 }
197 case Common::PageType::Memory: { 197 case Common::PageType::Memory: {
198 DEBUG_ASSERT(pointer);
199 u8* mem_ptr = pointer + page_offset + (page_index << YUZU_PAGEBITS); 198 u8* mem_ptr = pointer + page_offset + (page_index << YUZU_PAGEBITS);
200 on_memory(copy_amount, mem_ptr); 199 on_memory(copy_amount, mem_ptr);
201 break; 200 break;
202 } 201 }
203 case Common::PageType::DebugMemory: { 202 case Common::PageType::DebugMemory: {
204 DEBUG_ASSERT(pointer);
205 u8* const mem_ptr{GetPointerFromDebugMemory(current_vaddr)}; 203 u8* const mem_ptr{GetPointerFromDebugMemory(current_vaddr)};
206 on_memory(copy_amount, mem_ptr); 204 on_memory(copy_amount, mem_ptr);
207 break; 205 break;
diff --git a/src/video_core/engines/draw_manager.cpp b/src/video_core/engines/draw_manager.cpp
index c59524e58..b213c374f 100644
--- a/src/video_core/engines/draw_manager.cpp
+++ b/src/video_core/engines/draw_manager.cpp
@@ -180,7 +180,7 @@ void DrawManager::ProcessTopologyOverride() {
180} 180}
181 181
182void DrawManager::ProcessDraw(bool draw_indexed, u32 instance_count) { 182void DrawManager::ProcessDraw(bool draw_indexed, u32 instance_count) {
183 LOG_TRACE(HW_GPU, "called, topology={}, count={}", draw_state.topology.Value(), 183 LOG_TRACE(HW_GPU, "called, topology={}, count={}", draw_state.topology,
184 draw_indexed ? draw_state.index_buffer.count : draw_state.vertex_buffer.count); 184 draw_indexed ? draw_state.index_buffer.count : draw_state.vertex_buffer.count);
185 185
186 ProcessTopologyOverride(); 186 ProcessTopologyOverride();