summaryrefslogtreecommitdiffstats
path: root/src/video_core/gpu_asynch.cpp (follow)
Commit message (Collapse)AuthorAgeFilesLines
* video_core: NVDEC Implementationameerj2020-10-271-2/+24
| | | | | | | | | | | | | | 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>
* video_core: Initialize renderer with a GPUReinUsesLisp2020-08-221-6/+4
| | | | | Add an extra step in GPU initialization to be able to initialize render backends with a valid GPU instance.
* General: Correct rebase, sync gpu and context management.Fernando Sahmkow2020-06-271-1/+8
|
* OpenGL: Implement Fencing backend.Fernando Sahmkow2020-04-221-0/+4
|
* CMakeLists: Make -Wreorder a compile-time errorLioncash2020-04-151-2/+3
| | | | | | This can result in silent logic bugs within code, and given the amount of times these kind of warnings are caused, they should be flagged at compile-time so no new code is submitted with them.
* GPU: Setup Flush/Invalidate to use VAddr instead of CacheAddrFernando Sahmkow2020-04-061-3/+3
|
* Frontend/GPU: Refactor context managementJames Rowe2020-03-251-3/+6
| | | | | | | | | | | | | | | | | | | | Changes the GraphicsContext to be managed by the GPU core. This eliminates the need for the frontends to fool around with tricky MakeCurrent/DoneCurrent calls that are dependent on the settings (such as async gpu option). This also refactors out the need to use QWidget::fromWindowContainer as that caused issues with focus and input handling. Now we use a regular QWidget and just access the native windowHandle() directly. Another change is removing the debug tool setting in FrameMailbox. Instead of trying to block the frontend until a new frame is ready, the core will now take over presentation and draw directly to the window if the renderer detects that its hooked by NSight or RenderDoc Lastly, since it was in the way, I removed ScopeAcquireWindowContext and replaced it with a simple subclass in GraphicsContext that achieves the same result
* Core: Wait for GPU to be idle before shutting down.Fernando Sahmkow2019-10-051-0/+4
|
* gpu: Change optional<reference_wrapper<T>> to T* for FramebufferConfigReinUsesLisp2019-08-211-3/+2
|
* GPU: Correct Interrupts to interrupt on syncpt/value instead of event, mirroring hardwareFernando Sahmkow2019-07-051-2/+2
|
* nv_host_ctrl: Make Sync GPU variant always return synced result.Fernando Sahmkow2019-07-051-1/+1
|
* Gpu: Implement Hardware Interrupt Manager and manage GPU interruptsFernando Sahmkow2019-07-051-0/+7
|
* video_core/gpu: Create threads separately from initializationLioncash2019-04-121-1/+5
| | | | | | | | | Like with CPU emulation, we generally don't want to fire off the threads immediately after the relevant classes are initialized, we want to do this after all necessary data is done loading first. This splits the thread creation into its own interface member function to allow controlling when these threads in particular get created.
* gpu_thread: Improve synchronization by using CoreTiming.bunnei2019-04-021-1/+1
|
* gpu: Use host address for caching instead of guest address.bunnei2019-03-151-3/+3
|
* gpu: Refactor a/synchronous implementations into their own classes.bunnei2019-03-071-0/+37