Merge branch 'master' into arm64

This commit is contained in:
kd-11 2025-02-02 21:50:40 +03:00 committed by GitHub
commit a409f59aa7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 57 additions and 16 deletions

2
3rdparty/FAudio vendored

@ -1 +1 @@
Subproject commit 707114aef2907793644d4067a6e7b09b51502ca9
Subproject commit af74e661c1bd8b105840d14485cc01d9c782b513

View file

@ -49,11 +49,11 @@
<PropertyGroup Label="UserMacros">
<CmakeReleaseCLI>call vsdevcmd.bat -arch=amd64
cd "$(SolutionDir)build\tmp\$(ProjectName)-$(Configuration)-$(Platform)"
cmake -G Ninja -DCMAKE_CXX_COMPILER="cl.exe" -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_BUILD_TYPE="Release" -DCMAKE_INSTALL_PREFIX="./Release" -DCMAKE_SYSTEM_VERSION=6.1 -DLIBTYPE=STATIC -DFORCE_STATIC_VCRT=true -DALSOFT_UTILS=false -DALSOFT_EXAMPLES=false -DALSOFT_INSTALL=false -DALSOFT_INSTALL_CONFIG=false -DALSOFT_INSTALL_HRTF_DATA=false -DALSOFT_INSTALL_AMBDEC_PRESETS=false -DALSOFT_INSTALL_EXAMPLES=false -DALSOFT_INSTALL_UTILS=false "$(SolutionDir)3rdparty\OpenAL\openal-soft"
cmake -G Ninja -DCMAKE_CXX_COMPILER="cl.exe" -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_BUILD_TYPE="Release" -DCMAKE_INSTALL_PREFIX="./Release" -DCMAKE_SYSTEM_VERSION=10.0 -DLIBTYPE=STATIC -DFORCE_STATIC_VCRT=true -DALSOFT_UTILS=false -DALSOFT_EXAMPLES=false -DALSOFT_INSTALL=false -DALSOFT_INSTALL_CONFIG=false -DALSOFT_INSTALL_HRTF_DATA=false -DALSOFT_INSTALL_AMBDEC_PRESETS=false -DALSOFT_INSTALL_EXAMPLES=false -DALSOFT_INSTALL_UTILS=false "$(SolutionDir)3rdparty\OpenAL\openal-soft"
</CmakeReleaseCLI>
<CmakeDebugCLI>call vsdevcmd.bat -arch=amd64
cd "$(SolutionDir)build\tmp\$(ProjectName)-$(Configuration)-$(Platform)"
cmake -G Ninja -DCMAKE_CXX_COMPILER="cl.exe" -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_BUILD_TYPE="Debug" -DCMAKE_INSTALL_PREFIX="./Debug" -DCMAKE_SYSTEM_VERSION=6.1 -DLIBTYPE=STATIC -DALSOFT_UTILS=false -DALSOFT_EXAMPLES=false -DALSOFT_INSTALL=false -DALSOFT_INSTALL_CONFIG=false -DALSOFT_INSTALL_HRTF_DATA=false -DALSOFT_INSTALL_AMBDEC_PRESETS=false -DALSOFT_INSTALL_EXAMPLES=false -DALSOFT_INSTALL_UTILS=false "$(SolutionDir)3rdparty\OpenAL\openal-soft"
cmake -G Ninja -DCMAKE_CXX_COMPILER="cl.exe" -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_BUILD_TYPE="Debug" -DCMAKE_INSTALL_PREFIX="./Debug" -DCMAKE_SYSTEM_VERSION=10.0 -DLIBTYPE=STATIC -DALSOFT_UTILS=false -DALSOFT_EXAMPLES=false -DALSOFT_INSTALL=false -DALSOFT_INSTALL_CONFIG=false -DALSOFT_INSTALL_HRTF_DATA=false -DALSOFT_INSTALL_AMBDEC_PRESETS=false -DALSOFT_INSTALL_EXAMPLES=false -DALSOFT_INSTALL_UTILS=false "$(SolutionDir)3rdparty\OpenAL\openal-soft"
</CmakeDebugCLI>
<CmakeCopyCLI>
echo Copying..

@ -1 +1 @@
Subproject commit fecf2f0af3bd23cbba553ceedc2bc6c1cd410fc1
Subproject commit 066d4a63b2c714b20b0a8073a01fda7c5c6763f6

@ -1 +1 @@
Subproject commit 51f5bd68b9b806d2c92b4318164d28b49357da31
Subproject commit 0024abd279d3a06435c0309a3f4172eed7c7a19a

@ -1 +1 @@
Subproject commit fa24d868ac2f8fd558e4e914c9863411245db8fd
Subproject commit 8236e01a9f758d15927624925c6043f84d8a261f

