diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/common/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | src/common/assert.cpp | 11 | ||||
| -rw-r--r-- | src/common/assert.h | 14 | ||||
| -rw-r--r-- | src/core/hle/kernel/process_capability.cpp | 5 | ||||
| -rw-r--r-- | src/core/hle/kernel/process_capability.h | 2 | ||||
| -rw-r--r-- | src/core/hle/service/acc/acc.cpp | 17 | ||||
| -rw-r--r-- | src/core/hle/service/acc/acc_su.cpp | 36 | ||||
| -rw-r--r-- | src/core/hle/service/acc/acc_u1.cpp | 28 | ||||
| -rw-r--r-- | src/core/hle/service/audio/hwopus.cpp | 4 | ||||
| -rw-r--r-- | src/video_core/command_classes/codecs/vp9.cpp | 16 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_graphics.cpp | 2 |
11 files changed, 80 insertions, 56 deletions
diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt index 788516ded..66931ac97 100644 --- a/src/common/CMakeLists.txt +++ b/src/common/CMakeLists.txt | |||
| @@ -97,6 +97,7 @@ add_custom_command(OUTPUT scm_rev.cpp | |||
| 97 | add_library(common STATIC | 97 | add_library(common STATIC |
| 98 | algorithm.h | 98 | algorithm.h |
| 99 | alignment.h | 99 | alignment.h |
| 100 | assert.cpp | ||
| 100 | assert.h | 101 | assert.h |
| 101 | atomic_ops.h | 102 | atomic_ops.h |
| 102 | detached_tasks.cpp | 103 | detached_tasks.cpp |
diff --git a/src/common/assert.cpp b/src/common/assert.cpp new file mode 100644 index 000000000..d7d91b96b --- /dev/null +++ b/src/common/assert.cpp | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | // Copyright 2021 yuzu Emulator Project | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #include "common/assert.h" | ||
| 6 | |||
| 7 | #include "common/common_funcs.h" | ||
| 8 | |||
| 9 | void assert_handle_failure() { | ||
| 10 | Crash(); | ||
| 11 | } | ||
diff --git a/src/common/assert.h b/src/common/assert.h index 06d7b5612..b3ba35c0f 100644 --- a/src/common/assert.h +++ b/src/common/assert.h | |||
| @@ -4,10 +4,13 @@ | |||
| 4 | 4 | ||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | #include <cstdlib> | ||
| 8 | #include "common/common_funcs.h" | ||
| 9 | #include "common/logging/log.h" | 7 | #include "common/logging/log.h" |
| 10 | 8 | ||
| 9 | // Sometimes we want to try to continue even after hitting an assert. | ||
| 10 | // However touching this file yields a global recompilation as this header is included almost | ||
| 11 | // everywhere. So let's just move the handling of the failed assert to a single cpp file. | ||
| 12 | void assert_handle_failure(); | ||
| 13 | |||
| 11 | // For asserts we'd like to keep all the junk executed when an assert happens away from the | 14 | // For asserts we'd like to keep all the junk executed when an assert happens away from the |
| 12 | // important code in the function. One way of doing this is to put all the relevant code inside a | 15 | // important code in the function. One way of doing this is to put all the relevant code inside a |
| 13 | // lambda and force the compiler to not inline it. Unfortunately, MSVC seems to have no syntax to | 16 | // lambda and force the compiler to not inline it. Unfortunately, MSVC seems to have no syntax to |
| @@ -17,15 +20,14 @@ | |||
| 17 | // enough for our purposes. | 20 | // enough for our purposes. |
| 18 | template <typename Fn> | 21 | template <typename Fn> |
| 19 | #if defined(_MSC_VER) | 22 | #if defined(_MSC_VER) |
| 20 | [[msvc::noinline, noreturn]] | 23 | [[msvc::noinline]] |
| 21 | #elif defined(__GNUC__) | 24 | #elif defined(__GNUC__) |
| 22 | [[gnu::cold, gnu::noinline, noreturn]] | 25 | [[gnu::cold, gnu::noinline]] |
| 23 | #endif | 26 | #endif |
| 24 | static void | 27 | static void |
| 25 | assert_noinline_call(const Fn& fn) { | 28 | assert_noinline_call(const Fn& fn) { |
| 26 | fn(); | 29 | fn(); |
| 27 | Crash(); | 30 | assert_handle_failure(); |
| 28 | exit(1); // Keeps GCC's mouth shut about this actually returning | ||
| 29 | } | 31 | } |
| 30 | 32 | ||
| 31 | #define ASSERT(_a_) \ | 33 | #define ASSERT(_a_) \ |
diff --git a/src/core/hle/kernel/process_capability.cpp b/src/core/hle/kernel/process_capability.cpp index 3fc326eab..1006ee50c 100644 --- a/src/core/hle/kernel/process_capability.cpp +++ b/src/core/hle/kernel/process_capability.cpp | |||
| @@ -281,11 +281,6 @@ ResultCode ProcessCapabilities::HandleSyscallFlags(u32& set_svc_bits, u32 flags) | |||
| 281 | continue; | 281 | continue; |
| 282 | } | 282 | } |
| 283 | 283 | ||
| 284 | if (svc_number >= svc_capabilities.size()) { | ||
| 285 | LOG_ERROR(Kernel, "Process svc capability is out of range! svc_number={}", svc_number); | ||
| 286 | return ResultOutOfRange; | ||
| 287 | } | ||
| 288 | |||
| 289 | svc_capabilities[svc_number] = true; | 284 | svc_capabilities[svc_number] = true; |
| 290 | } | 285 | } |
| 291 | 286 | ||
diff --git a/src/core/hle/kernel/process_capability.h b/src/core/hle/kernel/process_capability.h index 73ad197fa..b7a9b2e45 100644 --- a/src/core/hle/kernel/process_capability.h +++ b/src/core/hle/kernel/process_capability.h | |||
| @@ -68,7 +68,7 @@ enum class ProgramType { | |||
| 68 | class ProcessCapabilities { | 68 | class ProcessCapabilities { |
| 69 | public: | 69 | public: |
| 70 | using InterruptCapabilities = std::bitset<1024>; | 70 | using InterruptCapabilities = std::bitset<1024>; |
| 71 | using SyscallCapabilities = std::bitset<128>; | 71 | using SyscallCapabilities = std::bitset<192>; |
| 72 | 72 | ||
| 73 | ProcessCapabilities() = default; | 73 | ProcessCapabilities() = default; |
| 74 | ProcessCapabilities(const ProcessCapabilities&) = delete; | 74 | ProcessCapabilities(const ProcessCapabilities&) = delete; |
diff --git a/src/core/hle/service/acc/acc.cpp b/src/core/hle/service/acc/acc.cpp index 615e20a54..52535ecc0 100644 --- a/src/core/hle/service/acc/acc.cpp +++ b/src/core/hle/service/acc/acc.cpp | |||
| @@ -610,12 +610,17 @@ public: | |||
| 610 | explicit DAUTH_O(Core::System& system_, Common::UUID) : ServiceFramework{system_, "dauth:o"} { | 610 | explicit DAUTH_O(Core::System& system_, Common::UUID) : ServiceFramework{system_, "dauth:o"} { |
| 611 | // clang-format off | 611 | // clang-format off |
| 612 | static const FunctionInfo functions[] = { | 612 | static const FunctionInfo functions[] = { |
| 613 | {0, nullptr, "EnsureAuthenticationTokenCacheAsync"}, // [5.0.0-5.1.0] GeneratePostData | 613 | {0, nullptr, "EnsureAuthenticationTokenCacheAsync"}, |
| 614 | {1, nullptr, "LoadAuthenticationTokenCache"}, // 6.0.0+ | 614 | {1, nullptr, "LoadAuthenticationTokenCache"}, |
| 615 | {2, nullptr, "InvalidateAuthenticationTokenCache"}, // 6.0.0+ | 615 | {2, nullptr, "InvalidateAuthenticationTokenCache"}, |
| 616 | {10, nullptr, "EnsureEdgeTokenCacheAsync"}, // 6.0.0+ | 616 | {10, nullptr, "EnsureEdgeTokenCacheAsync"}, |
| 617 | {11, nullptr, "LoadEdgeTokenCache"}, // 6.0.0+ | 617 | {11, nullptr, "LoadEdgeTokenCache"}, |
| 618 | {12, nullptr, "InvalidateEdgeTokenCache"}, // 6.0.0+ | 618 | {12, nullptr, "InvalidateEdgeTokenCache"}, |
| 619 | {20, nullptr, "EnsureApplicationAuthenticationCacheAsync"}, | ||
| 620 | {21, nullptr, "LoadApplicationAuthenticationTokenCache"}, | ||
| 621 | {22, nullptr, "LoadApplicationNetworkServiceClientConfigCache"}, | ||
| 622 | {23, nullptr, "IsApplicationAuthenticationCacheAvailable"}, | ||
| 623 | {24, nullptr, "InvalidateApplicationAuthenticationCache"}, | ||
| 619 | }; | 624 | }; |
| 620 | // clang-format on | 625 | // clang-format on |
| 621 | 626 | ||
diff --git a/src/core/hle/service/acc/acc_su.cpp b/src/core/hle/service/acc/acc_su.cpp index 49b22583e..bb6118abf 100644 --- a/src/core/hle/service/acc/acc_su.cpp +++ b/src/core/hle/service/acc/acc_su.cpp | |||
| @@ -17,28 +17,30 @@ ACC_SU::ACC_SU(std::shared_ptr<Module> module, std::shared_ptr<ProfileManager> p | |||
| 17 | {3, &ACC_SU::ListOpenUsers, "ListOpenUsers"}, | 17 | {3, &ACC_SU::ListOpenUsers, "ListOpenUsers"}, |
| 18 | {4, &ACC_SU::GetLastOpenedUser, "GetLastOpenedUser"}, | 18 | {4, &ACC_SU::GetLastOpenedUser, "GetLastOpenedUser"}, |
| 19 | {5, &ACC_SU::GetProfile, "GetProfile"}, | 19 | {5, &ACC_SU::GetProfile, "GetProfile"}, |
| 20 | {6, nullptr, "GetProfileDigest"}, // 3.0.0+ | 20 | {6, nullptr, "GetProfileDigest"}, |
| 21 | {50, &ACC_SU::IsUserRegistrationRequestPermitted, "IsUserRegistrationRequestPermitted"}, | 21 | {50, &ACC_SU::IsUserRegistrationRequestPermitted, "IsUserRegistrationRequestPermitted"}, |
| 22 | {51, &ACC_SU::TrySelectUserWithoutInteraction, "TrySelectUserWithoutInteraction"}, | 22 | {51, &ACC_SU::TrySelectUserWithoutInteraction, "TrySelectUserWithoutInteraction"}, |
| 23 | {60, &ACC_SU::ListOpenContextStoredUsers, "ListOpenContextStoredUsers"}, // 5.0.0 - 5.1.0 | 23 | {60, &ACC_SU::ListOpenContextStoredUsers, "ListOpenContextStoredUsers"}, |
| 24 | {99, nullptr, "DebugActivateOpenContextRetention"}, // 6.0.0+ | 24 | {99, nullptr, "DebugActivateOpenContextRetention"}, |
| 25 | {100, nullptr, "GetUserRegistrationNotifier"}, | 25 | {100, nullptr, "GetUserRegistrationNotifier"}, |
| 26 | {101, nullptr, "GetUserStateChangeNotifier"}, | 26 | {101, nullptr, "GetUserStateChangeNotifier"}, |
| 27 | {102, nullptr, "GetBaasAccountManagerForSystemService"}, | 27 | {102, nullptr, "GetBaasAccountManagerForSystemService"}, |
| 28 | {103, nullptr, "GetBaasUserAvailabilityChangeNotifier"}, | 28 | {103, nullptr, "GetBaasUserAvailabilityChangeNotifier"}, |
| 29 | {104, nullptr, "GetProfileUpdateNotifier"}, | 29 | {104, nullptr, "GetProfileUpdateNotifier"}, |
| 30 | {105, nullptr, "CheckNetworkServiceAvailabilityAsync"}, // 4.0.0+ | 30 | {105, nullptr, "CheckNetworkServiceAvailabilityAsync"}, |
| 31 | {106, nullptr, "GetProfileSyncNotifier"}, // 9.0.0+ | 31 | {106, nullptr, "GetProfileSyncNotifier"}, |
| 32 | {110, &ACC_SU::StoreSaveDataThumbnailSystem, "StoreSaveDataThumbnail"}, | 32 | {110, &ACC_SU::StoreSaveDataThumbnailSystem, "StoreSaveDataThumbnail"}, |
| 33 | {111, nullptr, "ClearSaveDataThumbnail"}, | 33 | {111, nullptr, "ClearSaveDataThumbnail"}, |
| 34 | {112, nullptr, "LoadSaveDataThumbnail"}, | 34 | {112, nullptr, "LoadSaveDataThumbnail"}, |
| 35 | {113, nullptr, "GetSaveDataThumbnailExistence"}, // 5.0.0+ | 35 | {113, nullptr, "GetSaveDataThumbnailExistence"}, |
| 36 | {120, nullptr, "ListOpenUsersInApplication"}, // 10.0.0+ | 36 | {120, nullptr, "ListOpenUsersInApplication"}, |
| 37 | {130, nullptr, "ActivateOpenContextRetention"}, // 6.0.0+ | 37 | {130, nullptr, "ActivateOpenContextRetention"}, |
| 38 | {140, &ACC_SU::ListQualifiedUsers, "ListQualifiedUsers"}, // 6.0.0+ | 38 | {140, &ACC_SU::ListQualifiedUsers, "ListQualifiedUsers"}, |
| 39 | {150, nullptr, "AuthenticateApplicationAsync"}, // 10.0.0+ | 39 | {150, nullptr, "AuthenticateApplicationAsync"}, |
| 40 | {190, nullptr, "GetUserLastOpenedApplication"}, // 1.0.0 - 9.2.0 | 40 | {151, nullptr, "Unknown151"}, |
| 41 | {191, nullptr, "ActivateOpenContextHolder"}, // 7.0.0+ | 41 | {152, nullptr, "Unknown152"}, |
| 42 | {190, nullptr, "GetUserLastOpenedApplication"}, | ||
| 43 | {191, nullptr, "ActivateOpenContextHolder"}, | ||
| 42 | {200, nullptr, "BeginUserRegistration"}, | 44 | {200, nullptr, "BeginUserRegistration"}, |
| 43 | {201, nullptr, "CompleteUserRegistration"}, | 45 | {201, nullptr, "CompleteUserRegistration"}, |
| 44 | {202, nullptr, "CancelUserRegistration"}, | 46 | {202, nullptr, "CancelUserRegistration"}, |
| @@ -46,15 +48,15 @@ ACC_SU::ACC_SU(std::shared_ptr<Module> module, std::shared_ptr<ProfileManager> p | |||
| 46 | {204, nullptr, "SetUserPosition"}, | 48 | {204, nullptr, "SetUserPosition"}, |
| 47 | {205, &ACC_SU::GetProfileEditor, "GetProfileEditor"}, | 49 | {205, &ACC_SU::GetProfileEditor, "GetProfileEditor"}, |
| 48 | {206, nullptr, "CompleteUserRegistrationForcibly"}, | 50 | {206, nullptr, "CompleteUserRegistrationForcibly"}, |
| 49 | {210, nullptr, "CreateFloatingRegistrationRequest"}, // 3.0.0+ | 51 | {210, nullptr, "CreateFloatingRegistrationRequest"}, |
| 50 | {211, nullptr, "CreateProcedureToRegisterUserWithNintendoAccount"}, // 8.0.0+ | 52 | {211, nullptr, "CreateProcedureToRegisterUserWithNintendoAccount"}, |
| 51 | {212, nullptr, "ResumeProcedureToRegisterUserWithNintendoAccount"}, // 8.0.0+ | 53 | {212, nullptr, "ResumeProcedureToRegisterUserWithNintendoAccount"}, |
| 52 | {230, nullptr, "AuthenticateServiceAsync"}, | 54 | {230, nullptr, "AuthenticateServiceAsync"}, |
| 53 | {250, nullptr, "GetBaasAccountAdministrator"}, | 55 | {250, nullptr, "GetBaasAccountAdministrator"}, |
| 54 | {290, nullptr, "ProxyProcedureForGuestLoginWithNintendoAccount"}, | 56 | {290, nullptr, "ProxyProcedureForGuestLoginWithNintendoAccount"}, |
| 55 | {291, nullptr, "ProxyProcedureForFloatingRegistrationWithNintendoAccount"}, // 3.0.0+ | 57 | {291, nullptr, "ProxyProcedureForFloatingRegistrationWithNintendoAccount"}, |
| 56 | {299, nullptr, "SuspendBackgroundDaemon"}, | 58 | {299, nullptr, "SuspendBackgroundDaemon"}, |
| 57 | {997, nullptr, "DebugInvalidateTokenCacheForUser"}, // 3.0.0+ | 59 | {997, nullptr, "DebugInvalidateTokenCacheForUser"}, |
| 58 | {998, nullptr, "DebugSetUserStateClose"}, | 60 | {998, nullptr, "DebugSetUserStateClose"}, |
| 59 | {999, nullptr, "DebugSetUserStateOpen"}, | 61 | {999, nullptr, "DebugSetUserStateOpen"}, |
| 60 | }; | 62 | }; |
diff --git a/src/core/hle/service/acc/acc_u1.cpp b/src/core/hle/service/acc/acc_u1.cpp index 951081cd0..71982ad5a 100644 --- a/src/core/hle/service/acc/acc_u1.cpp +++ b/src/core/hle/service/acc/acc_u1.cpp | |||
| @@ -17,29 +17,31 @@ ACC_U1::ACC_U1(std::shared_ptr<Module> module, std::shared_ptr<ProfileManager> p | |||
| 17 | {3, &ACC_U1::ListOpenUsers, "ListOpenUsers"}, | 17 | {3, &ACC_U1::ListOpenUsers, "ListOpenUsers"}, |
| 18 | {4, &ACC_U1::GetLastOpenedUser, "GetLastOpenedUser"}, | 18 | {4, &ACC_U1::GetLastOpenedUser, "GetLastOpenedUser"}, |
| 19 | {5, &ACC_U1::GetProfile, "GetProfile"}, | 19 | {5, &ACC_U1::GetProfile, "GetProfile"}, |
| 20 | {6, nullptr, "GetProfileDigest"}, // 3.0.0+ | 20 | {6, nullptr, "GetProfileDigest"}, |
| 21 | {50, &ACC_U1::IsUserRegistrationRequestPermitted, "IsUserRegistrationRequestPermitted"}, | 21 | {50, &ACC_U1::IsUserRegistrationRequestPermitted, "IsUserRegistrationRequestPermitted"}, |
| 22 | {51, &ACC_U1::TrySelectUserWithoutInteraction, "TrySelectUserWithoutInteraction"}, | 22 | {51, &ACC_U1::TrySelectUserWithoutInteraction, "TrySelectUserWithoutInteraction"}, |
| 23 | {60, &ACC_U1::ListOpenContextStoredUsers, "ListOpenContextStoredUsers"}, // 5.0.0 - 5.1.0 | 23 | {60, &ACC_U1::ListOpenContextStoredUsers, "ListOpenContextStoredUsers"}, |
| 24 | {99, nullptr, "DebugActivateOpenContextRetention"}, // 6.0.0+ | 24 | {99, nullptr, "DebugActivateOpenContextRetention"}, |
| 25 | {100, nullptr, "GetUserRegistrationNotifier"}, | 25 | {100, nullptr, "GetUserRegistrationNotifier"}, |
| 26 | {101, nullptr, "GetUserStateChangeNotifier"}, | 26 | {101, nullptr, "GetUserStateChangeNotifier"}, |
| 27 | {102, nullptr, "GetBaasAccountManagerForSystemService"}, | 27 | {102, nullptr, "GetBaasAccountManagerForSystemService"}, |
| 28 | {103, nullptr, "GetBaasUserAvailabilityChangeNotifier"}, | 28 | {103, nullptr, "GetBaasUserAvailabilityChangeNotifier"}, |
| 29 | {104, nullptr, "GetProfileUpdateNotifier"}, | 29 | {104, nullptr, "GetProfileUpdateNotifier"}, |
| 30 | {105, nullptr, "CheckNetworkServiceAvailabilityAsync"}, // 4.0.0+ | 30 | {105, nullptr, "CheckNetworkServiceAvailabilityAsync"}, |
| 31 | {106, nullptr, "GetProfileSyncNotifier"}, // 9.0.0+ | 31 | {106, nullptr, "GetProfileSyncNotifier"}, |
| 32 | {110, &ACC_U1::StoreSaveDataThumbnailApplication, "StoreSaveDataThumbnail"}, | 32 | {110, &ACC_U1::StoreSaveDataThumbnailApplication, "StoreSaveDataThumbnail"}, |
| 33 | {111, nullptr, "ClearSaveDataThumbnail"}, | 33 | {111, nullptr, "ClearSaveDataThumbnail"}, |
| 34 | {112, nullptr, "LoadSaveDataThumbnail"}, | 34 | {112, nullptr, "LoadSaveDataThumbnail"}, |
| 35 | {113, nullptr, "GetSaveDataThumbnailExistence"}, // 5.0.0+ | 35 | {113, nullptr, "GetSaveDataThumbnailExistence"}, |
| 36 | {120, nullptr, "ListOpenUsersInApplication"}, // 10.0.0+ | 36 | {120, nullptr, "ListOpenUsersInApplication"}, |
| 37 | {130, nullptr, "ActivateOpenContextRetention"}, // 6.0.0+ | 37 | {130, nullptr, "ActivateOpenContextRetention"}, |
| 38 | {140, &ACC_U1::ListQualifiedUsers, "ListQualifiedUsers"}, // 6.0.0+ | 38 | {140, &ACC_U1::ListQualifiedUsers, "ListQualifiedUsers"}, |
| 39 | {150, nullptr, "AuthenticateApplicationAsync"}, // 10.0.0+ | 39 | {150, nullptr, "AuthenticateApplicationAsync"}, |
| 40 | {190, nullptr, "GetUserLastOpenedApplication"}, // 1.0.0 - 9.2.0 | 40 | {151, nullptr, "Unknown151"}, |
| 41 | {191, nullptr, "ActivateOpenContextHolder"}, // 7.0.0+ | 41 | {152, nullptr, "Unknown152"}, |
| 42 | {997, nullptr, "DebugInvalidateTokenCacheForUser"}, // 3.0.0+ | 42 | {190, nullptr, "GetUserLastOpenedApplication"}, |
| 43 | {191, nullptr, "ActivateOpenContextHolder"}, | ||
| 44 | {997, nullptr, "DebugInvalidateTokenCacheForUser"}, | ||
| 43 | {998, nullptr, "DebugSetUserStateClose"}, | 45 | {998, nullptr, "DebugSetUserStateClose"}, |
| 44 | {999, nullptr, "DebugSetUserStateOpen"}, | 46 | {999, nullptr, "DebugSetUserStateOpen"}, |
| 45 | }; | 47 | }; |
diff --git a/src/core/hle/service/audio/hwopus.cpp b/src/core/hle/service/audio/hwopus.cpp index ea3414fd2..19c578b3a 100644 --- a/src/core/hle/service/audio/hwopus.cpp +++ b/src/core/hle/service/audio/hwopus.cpp | |||
| @@ -297,6 +297,10 @@ HwOpus::HwOpus(Core::System& system_) : ServiceFramework{system_, "hwopus"} { | |||
| 297 | {1, &HwOpus::GetWorkBufferSize, "GetWorkBufferSize"}, | 297 | {1, &HwOpus::GetWorkBufferSize, "GetWorkBufferSize"}, |
| 298 | {2, nullptr, "OpenOpusDecoderForMultiStream"}, | 298 | {2, nullptr, "OpenOpusDecoderForMultiStream"}, |
| 299 | {3, nullptr, "GetWorkBufferSizeForMultiStream"}, | 299 | {3, nullptr, "GetWorkBufferSizeForMultiStream"}, |
| 300 | {4, nullptr, "OpenHardwareOpusDecoderEx"}, | ||
| 301 | {5, nullptr, "GetWorkBufferSizeEx"}, | ||
| 302 | {6, nullptr, "OpenHardwareOpusDecoderForMultiStreamEx"}, | ||
| 303 | {7, nullptr, "GetWorkBufferSizeForMultiStreamEx"}, | ||
| 300 | }; | 304 | }; |
| 301 | RegisterHandlers(functions); | 305 | RegisterHandlers(functions); |
| 302 | } | 306 | } |
diff --git a/src/video_core/command_classes/codecs/vp9.cpp b/src/video_core/command_classes/codecs/vp9.cpp index 59e586695..29bb31418 100644 --- a/src/video_core/command_classes/codecs/vp9.cpp +++ b/src/video_core/command_classes/codecs/vp9.cpp | |||
| @@ -2,8 +2,9 @@ | |||
| 2 | // Licensed under GPLv2 or any later version | 2 | // Licensed under GPLv2 or any later version |
| 3 | // Refer to the license.txt file included. | 3 | // Refer to the license.txt file included. |
| 4 | 4 | ||
| 5 | #include <cstring> // for std::memcpy | 5 | #include <algorithm> // for std::copy |
| 6 | #include <numeric> | 6 | #include <numeric> |
| 7 | #include "common/assert.h" | ||
| 7 | #include "video_core/command_classes/codecs/vp9.h" | 8 | #include "video_core/command_classes/codecs/vp9.h" |
| 8 | #include "video_core/gpu.h" | 9 | #include "video_core/gpu.h" |
| 9 | #include "video_core/memory_manager.h" | 10 | #include "video_core/memory_manager.h" |
| @@ -362,7 +363,8 @@ Vp9PictureInfo VP9::GetVp9PictureInfo(const NvdecCommon::NvdecRegisters& state) | |||
| 362 | // surface_luma_offset[0:3] contains the address of the reference frame offsets in the following | 363 | // surface_luma_offset[0:3] contains the address of the reference frame offsets in the following |
| 363 | // order: last, golden, altref, current. It may be worthwhile to track the updates done here | 364 | // order: last, golden, altref, current. It may be worthwhile to track the updates done here |
| 364 | // to avoid buffering frame data needed for reference frame updating in the header composition. | 365 | // to avoid buffering frame data needed for reference frame updating in the header composition. |
| 365 | std::memcpy(vp9_info.frame_offsets.data(), state.surface_luma_offset.data(), 4 * sizeof(u64)); | 366 | std::copy(state.surface_luma_offset.begin(), state.surface_luma_offset.begin() + 4, |
| 367 | vp9_info.frame_offsets.begin()); | ||
| 366 | 368 | ||
| 367 | return vp9_info; | 369 | return vp9_info; |
| 368 | } | 370 | } |
| @@ -821,11 +823,11 @@ const std::vector<u8>& VP9::ComposeFrameHeader(const NvdecCommon::NvdecRegisters | |||
| 821 | 823 | ||
| 822 | // Write headers and frame to buffer | 824 | // Write headers and frame to buffer |
| 823 | frame.resize(uncompressed_header.size() + compressed_header.size() + bitstream.size()); | 825 | frame.resize(uncompressed_header.size() + compressed_header.size() + bitstream.size()); |
| 824 | std::memcpy(frame.data(), uncompressed_header.data(), uncompressed_header.size()); | 826 | std::copy(uncompressed_header.begin(), uncompressed_header.end(), frame.begin()); |
| 825 | std::memcpy(frame.data() + uncompressed_header.size(), compressed_header.data(), | 827 | std::copy(compressed_header.begin(), compressed_header.end(), |
| 826 | compressed_header.size()); | 828 | frame.begin() + uncompressed_header.size()); |
| 827 | std::memcpy(frame.data() + uncompressed_header.size() + compressed_header.size(), | 829 | std::copy(bitstream.begin(), bitstream.end(), |
| 828 | bitstream.data(), bitstream.size()); | 830 | frame.begin() + uncompressed_header.size() + compressed_header.size()); |
| 829 | 831 | ||
| 830 | // keep track of frame number | 832 | // keep track of frame number |
| 831 | current_frame_number++; | 833 | current_frame_number++; |
diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp index 9ff32aec4..49acc48b2 100644 --- a/src/yuzu/configuration/configure_graphics.cpp +++ b/src/yuzu/configuration/configure_graphics.cpp | |||
| @@ -227,7 +227,7 @@ void ConfigureGraphics::RetrieveVulkanDevices() try { | |||
| 227 | vulkan_devices.clear(); | 227 | vulkan_devices.clear(); |
| 228 | vulkan_devices.reserve(physical_devices.size()); | 228 | vulkan_devices.reserve(physical_devices.size()); |
| 229 | for (const VkPhysicalDevice device : physical_devices) { | 229 | for (const VkPhysicalDevice device : physical_devices) { |
| 230 | const char* const name = vk::PhysicalDevice(device, dld).GetProperties().deviceName; | 230 | const std::string name = vk::PhysicalDevice(device, dld).GetProperties().deviceName; |
| 231 | vulkan_devices.push_back(QString::fromStdString(name)); | 231 | vulkan_devices.push_back(QString::fromStdString(name)); |
| 232 | } | 232 | } |
| 233 | 233 | ||