Commit Graph

81 Commits

Author SHA1 Message Date
5da70f7197 Remove memory allocations in some hot paths 2023-06-22 08:05:10 +01:00
809148e1a5 nvnflinger: fix name 2023-03-01 10:39:49 -05:00
65be230fdd service: move hle_ipc from kernel 2023-03-01 10:39:49 -05:00
a936972614 service: refactor server architecture
Converts services to have their own processes
2023-02-21 12:19:25 -05:00
2d2522693e Revert "Merge pull request #9718 from yuzu-emu/revert-9508-hle-ipc-buffer-span"
This reverts commit 25fc5c0e11, reversing
changes made to af20e25081.
2023-02-03 00:08:45 -05:00
b01698775b Revert "hle_ipc: Use std::span to avoid heap allocations/copies when calling ReadBuffer" 2023-02-02 15:53:28 -05:00
f517f82416 nvdrv: Use std::span for inputs
Allows the use of HLERequestContext::ReadBufferSpan
2022-12-28 18:46:53 -05:00
ad787b20ca nvdrv: Simplify builder declarations
We can just use auto here. If one of these ever happens to not be
derived from nvdevice, then this will cause a compilation error.

We can also move the devices into the collection to get rid of an
unnecessary atomic reference count increment and decrement.
2022-11-28 10:43:48 -05:00
05f2673648 nvdrv: fix container destruction order 2022-10-23 19:25:57 -04:00
a9ace6856d kernel: remove KWritableEvent 2022-10-12 20:29:29 -04:00
ca3db0d7c9 General: address feedback 2022-10-06 21:00:54 +02:00
fedd983f96 general: Format licenses as per SPDX guidelines 2022-10-06 21:00:54 +02:00
8d774e7415 NvDec: Fix regressions. 2022-10-06 21:00:53 +02:00
920429fde7 NVDRV: Further refactors and eliminate old code. 2022-10-06 21:00:52 +02:00
2931101e6f NVDRV: Refactor Host1x 2022-10-06 21:00:52 +02:00
139ea93512 VideoCore: implement channels on gpu caches. 2022-10-06 21:00:51 +02:00
ad038609c8 NVDRV: Fix clearing when destroying. 2022-10-06 21:00:51 +02:00
af35dbcf63 NVDRV: Fix Open/Close and make sure each device is correctly created. 2022-10-06 21:00:51 +02:00
de0e8eff42 NVDRV: Implement new NvMap 2022-10-06 21:00:51 +02:00
3cbe352c18 NVDRV: Refactor and add new NvMap. 2022-10-06 21:00:51 +02:00
a21b8824fb NVDRV: Cleanup. 2022-10-06 21:00:51 +02:00
d30b885d71 NVDRV: Implement QueryEvent. 2022-10-06 21:00:51 +02:00
39a5ce4e69 NvHost: Remake Ctrl Implementation. 2022-10-06 21:00:51 +02:00
99ceb03a1c general: Convert source file copyright comments over to SPDX
This formats all copyright comments according to SPDX formatting guidelines.
Additionally, this resolves the remaining GPLv2 only licensed files by relicensing them to GPLv2.0-or-later.
2022-04-23 05:55:32 -04:00
7c4b6aab2e core: Remove unused includes 2021-11-03 21:42:57 -04:00
185b19fd5b hle: service: nvdrv: Remove unused kernel reference. 2021-07-20 18:54:56 -07:00
015058fadf hle: service: Add a helper module for managing kernel objects. 2021-07-20 18:54:55 -07:00
c6d7da88c7 service: Append service name prefix to common filenames 2021-07-14 02:09:14 -04:00
2e8d6fe9a0 hle: kernel: Migrate KReadableEvent and KWritableEvent to KAutoObject. 2021-05-05 16:40:51 -07:00
89edbe8aa2 hle: kernel: Refactor several threads/events/sharedmemory to use slab heaps. 2021-05-05 16:40:51 -07:00
ab704acab8 hle: kernel: Ensure all kernel objects with KAutoObject are properly created. 2021-05-05 16:40:51 -07:00
addc0bf037 hle: kernel: Migrate KEvent to KAutoObject. 2021-05-05 16:40:50 -07:00
5e5933256b hle: kernel: Refactor IPC interfaces to not use std::shared_ptr. 2021-05-05 16:40:50 -07:00
99fdfa1fcd nvdrv: Pass device fd and handle device create methods for device opening and closing
We pass the fd to the ioctl as well as alert the device when it's opened or closed to allow for fd unique actions to take place
2021-03-25 12:56:42 +11:00
ff3c7c068b hle: kernel: Reimplement KReadableEvent and KWritableEvent. 2021-02-05 14:03:32 -08:00
3f942c01f0 hle: kernel: Rename WritableEvent to KWritableEvent. 2021-02-05 14:00:36 -08:00
e86a7e3691 hle: kernel: Rename ReadableEvent to KReadableEvent. 2021-02-05 14:00:36 -08:00
2c27127d04 nvdec syncpt incorporation
laying the groundwork for async gpu, although this does not fully implement async nvdec operations
2021-01-07 14:33:45 -05:00
0c81b83ca9 hle: service: nvdrv: Revert #4981 to remove usage of SleepClientThread.
- Note, this always processes the ioctl right away, which fixes BotW 1.0.0 issues.
2020-12-28 16:33:48 -08:00
1a954b2a59 service: Eliminate usages of the global system instance
Completely removes all usages of the global system instance within the
services code by passing in the using system instance to the services.
2020-11-26 20:03:11 -05:00
ab25d1fe9a nvservices: Reintroducee IoctlCtrl
Fixes regression caused by #4907 which caused games like Breath of the Wild 1.0.0 not to boot.
2020-11-24 16:40:23 +11:00
fc4d692c50 Addressed issues 2020-11-10 15:57:36 +11:00
31c12de0fe core: Make nvservices more standardized 2020-11-10 15:57:35 +11:00
da7be67daf ipc_helpers: Remove usage of the global system instance
Resolves numerous deprecation warnings throughout the codebase due to
inclusion of this header. Now building core should be significantly less
noisy (and also relying on less global state).

