Commit Graph

50 Commits

Author SHA1 Message Date
Aryan Salmanpour 3624040ce7 Update Copyright year to 2025 (#486)
* Update Copyright year to 2025

* update year to 2025
2025-01-05 16:25:39 -05:00
Aryan Salmanpour 0b24f96bbb Add support for mapping GPU UUIDs to render nodes (#481)
* Add initial support for mapping uuid to render ndodes

* use uuid to find the render node

* Adjust offset for MI300 partition modes

* code cleanup
2024-12-19 14:12:57 -05:00
Aryan Salmanpour e3816a23e6 Add support for ROCR_VISIBLE_DEVICES environment variable (#478) 2024-12-17 12:04:59 -05:00
David Rosca 80e08f47c2 Create surfaces with linear modifier (#465)
Mesa will be enabling tiling for all VA surfaces by default,
but HIP doesn't support modifiers for dmabuf import.
2024-12-09 14:46:57 -05:00
jeffqjiangNew 3eb6bc2192 Added initial code for VP9 support. (#442)
* * rocDecode/VP9: Initial code for VP9.
 - Added structures for VA-API.
 - Added defines for uncompressed header and parsing functions.

* * rocDecode/VP9: Added decode frame call to VA-API.

* * rocDecode/VP9: Added new sequence notification function.

* * rocDecode/VP9: Intra decode started to work.

* * rocDecode/VP9: Minor changes based on review comments.

---------

Co-authored-by: Kiriti Gowda <kiritigowda@gmail.com>
2024-11-14 10:17:46 -05:00
Kiriti Gowda 69eb625d2d GPU Arch Updates (#448) 2024-11-06 20:37:07 -05:00
Lakshmi Kumar 69dead95cd va version bug fix for ub20 (#396) 2024-07-23 18:19:55 -04:00
Aryan Salmanpour d2ef14606c Fix a compilation issue in RHEL8 (#394) 2024-07-23 10:48:15 -04:00
jeffqjiangNew 1e5e9dacac AV1: Fixed build error on RHEL8 due to older VAAPI version. (#392)
* * rocDecode/AV1: Fixed build error on RHEL8 due to older VAAPI version.

* * rocDecode/AV1: Fixed build error on RHEL8 due to older VAAPI version.

* * rocDecode/AV1: Set VA profile for AV1 for older VAAPI versions where it is not defined.

* * rocDecode/AV1: Made rocDeocde AV1 built on VAAPI versions below 1.6.0 runnable with newer versions, to be able to test under RHEL8.
2024-07-22 12:29:41 -04:00
jeffqjiangNew ac82d17e9f * rocDecode/AV1: Added support for film grain synthesis and several other fixes. (#389)
- Added film grain parameter saving and loading procedures.
 - Added buffer management for film grain synthesis output.
 - Fixed the corruption issue with 10-bit film grain streams. We need to see surface attibutes based on pixel format when creating VAAPI surfaces.
 - Added missing global motion, loop filter and segmentation parameter loading in load reference frame procedure.
 - Fixed an issue with one tile streams.
 - Fixed an issue with un-initialized frame header structure after frame decode.
 - Fixed a bug with decode buffer status update.
2024-07-19 21:01:36 -04:00
Lakshmi Kumar 4f8506daec RHEL - va version check for av1 (#365)
* rhel va version check for av1

* remove #else case
2024-06-10 11:09:29 -04:00
Lakshmi Kumar c70e98abb6 AV1: VA-API submission (#362)
* av1 va-api submission

* adding check for anchor_frames and current_diplay_picture

* check limits for memory errors

* review comment - remove unnecessary check
2024-06-05 16:23:47 -04:00
Aryan Salmanpour 04a19c0aa9 Add support for handling exceptions while using the std::filesystem::recursive_directory_iterator (#358)
* FAdd support for handling exceptions while using the filesystem::recursive_directory_iterator

* use a common namesapce
2024-05-29 16:32:51 -04:00
Aryan Salmanpour bdb08ab644 Fix compilation issues on distro without std::filesystem (#348) 2024-05-08 14:45:32 -04:00
jeffqjiangNew 3ade0f31ff * rocDecode: Removed the workaround for the previous non-blocking implementation of vaSyncSurface() in the driver, since the correct implementation has been put into the driver already. (#340) 2024-05-06 17:40:15 -04:00
jeffqjiangNew 21ae1d010a * rocDecode: Set the correct surface format for high bit depths. (#339)
- No functional changes as surface format does not affect the actual allocation of the VA surface in this call due to IHV specific implementation. The app still needs to set the format correctly.

Co-authored-by: Aryan Salmanpour <aryan.salmanpour@amd.com>
2024-05-06 08:09:23 -04:00
Aryan Salmanpour f2d1ad75eb Use the correct offset when creating render nodes on each partition mode on MI300 (#310)
* Use the correct offset when creating render nodes on each partition mode on MI300

* Use the correct offset when creating render nodes on each partition mode on MI300

* code clean up
2024-04-09 18:17:02 -04:00
Aryan Salmanpour 30790842f1 Add support for various partition modes on MI300 (#302)
* Add support for various partition modes on MI300

* code clean up
2024-03-28 21:40:45 -04:00
Aryan Salmanpour 4d5497eec8 modify the condition of using visble_devices by making sure that the requsted device id is valid (#295) 2024-03-26 11:40:59 -04:00
Aryan Salmanpour f94422f722 code clean up - remove extra parentheses (#293) 2024-03-25 15:11:43 -04:00
Aryan Salmanpour cb4abfedec Add support for detecting visible devices before initializing va-api (#292) 2024-03-25 14:31:02 -04:00
jeffqjiangNew 00127f16f1 Implemented proper slice parameter buffer submission for multiple slice streams. (#226)
* * rocDecode: Implemented proper slice parameter buffer submission for multiple slice streams.
 - We were submitting single slice parameter buffer for multiple slice streams. This works for other APIs but not for VAAPI, which requires to send slice parameter buffer once per slice.
 - At step 1, all the multi-slice structures are fixed sized (256). Will make them dynamic in the next step.
 - With this change, all 135 HEVC conformance streams now pass.

* * rocDecode: Multiple slice change step 2: make the fixed size slice info structure lists dynamic.

* * rocDecode: Minor changes in comments. No functional changes.

* *rocDecode: Changed INIT_SLICE_PARAM_LIST_NUM from 256 back to 16. 256 was set during debug process.

* * rocDecode: Add suggest changes from code review.

* * rocDecode: Moved slice_params_buf_id_ initialization to class VaapiVideoDecoder declaration, as suggested by code review.
2024-02-09 15:09:49 -05:00
Aryan Salmanpour 15526253c7 Enhance logging error in rocDecode library - let the upper level class prints the correct error code string instead of integer code from lower levels (#223) 2024-02-06 13:35:41 -05:00
Aryan Salmanpour 929123abff Fix the performance issue introduced after PR#192 (#220)
* Fix the performance issue introduced after PR#192

* Destroy the current interop memories before reconfiguration

* initialize the interop to 0 after unmapping a surface

* code clean up

* check the mapped device mem/ext mem to be valid before destrying them

* code cleanup - add some comments

* make changes based on the reviewer comments
2024-02-05 17:12:39 -05:00
Aryan Salmanpour e90a93eb4a use the error code of VA_STATUS_ERROR_TIMEDOUT to avoid build failure with older va headers (#211) 2024-01-30 13:33:53 -05:00
jeffqjiangNew a55b967f86 * rocDecode: Removed warning message about vaSyncSurface() time out error. (#209) 2024-01-29 14:21:21 -05:00
jeffqjiangNew 10e3f0aeec * rocDecode: Added back vaSyncSurface() to ExportSurface() call to guarantee decode completion. (#205)
- Needed to take care of time out case. Current implementation of vaSyncSurface() does not block indefinitely (contrary to VA-API spec), it returns VA_STATUS_ERROR_TIMEDOUT error when it blocks for a certain amount of time. Although time out can come from various reasons, we treat it as non-fatal and contiue waiting.
2024-01-26 11:48:30 -05:00
jeffqjiangNew cd6401750e Changed rocDecode API header variable naming to Google C++ style. (#196)
* * rocDecode: Changed rocDecode API header variable naming to Google C++ style.

* * rocDecode: Unified AVC/H264 naming to AVC. Minor naming changes on HEVC related names.

* * rocDecode: Minor comment fix based on code review.
2024-01-24 18:03:46 -05:00
jeffqjiangNew 426067898c AVC: Added decode picture callback from parser to decoder and VAAPI decode submission. (#190)
* * rocDecode/AVC: Added decode picture callback from parser to decoder and VAAPI decode submission.

* * rocDecode/AVC: Minor changes based on code review comments.

* * rocDecode/AVC: Removed a redundant line.

* * rocDecode/AVC: Condensed several lines based on code review feedback.
2024-01-23 17:30:29 -08:00
Lakshmi Kumar a65c52bc71 fixes crashes from vaSyncSurface call (#195) 2024-01-22 15:43:11 -08:00
Aryan Salmanpour fb953b4366 Add support to correctly detect the gfx name for gfx940/gfx941/gfx942 (#178) 2024-01-16 14:49:54 -05:00
jeffqjiangNew 04fe74f390 * rocDecode: Updated Copyright message for 2024. (#160) 2024-01-09 20:47:16 -05:00
jeffqjiangNew 33d6b37ddb * rocDecode/HEVC: Fixed a bug in destroy data buffer function in VAAPI layer. (#150)
- We have to clear the buffer id after destroying it. Without this clearing, we will encounter VAAPI buffer destroy failure on certain conformance streams where scaling list is signaled dynamically. In this case, we create different number of data buffers on different frames. If we do not clear the buffer id when destroying it, a dummy scaling list buffer id will have the same value as another buffer, resulting double destroy.
2024-01-02 15:56:18 -05:00
Aryan Salmanpour 6c07e53614 Check va_display_ to be valid before calling any VA APIs (#148) 2023-12-21 08:16:24 -08:00
jeffqjiangNew 0fbd030b5d Fixed the random crash associated with undecodable RASL pictures. (#141)
* * rocDecode/HEVC: Fixed the random crash associated with undecodable RASL pictures.
  - When a CRA picutre occurs, all the pictures in the DPB are emptied. However, the following RASL (Random Access Skipped Leading) picture can still reference these emptied pictures, making them undecodeble.
  - We initialized the reference picture lists with (0xFF), representing invalid picture index. Normally these invalid indices are replaced by valid values during RPS decoding. However, on undecodable RASL pictures, we can not find an existing reference picture in DPB, leaving the invalid index untouched and resulting invalid indexing later on.
  - Now we initialize the reference picture lists with a valid value 0. Also we add index range check on reference buffer at VA-API layer to avoid invalid memory access.

* * rocDecode/HEVC: Fixed a typo in sampel app message.
2023-12-15 15:54:43 -05:00
Aryan Salmanpour 9a78101d22 return the correct rocdec_status if DestroyDataBuffers fails (#137) 2023-12-13 10:57:14 -05:00
Aryan Salmanpour b8a8b66b91 Don't call DestroyDataBuffers during the reconfiguration - this function will be called during SubmitDecode (#131) 2023-12-11 17:10:10 -05:00
Aryan Salmanpour b77d00e38e Fix perf drop on some MI250 nodes - create VABuffers for every submission, and don't use vaMapBuffer/vaUnmapBuffer (#129)
* create VABuffers for every submission, and don't use vaMapBuffer/vaUnmapBuffer

* code clean up

* address review comments
2023-12-11 15:40:50 -05:00
Aryan Salmanpour 875994bb4f Add support for rocDecReconfigureDecoder API (#116)
* Add support for rocDecReconfigureDecoder API

* adrress reviewer's comemnts

* Add doxygen comment for ReconfigureDecoder function
2023-12-05 11:16:32 -05:00
Aryan Salmanpour e5d5bd4abb Return an error if the ExportSurface function fails. Add extra error logging in the destructor of the VaapiVideoDecoder class (#87) 2023-11-27 13:08:34 -05:00
Rajy Rawther 81abe58fb4 Rr/vaapi decoder mem check (#74)
* add some checks for buffer requirements

* address review comments
2023-11-17 17:33:12 -05:00
jeffqjiangNew 3357aba104 * rocDecode/HEVC: Fixed a few issues in reference list setup. Also looks like we need to use VA surface IDs on all buffers including the reference (need to confirm with VA driver team). (#61) 2023-11-14 11:42:13 -05:00
jeffqjiangNew 3c7f29dab4 Added picture decode submission to VA-API driver. (#54)
* * rocDeocde/HEVC: Added several "reserved" fields to structs to match the corresponding VA-API structs.

* * rocDecode/HEVC: Added decode submission to VA-API driver.

* * rocDecode/HEVC: Corrected data buffer id type.
2023-11-10 17:15:47 -05:00
Aryan Salmanpour 7a90c0c054 Add support for rocDecMapVideoFrame API (#53) 2023-11-10 17:02:57 -05:00
Aryan Salmanpour 6ab31ce40e Add support for rocDecGetDecodeStatus API (#46) 2023-11-09 08:47:58 -05:00
Aryan Salmanpour 2c940dd9d0 Add support for creating a vaapi context and surfaces for decoding (#41) 2023-11-07 13:47:53 -05:00
Aryan Salmanpour ba484a91a9 Create the correct render node names on MI300A/MI300X (#38) 2023-11-07 11:08:20 -05:00
jeffqjiangNew f56a64d832 Decode callback step 1: Added skeleton decode callback to get the flow going. (#39)
* * rocDecode/HEVC: Added skeleton decode callback to get the flow going.

* *rocDecode/HEVC: Added error handling for decode call.
2023-11-06 22:04:25 -05:00
Aryan Salmanpour 32f854c159 Add support for rocDecCreateDecoder API (#28)
* Add support for rocDecCreateDecoder API

* check the decoder config support before initializing the vaapi

* rename RocdecDecoderCreateInfo to RocDecoderCreateInfo

* fix a typo
2023-11-01 09:22:46 -04:00
Rajy Rawther 4ea67e279d rocDecode api defintions added for decoder and parser (#6)
* rocDecode api defintions added for decoder and parser

* addressed review comments and changed struct names to CamelCase

* minot reformatting
2023-09-14 10:33:28 -04:00