3
0
Fork 0
forked from suyu/suyu
suyu/src/video_core
ameerj 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
..
buffer_cache video_core: Remove all Core::System references in renderer 2020-09-06 05:28:48 -03:00
command_classes video_core: NVDEC Implementation 2020-10-26 23:07:36 -04:00
engines video_core: Enforce -Wclass-memaccess 2020-10-09 16:46:11 -03:00
host_shaders video_core: Fix instances where msbuild always regenerated host shaders 2020-09-23 22:27:17 -03:00
macro General: Make use of std::nullopt where applicable 2020-09-22 17:32:33 -04:00
renderer_opengl gl_arb_decompiler: Implement robust buffer operations 2020-10-20 03:34:32 -03:00
renderer_vulkan Merge pull request #4204 from ReinUsesLisp/vulkan-1.0 2020-10-19 14:18:54 -07:00
shader shader/texture: Implement CUBE texture type for TMML and fix arrays 2020-10-07 23:17:46 -03:00
texture_cache General: Make use of std::nullopt where applicable 2020-09-22 17:32:33 -04:00
textures textures/decoders: Fix block linear to pitch copies 2020-08-10 20:45:03 -03:00
cdma_pusher.cpp video_core: NVDEC Implementation 2020-10-26 23:07:36 -04:00
cdma_pusher.h video_core: NVDEC Implementation 2020-10-26 23:07:36 -04:00
CMakeLists.txt video_core: NVDEC Implementation 2020-10-26 23:07:36 -04:00
compatible_formats.cpp video_core: Rearrange pixel format names 2020-07-13 01:44:23 -03:00
compatible_formats.h compatible_formats: Add missing header guard 2020-07-21 00:42:19 -04:00
dirty_flags.cpp DirtyFlags: relax need to set render_targets as dirty 2020-03-14 11:47:33 -04:00
dirty_flags.h DirtyFlags: relax need to set render_targets as dirty 2020-03-14 11:47:33 -04:00
dma_pusher.cpp DmaPusher: Remove dead code in step 2020-05-16 12:42:27 +10:00
dma_pusher.h DmaPusher: Remove dead code in step 2020-05-16 12:42:27 +10:00
fence_manager.h video_core: Remove all Core::System references in renderer 2020-09-06 05:28:48 -03:00
gpu.cpp video_core: NVDEC Implementation 2020-10-26 23:07:36 -04:00
gpu.h video_core: NVDEC Implementation 2020-10-26 23:07:36 -04:00
gpu_asynch.cpp video_core: NVDEC Implementation 2020-10-26 23:07:36 -04:00
gpu_asynch.h video_core: NVDEC Implementation 2020-10-26 23:07:36 -04:00
gpu_synch.cpp video_core: NVDEC Implementation 2020-10-26 23:07:36 -04:00
gpu_synch.h video_core: NVDEC Implementation 2020-10-26 23:07:36 -04:00
gpu_thread.cpp video_core: NVDEC Implementation 2020-10-26 23:07:36 -04:00
gpu_thread.h video_core: NVDEC Implementation 2020-10-26 23:07:36 -04:00
guest_driver.cpp gl_shader_cache: Rework shader cache and remove post-specializations 2020-03-09 18:40:06 -03:00
guest_driver.h gl_shader_cache: Rework shader cache and remove post-specializations 2020-03-09 18:40:06 -03:00
memory_manager.cpp video_core: NVDEC Implementation 2020-10-26 23:07:36 -04:00
memory_manager.h video_core: NVDEC Implementation 2020-10-26 23:07:36 -04:00
morton.cpp video_core: Rearrange pixel format names 2020-07-13 01:44:23 -03:00
morton.h renderer_opengl: Use block linear swizzling for CPU framebuffers 2019-08-21 02:17:14 -03:00
query_cache.h renderer_vulkan: Make unconditional use of VK_KHR_timeline_semaphore 2020-09-19 01:46:37 -03:00
rasterizer_accelerated.cpp core: memory: Move to Core::Memory namespace. 2020-04-17 00:59:28 -04:00
rasterizer_accelerated.h core: memory: Move to Core::Memory namespace. 2020-04-17 00:59:28 -04:00
rasterizer_interface.h video_core: Remove all Core::System references in renderer 2020-09-06 05:28:48 -03:00
renderer_base.cpp video_core: Initialize renderer with a GPU 2020-08-22 01:51:45 -03:00
renderer_base.h renderer_opengl: Remove emulated mailbox presentation 2020-09-20 16:29:41 -03:00
sampler_cache.cpp
sampler_cache.h
shader_cache.h shader_cache: Make use of std::erase_if 2020-07-14 15:49:15 -04:00
shader_notify.cpp Fix style issues 2020-07-18 14:24:32 +10:00
shader_notify.h async shaders 2020-07-17 14:24:57 +10:00
surface.cpp video_core: Rearrange pixel format names 2020-07-13 01:44:23 -03:00
surface.h video_core: Rearrange pixel format names 2020-07-13 01:44:23 -03:00
video_core.cpp video_core: NVDEC Implementation 2020-10-26 23:07:36 -04:00
video_core.h Frontend/GPU: Refactor context management 2020-03-24 21:03:42 -06:00