mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-30 21:30:04 +00:00 
			
		
		
		
	build: Update to support multi-arch builds.
This commit is contained in:
		
							parent
							
								
									0e325255f3
								
							
						
					
					
						commit
						a8848cce43
					
				
					 25 changed files with 114 additions and 66 deletions
				
			
		|  | @ -146,14 +146,14 @@ function(detect_architecture symbol arch) | |||
|         # CMake's crazy scope rules will keep it defined | ||||
|         if (ARCHITECTURE_${arch}) | ||||
|             set(ARCHITECTURE "${arch}" PARENT_SCOPE) | ||||
|             set(ARCHITECTURE_${arch} 1 PARENT_SCOPE) | ||||
|             add_definitions(-DARCHITECTURE_${arch}=1) | ||||
|         endif() | ||||
|     endif() | ||||
| endfunction() | ||||
| 
 | ||||
| if (NOT ENABLE_GENERIC) | ||||
|     if (MSVC) | ||||
|     if (CMAKE_OSX_ARCHITECTURES) | ||||
|         set(ARCHITECTURE "${CMAKE_OSX_ARCHITECTURES}") | ||||
|     elseif (MSVC) | ||||
|         detect_architecture("_M_AMD64" x86_64) | ||||
|         detect_architecture("_M_IX86" x86) | ||||
|         detect_architecture("_M_ARM" arm) | ||||
|  | @ -167,8 +167,6 @@ if (NOT ENABLE_GENERIC) | |||
| endif() | ||||
| if (NOT DEFINED ARCHITECTURE) | ||||
|     set(ARCHITECTURE "GENERIC") | ||||
|     set(ARCHITECTURE_GENERIC 1) | ||||
|     add_definitions(-DARCHITECTURE_GENERIC=1) | ||||
| endif() | ||||
| message(STATUS "Target architecture: ${ARCHITECTURE}") | ||||
| 
 | ||||
|  | @ -194,7 +192,7 @@ find_package(Threads REQUIRED) | |||
| 
 | ||||
| if (ENABLE_QT) | ||||
|     if (CITRA_USE_BUNDLED_QT) | ||||
|         if (MSVC_VERSION GREATER_EQUAL 1920 AND ARCHITECTURE_x86_64) | ||||
|         if (MSVC_VERSION GREATER_EQUAL 1920 AND "x86_64" IN_LIST ARCHITECTURE) | ||||
|             set(QT_VER qt-5.15.7-msvc2019_64) | ||||
|         else() | ||||
|             message(FATAL_ERROR "No bundled Qt binaries for your toolchain. Disable CITRA_USE_BUNDLED_QT and provide your own.") | ||||
|  | @ -231,7 +229,7 @@ endif() | |||
| 
 | ||||
| if (ENABLE_FFMPEG) | ||||
|     if (CITRA_USE_BUNDLED_FFMPEG) | ||||
|         if ((MSVC_VERSION GREATER_EQUAL 1920 AND MSVC_VERSION LESS 1940) AND ARCHITECTURE_x86_64) | ||||
|         if ((MSVC_VERSION GREATER_EQUAL 1920 AND MSVC_VERSION LESS 1940) AND "x86_64" IN_LIST ARCHITECTURE) | ||||
|             set(FFmpeg_VER "ffmpeg-4.1-win64") | ||||
|         else() | ||||
|             message(FATAL_ERROR "No bundled FFmpeg binaries for your toolchain. Disable CITRA_USE_BUNDLED_FFMPEG and provide your own.") | ||||
|  |  | |||
							
								
								
									
										4
									
								
								externals/CMakeLists.txt
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								externals/CMakeLists.txt
									
										
									
									
										vendored
									
									
								
							|  | @ -37,12 +37,12 @@ option(FMT_INSTALL "" ON) | |||
| add_subdirectory(fmt) | ||||
| 
 | ||||
| # Xbyak | ||||
| if (ARCHITECTURE_x86_64) | ||||
| if ("x86_64" IN_LIST ARCHITECTURE) | ||||
|     add_subdirectory(xbyak) | ||||
| endif() | ||||
| 
 | ||||
