summaryrefslogtreecommitdiffstats
path: root/src/video_core/host1x/vic.cpp (unfollow)
Commit message (Collapse)AuthorFilesLines
2022-10-06General: Fix clang format.Fernando Sahmkow1-2/+2
2022-10-06DMA & InlineToMemory Engines Rework.bunnei1-2/+3
2022-10-06NVDRV: Refactor Host1xFernando Sahmkow1-11/+11
2022-10-06VideoCore: Refactor syncing.Fernando Sahmkow1-2/+7
2022-06-14common: Change semantics of UNREACHABLE to unconditionally crashLiam1-1/+1
2022-04-23general: Convert source file copyright comments over to SPDXMorph1-3/+2
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.
2021-10-11vic: Use the minimum of surface/frame dimensions when writing the final frame to the GPUameerj1-16/+15
Addresses possible buffer overflow behavior.
2021-10-09vic: Allow surface to be higher than frameValeri1-2/+3
Touhou Genso Wanderer Lotus Labyrinth R decodes 1920x1080 videos into 1920x1088 surface. Only allow mismatch for height, since larger width would result in increasingly offset rows and somewhat defeat entire purpose of this check.
2021-10-08vic: Avoid memory corruption when multiple streams with different dimensions are decodedameerj1-0/+9
This is a work around to avoid buffer overflow errors until multi channel/multi stream decoding is supported.
2021-10-07vic: Refactor frame writing methodsameerj1-121/+142
2021-10-07vic: Implement RGBX frame formatameerj1-3/+14
2021-08-10vic: Specify sws_scale height stride.ameerj1-3/+2
Silences a sws_scale runtime warning about unaligned strides.
2021-08-04nvdec: Implement VA-API hardware video acceleration (#6713)yzct123451-33/+54
* nvdec: VA-API * Verify formatting * Forgot a semicolon for Windows * Clarify comment about AV_PIX_FMT_NV12 * Fix assert log spam from missing negation * vic: Remove forgotten debug code * Address lioncash's review * Mention VA-API is Intel/AMD * Address v1993's review * Hopefully fix CMakeLists style this time * vic: Improve cache locality * vic: Fix off-by-one error * codec: Async * codec: Forgot the GetValue() * nvdec: Address ameerj's review * codec: Fallback to CPU without VA-API support * cmake: Address lat9nq's review * cmake: Make VA-API optional * vaapi: Multiple GPU * Apply suggestions from code review Co-authored-by: Ameer J <52414509+ameerj@users.noreply.github.com> * nvdec: Address ameerj's review * codec: Use anonymous instead of static * nvdec: Remove enum and fix memory leak * nvdec: Address ameerj's review * codec: Remove preparation for threading Co-authored-by: Ameer J <52414509+ameerj@users.noreply.github.com>
2021-07-15vic: Fix dimension compuation of YUV framesameerj1-11/+10
Fixes out of bound memory crashes in Mario Golf
2021-06-28video_core: Remove #pragma warning directives for external headersMorph1-7/+0
2021-06-26codec,vic: Disable warnings in ffmpeg headersReinUsesLisp1-4/+21
2021-02-13 rebase, fix name shadowing, more constameerj1-5/+5
2021-02-13 streamline cdma_pusher/command_classesameerj1-13/+5
2021-02-13nvdec cleanupameerj1-8/+13
2021-02-13video_core: Reimplement the buffer cacheReinUsesLisp1-3/+0
Reimplement the buffer cache using cached bindings and page level granularity for modification tracking. This also drops the usage of shared pointers and virtual functions from the cache. - Bindings are cached, allowing to skip work when the game changes few bits between draws. - OpenGL Assembly shaders no longer copy when a region has been modified from the GPU to emulate constant buffers, instead GL_EXT_memory_object is used to alias sub-buffers within the same allocation. - OpenGL Assembly shaders stream constant buffer data using glProgramBufferParametersIuivNV, from NV_parameter_buffer_object. In theory this should save one hash table resolve inside the driver compared to glBufferSubData. - A new OpenGL stream buffer is implemented based on fences for drivers that are not Nvidia's proprietary, due to their low performance on partial glBufferSubData calls synchronized with 3D rendering (that some games use a lot). - Most optimizations are shared between APIs now, allowing Vulkan to cache more bindings than before, skipping unnecesarry work. This commit adds the necessary infrastructure to use Vulkan object from OpenGL. Overall, it improves performance and fixes some bugs present on the old cache. There are still some edge cases hit by some games that harm performance on some vendors, this are planned to be fixed in later commits.
2021-01-02general: Fix various spelling errorsMorph1-1/+1
2020-12-30video_core: Rewrite the texture cacheReinUsesLisp1-4/+4
The current texture cache has several points that hurt maintainability and performance. It's easy to break unrelated parts of the cache when doing minor changes. The cache can easily forget valuable information about the cached textures by CPU writes or simply by its normal usage.The current texture cache has several points that hurt maintainability and performance. It's easy to break unrelated parts of the cache when doing minor changes. The cache can easily forget valuable information about the cached textures by CPU writes or simply by its normal usage. This commit aims to address those issues.
2020-12-07video_core: Remove unnecessary enum class casting in logging messagesLioncash1-1/+1
fmt now automatically prints the numeric value of an enum class member by default, so we don't need to use casts any more. Reduces the line noise a bit.
2020-12-03vp9/vic: Resolve pessimizing movesLioncash1-1/+1
Removes the usage of moves that don't result in behavior different from a copy, or otherwise would prevent copy elision from occurring.
2020-11-25Queue decoded frames, cleanup decodersameerj1-10/+5
2020-10-27nvdec: Tidy up header includesLioncash1-1/+1
Prevents a few unnecessary inclusions.
2020-10-27video_core: NVDEC Implementationameerj1-0/+180
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>