View file

@ -636,7 +636,7 @@ jit_compiler::jit_compiler(const std::unordered_map<std::string, u64>& _link, co
: m_context(new llvm::LLVMContext)
, m_cpu(cpu(_cpu))
{
static const bool s_install_llvm_error_handler = []()
[[maybe_unused]] static const bool s_install_llvm_error_handler = []()
{
llvm::remove_fatal_error_handler();
llvm::install_fatal_error_handler([](void*, const char* msg, bool)

View file

@ -598,7 +598,10 @@ int aes_setkey_dec( aes_context *ctx, const unsigned char *key, unsigned int key
*RK++ = *SK++;
*RK++ = *SK++;
#if defined(__SSE2__) || defined(_M_X64)
done:
#endif
// Wipe the stack buffer clean
std::fill_n(reinterpret_cast<volatile char*>(&cty), sizeof(cty), 0);

View file

@ -807,7 +807,7 @@ bool ppu_module<lv2_obj>::analyse(u32 lib_toc, u32 entry, const u32 sec_end, con
ppu_log.trace("OPD: [0x%x] 0x%x (TOC=0x%x)", _ptr, addr, toc);
TOCs.emplace(toc);
auto& func = add_func(addr, addr_heap.count(_ptr.addr()) ? toc : 0, 0);
add_func(addr, addr_heap.count(_ptr.addr()) ? toc : 0, 0);
known_functions.emplace(addr);
}
}

View file

@ -4932,7 +4932,7 @@ bool ppu_initialize(const ppu_module<lv2_obj>& info, bool check_only, u64 file_s
usz code_size_until_jump = umax;
auto func = build_function_asm<u8*(*)(ppu_thread&, u64, u8*, u64, u64, u64)>(name, [&](native_asm& c, auto& args)
auto func = build_function_asm<u8*(*)(ppu_thread&, u64, u8*, u64, u64, u64)>(name, [&](native_asm& c, auto& /*args*/)
{
#if defined(ARCH_X64)
c.mov(x86::edx, func_addr - seg0); // Load PC

View file

@ -358,8 +358,6 @@ Function* PPUTranslator::GetSymbolResolver(const ppu_module<lv2_obj>& info)
// Create an array of function pointers
std::vector<llvm::Constant*> functions;
const auto [min_addr, max_addr] = *ensure(info.jit_bounds);
for (const auto& f : info.get_funcs(false, true))
{
if (!f.size)

View file

@ -23,6 +23,7 @@
#endif
#include <thread>
#include <fstream>
#include "util/asm.hpp"
#include "util/fence.hpp"
@ -776,11 +777,6 @@ static const bool s_tsc_freq_evaluated = []() -> bool
return 0;
}
if (utils::get_cpu_brand().find("Ryzen") != umax)
{
return 0;
}
#ifdef _WIN32
LARGE_INTEGER freq;
if (!QueryPerformanceFrequency(&freq))
@ -795,6 +791,50 @@ static const bool s_tsc_freq_evaluated = []() -> bool
const ullong timer_freq = freq.QuadPart;
#else
#ifdef __linux__
// Check if system clocksource is TSC. If the kernel trusts the TSC, we should too.
// Some Ryzen laptops have broken firmware when running linux (requires a kernel patch). This is also a problem on some older intel CPUs.
const char* clocksource_file = "/sys/devices/system/clocksource/clocksource0/available_clocksource";
if (!fs::is_file(clocksource_file))
{
// OS doesn't support sysfs?
printf("[TSC calibration] Could not determine available clock sources. Disabling TSC.\n");
return 0;
}
std::string clock_sources;
std::ifstream file(clocksource_file);
std::getline(file, clock_sources);
if (file.fail())
{
printf("[TSC calibration] Could not read the available clock sources on this system. Disabling TSC.\n");
return 0;
}
printf("[TSC calibration] Available clock sources: '%s'\n", clock_sources.c_str());
// Check if the Kernel has blacklisted the TSC
const auto available_clocks = fmt::split(clock_sources, { " " });
const bool tsc_reliable = std::find(available_clocks.begin(), available_clocks.end(), "tsc") != available_clocks.end();
if (!tsc_reliable)
{
printf("[TSC calibration] TSC is not a supported clock source on this system.\n");
return 0;
}
printf("[TSC calibration] Kernel reports the TSC is reliable.\n");
#else
if (utils::get_cpu_brand().find("Ryzen") != umax)
{
// MacOS is arm-native these days and I don't know much about BSD to fix this if it's an issue. (kd-11)
// Having this check only for Ryzen is broken behavior - other CPUs can also have this problem.
return 0;
}
#endif
constexpr ullong timer_freq = 1'000'000'000;
#endif