| # Dynarmic | ||||
| if (ARCHITECTURE_x86_64 OR ARCHITECTURE_arm64) | ||||
| if ("x86_64" IN_LIST ARCHITECTURE OR "arm64" IN_LIST ARCHITECTURE) | ||||
|     set(DYNARMIC_TESTS OFF) | ||||
|     set(DYNARMIC_FRONTENDS "A32") | ||||
|     add_subdirectory(dynarmic) | ||||
|  |  | |||
							
								
								
									
										2
									
								
								externals/dynarmic
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								externals/dynarmic
									
										
									
									
										vendored
									
									
								
							|  | @ -1 +1 @@ | |||
| Subproject commit cd2bee17f20d8ec1df09f458c0f75114b65ed470 | ||||
| Subproject commit 9af4b970d302389829448a30608c7cb4fce9b662 | ||||
|  | @ -60,6 +60,7 @@ | |||
| #include "citra_qt/uisettings.h" | ||||
| #include "citra_qt/updater/updater.h" | ||||
| #include "citra_qt/util/clickable_label.h" | ||||
| #include "common/arch.h" | ||||
| #include "common/common_paths.h" | ||||
| #include "common/detached_tasks.h" | ||||
| #include "common/file_util.h" | ||||
|  | @ -73,7 +74,7 @@ | |||
| #include "common/scm_rev.h" | ||||
| #include "common/scope_exit.h" | ||||
| #include "common/string_util.h" | ||||
| #ifdef ARCHITECTURE_x86_64 | ||||
| #if CITRA_ARCH(x86_64) | ||||
| #include "common/x64/cpu_detect.h" | ||||
| #endif | ||||
| #include "common/settings.h" | ||||
|  | @ -204,7 +205,7 @@ GMainWindow::GMainWindow() | |||
| 
 | ||||
