Age | Commit message (Collapse) | Author |
|
This implements svcMapPhysicalMemory/svcUnmapPhysicalMemory for Yuzu,
which can be used to map memory at a desired address by games since
3.0.0.
It also properly parses SystemResourceSize from NPDM, and makes
information available via svcGetInfo.
This is needed for games like Super Smash Bros. and Diablo 3 -- this
PR's implementation does not run into the "ASCII reads" issue mentioned
in the comments of #2626, which was caused by the following bugs in
Yuzu's memory management that this PR also addresses:
* Yuzu's memory coalescing does not properly merge blocks. This results
in a polluted address space/svcQueryMemory results that would be
impossible to replicate on hardware, which can lead to game code making
the wrong assumptions about memory layout.
* This implements better merging for AllocatedMemoryBlocks.
* Yuzu's implementation of svcMirrorMemory unprotected the entire
virtual memory range containing the range being mirrored. This could
lead to games attempting to map data at that unprotected
range/attempting to access that range after yuzu improperly unmapped
it.
* This PR fixes it by simply calling ReprotectRange instead of
Reprotect.
|
|
core/reporter: Minor changes
|
|
kernel/vm_manager: Handle stack/TLS IO region placement a little better
|
|
|
|
|
|
These aren't used within the central memory management code, so they can
be removed.
|
|
This isn't used by anything in the header file, so it can be removed.
|
|
Provides a more accurate name for the memory region and also
disambiguates between the map and new map regions of memory, making it
easier to understand.
|
|
Handles the placement of the stack a little nicer compared to the
previous code, which was off in a few ways. e.g.
The stack (new map) region, shouldn't be the width of the entire address
space if the size of the region calculation ends up being zero. It
should be placed at the same location as the TLS IO region and also have
the same size.
In the event the TLS IO region contains a size of zero, we should also
be doing the same thing. This fixes our memory layout a little bit and
also resolves some cases where assertions can trigger due to the memory
layout being incorrect.
|
|
Taking the json instance as a constant reference, makes all moves into
the parameter non-functional, resulting in copies. Taking it by value
allows moves to function.
|
|
Adds missing inclusions to prevent potential compilation issues.
|
|
The Reporter class is part of the Core namespace, so the System class
doesn't need to be qualified.
|
|
This can inhibit copy-elision, so we can remove this redundant move.
|
|
Makes all control statements braced, regardless of their size, making
code more uniform.
|
|
If the path couldn't be created, then we shouldn't be attempting to save
the file.
|
|
Implement a new Texture Cache
|
|
|
|
|
|
yuzu: Move CPU Jit setting to Debug tab
|
|
kernel/process: Decouple TLS handling from threads
|
|
A normal user shouldn't change this, as it will slow down the emulation and can lead to bugs or crashes. The renaming is done in order to prevent users from leaving this on without a way to turn it off from the UI.
|
|
gl_shader_cache: Make CachedShader constructor private
|
|
IAudioDevice::QueryAudioDeviceOutputEvent
|
|
set: Implement GetQuestFlag with config option
|
|
Fixes missing review comments introduced.
|
|
Ensures a Process instance is always created with a deterministic
initial state.
|
|
Extracts out all of the thread local storage management from thread
instances themselves and makes the owning process handle the management
of the memory. This brings the memory management slightly more in line
with how the kernel handles these allocations.
Furthermore, this also makes the TLS page management a little more
readable compared to the lingering implementation that was carried over
from Citra.
|
|
This will be necessary for making our TLS slot management slightly more
straightforward. This can also be utilized for other purposes in the
future.
We can implement the existing simpler overload in terms of this one
anyways, we just pass the beginning and end of the ASLR region as the
boundaries.
|
|
Implemented InitializeApplicationInfo & InitializeApplicationInfoRestricted
|
|
Implement Time::GetSharedMemoryNativeHandle
|
|
gl_shader_cache: Use static constructors for CachedShader initialization
|
|
Implemented INotificationService
|
|
rasterizer_cache: Protect inherited caches from submission level
|
|
|
|
|
|
The event should only be signaled when an output audio device gets changed. Example, Speaker to USB headset. We don't identify different devices internally yet so there's no need to signal the event yet.
|
|
This can happen when installing NSPs too, not just XCIs.
|
|
DeltaFragments are not useful to us and are often not included in patch NSPs.
|
|
DeltaFragments are only used to download and apply partial patches on a real console, and are not useful to us at all. Most patch NSPs do not include them, and when they do, it's a waste of space to install them.
|
|
Avoids potential confusion, since patches and DeltaFragments are not the same thing. Actual full patches are listed under the Program type.
|
|
Core_Timing: Make core_timing threadsafe by default.
|
|
|
|
|
|
|
|
|
|
|
|
Simply returns a true/false value indicating if the system is a kiosk system. This has been mapped to a config option for the purposes of yuzu.
|
|
|
|
memory: Add class to manage and enforce memory freezing
|
|
Seems to be an issue with clang format
|