summaryrefslogtreecommitdiffstats
path: root/src/video_core/gpu_thread.cpp (follow)
Commit message (Collapse)AuthorAgeFilesLines
* gpu: gpu_thread: Ensure MicroProfile is shutdown on exit.bunnei2020-12-291-0/+3
|
* video_core: gpu_thread: Do not wait when system is powered down.bunnei2020-12-291-1/+2
|
* video_core: gpu: Implement synchronous mode using threaded GPU.bunnei2020-12-291-6/+24
|
* video_core: Resolve more variable shadowing scenariosLioncash2020-12-041-8/+8
| | | | | | Resolves variable shadowing scenarios up to the end of the OpenGL code to make it nicer to review. The rest will be resolved in a following commit.
* video_core: NVDEC Implementationameerj2020-10-271-4/+12
| | | | | | | | | | | | | | 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: Remove unused variablesLioncash2020-07-211-2/+2
| | | | Silences several compiler warnings about unused variables.
* General: Tune the priority of main emulation threads so they have higher priority than less important helper threads.Fernando Sahmkow2020-06-271-0/+1
|
* General: Setup yuzu threads' microprofile, naming and registry.Fernando Sahmkow2020-06-271-1/+5
|
* Async GPU: Correct flushing behavior to be similar to old async GPU behavior.Fernando Sahmkow2020-04-221-0/+4
|
* Async GPU: Only do reactive flushing on Extreme Level.Fernando Sahmkow2020-04-221-1/+1
|
* GPU: Implement Flush Requests for Async mode.Fernando Sahmkow2020-04-221-6/+11
|
* FenceManager: Implement async buffer cache flushes on High settingsFernando Sahmkow2020-04-221-1/+1
|
* Rasterizer: Document SignalFence & ReleaseFences and setup skeletons on Vulkan.Fernando Sahmkow2020-04-221-1/+4
|
* ThreadManager: Sync async reads on accurate gpu.Fernando Sahmkow2020-04-221-1/+6
|
* OpenGL: Implement Fencing backend.Fernando Sahmkow2020-04-221-0/+6
|
* GPU: Delay Fences.Fernando Sahmkow2020-04-221-1/+1
|
* BufferCache: Implement OnCPUWrite and SyncGuestHostFernando Sahmkow2020-04-221-1/+1
|
* GPU: Refactor synchronization on Async GPUFernando Sahmkow2020-04-221-3/+3
|
* GPU: Setup Flush/Invalidate to use VAddr instead of CacheAddrFernando Sahmkow2020-04-061-3/+3
|
* Frontend/GPU: Refactor context managementJames Rowe2020-03-251-6/+9
| | | | | | | | | | | | | | | | | | | | 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: frontend: Refactor scope_acquire_window_context to scope_acquire_context.bunnei2020-02-261-2/+2
|
* video_core/gpu_thread: Tidy up SwapBuffers()Lioncash2019-11-271-2/+1
| | | | | We can just use std::nullopt and std::make_optional to make this a little bit less noisy.
* gpu_thread: Don't spin wait if there are no GPU commands.bunnei2019-11-231-17/+15
|
* AsyncGpu: Address FeedbackFernando Sahmkow2019-10-111-1/+1
|
* Core: Wait for GPU to be idle before shutting down.Fernando Sahmkow2019-10-051-0/+5
|
* GPU_Async: Correct fences, display events and more.Fernando Sahmkow2019-10-051-13/+1
| | | | | | | This commit uses guest fences on vSync event instead of an articial fake fence we had. It also corrects to keep signaling display events while loading the game as the OS is suppose to send buffers to vSync during that time.
* gpu: Change optional<reference_wrapper<T>> to T* for FramebufferConfigReinUsesLisp2019-08-211-4/+4
|
* NVFlinger: Correct GCC compile errorFernando Sahmkow2019-07-051-2/+4
|
* gpu_asynch: Simplify synchronization to a simpler consumer->producer scheme.Fernando Sahmkow2019-07-051-15/+3
|
* Async GPU: do invalidate as synced operationFernando Sahmkow2019-07-051-6/+1
| | | | Async GPU: Always invalidate synced.
* core/core_timing_util: Use std::chrono types for specifying time unitsLioncash2019-06-051-1/+1
| | | | | Makes the interface more type-safe and consistent in terms of return values.
* yuzu: Remove explicit types from locks where applicableLioncash2019-05-141-1/+1
| | | | | With C++17's deduction guides, the type doesn't need to be explicitly specified within locking primitives anymore.
* video_core/gpu_thread: Remove unused local variableLioncash2019-05-101-1/+1
| | | | | | | | | Instead of retrieving the data from the std::variant instance, we can just check if the variant contains that type of data. This is essentially the same behavior, only it returns a bool indicating whether or not the type in the variant is currently active, instead of actually retrieving the data.
* video_core/gpu: Create threads separately from initializationLioncash2019-04-121-6/+11
| | | | | | | | | 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.
* video_core/gpu_thread: Silence truncation warning in ThreadManager's constructorLioncash2019-04-061-1/+1
| | | | | | | Since c5d41fd812d7eb1a04f36b76c08fe971cee0868c callback parameters were changed to use an s64 to represent late cycles instead of an int, so this was causing a truncation warning to occur here. Changing it to s64 is sufficient to silence the warning.
* gpu_thread: Improve synchronization by using CoreTiming.bunnei2019-04-021-10/+33
|
* gpu_thread: Remove unused dma_pusher class member variable from ThreadManagerLioncash2019-03-271-2/+2
| | | | | | The pusher instance is only ever used in the constructor of the ThreadManager for creating the thread that the ThreadManager instance contains. Aside from that, the member is unused, so it can be removed.
* gpu: Use host address for caching instead of guest address.bunnei2019-03-151-95/+41
|
* gpu_thread: Fix deadlock with threading idle state check.bunnei2019-03-071-4/+7
|
* gpu_thread: (HACK) Ignore flush on FlushAndInvalidateRegion.bunnei2019-03-071-3/+1
|
* gpu: Always flush.bunnei2019-03-071-8/+5
|
* gpu: Move command processing to another thread.bunnei2019-03-071-0/+154