|     LOG_INFO(Frontend, "Citra Version: {} | {}-{}", Common::g_build_fullname, Common::g_scm_branch, | ||||
|              Common::g_scm_desc); | ||||
| #ifdef ARCHITECTURE_x86_64 | ||||
| #if CITRA_ARCH(x86_64) | ||||
|     const auto& caps = Common::GetCPUCaps(); | ||||
|     std::string cpu_string = caps.cpu_string; | ||||
|     if (caps.avx || caps.avx2 || caps.avx512) { | ||||
|  |  | |||
|  | @ -54,6 +54,8 @@ add_custom_command(OUTPUT scm_rev.cpp | |||
| ) | ||||
| 
 | ||||
| add_library(common STATIC | ||||
|     aarch64/cpu_detect.cpp | ||||
|     aarch64/cpu_detect.h | ||||
|     alignment.h | ||||
|     announce_multiplayer_room.h | ||||
|     archives.h | ||||
|  | @ -124,34 +126,21 @@ add_library(common STATIC | |||
|     timer.h | ||||
|     vector_math.h | ||||
|     web_result.h | ||||
|     x64/cpu_detect.cpp | ||||
|     x64/cpu_detect.h | ||||
|     x64/xbyak_abi.h | ||||
|     x64/xbyak_util.h | ||||
|     zstd_compression.cpp | ||||
|     zstd_compression.h | ||||
| ) | ||||
| 
 | ||||
| if(ARCHITECTURE_x86_64) | ||||
|     target_sources(common | ||||
|         PRIVATE | ||||
|             x64/cpu_detect.cpp | ||||
| 
 | ||||
|             x64/cpu_detect.h | ||||
|             x64/xbyak_abi.h | ||||
|             x64/xbyak_util.h | ||||
|     ) | ||||
| elseif(ARCHITECTURE_arm64) | ||||
|     target_sources(common | ||||
|         PRIVATE | ||||
|             aarch64/cpu_detect.cpp | ||||
|             aarch64/cpu_detect.h | ||||
|     ) | ||||
| endif() | ||||
| 
 | ||||
| create_target_directory_groups(common) | ||||
| 
 | ||||
| target_link_libraries(common PUBLIC fmt::fmt microprofile Boost::boost Boost::serialization) | ||||
| target_link_libraries(common PRIVATE libzstd_static) | ||||
| set_target_properties(common PROPERTIES INTERPROCEDURAL_OPTIMIZATION ${ENABLE_LTO}) | ||||
| 
 | ||||
| if (ARCHITECTURE_x86_64) | ||||
| if ("x86_64" IN_LIST ARCHITECTURE) | ||||
|     target_link_libraries(common PRIVATE xbyak) | ||||
| endif() | ||||
| 
 | ||||
|  |  | |||
|  | @ -2,6 +2,9 @@ | |||
| // Licensed under GPLv2+
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
| #include "common/arch.h" | ||||
| #if CITRA_ARCH(arm64) | ||||
| 
 | ||||
| #include <cstring> | ||||
| #include <fstream> | ||||
| #include <string> | ||||
|  | @ -110,3 +113,5 @@ const CPUCaps& GetCPUCaps() { | |||
| } | ||||
| 
 | ||||
| } // namespace Common
 | ||||
| 
 | ||||
| #endif // CITRA_ARCH(arm64)
 | ||||
|  |  | |||
|  | @ -4,6 +4,9 @@ | |||
| 
 | ||||
| #pragma once | ||||
| 
 | ||||
| #include "common/arch.h" | ||||
| #if CITRA_ARCH(arm64) | ||||
| 
 | ||||
| #include <string> | ||||
| 
 | ||||
| namespace Common { | ||||
|  | @ -29,3 +32,5 @@ struct CPUCaps { | |||
| const CPUCaps& GetCPUCaps(); | ||||
| 
 | ||||
| } // namespace Common
 | ||||
| 
 | ||||
| #endif // CITRA_ARCH(arm64)
 | ||||
|  |  | |||
							
								
								
									
										13
									
								
								src/common/arch.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								src/common/arch.h
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,13 @@ | |||
| // Copyright 2023 Citra Emulator Project
 | ||||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
| #pragma once | ||||
| 
 | ||||
| #include <boost/predef.h> | ||||
| 
 | ||||
| #define CITRA_ARCH(NAME) (CITRA_ARCH_##NAME) | ||||
| 
 | ||||
| #define CITRA_ARCH_x86_64 BOOST_ARCH_X86_64 | ||||
| #define CITRA_ARCH_arm64                                                                           \ | ||||
|     (BOOST_ARCH_ARM >= BOOST_VERSION_NUMBER(8, 0, 0) && BOOST_ARCH_WORD_BITS == 64) | ||||
|  | @ -5,8 +5,9 @@ | |||
| #pragma once | ||||
| 
 | ||||
| #include <string> | ||||
| #include "common/arch.h" | ||||
| 
 | ||||
| #if !defined(ARCHITECTURE_x86_64) | ||||
| #if !CITRA_ARCH(x86_64) | ||||
| #include <cstdlib> // for exit
 | ||||
| #endif | ||||
| #include "common/common_types.h" | ||||
|  | @ -36,7 +37,7 @@ | |||
| 
 | ||||
| #ifndef _MSC_VER | ||||
| 
 | ||||
| #ifdef ARCHITECTURE_x86_64 | ||||
| #if CITRA_ARCH(x86_64) | ||||
| #define Crash() __asm__ __volatile__("int $3") | ||||
| #else | ||||
| #define Crash() exit(1) | ||||
|  |  | |||
|  | @ -4,11 +4,12 @@ | |||
| 
 | ||||
| #include <algorithm> | ||||
| #include <cstring> | ||||
| #include "common/arch.h" | ||||
| #include "common/assert.h" | ||||
| #include "common/scm_rev.h" | ||||
| #include "common/telemetry.h" | ||||
| 
 | ||||
| #ifdef ARCHITECTURE_x86_64 | ||||
| #if CITRA_ARCH(x86_64) | ||||
| #include "common/x64/cpu_detect.h" | ||||
| #endif | ||||
| 
 | ||||
|  | @ -54,7 +55,7 @@ void AppendBuildInfo(FieldCollection& fc) { | |||
| } | ||||
| 
 | ||||
| void AppendCPUInfo(FieldCollection& fc) { | ||||
| #ifdef ARCHITECTURE_x86_64 | ||||
| #if CITRA_ARCH(x86_64) | ||||
|     fc.AddField(FieldType::UserSystem, "CPU_Model", Common::GetCPUCaps().cpu_string); | ||||
|     fc.AddField(FieldType::UserSystem, "CPU_BrandString", Common::GetCPUCaps().brand_string); | ||||
|     fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_AES", Common::GetCPUCaps().aes); | ||||
|  |  | |||
|  | @ -2,6 +2,9 @@ | |||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
| #include "common/arch.h" | ||||
| #if CITRA_ARCH(x86_64) | ||||
| 
 | ||||
| #include <cstring> | ||||
| #include "common/common_types.h" | ||||
| #include "common/x64/cpu_detect.h" | ||||
|  | @ -144,3 +147,5 @@ const CPUCaps& GetCPUCaps() { | |||
| } | ||||
| 
 | ||||
| } // namespace Common
 | ||||
| 
 | ||||
| #endif // CITRA_ARCH(x86_64)
 | ||||
|  |  | |||
|  | @ -4,6 +4,9 @@ | |||
| 
 | ||||
| #pragma once | ||||
| 
 | ||||
| #include "common/arch.h" | ||||
| #if CITRA_ARCH(x86_64) | ||||
| 
 | ||||
| namespace Common { | ||||
| 
 | ||||
| /// x86/x64 CPU capabilities that may be detected by this module
 | ||||
|  | @ -33,3 +36,5 @@ struct CPUCaps { | |||
| const CPUCaps& GetCPUCaps(); | ||||
| 
 | ||||
| } // namespace Common
 | ||||
| 
 | ||||
| #endif // CITRA_ARCH(x86_64)
 | ||||
|  |  | |||
|  | @ -4,6 +4,9 @@ | |||
| 
 | ||||
| #pragma once | ||||
| 
 | ||||
| #include "common/arch.h" | ||||
| #if CITRA_ARCH(x86_64) | ||||
| 
 | ||||
| #include <bitset> | ||||
| #include <initializer_list> | ||||
| #include <xbyak/xbyak.h> | ||||
|  | @ -228,3 +231,5 @@ inline void ABI_PopRegistersAndAdjustStack(Xbyak::CodeGenerator& code, std::bits | |||
| } | ||||
| 
 | ||||
| } // namespace Common::X64
 | ||||
| 
 | ||||
| #endif // CITRA_ARCH(x86_64)
 | ||||
|  |  | |||
|  | @ -4,6 +4,9 @@ | |||
| 
 | ||||
| #pragma once | ||||
| 
 | ||||
| #include "common/arch.h" | ||||
| #if CITRA_ARCH(x86_64) | ||||
| 
 | ||||
| #include <type_traits> | ||||
| #include <xbyak/xbyak.h> | ||||
| #include "common/x64/xbyak_abi.h" | ||||
|  | @ -45,3 +48,5 @@ inline void CallFarFunction(Xbyak::CodeGenerator& code, const T f) { | |||
| } | ||||
| 
 | ||||
| } // namespace Common::X64
 | ||||
| 
 | ||||
| #endif // CITRA_ARCH(x86_64)
 | ||||
|  |  | |||
|  | @ -488,7 +488,7 @@ if (ENABLE_WEB_SERVICE) | |||
|     endif() | ||||
| endif() | ||||
| 
 | ||||
| if (ARCHITECTURE_x86_64 OR ARCHITECTURE_arm64) | ||||
| if ("x86_64" IN_LIST ARCHITECTURE OR "arm64" IN_LIST ARCHITECTURE) | ||||
|     target_sources(core PRIVATE | ||||
|         arm/dynarmic/arm_dynarmic.cpp | ||||
|         arm/dynarmic/arm_dynarmic.h | ||||
|  |  | |||
|  | @ -1,7 +1,8 @@ | |||
| // SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
 | ||||
| // SPDX-License-Identifier: GPL-2.0-or-later
 | ||||
| 
 | ||||
| #if defined(ARCHITECTURE_x86_64) || defined(ARCHITECTURE_arm64) | ||||
| #include "common/arch.h" | ||||
| #if CITRA_ARCH(x86_64) || CITRA_ARCH(arm64) | ||||
| #include "core/arm/dynarmic/arm_exclusive_monitor.h" | ||||
| #endif | ||||
| #include "common/settings.h" | ||||
|  | @ -14,7 +15,7 @@ ExclusiveMonitor::~ExclusiveMonitor() = default; | |||
| 
 | ||||
| std::unique_ptr<Core::ExclusiveMonitor> MakeExclusiveMonitor(Memory::MemorySystem& memory, | ||||
|                                                              std::size_t num_cores) { | ||||
| #if defined(ARCHITECTURE_x86_64) || defined(ARCHITECTURE_arm64) | ||||
| #if CITRA_ARCH(x86_64) || CITRA_ARCH(arm64) | ||||
|     if (Settings::values.use_cpu_jit) { | ||||
|         return std::make_unique<Core::DynarmicExclusiveMonitor>(memory, num_cores); | ||||
|     } | ||||
|  |  | |||
|  | @ -10,11 +10,12 @@ | |||
| #include "audio_core/dsp_interface.h" | ||||
| #include "audio_core/hle/hle.h" | ||||
| #include "audio_core/lle/lle.h" | ||||
| #include "common/arch.h" | ||||
| #include "common/logging/log.h" | ||||
| #include "common/texture.h" | ||||
| #include "core/arm/arm_interface.h" | ||||
| #include "core/arm/exclusive_monitor.h" | ||||
| #if defined(ARCHITECTURE_x86_64) || defined(ARCHITECTURE_arm64) | ||||
| #if CITRA_ARCH(x86_64) || CITRA_ARCH(arm64) | ||||
| #include "core/arm/dynarmic/arm_dynarmic.h" | ||||
| #endif | ||||
| #include "core/arm/dyncom/arm_dyncom.h" | ||||
|  | @ -372,7 +373,7 @@ System::ResultStatus System::Init(Frontend::EmuWindow& emu_window, | |||
| 
 | ||||
|     exclusive_monitor = MakeExclusiveMonitor(*memory, num_cores); | ||||
|     if (Settings::values.use_cpu_jit) { | ||||
| #if defined(ARCHITECTURE_x86_64) || defined(ARCHITECTURE_arm64) | ||||
| #if CITRA_ARCH(x86_64) || CITRA_ARCH(arm64) | ||||
|         for (u32 i = 0; i < num_cores; ++i) { | ||||
|             cpu_cores.push_back(std::make_shared<ARM_Dynarmic>( | ||||
|                 this, *memory, i, timing->GetTimer(i), *exclusive_monitor)); | ||||
|  |  | |||
|  | @ -12,15 +12,9 @@ add_executable(tests | |||
|     precompiled_headers.h | ||||
|     audio_core/audio_fixures.h | ||||
|     audio_core/decoder_tests.cpp | ||||
|     video_core/shader/shader_jit_x64_compiler.cpp | ||||
| ) | ||||
| 
 | ||||
| if (ARCHITECTURE_x86_64) | ||||
|     target_sources(tests | ||||
|         PRIVATE | ||||
|             video_core/shader/shader_jit_x64_compiler.cpp | ||||
|     ) | ||||
| endif() | ||||
| 
 | ||||
| create_target_directory_groups(tests) | ||||
| 
 | ||||
| target_link_libraries(tests PRIVATE common core video_core audio_core) | ||||
|  |  | |||
|  | @ -2,6 +2,9 @@ | |||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
| #include "common/arch.h" | ||||
| #if CITRA_ARCH(x86_64) | ||||
| 
 | ||||
| #include <algorithm> | ||||
| #include <cmath> | ||||
| #include <memory> | ||||
|  | @ -158,3 +161,5 @@ TEST_CASE("Nested Loop", "[video_core][shader][shader_jit]") { | |||
|         REQUIRE(shader_unit_jit.registers.output[0].x.ToFloat32() == Catch::Approx(expected_out)); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| #endif // CITRA_ARCH(x86_64)
 | ||||
|  |  | |||
|  | @ -87,6 +87,10 @@ add_library(video_core STATIC | |||
|     shader/shader.h | ||||
|     shader/shader_interpreter.cpp | ||||
|     shader/shader_interpreter.h | ||||
|     shader/shader_jit_x64.cpp | ||||
|     shader/shader_jit_x64_compiler.cpp | ||||
|     shader/shader_jit_x64.h | ||||
|     shader/shader_jit_x64_compiler.h | ||||
|     swrasterizer/clipper.cpp | ||||
|     swrasterizer/clipper.h | ||||
|     swrasterizer/framebuffer.cpp | ||||
|  | @ -144,24 +148,13 @@ add_dependencies(video_core shaders) | |||
| 
 | ||||
| target_include_directories(video_core PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) | ||||
| 
 | ||||
| if(ARCHITECTURE_x86_64) | ||||
|     target_sources(video_core | ||||
|         PRIVATE | ||||
|             shader/shader_jit_x64.cpp | ||||
|             shader/shader_jit_x64_compiler.cpp | ||||
| 
 | ||||
|             shader/shader_jit_x64.h | ||||
|             shader/shader_jit_x64_compiler.h | ||||
|     ) | ||||
| endif() | ||||
| 
 | ||||
| create_target_directory_groups(video_core) | ||||
| 
 | ||||
| target_link_libraries(video_core PUBLIC common core) | ||||
| target_link_libraries(video_core PRIVATE glad nihstro-headers Boost::serialization) | ||||
| set_target_properties(video_core PROPERTIES INTERPROCEDURAL_OPTIMIZATION ${ENABLE_LTO}) | ||||
| 
 | ||||
| if (ARCHITECTURE_x86_64) | ||||
| if ("x86_64" IN_LIST ARCHITECTURE) | ||||
|     target_link_libraries(video_core PUBLIC xbyak) | ||||
| endif() | ||||
| 
 | ||||
|  |  | |||
|  | @ -4,6 +4,7 @@ | |||
| 
 | ||||
| #include <cmath> | ||||
| #include <cstring> | ||||
| #include "common/arch.h" | ||||
| #include "common/bit_set.h" | ||||
| #include "common/logging/log.h" | ||||
| #include "common/microprofile.h" | ||||
|  | @ -12,9 +13,9 @@ | |||
| #include "video_core/regs_shader.h" | ||||
| #include "video_core/shader/shader.h" | ||||
| #include "video_core/shader/shader_interpreter.h" | ||||
| #ifdef ARCHITECTURE_x86_64 | ||||
| #if CITRA_ARCH(x86_64) | ||||
| #include "video_core/shader/shader_jit_x64.h" | ||||
| #endif // ARCHITECTURE_x86_64
 | ||||
| #endif // CITRA_ARCH(x86_64)
 | ||||
| #include "video_core/video_core.h" | ||||
| 
 | ||||
| namespace Pica::Shader { | ||||
|  | @ -134,13 +135,13 @@ void GSUnitState::ConfigOutput(const ShaderRegs& config) { | |||
| 
 | ||||
| MICROPROFILE_DEFINE(GPU_Shader, "GPU", "Shader", MP_RGB(50, 50, 240)); | ||||
| 
 | ||||
| #ifdef ARCHITECTURE_x86_64 | ||||
| #if CITRA_ARCH(x86_64) | ||||
| static std::unique_ptr<JitX64Engine> jit_engine; | ||||
| #endif // ARCHITECTURE_x86_64
 | ||||
| #endif // CITRA_ARCH(x86_64)
 | ||||
| static InterpreterEngine interpreter_engine; | ||||
| 
 | ||||
| ShaderEngine* GetEngine() { | ||||
| #ifdef ARCHITECTURE_x86_64 | ||||
| #if CITRA_ARCH(x86_64) | ||||
|     // TODO(yuriks): Re-initialize on each change rather than being persistent
 | ||||
|     if (VideoCore::g_shader_jit_enabled) { | ||||
|         if (jit_engine == nullptr) { | ||||
|  | @ -148,15 +149,15 @@ ShaderEngine* GetEngine() { | |||
|         } | ||||
|         return jit_engine.get(); | ||||
|     } | ||||
| #endif // ARCHITECTURE_x86_64
 | ||||
| #endif // CITRA_ARCH(x86_64)
 | ||||
| 
 | ||||
|     return &interpreter_engine; | ||||
| } | ||||
| 
 | ||||
| void Shutdown() { | ||||
| #ifdef ARCHITECTURE_x86_64 | ||||
| #if CITRA_ARCH(x86_64) | ||||
|     jit_engine = nullptr; | ||||
| #endif // ARCHITECTURE_x86_64
 | ||||
| #endif // CITRA_ARCH(x86_64)
 | ||||
| } | ||||
| 
 | ||||
| } // namespace Pica::Shader
 | ||||
|  |  | |||
|  | @ -2,6 +2,9 @@ | |||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
| #include "common/arch.h" | ||||
| #if CITRA_ARCH(x86_64) | ||||
| 
 | ||||
| #include "common/microprofile.h" | ||||
| #include "video_core/shader/shader.h" | ||||
| #include "video_core/shader/shader_jit_x64.h" | ||||
|  | @ -43,3 +46,5 @@ void JitX64Engine::Run(const ShaderSetup& setup, UnitState& state) const { | |||
| } | ||||
| 
 | ||||
| } // namespace Pica::Shader
 | ||||
| 
 | ||||
| #endif // CITRA_ARCH(x86_64)
 | ||||
|  |  | |||
|  | @ -4,6 +4,9 @@ | |||
| 
 | ||||
| #pragma once | ||||
| 
 | ||||
| #include "common/arch.h" | ||||
| #if CITRA_ARCH(x86_64) | ||||
| 
 | ||||
| #include <memory> | ||||
| #include <unordered_map> | ||||
| #include "common/common_types.h" | ||||
|  | @ -26,3 +29,5 @@ private: | |||
| }; | ||||
| 
 | ||||
| } // namespace Pica::Shader
 | ||||
| 
 | ||||
| #endif // CITRA_ARCH(x86_64)
 | ||||
|  |  | |||
|  | @ -2,6 +2,9 @@ | |||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
| #include "common/arch.h" | ||||
| #if CITRA_ARCH(x86_64) | ||||
| 
 | ||||
| #include <algorithm> | ||||
| #include <cmath> | ||||
| #include <cstdint> | ||||
|  | @ -1131,3 +1134,5 @@ Xbyak::Label JitShader::CompilePrelude_Exp2() { | |||
| } | ||||
| 
 | ||||
| } // namespace Pica::Shader
 | ||||
| 
 | ||||
| #endif // CITRA_ARCH(x86_64)
 | ||||
|  |  | |||
|  | @ -4,6 +4,9 @@ | |||
| 
 | ||||
| #pragma once | ||||
| 
 | ||||
| #include "common/arch.h" | ||||
| #if CITRA_ARCH(x86_64) | ||||
| 
 | ||||
| #include <array> | ||||
| #include <bitset> | ||||
| #include <cstddef> | ||||
|  | @ -138,3 +141,5 @@ private: | |||
| }; | ||||
| 
 | ||||
| } // namespace Pica::Shader
 | ||||
| 
 | ||||
| #endif | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue