Compare commits

..

14 commits

Author SHA1 Message Date
6c5adddac2
Update src/video_core/vulkan_common/vulkan_wrapper.cpp 2025-07-28 14:02:59 -04:00
2c03b638c4
[vk] Revert Engine Name and Update some Params 2025-07-28 14:02:59 -04:00
b40657884b
[vk] revert pApplicationName (#144)
Reverts Vulkan pApplicationName to fix rdna3 lines appearing (tested on totk gloom)

Co-authored-by: Maufeat <sahyno1996@gmail.com>
Reviewed-on: eden-emu/eden#144
Co-authored-by: Maufeat <maufeat@eden-emu.dev>
Co-committed-by: Maufeat <maufeat@eden-emu.dev>
2025-07-28 14:02:59 -04:00
a29bc481a0
[externals] fix cpp-httplib on Gentoo
Signed-off-by: crueter <crueter@eden-emu.dev>
2025-07-28 14:02:59 -04:00
a058a3b927
[ssl] add and unstub alpn option + functions (#142)
Should fix Jackbox 7,8,9,10 unable to connect to server errors. (See discord issues)

Co-authored-by: Maufeat <sahyno1996@gmail.com>
Reviewed-on: eden-emu/eden#142
Co-authored-by: Maufeat <maufeat@eden-emu.dev>
Co-committed-by: Maufeat <maufeat@eden-emu.dev>
2025-07-28 14:02:59 -04:00
87bb4a2fc8
[vk] Exclude size equal alpha different copies from incompatible copy (#138)
Should fix bugs in Splatoon 2 and TotK

Co-authored-by: Maufeat <sahyno1996@gmail.com>
Reviewed-on: eden-emu/eden#138
Co-authored-by: JPikachu <jpikachu@eden-emu.dev>
Co-committed-by: JPikachu <jpikachu@eden-emu.dev>
2025-07-28 14:02:59 -04:00
e2b91bc42d
[audio_core] Revert EA3835 audio sink changes (#136)
Fixes diablo/totk audio stutters

Signed-off-by: crueter <crueter@eden-emu.dev>

Reviewed-on: eden-emu/eden#136
2025-07-28 14:02:59 -04:00
3d6bbe9f66
[cmake] Build presets and System profiles (#135)
- Build Preset (Linux only): enables arch optimizations, e.g. generic,
  v3, zen2/4, armv8, armv9
- System Profiles: currently only steamdeck, uses an older sdl commit to
  fix virtual gamepad bug

Signed-off-by: crueter <crueter@eden-emu.dev>

Reviewed-on: eden-emu/eden#135
2025-07-28 14:02:58 -04:00
6d8e9fc452
[externals] Update some submodules (#119)
This updates some submodules to keep the project in sync with the latest, stable fixes.

Reviewed-on: eden-emu/eden#119
Co-authored-by: MaranBr <maranbr@outlook.com>
Co-committed-by: MaranBr <maranbr@outlook.com>
2025-07-28 14:02:58 -04:00
38d6a72dbf
[vk, hle] fix storage buffer cache, unstubbed TryPopFriendInvitation (#129)
This fixes Jamboree + unstubes friend invitation channel which spammed a lot while testing jamboree.

Culprit was: #2

Co-authored-by: Maufeat <sahyno1996@gmail.com>
Co-authored-by: crueter <crueter@eden-emu.dev>
Reviewed-on: eden-emu/eden#129
Co-authored-by: Maufeat <maufeat@eden-emu.dev>
Co-committed-by: Maufeat <maufeat@eden-emu.dev>
2025-07-28 14:02:58 -04:00
aa320bdb79
[git] fix dup xbyak (#140)
Signed-off-by: crueter <crueter@eden-emu.dev>
Reviewed-on: eden-emu/eden#140
2025-07-28 14:02:58 -04:00
3e802c3d93
Revert "[nvnflinger] unstub AdjustRefcount (#120)"
This reverts commit 410e782291.
2025-07-28 14:02:58 -04:00
7304fcc686
[externals] Revert xbyak to v7.22 (#137)
Signed-off-by: crueter <crueter@eden-emu.dev>
Reviewed-on: eden-emu/eden#137
2025-07-28 14:02:58 -04:00
f33c1ca7c1
[vk] Fix query cache leak on missed sync (#131)
Provided by community member, elementary-particle. Submitted as PR by MaranBR.

Fixed issues:

1. The queue cache forgot to put the host query into unregister queue if they weren't synced. This will block all the banks from freeing causing a major leak.

2. SamplesQueryCounter is not aligned with renderpass begin/end. This creates invalid queries.

3. Conditional rendering is not turned on/off at the correct location making them invalid.

Co-authored-by: Maufeat <sahyno1996@gmail.com>
Reviewed-on: eden-emu/eden#131
Co-authored-by: Shinmegumi <shinmegumi@eden-emu.dev>
Co-committed-by: Shinmegumi <shinmegumi@eden-emu.dev>
2025-07-26 12:26:29 -04:00
11 changed files with 23 additions and 76 deletions

3
.gitmodules vendored
View file

@ -19,6 +19,9 @@
[submodule "cpp-httplib"]
path = externals/cpp-httplib
url = https://github.com/yhirose/cpp-httplib.git
[submodule "ffmpeg"]
path = externals/ffmpeg/ffmpeg
url = https://github.com/FFmpeg/FFmpeg.git
[submodule "vcpkg"]
path = externals/vcpkg
url = https://github.com/microsoft/vcpkg.git

View file

@ -491,8 +491,6 @@ set(FFmpeg_COMPONENTS
avutil
swscale)
set(CPM_SOURCE_CACHE ${CMAKE_SOURCE_DIR}/.cache/cpm)
add_subdirectory(externals)
if (ENABLE_QT)

View file

@ -84,22 +84,17 @@ if (YUZU_USE_EXTERNAL_SDL2)
endif()
include(CPM)
set(CPM_SOURCE_CACHE ${CMAKE_SOURCE_DIR}/.cache/cpm)
set(CPM_USE_LOCAL_PACKAGES OFF)
if ("${YUZU_SYSTEM_PROFILE}" STREQUAL "steamdeck")
set(SDL_HASH cc016b0046)
set(SDL_PIPEWIRE OFF) # build errors out with this on
set(SDL_SHA512SUM 34d5ef58da6a4f9efa6689c82f67badcbd741f5a4f562a9c2c30828fa839830fb07681c5dc6a7851520e261c8405a416ac0a2c2513b51984fb3b4fa4dcb3e20b)
else()
set(SDL_HASH 2e4c12cd2c)
set(SDL_SHA512SUM d95af47f469a312876f8ab361074a1e7b8083db19935a102d9c6e5887ace6008e64475a8c54b00164b40cad86492bb1b2366084efdd0b2555e5fea6d9c5da80e)
endif()
CPMAddPackage(
NAME SDL2
URL "https://github.com/libsdl-org/SDL/archive/${SDL_HASH}.zip"
URL_HASH SHA512=${SDL_SHA512SUM}
)
CPMAddPackage("gh:libsdl-org/SDL#${SDL_HASH}")
endif()
# ENet

View file

@ -19,17 +19,8 @@ if (NOT WIN32 AND NOT ANDROID)
message(FATAL_ERROR "Required program `autoconf` not found.")
endif()
include(CPM)
set(CPM_USE_LOCAL_PACKAGES OFF)
CPMAddPackage(
NAME ffmpeg
URL "https://github.com/ffmpeg/ffmpeg/archive/9c1294eadd.zip"
URL_HASH SHA512=2076e4cb843787c44718c70c4452517273dbc963ef98442f343762ade6c7b9f78555ae9b50a7c628844a15d8cb5e866c04e2f1acfb77093cea4fbc9edf3ad21a
)
set(FFmpeg_PREFIX ${ffmpeg_SOURCE_DIR})
set(FFmpeg_BUILD_DIR ${ffmpeg_BINARY_DIR})
set(FFmpeg_PREFIX ${PROJECT_SOURCE_DIR}/externals/ffmpeg/ffmpeg)
set(FFmpeg_BUILD_DIR ${PROJECT_BINARY_DIR}/externals/ffmpeg-build)
set(FFmpeg_MAKEFILE ${FFmpeg_BUILD_DIR}/Makefile)
make_directory(${FFmpeg_BUILD_DIR})

1
externals/ffmpeg/ffmpeg vendored Submodule

@ -0,0 +1 @@
Subproject commit 9c1294eaddb88cb0e044c675ccae059a85fc9c6c

View file

@ -728,26 +728,22 @@ Status BufferQueueProducer::Connect(const std::shared_ptr<IProducerListener>& li
return status;
}
// https://android.googlesource.com/platform/frameworks/native/%2B/master/libs/gui/BufferQueueProducer.cpp#1457
Status BufferQueueProducer::Disconnect(NativeWindowApi api) {
LOG_DEBUG(Service_Nvnflinger, "disconnect api = {}", api);
LOG_DEBUG(Service_Nvnflinger, "api = {}", api);
std::shared_ptr<IConsumerListener> listener;
Status status = Status::NoError;
std::shared_ptr<IConsumerListener> listener;
{
std::scoped_lock lock{core->mutex};
core->WaitWhileAllocatingLocked();
if (core->is_abandoned) {
// Disconnecting after the surface has been abandoned is a no-op.
return Status::NoError;
}
if (core->connected_api == NativeWindowApi::NoConnectedApi) {
LOG_DEBUG(Service_Nvnflinger, "disconnect: not connected (req = {})", api);
return Status::NoInit;
}
switch (api) {
case NativeWindowApi::Egl:
case NativeWindowApi::Cpu:
@ -762,20 +758,20 @@ Status BufferQueueProducer::Disconnect(NativeWindowApi api) {
buffer_wait_event->Signal();
listener = core->consumer_listener;
} else {
LOG_ERROR(Service_Nvnflinger,
"disconnect: still connected to another api (cur = {} req = {})",
LOG_ERROR(Service_Nvnflinger, "still connected to another api (cur = {} req = {})",
core->connected_api, api);
status = Status::BadValue;
}
break;
default:
LOG_ERROR(Service_Nvnflinger, "disconnect: unknown api = {}", api);
LOG_ERROR(Service_Nvnflinger, "unknown api = {}", api);
status = Status::BadValue;
break;
}
}
if (listener) {
// Call back without lock held
if (listener != nullptr) {
listener->OnBuffersReleased();
}

View file

@ -40,22 +40,17 @@ Result IHOSBinderDriver::TransactParcel(s32 binder_id, u32 transaction_id,
}
Result IHOSBinderDriver::AdjustRefcount(s32 binder_id, s32 addval, s32 type) {
LOG_DEBUG(Service_VI, "called id={}, addval={}, type={}", binder_id, addval, type);
R_UNLESS(type == 0 || type == 1, ResultUnknown);
m_server->AdjustRefcount(binder_id, addval, type == 1);
LOG_WARNING(Service_VI, "(STUBBED) called id={}, addval={}, type={}", binder_id, addval, type);
R_SUCCEED();
}
Result IHOSBinderDriver::GetNativeHandle(s32 binder_id, u32 type_id,
OutCopyHandle<Kernel::KReadableEvent> out_handle) {
LOG_DEBUG(Service_VI, "called id={}, type_id={}", binder_id, type_id);
LOG_WARNING(Service_VI, "(STUBBED) called id={}, type_id={}", binder_id, type_id);
const auto binder = m_server->TryGetBinder(binder_id);
R_UNLESS(binder != nullptr, ResultUnknown);
auto native_handle = binder->GetNativeHandle(type_id);
R_UNLESS(native_handle != nullptr, ResultUnknown);
*out_handle = binder->GetNativeHandle(type_id);
R_SUCCEED();

View file

@ -17,7 +17,6 @@ s32 HosBinderDriverServer::RegisterBinder(std::shared_ptr<android::IBinder>&& bi
last_id++;
binders[last_id] = std::move(binder);
refcounts[last_id] = {}; // strong = 1, weak = 0
return last_id;
}
@ -26,29 +25,6 @@ void HosBinderDriverServer::UnregisterBinder(s32 binder_id) {
std::scoped_lock lk{lock};
binders.erase(binder_id);
refcounts.erase(binder_id);
}
void HosBinderDriverServer::AdjustRefcount(s32 binder_id, s32 delta, bool is_weak) {
std::scoped_lock lk{lock};
auto search_rc = refcounts.find(binder_id);
if (search_rc == refcounts.end()) {
LOG_WARNING(Service_VI, "AdjustRefcount called for unknown binder id {}", binder_id);
return;
}
auto& rc = search_rc->second;
s32& counter = is_weak ? rc.weak : rc.strong;
counter += delta;
if (counter < 0)
counter = 0;
if (rc.strong == 0 && rc.weak == 0) {
binders.erase(binder_id);
refcounts.erase(search_rc);
}
}
std::shared_ptr<android::IBinder> HosBinderDriverServer::TryGetBinder(s32 id) const {

View file

@ -26,18 +26,10 @@ public:
std::shared_ptr<android::IBinder> TryGetBinder(s32 id) const;
void AdjustRefcount(s32 binder_id, s32 delta, bool is_weak);
private:
struct RefCounts {
s32 strong{1};
s32 weak{0};
};
mutable std::mutex lock;
s32 last_id = 0;
std::unordered_map<s32, std::shared_ptr<android::IBinder>> binders;
std::unordered_map<s32, RefCounts> refcounts;
mutable std::mutex lock;
s32 last_id{};
};
} // namespace Service::Nvnflinger

View file

@ -440,14 +440,13 @@ Instance Instance::Create(u32 version, Span<const char*> layers, Span<const char
#else
constexpr VkFlags ci_flags{};
#endif
// DO NOT TOUCH, breaks RNDA3!!
// Don't know why, but gloom + yellow line glitch appears
const VkApplicationInfo application_info{
.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO,
.pNext = nullptr,
.pApplicationName = "yuzu Emulator",
.applicationVersion = VK_MAKE_VERSION(1, 3, 0),
.pEngineName = "yuzu Emulator",
.pEngineName = "Eden Emulator",
.engineVersion = VK_MAKE_VERSION(1, 3, 0),
.apiVersion = VK_API_VERSION_1_3,
};

View file

@ -6,6 +6,7 @@ set(BUILD_SHARED_LIBS OFF)
# QuaZip
include(CPM)
set(CPM_SOURCE_CACHE ${CMAKE_SOURCE_DIR}/.cache/cpm)
set(CPM_USE_LOCAL_PACKAGES ON)
CPMAddPackage(