aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle
AgeCommit message (Collapse)Author
2019-03-05vm_manager: Remove cheat-specific ranges from VMManagerZach Hilman
2019-03-05kernel/thread: Remove obsolete TODO in Create()Lioncash
This is a TODO carried over from Citra that doesn't apply here.
2019-03-05core/hle/ipc: Remove unnecessary includesLioncash
Removes a few inclusion dependencies from the headers or replaces existing ones with ones that don't indirectly include the required headers. This allows removing an inclusion of core/memory.h, meaning that if the memory header is ever changed in the future, it won't result in rebuilding the entirety of the HLE services (as the IPC headers are used quite ubiquitously throughout the HLE service implementations).
2019-03-04vm_manager: Add support for storing and getting main code regionZach Hilman
Used as root for one region of cheats, set by loader
2019-03-04controllers/npad: Add accessor for current press stateZach Hilman
Allows frontend/features to access pressed buttons conveniently as possible
2019-03-04vm_manager: Use range helpers in HeapAlloc() and HeapFree()Lioncash
Significantly tidies up two guard conditionals.
2019-03-04vm_manager: Provide address range checking functions for other memory regionsLioncash
Makes the interface uniform when it comes to checking various memory regions.
2019-03-04kernel/scheduler: Pass in system instance in constructorLioncash
Avoids directly relying on the global system instance and instead makes an arbitrary system instance an explicit dependency on construction. This also allows removing dependencies on some global accessor functions as well.
2019-03-04kernel/shared_memory: Get rid of the use of global accessor functions within ↵Lioncash
Create() Given we already pass in a reference to the kernel that the shared memory instance is created under, we can just use that to check the current process, rather than using the global accessor functions. This allows removing direct dependency on the system instance entirely.
2019-03-04svc: Migrate address range checking functions to VMManagerLioncash
Provides a bit of a more proper interface for these functions.
2019-03-01Merge pull request #2180 from lioncash/audrenbunnei
service/audio: Provide an implementation of ExecuteAudioRendererRendering
2019-03-01service/audio/audren_u: Implement OpenAudioRendererAutoLioncash
This currently has the same behavior as the regular OpenAudioRenderer API function, so we can just move the code within OpenAudioRenderer to an internal function that both service functions call.
2019-03-01service/audio: Provide an implementation of ExecuteAudioRendererRenderingLioncash
This service function appears to do nothing noteworthy on the switch. All it does at the moment is either return an error code or abort the system. Given we obviously don't want to kill the system, we just opt for always returning the error code.
2019-02-27service/hid: Amend forward declaration of ServiceManagerLioncash
The SM namespace is within the Service namespace, so this was forward declaring a type that didn't exist.
2019-02-27Merge pull request #2169 from lioncash/namingbunnei
audio_core/audio_renderer: Provide names for some parameters of AudioRendererParameter
2019-02-27Merge pull request #2161 from lioncash/handle-tablebunnei
kernel/handle_table: Allow process capabilities to limit the handle table size
2019-02-27audio_core/audio_renderer: Name previously unknown parameters of ↵Lioncash
AudioRendererParameter Provides names for previously unknown entries (aside from the two u8 that appear to be padding bytes, and a single word that also appears to be reserved or padding). This will be useful in subsequent changes when unstubbing behavior related to the audio renderer services.
2019-02-27common/math_util: Move contents into the Common namespaceLioncash
These types are within the common library, so they should be within the Common namespace.
2019-02-26service/vi: Unstub GetDisplayServiceLioncash
This function is also supposed to check its given policy type with the permission of the service itself. This implements the necessary machinery to unstub these functions. Policy::User seems to just be basic access (which is probably why vi:u is restricted to that policy), while the other policy seems to be for extended abilities regarding which displays can be managed and queried, so this is assumed to be for a background compositor (which I've named, appropriately, Policy::Compositor).
2019-02-26core/ipc_helper: Allow popping all signed value types with RequestParserLioncash
There's no real reason this shouldn't be allowed, given some values sent via a request can be signed. This also makes it less annoying to work with popping enum values, given an enum class with no type specifier will work out of the box now. It's also kind of an oversight to allow popping s64 values, but nothing else.
2019-02-26service/vi: Remove use of a module classLioncash
This didn't really provide much benefit here, especially since the subsequent change requires that the behavior for each service's GetDisplayService differs in a minor detail. This also arguably makes the services nicer to read, since it gets rid of an indirection in the class hierarchy.
2019-02-25kernel/handle_table: Make local variables as const where applicableLioncash
Makes immutable state explicit.
2019-02-25kernel/handle_table: Allow process capabilities to limit the handle table sizeLioncash
The kernel allows restricting the total size of the handle table through the process capability descriptors. Until now, this functionality wasn't hooked up. With this, the process handle tables become properly restricted. In the case of metadata-less executables, the handle table will assume the maximum size is requested, preserving the behavior that existed before these changes.
2019-02-25kernel/handle-table: In-class initialize data membersLioncash
Directly initializes members where applicable.
2019-02-25kernel/handle_table: Resolve truncation warningsLioncash
Avoids implicit truncation warnings from u32 -> u16 (the truncation is desirable behavior here).
2019-02-25service/vi: Update IManagerDisplayService's function tableLioncash
Amends it to add the 7.0.0+ CreateStrayLayer function.
2019-02-21service/nvflinger: Store BufferQueue instances as regular data membersLioncash
The NVFlinger service is already passed into services that need to guarantee its lifetime, so the BufferQueue instances will already live as long as they're needed. Making them std::shared_ptr instances in this case is unnecessary.
2019-02-21service/vi/vi_layer: Convert Layer struct into a classLioncash
Like the previous changes made to the Display struct, this prepares the Layer struct for changes to its interface. Given Layer will be given more invariants in the future, we convert it into a class to better signify that.
2019-02-21service/nvflinger: Move display specifics over to vi_displayLioncash
With the display and layer structures relocated to the vi service, we can begin giving these a proper interface before beginning to properly support the display types. This converts the display struct into a class and provides it with the necessary functions to preserve behavior within the NVFlinger class.
2019-02-19service/nvflinger: Relocate definitions of Layer and Display to the vi serviceLioncash
These are more closely related to the vi service as opposed to the intermediary nvflinger. This also places them in their relevant subfolder, as future changes to these will likely result in subclassing to represent various displays and services, as they're done within the service itself on hardware. The reasoning for prefixing the display and layer source files is to avoid potential clashing if two files with the same name are compiled (e.g. if 'display.cpp/.h' or 'layer.cpp/.h' is added to another service at any point), which MSVC will actually warn against. This prevents that case from occurring. This also presently coverts the std::array introduced within f45c25aabacc70861723a7ca1096a677bd987487 back to a std::vector to allow the forward declaration of the Display type. Forward declaring a type within a std::vector is allowed since the introduction of N4510 (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4510.html) by Zhihao Yuan.
2019-02-16address_arbiter: Use nested namespaces where applicableLioncash
A fairly trivial change. Other sections of the codebase use nested namespaces instead of separate namespaces here. This one must have just been overlooked.
2019-02-15core_timing: Convert core timing into a classLioncash
Gets rid of the largest set of mutable global state within the core. This also paves a way for eliminating usages of GetInstance() on the System class as a follow-up. Note that no behavioral changes have been made, and this simply extracts the functionality into a class. This also has the benefit of making dependencies on the core timing functionality explicit within the relevant interfaces.
2019-02-12core_timing: Rename CoreTiming namespace to Core::TimingLioncash
Places all of the timing-related functionality under the existing Core namespace to keep things consistent, rather than having the timing utilities sitting in its own completely separate namespace.
2019-02-08nvdisp_disp0: change drawing message log level from Warning to TraceTobias
This is a leftover from the early yuzu days. We shouldn't log every time when we are drawing by default, so let's change the log level to Trace.
2019-02-06remove all occurance of specifying endianness inside BitFieldWeiyi Wang
This commit it automatically generated by command in zsh: sed -i -- 's/BitField<\(.*\)_le>/BitField<\1>/g' **/*(D.) BitField is now aware to endianness and default to little endian. It expects a value representation type without storage specification for its template parameter.
2019-02-05service/nvflinger,service/vi: Handle failure cases with exposed APILioncash
Converts many of the Find* functions to return a std::optional<T> as opposed to returning the raw return values directly. This allows removing a few assertions and handles error cases like the service itself does.
2019-02-05service/nvflinger: Mark FindVsyncEvent() as a const member functionLioncash
This member function doesn't actually modify instance state, so it can be marked as a const member function.
2019-02-05service/nvflinger: Rename GetVsyncEvent() to FindVsyncEvent()Lioncash
This was missed within #2075. Renames the member function to make it consistent with the rest of the Find* functions.
2019-02-01Merge pull request #2073 from lioncash/opusbunnei
hwopus: Implement DecodeInterleaved (the newest variant)
2019-01-31kernel: Remove the Timer classLioncash
A holdover from citra, the Horizon kernel on the switch has no prominent kernel object that functions as a timer. At least not to the degree of sophistication that this class provided. As such, this can be removed entirely. This class also wasn't used at all in any meaningful way within the core, so this was just code sitting around doing nothing. This also allows removing a few things from the main KernelCore class that allows it to use slightly less resources overall (though very minor and not anything really noticeable).
2019-01-31Merge pull request #2072 from lioncash/servicebunnei
service: Update function tables
2019-01-31Merge pull request #2077 from lioncash/virtbunnei
kernel/wait_object: Devirtualize functions related to manipulating the thread list directly
2019-01-30kernel/wait_object: Devirtualize functions related to manipulating the ↵Lioncash
thread list directly No inheritors of the WaitObject class actually make use of their own implementations of these functions, so they can be made non-virtual. It's also kind of sketchy to allow overriding how the threads get added to the list anyways, given the kernel itself on the actual hardware doesn't seem to customize based off this.
2019-01-30kernel/timer: Remove unnecessary WakeupAllWaitingThreads() overrideLioncash
This implementation just calls the base class variant of the function, so this isn't necessary.
2019-01-30kernel/readable_event: Remove unnecessary WakeupAllWaitingThreads() overrideLioncash
This just calls the base variant of the function, so it can be removed.
2019-01-30hwopus: Implement DecodeInterleavedLioncash
This functions almost identically to DecodeInterleavedWithPerfOld, however this function also has the ability to reset the decoder context. This is documented as a potentially desirable thing in the libopus manual in some circumstances as it says for the OPUS_RESET_STATE ctl: "This should be called when switching streams in order to prevent the back to back decoding from giving different result from one at a time decoding."
2019-01-30service/nvflinger: Make FindBufferQueueId() a const member functionLioncash
This member function doesn't actually modify instance state, so it can be const-qualified.
2019-01-30service/nvflinger: Rename Get prefix on function to FindLioncash
This more accurately describes what the function is actually attempting to do (it's not a simple trivial getter).
2019-01-29hwopus: Deduplicate the decoding code within DecodeInterleavedOld and ↵Lioncash
DecodeInterleavedWithPerfOld Keeps the logic in one spot for use by both functions.
2019-01-29hwopus: Replace std::optional<std::reference_wrapper<u64>> with u64*Lioncash
This doesn't really offer anything over the use of a direct pointer, so we can just use that instead.