diff --git a/README.md b/README.md index a09b2ea01..6355d28b0 100755 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ yuzu emulator early access ============= -This is the source code for early-access 3033. +This is the source code for early-access 3035. ## Legal Notice diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt index a02696873..46cf75fde 100755 --- a/src/common/CMakeLists.txt +++ b/src/common/CMakeLists.txt @@ -169,7 +169,11 @@ endif() create_target_directory_groups(common) target_link_libraries(common PUBLIC ${Boost_LIBRARIES} fmt::fmt microprofile Threads::Threads) -target_link_libraries(common PRIVATE lz4::lz4) +if (TARGET lz4::lz4) + target_link_libraries(common PRIVATE lz4::lz4) +else() + target_link_libraries(common PRIVATE LZ4::lz4_shared) +endif() if (TARGET zstd::zstd) target_link_libraries(common PRIVATE zstd::zstd) else() diff --git a/src/common/fixed_point.h b/src/common/fixed_point.h index 4a0f72cc9..6eb6afe2f 100755 --- a/src/common/fixed_point.h +++ b/src/common/fixed_point.h @@ -4,14 +4,7 @@ // From: https://github.com/eteran/cpp-utilities/blob/master/fixed/include/cpp-utilities/fixed.h // See also: http://stackoverflow.com/questions/79677/whats-the-best-way-to-do-fixed-point-math -#ifndef FIXED_H_ -#define FIXED_H_ - -#if __cplusplus >= 201402L -#define CONSTEXPR14 constexpr -#else -#define CONSTEXPR14 -#endif +#pragma once #include // for size_t #include @@ -106,7 +99,7 @@ constexpr B next_to_base(N rhs) { struct divide_by_zero : std::exception {}; template -CONSTEXPR14 FixedPoint divide( +constexpr FixedPoint divide( FixedPoint numerator, FixedPoint denominator, FixedPoint& remainder, typename std::enable_if::next_size::is_specialized>::type* = nullptr) { @@ -126,7 +119,7 @@ CONSTEXPR14 FixedPoint divide( } template -CONSTEXPR14 FixedPoint divide( +constexpr FixedPoint divide( FixedPoint numerator, FixedPoint denominator, FixedPoint& remainder, typename std::enable_if::next_size::is_specialized>::type* = nullptr) { @@ -196,7 +189,7 @@ CONSTEXPR14 FixedPoint divide( // this is the usual implementation of multiplication template -CONSTEXPR14 FixedPoint multiply( +constexpr FixedPoint multiply( FixedPoint lhs, FixedPoint rhs, typename std::enable_if::next_size::is_specialized>::type* = nullptr) { @@ -215,7 +208,7 @@ CONSTEXPR14 FixedPoint multiply( // it is slightly slower, but is more robust since it doesn't // require and upgraded type template -CONSTEXPR14 FixedPoint multiply( +constexpr FixedPoint multiply( FixedPoint lhs, FixedPoint rhs, typename std::enable_if::next_size::is_specialized>::type* = nullptr) { @@ -284,7 +277,7 @@ public: // constructors public: // conversion template - CONSTEXPR14 explicit FixedPoint(FixedPoint other) { + constexpr explicit FixedPoint(FixedPoint other) { static_assert(I2 <= I && F2 <= F, "Scaling conversion can only upgrade types"); using T = FixedPoint; @@ -353,81 +346,81 @@ public: // unary operators return FixedPoint::from_base(+data_); } - CONSTEXPR14 FixedPoint& operator++() { + constexpr FixedPoint& operator++() { data_ += one; return *this; } - CONSTEXPR14 FixedPoint& operator--() { + constexpr FixedPoint& operator--() { data_ -= one; return *this; } - CONSTEXPR14 FixedPoint operator++(int) { + constexpr FixedPoint operator++(int) { FixedPoint tmp(*this); data_ += one; return tmp; } - CONSTEXPR14 FixedPoint operator--(int) { + constexpr FixedPoint operator--(int) { FixedPoint tmp(*this); data_ -= one; return tmp; } public: // basic math operators - CONSTEXPR14 FixedPoint& operator+=(FixedPoint n) { + constexpr FixedPoint& operator+=(FixedPoint n) { data_ += n.data_; return *this; } - CONSTEXPR14 FixedPoint& operator-=(FixedPoint n) { + constexpr FixedPoint& operator-=(FixedPoint n) { data_ -= n.data_; return *this; } - CONSTEXPR14 FixedPoint& operator*=(FixedPoint n) { + constexpr FixedPoint& operator*=(FixedPoint n) { return assign(detail::multiply(*this, n)); } - CONSTEXPR14 FixedPoint& operator/=(FixedPoint n) { + constexpr FixedPoint& operator/=(FixedPoint n) { FixedPoint temp; return assign(detail::divide(*this, n, temp)); } private: - CONSTEXPR14 FixedPoint& assign(FixedPoint rhs) { + constexpr FixedPoint& assign(FixedPoint rhs) { data_ = rhs.data_; return *this; } public: // binary math operators, effects underlying bit pattern since these // don't really typically make sense for non-integer values - CONSTEXPR14 FixedPoint& operator&=(FixedPoint n) { + constexpr FixedPoint& operator&=(FixedPoint n) { data_ &= n.data_; return *this; } - CONSTEXPR14 FixedPoint& operator|=(FixedPoint n) { + constexpr FixedPoint& operator|=(FixedPoint n) { data_ |= n.data_; return *this; } - CONSTEXPR14 FixedPoint& operator^=(FixedPoint n) { + constexpr FixedPoint& operator^=(FixedPoint n) { data_ ^= n.data_; return *this; } template ::value>::type> - CONSTEXPR14 FixedPoint& operator>>=(Integer n) { + constexpr FixedPoint& operator>>=(Integer n) { data_ >>= n; return *this; } template ::value>::type> - CONSTEXPR14 FixedPoint& operator<<=(Integer n) { + constexpr FixedPoint& operator<<=(Integer n) { data_ <<= n; return *this; } @@ -485,7 +478,7 @@ public: // conversion to basic types } public: - CONSTEXPR14 void swap(FixedPoint& rhs) { + constexpr void swap(FixedPoint& rhs) { using std::swap; swap(data_, rhs.data_); } @@ -497,8 +490,8 @@ public: // if we have the same fractional portion, but differing integer portions, we trivially upgrade the // smaller type template -CONSTEXPR14 typename std::conditional= I2, FixedPoint, FixedPoint>::type -operator+(FixedPoint lhs, FixedPoint rhs) { +constexpr typename std::conditional= I2, FixedPoint, FixedPoint>::type operator+( + FixedPoint lhs, FixedPoint rhs) { using T = typename std::conditional= I2, FixedPoint, FixedPoint>::type; @@ -508,8 +501,8 @@ operator+(FixedPoint lhs, FixedPoint rhs) { } template -CONSTEXPR14 typename std::conditional= I2, FixedPoint, FixedPoint>::type -operator-(FixedPoint lhs, FixedPoint rhs) { +constexpr typename std::conditional= I2, FixedPoint, FixedPoint>::type operator-( + FixedPoint lhs, FixedPoint rhs) { using T = typename std::conditional= I2, FixedPoint, FixedPoint>::type; @@ -519,8 +512,8 @@ operator-(FixedPoint lhs, FixedPoint rhs) { } template -CONSTEXPR14 typename std::conditional= I2, FixedPoint, FixedPoint>::type -operator*(FixedPoint lhs, FixedPoint rhs) { +constexpr typename std::conditional= I2, FixedPoint, FixedPoint>::type operator*( + FixedPoint lhs, FixedPoint rhs) { using T = typename std::conditional= I2, FixedPoint, FixedPoint>::type; @@ -530,8 +523,8 @@ operator*(FixedPoint lhs, FixedPoint rhs) { } template -CONSTEXPR14 typename std::conditional= I2, FixedPoint, FixedPoint>::type -operator/(FixedPoint lhs, FixedPoint rhs) { +constexpr typename std::conditional= I2, FixedPoint, FixedPoint>::type operator/( + FixedPoint lhs, FixedPoint rhs) { using T = typename std::conditional= I2, FixedPoint, FixedPoint>::type; @@ -548,75 +541,75 @@ std::ostream& operator<<(std::ostream& os, FixedPoint f) { // basic math operators template -CONSTEXPR14 FixedPoint operator+(FixedPoint lhs, FixedPoint rhs) { +constexpr FixedPoint operator+(FixedPoint lhs, FixedPoint rhs) { lhs += rhs; return lhs; } template -CONSTEXPR14 FixedPoint operator-(FixedPoint lhs, FixedPoint rhs) { +constexpr FixedPoint operator-(FixedPoint lhs, FixedPoint rhs) { lhs -= rhs; return lhs; } template -CONSTEXPR14 FixedPoint operator*(FixedPoint lhs, FixedPoint rhs) { +constexpr FixedPoint operator*(FixedPoint lhs, FixedPoint rhs) { lhs *= rhs; return lhs; } template -CONSTEXPR14 FixedPoint operator/(FixedPoint lhs, FixedPoint rhs) { +constexpr FixedPoint operator/(FixedPoint lhs, FixedPoint rhs) { lhs /= rhs; return lhs; } template ::value>::type> -CONSTEXPR14 FixedPoint operator+(FixedPoint lhs, Number rhs) { +constexpr FixedPoint operator+(FixedPoint lhs, Number rhs) { lhs += FixedPoint(rhs); return lhs; } template ::value>::type> -CONSTEXPR14 FixedPoint operator-(FixedPoint lhs, Number rhs) { +constexpr FixedPoint operator-(FixedPoint lhs, Number rhs) { lhs -= FixedPoint(rhs); return lhs; } template ::value>::type> -CONSTEXPR14 FixedPoint operator*(FixedPoint lhs, Number rhs) { +constexpr FixedPoint operator*(FixedPoint lhs, Number rhs) { lhs *= FixedPoint(rhs); return lhs; } template ::value>::type> -CONSTEXPR14 FixedPoint operator/(FixedPoint lhs, Number rhs) { +constexpr FixedPoint operator/(FixedPoint lhs, Number rhs) { lhs /= FixedPoint(rhs); return lhs; } template ::value>::type> -CONSTEXPR14 FixedPoint operator+(Number lhs, FixedPoint rhs) { +constexpr FixedPoint operator+(Number lhs, FixedPoint rhs) { FixedPoint tmp(lhs); tmp += rhs; return tmp; } template ::value>::type> -CONSTEXPR14 FixedPoint operator-(Number lhs, FixedPoint rhs) { +constexpr FixedPoint operator-(Number lhs, FixedPoint rhs) { FixedPoint tmp(lhs); tmp -= rhs; return tmp; } template ::value>::type> -CONSTEXPR14 FixedPoint operator*(Number lhs, FixedPoint rhs) { +constexpr FixedPoint operator*(Number lhs, FixedPoint rhs) { FixedPoint tmp(lhs); tmp *= rhs; return tmp; } template ::value>::type> -CONSTEXPR14 FixedPoint operator/(Number lhs, FixedPoint rhs) { +constexpr FixedPoint operator/(Number lhs, FixedPoint rhs) { FixedPoint tmp(lhs); tmp /= rhs; return tmp; @@ -625,13 +618,13 @@ CONSTEXPR14 FixedPoint operator/(Number lhs, FixedPoint rhs) { // shift operators template ::value>::type> -CONSTEXPR14 FixedPoint operator<<(FixedPoint lhs, Integer rhs) { +constexpr FixedPoint operator<<(FixedPoint lhs, Integer rhs) { lhs <<= rhs; return lhs; } template ::value>::type> -CONSTEXPR14 FixedPoint operator>>(FixedPoint lhs, Integer rhs) { +constexpr FixedPoint operator>>(FixedPoint lhs, Integer rhs) { lhs >>= rhs; return lhs; } @@ -700,7 +693,3 @@ constexpr bool operator!=(Number lhs, FixedPoint rhs) { } } // namespace Common - -#undef CONSTEXPR14 - -#endif diff --git a/src/core/hle/kernel/k_slab_heap.h b/src/core/hle/kernel/k_slab_heap.h index b9479c495..a8c77a7d4 100755 --- a/src/core/hle/kernel/k_slab_heap.h +++ b/src/core/hle/kernel/k_slab_heap.h @@ -37,6 +37,8 @@ public: } void* Allocate() { + // KScopedInterruptDisable di; + m_lock.lock(); Node* ret = m_head; @@ -49,6 +51,8 @@ public: } void Free(void* obj) { + // KScopedInterruptDisable di; + m_lock.lock(); Node* node = static_cast(obj); diff --git a/src/core/hle/service/vi/vi_results.h b/src/core/hle/service/vi/vi_results.h index a46c247d2..22bac799f 100755 --- a/src/core/hle/service/vi/vi_results.h +++ b/src/core/hle/service/vi/vi_results.h @@ -1,6 +1,8 @@ // SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + #include "core/hle/result.h" namespace Service::VI {