-void BufferCache::BindHostGraphicsUniformBuffer(size_t stage, u32 index, u32 binding_index,
- bool needs_bind) {
+void BufferCache
::BindHostGraphicsUniformBuffer(size_t stage, u32 index, u32 binding_index, bool needs_bind) {
+ ++channel_state->uniform_cache_shots[0];
const Binding& binding = channel_state->uniform_buffers[stage][index];
const DAddr device_addr = binding.device_addr;
const u32 size = (std::min)(binding.size, (*channel_state->uniform_buffer_sizes)[stage][index]);
Buffer& buffer = slot_buffers[binding.buffer_id];
TouchBuffer(buffer, binding.buffer_id);
- const bool sync_buffer = SynchronizeBuffer(buffer, device_addr, size);
- if (sync_buffer) {
- ++channel_state->uniform_cache_hits[0];
- }
- ++channel_state->uniform_cache_shots[0];
const bool use_fast_buffer = binding.buffer_id != NULL_BUFFER_ID &&
size <= channel_state->uniform_buffer_skip_cache_size &&
!memory_tracker.IsRegionGpuModified(device_addr, size);
@@ -827,7 +822,10 @@ void BufferCache
::BindHostGraphicsUniformBuffer(size_t stage, u32 index, u32
device_memory.ReadBlockUnsafe(device_addr, span.data(), size);
return;
}
-
+ // Classic cached path
+ if (SynchronizeBuffer(buffer, device_addr, size)) {
+ ++channel_state->uniform_cache_hits[0];
+ }
// Skip binding if it's not needed and if the bound buffer is not the fast version
// This exists to avoid instances where the fast buffer is bound and a GPU write happens
needs_bind |= HasFastUniformBufferBound(stage, binding_index);
diff --git a/src/yuzu/Info.plist b/src/yuzu/Info.plist
index 96096c84d1..773c4ee302 100644
--- a/src/yuzu/Info.plist
+++ b/src/yuzu/Info.plist
@@ -45,9 +45,31 @@ SPDX-License-Identifier: GPL-2.0-or-later
NSHumanReadableCopyright
+
+ LSApplicationCategoryType
+ public.app-category.games
+ CFBundleDocumentTypes
+
+
+ CFBundleTypeExtensions
+
+ nsp
+ xci
+ nro
+
+ CFBundleTypeName
+ Switch File
+ CFBundleTypeRole
+ Viewer
+ LSHandlerRank
+ Default
+
+
NSPrincipalClass
NSApplication
NSHighResolutionCapable
True
+ UIDesignRequiresCompatibility
+
diff --git a/src/yuzu/configuration/configure_audio.cpp b/src/yuzu/configuration/configure_audio.cpp
index a7ebae91f8..af81ef552e 100644
--- a/src/yuzu/configuration/configure_audio.cpp
+++ b/src/yuzu/configuration/configure_audio.cpp
@@ -270,10 +270,8 @@ void ConfigureAudio::UpdateAudioDevices(int sink_index) {
void ConfigureAudio::InitializeAudioSinkComboBox() {
sink_combo_box->clear();
sink_combo_box->addItem(QString::fromUtf8(AudioCore::Sink::auto_device_name));
-
- for (const auto& id : AudioCore::Sink::GetSinkIDs()) {
- sink_combo_box->addItem(QString::fromStdString(Settings::CanonicalizeEnum(id)));
- }
+ for (const auto& id : AudioCore::Sink::GetSinkIDs())
+ sink_combo_box->addItem(QString::fromStdString(std::string{Settings::CanonicalizeEnum(id)}));
}
void ConfigureAudio::RetranslateUI() {
diff --git a/src/yuzu/configuration/configure_profile_manager.cpp b/src/yuzu/configuration/configure_profile_manager.cpp
index f5de08a676..df74738df4 100644
--- a/src/yuzu/configuration/configure_profile_manager.cpp
+++ b/src/yuzu/configuration/configure_profile_manager.cpp
@@ -373,13 +373,13 @@ bool ConfigureProfileManager::LoadAvatarData() {
const auto romfs = nca->GetRomFS();
if (!romfs) {
QMessageBox::warning(this, tr("Error loading archive"),
- tr("Archive does not contain romfs. It is probably corrupt."));
+ tr("Could not locate RomFS. Your file or decryption keys may be corrupted."));
return false;
}
const auto extracted = FileSys::ExtractRomFS(romfs);
if (!extracted) {
QMessageBox::warning(this, tr("Error extracting archive"),
- tr("Archive could not be extracted. It is probably corrupt."));
+ tr("Could not extract RomFS. Your file or decryption keys may be corrupted."));
return false;
}
const auto chara_dir = extracted->GetSubdirectory("chara");
diff --git a/src/yuzu/configuration/shared_widget.h b/src/yuzu/configuration/shared_widget.h
index 9e718098a3..dd5d5b7257 100644
--- a/src/yuzu/configuration/shared_widget.h
+++ b/src/yuzu/configuration/shared_widget.h
@@ -13,6 +13,7 @@
#include
#include
#include
+#include
#include
#include "qt_common/shared_translation.h"
diff --git a/src/yuzu/game_list.h b/src/yuzu/game_list.h
index 94e7b2dc42..cd71fb2139 100644
--- a/src/yuzu/game_list.h
+++ b/src/yuzu/game_list.h
@@ -58,11 +58,11 @@ class GameList : public QWidget {
public:
enum {
COLUMN_NAME,
- COLUMN_COMPATIBILITY,
- COLUMN_ADD_ONS,
COLUMN_FILE_TYPE,
COLUMN_SIZE,
COLUMN_PLAY_TIME,
+ COLUMN_ADD_ONS,
+ COLUMN_COMPATIBILITY,
COLUMN_COUNT, // Number of columns
};
diff --git a/src/yuzu/game_list_worker.cpp b/src/yuzu/game_list_worker.cpp
index 538c7ab822..2914c275a8 100644
--- a/src/yuzu/game_list_worker.cpp
+++ b/src/yuzu/game_list_worker.cpp
@@ -204,36 +204,24 @@ QList MakeGameListEntry(const std::string& path,
const PlayTime::PlayTimeManager& play_time_manager,
const FileSys::PatchManager& patch)
{
- const auto it = FindMatchingCompatibilityEntry(compatibility_list, program_id);
+ auto const it = FindMatchingCompatibilityEntry(compatibility_list, program_id);
+ // The game list uses 99 as compatibility number for untested games
+ QString compatibility = it != compatibility_list.end() ? it->second.first : QStringLiteral("99");
- // The game list uses this as compatibility number for untested games
- QString compatibility{QStringLiteral("99")};
- if (it != compatibility_list.end()) {
- compatibility = it->second.first;
- }
+ auto const file_type = loader.GetFileType();
+ auto const file_type_string = QString::fromStdString(Loader::GetFileTypeString(file_type));
- const auto file_type = loader.GetFileType();
- const auto file_type_string = QString::fromStdString(Loader::GetFileTypeString(file_type));
-
- QList list{
- new GameListItemPath(FormatGameName(path), icon, QString::fromStdString(name),
- file_type_string, program_id),
- new GameListItemCompat(compatibility),
+ QString patch_versions = GetGameListCachedObject(fmt::format("{:016X}", patch.GetTitleID()), "pv.txt", [&patch, &loader] {
+ return FormatPatchNameVersions(patch, loader, loader.IsRomFSUpdatable());
+ });
+ return QList{
+ new GameListItemPath(FormatGameName(path), icon, QString::fromStdString(name), file_type_string, program_id),
new GameListItem(file_type_string),
new GameListItemSize(size),
new GameListItemPlayTime(play_time_manager.GetPlayTime(program_id)),
+ new GameListItem(patch_versions),
+ new GameListItemCompat(compatibility),
};
-
- QString patch_versions;
-
- patch_versions = GetGameListCachedObject(
- fmt::format("{:016X}", patch.GetTitleID()), "pv.txt", [&patch, &loader] {
- return FormatPatchNameVersions(patch, loader, loader.IsRomFSUpdatable());
- });
-
- list.insert(2, new GameListItem(patch_versions));
-
- return list;
}
} // Anonymous namespace