aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle/service/vi
AgeCommit message (Collapse)Author
2020-04-29Don't fail silently for vi, sm, set and ns servicesDavid Marcec
2020-04-24vi: Don't let uninitialized data pass as a response for SetBufferCountDavid Marcec
Currently SetBufferCount doesn't write to the out buffer which then contains uninitialized data. This leads to non-zero data which leads to responding with different error codes
2020-04-15CMakeLists: Specify -Wextra on linux buildsLioncash
Allows reporting more cases where logic errors may exist, such as implicit fallthrough cases, etc. We currently ignore unused parameters, since we currently have many cases where this is intentional (virtual interfaces). While we're at it, we can also tidy up any existing code that causes warnings. This also uncovered a few bugs as well.
2020-04-10service/vi: Partially implement BufferQueue disconnectReinUsesLisp
2020-01-04service: vi: Implement CloseLayer.bunnei
- Needed for Undertale.
2019-11-24Merge pull request #3094 from lioncash/tablesbunnei
service: Update function tables
2019-11-24kernel: Replace usage of boost::intrusive_ptr with std::shared_ptr for ↵bunnei
kernel objects. (#3154) * kernel: Replace usage of boost::intrusive_ptr with std::shared_ptr for kernel objects. - See https://github.com/citra-emu/citra/pull/4710 for details.
2019-11-12service: Update function tablesLioncash
Keeps the function tables up to date. Updated based off information from Switchbrew.
2019-11-12service: Resolve sign conversion errorsLioncash
These are fairly trivial to resolve and most of the changes entail using RESULT_UNKNOWN over ResultCode(-1).
2019-11-06Merge pull request #3062 from bunnei/event-improvebunnei
kernel: Improve events
2019-11-03common_func: Use std::array for INSERT_PADDING_* macros.bunnei
- Zero initialization here is useful for determinism.
2019-11-03kernel: events: Remove ResetType::Automatic.bunnei
- This does not actually seem to exist in the real kernel - games reset these automatically. # Conflicts: # src/core/hle/service/am/applets/applets.cpp # src/core/hle/service/filesystem/fsp_srv.cpp
2019-09-22Deglobalize System: ViDavid Marcec
2019-07-05NVServices: Address FeedbackFernando Sahmkow
2019-07-05nv_services: Correct buffer queue fencing and GPFifo fencingFernando Sahmkow
2019-07-05nvflinger: Implement swap intervalsFernando Sahmkow
2019-05-24Merge pull request #2489 from FearlessTobi/port-4716bunnei
Port citra-emu/citra#4716: "HLE/IPC: HLEContext can memorize the client thread and use it for SleepClientThread"
2019-05-18core/kernel/object: Rename ResetType enum membersLioncash
Renames the members to more accurately indicate what they signify. "OneShot" and "Sticky" are kind of ambiguous identifiers for the reset types, and can be kind of misleading. Automatic and Manual communicate the kind of reset type in a clearer manner. Either the event is automatically reset, or it isn't and must be manually cleared. The "OneShot" and "Sticky" terminology is just a hold-over from Citra where the kernel had a third type of event reset type known as "Pulse". Given the Switch kernel only has two forms of event reset types, we don't need to keep the old terminology around anymore.
2019-05-18HLE/IPC: HLEContext can memorize the client thread and use it for ↵Weiyi Wang
SleepClientThread This reduces the boilerplate that services have to write out the current thread explicitly. Using current thread instead of client thread is also semantically incorrect, and will be a problem when we implement multicore (at which time there will be multiple current threads)
2019-04-05Merge pull request #2334 from lioncash/overridebunnei
core: Add missing override specifiers where applicable
2019-04-04hle/service: Resolve unused variable warningsLioncash
In several places, we have request parsers where there's nothing to really parse, simply because the HLE function in question operates on buffers. In these cases we can just remove these instances altogether. In the other cases, we can retrieve the relevant members from the parser and at least log them out, giving them some use.
2019-04-04core: Add missing override specifiers where applicableLioncash
Applies the override specifier where applicable. In the case of destructors that are defaulted in their definition, they can simply be removed. This also removes the unnecessary inclusions being done in audin_u and audrec_u, given their close proximity.
2019-03-13Merge pull request #2166 from lioncash/vi-init-servicebunnei
service/vi: Unstub GetDisplayService
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-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-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-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: 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-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-28service/vi: Remove stubbed notifier from SetLayerVisibilityLioncash
This appears to be a vestigial API function that's only kept around for compatibility's sake, given the function only returns a success error code and exits. Since that's the case, we can remove the stubbed notification from the log, since doing nothing is technically the correct behavior in this case.
2019-01-07Merge pull request #1989 from lioncash/setbunnei
service/vi: Unstub IApplicationDisplayService's SetLayerScalingMode
2019-01-04service/vi: Correct scaling mode conversionsLioncash
These values are not equivalent, based off RE. The internal value is put into a lookup table with the following values: [3, 0, 1, 2, 4] So the values absolutely do not map 1:1 like the comment was indicating.
2019-01-04service/vi: Factor out scaling mode conversions from the IPC function itselfLioncash
Avoids entangling the IPC buffer appending with the actual operation of converting the scaling values over. This also inserts the proper error handling for invalid scaling values.
2019-01-04service/vi: Unstub IApplicationDisplayService' SetLayerScalingMode()Lioncash
This appears to only check if the scaling mode can actually be handled, rather than actually setting the scaling mode for the layer. This implements the same error handling performed on the passed in values.
2019-01-04service/vi: Correct reported dimensions from IApplicationDisplayService's ↵Lioncash
GetDisplayResolution() Within the actual service, it makes no distinguishing between docked and undocked modes. This will always return the constants values reporting 1280x720 as the dimensions.
2019-01-03Merge pull request #1975 from lioncash/vibunnei
service/vi: Minor updates and corrections to the DisplayInfo struct
2019-01-02Merge pull request #1976 from lioncash/displaybunnei
service/vi: Implement OpenDefaultDisplay in terms of OpenDisplay
2019-01-02service/vi: Implement SetDisplayEnabled()Lioncash
This IPC command is simply a stub inside the actual service itself, and just returns a successful error code regardless of input. This is likely only retained in the service interface to not break older code that relied upon it succeeding in some way.
2019-01-02Merge pull request #1977 from lioncash/vi-logbunnei
service/vi: Log more information where applicable
2019-01-02service/vi: Log more information where applicableLioncash
In many cases, we didn't bother to log out any of the popped data members. This logs them out to the console within the logging call to provide more contextual information.
2019-01-02service/vi: Implement OpenDefaultDisplay in terms of OpenDisplayLioncash
Internally within the vi services, this is essentially all that OpenDefaultDisplay does, so it's trivial to just do the same, and forward the default display string into the function.
2019-01-02service/vi: Correct initial width and height valuesLioncash
Based off RE, it appears that almost all display types seem to use 1920x1080 except for a few (null display, edid display).
2019-01-02service/vi: Document unknown DisplayInfo struct membersLioncash
It appears that the two members indicate whether a display has a bounded number of layers (and if set, the second member indicates the total number of layers).
2018-12-31core/kernel: Remove unnecessary inclusionsLioncash
Gets rid of a few unnecessary header dependencies in some source files.
2018-12-03Merge pull request #1803 from DarkLordZach/k-able-eventbunnei
kernel: Divide Event into ReadableEvent and WritableEvent