Subv
4c82746e83
Add the .vs folder and the CMakeSettings.json file from Visual Studio to gitignore.
2017-09-30 11:07:57 -05:00
Sebastian Valle
2e30398e7a
Merge pull request #2967 from Subv/thread_wakeup_callbacks
...
Kernel/Threads: When putting a thread to wait, specify a function to execute when it is awoken
2017-09-30 09:12:18 -05:00
Sebastian Valle
53d74215b2
Merge pull request #2962 from huwpascoe/static_cast
...
Fixed type conversion ambiguity
2017-09-30 08:22:14 -05:00
Subv
a0054d695e
Kernel/Threads: When putting a thread to wait, specify a function to execute when it is awoken.
...
This change makes for a clearer (less confusing) path of execution in the scheduler, now the code to execute when a thread awakes is closer to the code that puts the thread to sleep (WaitSynch1, WaitSynchN). It also allows us to implement the special wake up behavior of ReplyAndReceive without hacking up WaitObject::WakeupAllWaitingThreads.
If savestates are desired in the future, we can change this implementation to one similar to the CoreTiming event system, where we first register the callback functions at startup and assign their identifiers to the Thread callback variable instead of directly assigning a lambda to the wake up callback variable.
2017-09-28 11:53:32 -05:00
Sebastian Valle
1d94b4fd3d
Merge pull request #2907 from Subv/warnings3
...
Disable unary operator- on Math::Vec2/Vec3/Vec4 for unsigned types.
2017-09-27 15:45:38 -05:00
Subv
9f1b2d3260
Disable unary operator- on Math::Vec2/Vec3/Vec4 for unsigned types.
...
It is unlikely we will ever use this without first doing a Cast to a signed type.
Fixes 9 "unary minus operator applied to unsigned type, result still unsigned" warnings on MSVC2017.3
2017-09-27 09:06:41 -05:00
Subv
11920a6bd1
Loaders: Don't automatically set the current process every time we load an application.
...
The loaders will now just create a Kernel::Process, construct it and return it to the caller, which is responsible for setting it as the current process and configuring the global page table.
2017-09-26 18:17:47 -05:00
Subv
2e78c05d91
Kernel/Thread: Allow specifying which process a thread belongs to when creating it.
...
Don't automatically assume that Thread::Create will only be called when the parent process is currently scheduled. This assumption will be broken when applets or system modules are loaded.
2017-09-26 17:40:49 -05:00
Subv
2420759794
Tests: Added Memory::IsValidVirtualAddress tests.
2017-09-26 17:31:50 -05:00
Subv
6af5b05299
Tests: Fixed ARM VFP tests
2017-09-26 17:29:06 -05:00
Subv
3cb2bf08c3
Memory: Allow IsValidVirtualAddress to be called with a specific process parameter.
...
There is still an overload of IsValidVirtualAddress that only takes the VAddr and will default to the current process.
2017-09-26 17:27:44 -05:00
Subv
bfc70ef1d1
Memory/RasterizerCache: Ignore unmapped memory regions when caching physical regions.
...
Not all physical regions need to be mapped into the address space of every process, for example, system modules do not have a VRAM mapping.
This fixes a crash when loading applets and system modules.
2017-09-25 19:37:45 -05:00
Subv
3532957099
Audio: Use std::deque instead of std::vector for the audio buffer type (StereoBuffer16).
...
The current code inserts and deletes elements from the beginning of the audio buffer, which is very inefficient in an std::vector.
Profiling was done using VisualStudio2017's Performance Analyzer in Super Mario 3D Land.
Before this change: AudioInterp::Linear had 14.14% of the runtime (inclusive) and most of that time was spent in std::vector's insert implementation.
After this change: AudioInterp::Linear has 0.36% of the runtime (inclusive)
2017-09-25 18:31:37 -05:00
Sebastian Valle
09c4c87db5
Merge pull request #2947 from Subv/selfncch_factory
...
HLE/Archives: Allow multiple loaded applications to access their SelfNCCH archive independently.
2017-09-25 18:24:12 -05:00
Subv
f2b635a73d
HLE/Archives: Allow multiple loaded applications to access their SelfNCCH archive independently.
...
The loaders now register each loaded ROM with the SelfNCCH factory, which keeps the data around for the duration of the emulation session.
When opening the SelfNCCH archive, the factory queries the current program's programid and uses that as a key to the map that contains the NCCHData structure (RomFS, Icon, Banner, etc).
3dsx files do not have a programid and will use a default of 0 for this value, thus, only 1 3dsx file with RomFS is loadable at the same time.
2017-09-25 09:45:02 -05:00
Subv
2e487c9bce
HLE/SRV: Implemented RegisterService.
...
Now system modules can do more than just crash immediately on startup.
2017-09-24 00:12:58 -05:00
Subv
891916efff
Services/NS: Port ns:s to the new service framework.
2017-09-16 10:52:45 -05:00
Subv
85f1a05d7e
CPU/Dynarmic: Disable the fast page-table access in dynarmic until it supports switching page tables at runtime.
2017-09-15 14:26:22 -05:00
Subv
082f12048a
Tests/VFP: Use a standalone pagetable for the TestEnvironment memory operations.
...
This fixes building the tests
2017-09-15 14:26:20 -05:00
Subv
8932f435fc
Kernel/Memory: Make IsValidPhysicalAddress not go through the current process' virtual memory mapping.
2017-09-15 14:26:18 -05:00
Subv
9200465e55
Kernel/Threads: Don't clear the CPU instruction cache when performing a context switch from an idle thread into a thread in the same process.
...
We were unnecessarily clearing the cache when going from Process A -> Idle -> Process A, this caused extreme performance regressions.
2017-09-15 14:26:15 -05:00
Subv
71281c2114
Kernel/Memory: Changed GetPhysicalPointer so that it doesn't go through the current process' page table to obtain a pointer.
2017-09-15 14:26:13 -05:00
Subv
23ad87098d
Kernel/Memory: Switch the current page table when a new process is scheduled.
2017-09-10 15:14:31 -05:00
Subv
36100ec791
Kernel/Memory: Give each Process its own page table.
...
The loader is in charge of setting the newly created process's page table as the main one during the loading process.
2017-09-10 15:13:41 -05:00
Sebastian Valle
8b1fdb9394
Merge pull request #2905 from danzel/fix-2902
...
Use recursive_mutex instead of mutex to fix #2902
2017-08-29 09:35:56 -05:00
Subv
02af4789cc
Services/UDS: Remove an old duplicated declaration of WifiPacket.
2017-08-27 10:48:15 -05:00
Subv
0e1a05aaec
Services/UDS: Handle the connection sequence packets.
...
There is currently no stage tracking, a client is considered "Connected" when it receives the EAPoL Logoff packet from the server, this is not yet implemented.
2017-08-27 10:48:13 -05:00
Subv
088500377e
Services/UDS: Store the received beacon frames until RecvBeaconBroadcastData is called, up to 15 beacons at the same time, removing any older beacon frames when the limit is exceeded.
2017-08-27 10:48:11 -05:00
Subv
44350f7ea1
Services/UDS: Add functions to generate 802.11 auth and assoc response frames.
2017-08-27 10:48:09 -05:00
Subv
1ba7703833
Warnings: Fixed a few missing-return warnings in video_core.
2017-08-26 11:58:22 -05:00
Subv
36220f3873
Kernel/Memory: Acquire the global HLE lock when a memory read/write operation falls outside of the fast path, for it might perform an MMIO operation.
2017-08-22 09:30:58 -05:00
Subv
9cf64ca2cf
Kernel/HLE: Use a mutex to synchronize access to the HLE kernel state between the cpu thread and any other possible threads that might touch the kernel (network thread, etc).
...
This mutex is acquired in SVC::CallSVC, ie, as soon as the guest application enters the HLE kernel, and should be acquired by the aforementioned threads before modifying kernel structures.
2017-08-22 09:30:55 -05:00
Subv
733dfe220e
Kernel/Threads: Don't immediately switch to the new main thread when loading a new process.
...
This is necessary for loading multiple processes at the same time.
The main thread will be automatically scheduled when necessary once the scheduler runs.
2017-08-21 20:54:29 -05:00
Subv
1c6f3ee4ba
GPU/Warnings: Explicitly cast the screen refresh ticks to u64.
2017-08-21 08:34:30 -05:00
Subv
f94bd67a0d
Warnings: Add UNREACHABLE macros to switches that contemplate all possible values.
2017-08-21 08:34:28 -05:00
Subv
ecfad8a134
HLE/Applets: Fixed some conversion warnings when creating the framebuffer shared memory objects.
2017-08-21 08:34:27 -05:00
Subv
690eed4d9e
CPU/Dynarmic: Fixed a warning when incrementing the number of ticks in ExecuteInstructions.
2017-08-21 08:34:25 -05:00
Subv
015a96a59b
Dyncom: Use size_t instead of int to store the instruction offsets in the instruction cache.
...
Fixes a few warnings.
2017-08-21 08:34:23 -05:00
Subv
b2d8872e56
Dyncom: Fixed a conversion warning when decoding thumb instructions.
2017-08-21 08:20:36 -05:00
Sebastian Valle
ebc3701d0e
Merge pull request #2843 from Subv/applet_slots
...
Services/APT: Use an array to hold data about the 4 possible concurrent applet types (Application, Library, HomeMenu, System)
2017-08-12 10:27:57 -05:00
Subv
02b8723f3c
Services/APT: Use the AppletAttributes union directly when dealing with applet attrs.
2017-08-07 16:09:55 -05:00
Subv
99fe2f6ec7
Services/APT: Use an array to hold data about the 4 possible concurrent applet types (Application, Library, HomeMenu, System).
...
This gives each applet type its own set of events as per the real NS module.
2017-08-07 14:53:58 -05:00
Sebastian Valle
803fda3c67
Merge pull request #2816 from wwylele/proctex-lutlutlut
...
gl_rasterizer: use texture buffer for proctex LUT
2017-07-22 23:03:48 -05:00
Sebastian Valle
62cdefaed0
Merge pull request #2834 from wwylele/depth-enable-fix
...
gl_rasterizer_cache: fix using_depth_fb
2017-07-22 23:02:59 -05:00
Subv
20eb92534e
Service/APT: Log Send/Cancel/Receive/GlanceParameter calls even if they return an error.
2017-07-21 15:03:06 -05:00
Subv
e0cfa309b6
Services/APT: Return the proper error code when calling SendParameter with an outstanding parameter already in memory.
2017-07-21 14:59:26 -05:00
Subv
f8f6966ce1
Services/APT: Reset the APT parameter inside CancelParameter if the conditions are met.
2017-07-21 14:59:25 -05:00
Subv
f678b8da42
Services/APT: Properly clear the apt parameter after a successful ReceiveParameter call.
2017-07-21 14:59:22 -05:00
Subv
00128a81d3
Services/APT: Use the right error codes in ReceiveParameter and GlanceParameter when the parameter doesn't exist.
2017-07-21 14:59:21 -05:00
Subv
725a45fe9f
Services/APT: Use boost::optional for the APT parameter structure.
2017-07-21 14:59:20 -05:00
Subv
57bd9fca7a
SwRasterizer/Lighting: Move the clamp highlight calculation to the end of the per-light loop body.
2017-07-11 19:39:15 +03:00
Subv
d96c1bd977
SwRasterizer/Lighting: Move the lighting enable check outside the ComputeFragmentsColors function.
2017-07-11 19:39:15 +03:00
Subv
08ebc3203d
SwRasterizer/Lighting: Do not use global registers state in ComputeFragmentsColors.
2017-07-11 19:39:15 +03:00
Subv
5d5611f3d7
SwRasterizer/Lighting: Do not use global state in LookupLightingLut.
2017-07-11 19:39:15 +03:00
Subv
c2088581a0
SwRasterizer/Lighting: Fixed a bug where the distance attenuation bias was being set to the dist atten scale.
2017-07-11 19:39:15 +03:00
Subv
eefe9b2bed
SwRasterizer: Fixed a few conversion warnings and moved per-light values into the per-light loop.
2017-07-11 19:39:15 +03:00
Subv
232ff77c65
SwRasterizer: Run clang-format
2017-07-11 19:39:15 +03:00
Subv
1dcd48ba2a
SwRasterizer: Flip the vertex quaternions before clipping (if necessary).
2017-07-11 19:39:15 +03:00
Subv
97723538d8
SwRasterizer: Corrected the light LUT lookups.
2017-07-11 19:39:15 +03:00
Subv
9bc4d2754b
SwRasterizer: Corrected the light LUT lookups.
2017-07-11 19:39:15 +03:00
Subv
e50af9c6a1
SwRasterizer: Fixed the lighting lut lookup function.
2017-07-11 19:39:15 +03:00
Subv
3bdb54d954
SwRasterizer: Calculate fresnel for fragment lighting.
2017-07-11 19:39:15 +03:00
Subv
e238921440
SwRasterizer: Calculate specular_1 for fragment lighting.
2017-07-11 19:39:15 +03:00
Subv
e28b936c5d
SwRasterizer: Calculate specular_0 for fragment lighting.
2017-07-11 19:39:15 +03:00
Subv
8e95685a2a
SwRasterizer: Implement primary fragment color.
2017-07-11 19:39:15 +03:00
Sebastian Valle
c13e4d7ea4
Merge pull request #2815 from mailwl/bossp
...
Service/boss:P: Add some functions to FunctionTable
2017-07-08 13:58:40 -05:00
Sebastian Valle
4f7e8c6f1e
Merge pull request #2793 from Subv/replyandreceive
...
Kernel/SVC: Partially implemented svcReplyAndReceive
2017-06-29 17:05:22 -05:00
Subv
4a8de6bb00
Kernel/SVC: Pass the current thread as a parameter to ClientSession::SendSyncRequest.
2017-06-29 12:30:34 -05:00
Sebastian Valle
0481516faf
Merge pull request #2778 from Subv/uds_more
...
Services/UDS: Stub SendTo to generate the unencrypted data frames with the right headers
2017-06-26 19:35:52 -05:00
Subv
49d391d757
UDS: Use the ToDS and FromDS fields to properly calculate the AAD used during encryption.
2017-06-26 12:24:14 -05:00
Subv
1ae0d3c450
UDS: Move the UDS keyslot used to generate the CCMP key to the AES::KeySlotID enum.
2017-06-26 12:24:13 -05:00
Subv
0a6a3dc5de
UDS: Run clang-format.
2017-06-26 12:24:11 -05:00
Subv
7f5c4beca2
UDS: Added functions to encrypt and decrypt the data frames.
...
The responsibility of encryption and encapsulation into an 802.11 MAC frame will fall into the callers of GenerateDataPayload.
2017-06-26 12:24:09 -05:00
Subv
44f4737f99
Kernel/Sessions: Clean up the list of pending request threads of a session when the client endpoint is closed.
2017-06-25 23:38:29 -05:00
Subv
820509103c
Kernel/SVC: Partially implemented svcReplyAndReceive.
...
It behaves mostly as WaitSynchronizationN with wait_all = false, except for IPC buffer translation.
The target thread of an IPC response will now wake up when responding.
IPC buffer translation is currently not implemented.
Error passing back to svcSendSyncRequest is currently not implemented.
2017-06-25 23:38:28 -05:00
Subv
d7538409fb
Kernel/ServerSession: Keep track of which threads have issued sync requests.
2017-06-25 14:47:25 -05:00
Sebastian Valle
b91c1e214c
Merge pull request #2779 from Subv/uds_more2
...
UDS: Added a hook for updating the connection status when a client connects to the network.
2017-06-21 02:29:00 +00:00
Subv
bc8fe1c226
UDS: Clarify comment about the first 4 bytes of the SecureData header.
...
It is likely that these 4 bytes are actually a different header, part of some protocol that encapsulates the SecureData protocol.
2017-06-15 12:08:55 -05:00
Subv
39d3a3aa7e
UDS: Return the correct error messages in SendTo when not connected to a network or trying to send to itself.
2017-06-15 12:08:54 -05:00
Subv
2761536b1d
UDS: Stub SendTo to generate the unencrypted data frame with the right headers.
2017-06-15 12:08:53 -05:00
Subv
8cc1a34f7e
UDS: Added a hook for updating the connection status when a client connects to the network.
2017-06-15 11:57:49 -05:00
Sebastian Valle
cc8c999994
Services/UDS: Set the proper bit in the ConnectionStatus structure when creating a network. ( #2738 )
...
* Services/UDS: Set the proper bit in the ConnectionStatus structure when creating a network.
This lets the application know that the host was successfully added to the session.
* Services/UDS: Reset the connection status when destroying the network
* Services/UDS: Reset the connection status's bitmask of changed nodes after reporting it to the game.
2017-06-13 22:00:58 +03:00
Sebastian Valle
e789d1f1c4
Merge pull request #2727 from wwylele/spot-light
...
Fragment lighting: implement spot light
2017-06-11 18:23:47 +00:00
Subv
656f26c4df
Services/UDS: Implement DecryptBeaconData.
...
This function decrypts the encrypted data tags contained in the 802.11 beacon frames.
2017-06-06 11:31:20 -05:00
Sebastian Valle
1483d53541
Merge pull request #2692 from Subv/vfp_ftz
...
Dyncom/VFP: Convert denormal outputs into 0 when the FTZ flag is enabled.
2017-05-22 12:16:53 -05:00
Subv
c67cd54049
fixup! Dyncom/VFP: Convert denormal outputs into 0 when the FTZ flag is enabled.
2017-05-21 18:56:09 -05:00
Subv
8e4b05c22a
Kernel/Sessions: Remove the ClientSession::Create function.
...
It is not meant to be used by anything other than CreateSessionPair.
2017-05-21 18:52:42 -05:00
Subv
56031253c4
Services/UDS: Use the new IPC helper functions.
2017-05-15 13:05:17 -05:00
Subv
2472e71eb0
Services/UDS: Implement RecvBeaconBroadcastData.
...
This allows the applications to retrieve 802.11 beacon frames from nearby UDS networks.
Note that the networks are still not announced anywhere.
2017-05-15 13:05:16 -05:00
Subv
b722ca78a2
Services/UDS: Generate the UDS beacons when the beacon callback fires.
2017-05-15 13:05:15 -05:00
Subv
f98eb7d315
Kernel: Remove a now unused enum and variable regarding a session's status.
2017-05-15 11:22:16 -05:00
Subv
9c496013b3
Kernel: Use a Session object to keep track of the status of a Client/Server session pair.
...
Reduce the associated port's connection count when a ServerSession is destroyed.
2017-05-15 11:22:15 -05:00
Subv
8533b511e8
Dyncom/VFP: Perform flush-to-zero on the second operand of vsub before sending it to vadd.
...
Previously we were letting vadd flush the value to positive 0, but there are cases where this behavior is wrong, for example,
vsub: -0 - +0 = -0
vadd: -0 + +0 = +0
Now we'll flush the value to +0 inside vsub, and then negate it.
2017-05-13 18:03:41 -05:00
Subv
338eb4204e
Dyncom/VFP: Strip the VFP_NAN_FLAG sentinel value when setting vfp exceptions.
2017-05-09 00:36:23 -05:00
Subv
55a42d3764
Revert "Remove exceptions parameter from normaliseround VFP functions"
...
This reverts commit 7d2670f08e .
Conflicts:
src/core/arm/skyeye_common/vfp/vfp_helper.h
src/core/arm/skyeye_common/vfp/vfpdouble.cpp
src/core/arm/skyeye_common/vfp/vfpsingle.cpp
2017-05-09 00:36:22 -05:00
Subv
934af07e88
Dyncom/VFP: Convert denormal outputs into 0 when the FTZ flag is enabled.
...
Inputs are still not flushed to 0 if they are denormals.
2017-05-08 14:34:16 -05:00
Sebastian Valle
cb844a55d7
Merge pull request #2628 from Subv/uds
...
Services/UDS: Initial support for hosting local-wlan networks.
2017-04-12 11:57:24 -05:00
Sebastian Valle
4077eb3545
Services/UDS: Fixed a style mistake in GetChannel.
2017-03-27 13:08:26 -05:00
Subv
e6223853f0
Services/UDS: Use consistent spelling for WiFi and simplify the GetChannel function.
2017-03-26 08:17:57 -05:00
Subv
6f0271bafe
Services/UDS: Signal the connection event when closing down the network.
2017-03-26 08:17:56 -05:00