| Age | Commit message (Collapse) | Author |
|
Now that we have dependencies on the initialization order, we can move
the creation of the main process to a more sensible area: where we
actually load in the executable data.
This allows localizing the creation and loading of the process in one
location, making the initialization of the process much nicer to trace.
|
|
Like with CPU emulation, we generally don't want to fire off the threads
immediately after the relevant classes are initialized, we want to do
this after all necessary data is done loading first.
This splits the thread creation into its own interface member function
to allow controlling when these threads in particular get created.
|
|
Our initialization process is a little wonky than one would expect when
it comes to code flow. We initialize the CPU last, as opposed to
hardware, where the CPU obviously needs to be first, otherwise nothing
else would work, and we have code that adds checks to get around this.
For example, in the page table setting code, we check to see if the
system is turned on before we even notify the CPU instances of a page
table switch. This results in dead code (at the moment), because the
only time a page table switch will occur is when the system is *not*
running, preventing the emulated CPU instances from being notified of a
page table switch in a convenient manner (technically the code path
could be taken, but we don't emulate the process creation svc handlers
yet).
This moves the threads creation into its own member function of the core
manager and restores a little order (and predictability) to our
initialization process.
Previously, in the multi-threaded cases, we'd kick off several threads
before even the main kernel process was created and ready to execute (gross!).
Now the initialization process is like so:
Initialization:
1. Timers
2. CPU
3. Kernel
4. Filesystem stuff (kind of gross, but can be amended trivially)
5. Applet stuff (ditto in terms of being kind of gross)
6. Main process (will be moved into the loading step in a following
change)
7. Telemetry (this should be initialized last in the future).
8. Services (4 and 5 should ideally be alongside this).
9. GDB (gross. Uses namespace scope state. Needs to be refactored into a
class or booted altogether).
10. Renderer
11. GPU (will also have its threads created in a separate step in a
following change).
Which... isn't *ideal* per-se, however getting rid of the wonky
intertwining of CPU state initialization out of this mix gets rid of
most of the footguns when it comes to our initialization process.
|
|
vk_shader_decompiler: Implement a SPIR-V decompiler
|
|
kernel/svc: Deglobalize the supervisor call handlers
|
|
kernel: Make handle type declarations constexpr
|
|
Allows the compiler to inform when the result of a swap function is
being ignored (which is 100% a bug in all usage scenarios). We also mark
them noexcept to allow other functions using them to be able to be
marked as noexcept and play nicely with things that potentially inspect
"nothrowability".
|
|
Including every OS' own built-in byte swapping functions is kind of
undesirable, since it adds yet another build path to ensure compilation
succeeds on.
Given we only support clang, GCC, and MSVC for the time being, we can
utilize their built-in functions directly instead of going through the
OS's API functions.
This shrinks the overall code down to just
if (msvc)
use msvc's functions
else if (clang or gcc)
use clang/gcc's builtins
else
use the slow path
|
|
We don't plan to support host 32-bit ARM execution environments, so this
is essentially dead code.
|
|
The template type here is actually a forwarding reference, not an rvalue
reference in this case, so it's more appropriate to use std::forward to
preserve the value category of the type being moved.
|
|
Some objects declare their handle type as const, while others declare it
as constexpr. This makes the const ones constexpr for consistency, and
prevent unexpected compilation errors if these happen to be attempted to be
used within a constexpr context.
|
|
|
|
FastLayeredCopySurface
|
|
Updates function tables based off information from SwitchBrew.
|
|
video_core: Implement API agnostic view based texture cache
|
|
Correct Fermi Copy on Linear Textures.
|
|
|
|
|
|
This doesn't modify instance state, so it can be made const.
|
|
The initial two words indicate a process ID. Also UnloadNro only
specifies one address, not two.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
sirit is a runtime assembler for SPIR-V
|
|
IDirectory's Read() function doesn't take any input parameters. It only
uses the output parameters that we already provide.
|
|
These indicate options that alter how a read/write is performed.
Currently we don't need to handle these, as the only one that seems to
be used is for writes, but all the custom options ever seem to do is
immediate flushing, which we already do by default.
|
|
gl_rasterizer: Use ARB_multi_bind to update buffers with a single call per drawcall
|
|
kernel/server_session: Remove obsolete TODOs
|
|
These are holdovers from Citra.
|
|
Remove unnecessary bounding in LD_C
|
|
yuzu/debugger: Remove graphics surface viewer
|
|
Without passing in a parent, this can result in focus being stolen from
the dialog in certain cases.
Example:
On Windows, if the logging window is left open, the logging Window will
potentially get focus over the hotkey dialog itself, since it brings all
open windows for the application into view. By specifying a parent, we
only bring windows for the parent into view (of which there are none,
aside from the hotkey dialog).
|
|
Without a parent, this dialog won't have its memory freed when it
happens to get destroyed.
|
|
|
|
Configure()
|
|
This is checking if an index is valid or not and returning early if it
isn't.
|
|
Avoids a -Wreorder compiler warning.
|
|
Avoids dumping all of the core settings machinery into whatever files
include this header. Nothing inside the header itself actually made use
of anything in settings.h anyways.
|
|
This doesn't actually modify instance state of the dialog, so this can
be made const.
|
|
video_core/texures/texture: Remove unnecessary includes
|
|
file_sys: Provide generic interface for accessing game data
|
|
Correct XMAD mode, psl and high_b on different encodings.
|