This also uncovered quite a few modules that were relying on indirect
includes, which have also been fixed.
2020-11-08 15:58:11 -05:00
e67b8678f8 hle service: nvdrv: nvhost_gpu: Update to use SyncpointManager and other improvements.
- Refactor so that SubmitGPFIFO and KickoffPB use shared functionality.
- Implement add_wait and add_increment flags.
2020-11-01 01:52:38 -07:00
66edfd61c6 hle service: nvdrv: nvhost_ctrl: Update to use SyncpointManager. 2020-11-01 01:52:37 -07:00
4a3fd97e48 hle service: nvdrv: Update to instantiate SyncpointManager. 2020-11-01 01:52:34 -07:00
d567b7e841 hle: service: nvdrv: Implement SyncpointManager, to manage syncpoints. 2020-11-01 01:51:54 -07:00
eb67a45ca8 video_core: NVDEC Implementation
This commit aims to implement the NVDEC (Nvidia Decoder) functionality, with video frame decoding being handled by the FFmpeg library.

The process begins with Ioctl commands being sent to the NVDEC and VIC (Video Image Composer) emulated devices. These allocate the necessary GPU buffers for the frame data, along with providing information on the incoming video data. A Submit command then signals the GPU to process and decode the frame data.

To decode the frame, the respective codec's header must be manually composed from the information provided by NVDEC, then sent with the raw frame data to the ffmpeg library.

Currently, H264 and VP9 are supported, with VP9 having some minor artifacting issues related mainly to the reference frame composition in its uncompressed header.

Async GPU is not properly implemented at the moment.

Co-Authored-By: David <25727384+ogniK5377@users.noreply.github.com>
2020-10-26 23:07:36 -04:00
9046d4a548 kernel: Replace usage of boost::intrusive_ptr with std::shared_ptr for 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-24 20:15:51 -05:00