This allows you to specify kernel trace filters in your config.json
in the format of "[+-]ModuleName::FunctionName", where:
+: enable tracing for all functions which match this filter,
-: disable tracing for all function swhich match this filter,
ModuleName: Can use trailing wildcard.
FunctionName: Optional, can use trailing wildcard.
Example:
"kernel_trace_filters": [
"-*", // Disable tracing for every module and every function
"+coreinit::LC*", // Enable tracing for functions in coreinit module which match LC*
"+*::AX*" // Enable tracing for functions in any module which match AX*
],
Closes#151.
This also adds a new method insertSelectVector which will
automatically generate the appropriate GLSL selection
for a particular set of SQ_SEL's. It also tries to use
a trivial GLSL swizzle when possible.
The previous shader decompiler tried to be very clever in reversing control flow,
that was a bit unreliable as it made a few assumptions which turned out to not
always be true. I believe in the future we could still write a proper decompiler
which correctly reverses control flow by inspecting the stack, but for now let's
keep it very simple and use a basic bitch decompiler which uses an actual shader
stack similar to how the GPU itself works.
This is required in order to allow Nsight to permit shader
debugging. Otherwise, the nsight thread is not able to execute
any further shader calls inside the GPU thread properly.
Because std::thread's constructors take copies of the arguments to be
used in the specified function, it is unnecessary to use std::bind to
bind the arguments of the functions to the function call.
Failure to do this caused an assertion failure (core->cia != cia) in
cpu::interpreter::step_one() when an HLE-implemented KC function called
a PPC subroutine before returning (observed with ghs_mtx_init).
This patch brings two major changes to our handling of context
switching. The first is that we now switch context's based on
soely the OSContext. This allows the kernel to be get closer
to no longer depending on coreinit. I have also updated the
behaviour surrounding the actual host platform fiber switch so
that the semantics are easier to follow. Lots of comments too!