Commit Graph

109 Commits

Author SHA1 Message Date
Govindaraj Rajagopal
b2e9fada31 video: driver: restrict image load to 16K x 16K
Add strict check in msm_vidc_check_mbpf_supported() to
reject image session, if total image load exceeds 16K.
Added msm_vidc_print_insts_info() support to print all
running instance info, if new session is rejected due
to mbpf/mbps checks.

Change-Id: I98bab985fcf4f4d20c6f263c48e0c701ec86ab6f
Signed-off-by: Govindaraj Rajagopal <grajagop@codeaurora.org>
2021-05-31 17:11:46 +05:30
Govindaraj Rajagopal
69e6b8c0ca video: driver: fix race between streamoff and ipsc
During input port streamoff, state is changed from START_INPUT
to OPEN and then sent CMD_STOP to firmware. So reverse thread
acquired the lock and trying to process IPSC. Since IPSC is
not allowed in OPEN state, driver treats that as a fatal issue
and moves inst->state to ERROR state. Added change to avoid
above mentioned issue.

Change-Id: If0e18f01b6ecac3c810c0dab878ae392c48ffc27
Signed-off-by: Govindaraj Rajagopal <grajagop@codeaurora.org>
2021-05-28 11:24:52 +05:30
Darshana Patil
e5ec6843e8 video: driver: modify max mapped output count
adjust MAX_MAP_OUTPUT_COUNT based on resolution
to enhance performance and reduce memory pressure.
- For 8K session: count = 20
- For 4K session: count = 32
- For 1080p session: count = 48
- For all remaining sessions: count = 64

reduce MAX_DPB_COUNT to 32.
reduce DEFAULT_MAX_HOST_BUF_COUNT to 64.

Change-Id: I0e6d25121947524b843e9cce96b75871aba174af
Signed-off-by: Darshana Patil <darshana@codeaurora.org>
2021-05-24 16:58:19 -07:00
Darshana Patil
d538a9ff99 video: driver: optimise release buffer function
Do not unmap buffers when firmware sends release
done. Only delete these buffers from release list.
Unmap buffers when removing stale entries from
mappings list.
update max dpb count to 32 and host buf count to 128.

Change-Id: I71fc3f722f068d8f2eeeb81041d4e495092c254f
Signed-off-by: Darshana Patil <darshana@codeaurora.org>
2021-05-21 17:44:17 +05:30
Govindaraj Rajagopal
53578c8ec2 video: driver: fix core lock acquire and release sequence
[1] Added return type to strict_check() api and bail out if
    strict_check fails.
[2] Fix all the failures with #1.
[3] Added WARN_ON() for strict_check failure.
[4] Ensured &core->lock is acquired before calling below api's.
    - __write_register
    - __write_register_masked
    - __iface_cmdq_write_relaxed
    - __suspend
    - __resume
    - venus_hfi_core_init
    - venus_hfi_core_deinit.

Change-Id: I7f0a3ca6c2aec2758220c90bff9260367f10820b
Signed-off-by: Govindaraj Rajagopal <grajagop@codeaurora.org>
2021-05-20 14:34:11 +05:30
Govindaraj Rajagopal
d9518d9182 video: driver: fix list usage without init
If workqueue creation fails, driver is accessing buffer lists
in session close sequence, which is not yet inited and leading
to NULL ptr dereferrence issue, while traversing uninitialized
list. So added change to avoid accessing list without init
completion.

Change-Id: Icb3aa6b7edaf27e73873ec289d6a921a2613e77e
Signed-off-by: Govindaraj Rajagopal <grajagop@codeaurora.org>
2021-05-17 21:51:03 +05:30
qctecmdr
279c643900 Merge "msm: vidc: Add support of timestamps based frame rate" 2021-05-15 14:09:18 -07:00
Darshana Patil
e7c7a2fb02 video-driver: add decode QP metadata support
add v4l2 extension and necassary support for
decoder QP metadata.

Change-Id: I364ef9b7b3a63bef0a59c955018bc8456f12d03f
Signed-off-by: Darshana Patil <darshana@codeaurora.org>
2021-05-14 13:43:16 -07:00
Govindaraj Rajagopal
003d8a79fa msm: vidc: Add support of timestamps based frame rate
Add timestamp based frame rate detection.

Change-Id: Id0c522e01769ea6cf214c7b84c11faae6049e2ef
Signed-off-by: Vikash Garodia <vgarodia@codeaurora.org>
Signed-off-by: Govindaraj Rajagopal <grajagop@codeaurora.org>
2021-05-12 21:50:05 +05:30
Akshata Sahukar
ce09f77e44 video: driver: free children and firmware list memory
To avoid memory leakage, clean children and firmware lists
at session close, error cases, and at the end of each usage.

Change-Id: I1eadbf81da207bd987c50428c0c7cf4967a8885f
Signed-off-by: Akshata Sahukar <asahukar@codeaurora.org>
2021-04-30 18:42:34 -07:00
qctecmdr
e7bfa08f49 Merge "video: driver: Modify default values for VBV Delay and Peak Bitrate" 2021-04-27 20:34:02 -07:00
Akshata Sahukar
450a9e0e20 video: driver: Modify default values for VBV Delay and Peak Bitrate
Modify cap values for below properties:
[1] VBV Dealy: default as 300, min as 100, and max as 300
[2] Peak bitrate: default as avg bitrate set by client.

Change-Id: Ic9533e8a40e789128e5baa975bf1a0355e373e08
Signed-off-by: Akshata Sahukar <asahukar@codeaurora.org>
2021-04-27 10:14:12 -07:00
Akshata Sahukar
90658c5592 video: driver: Add support to print decode/encode stats
Add support to calculate and print encode and decode
time, and average time consumption per fbd sample.

Change-Id: I5e867833d1d88285bfebc8c9b9a593e3ed975ed5
Signed-off-by: Akshata Sahukar <asahukar@codeaurora.org>
2021-04-26 16:26:38 -07:00
qctecmdr
17347ff881 Merge "video: driver: increase max buffer count" 2021-04-19 20:01:44 -07:00
Maheshwar Ajja
30d2ef55b4 video: driver: increase max buffer count
Increase max buffer count to release the buffers,

Change-Id: I34774a8e99c7a5c78f79e8ca101e6135a22e7f30
Signed-off-by: Maheshwar Ajja <majja@codeaurora.org>
2021-04-19 19:20:49 -07:00
Maheshwar Ajja
09356ed279 video: driver: amend delayed unmap feature
Due to delayed unmap feature on decoder output buffers,
refcount will become one when no one uses the buffer
in driver. In release done functonality, remove the
buffer from maps list only if refcount equal to one.
If refcount is more than one indicates the buffer is
being used, so do not remove from maps list. There are
chances that same decoder output buffer might be queued
by the client in which case we are not supposed to
unmap it from maps list in release done.

Change-Id: I69250c3efa89d77055e89770fd441af1fb50b755
Signed-off-by: Maheshwar Ajja <majja@codeaurora.org>
2021-04-19 19:05:36 -07:00
Akshata Sahukar
5a2b2ee399 video: driver: Add support to adjust slice mode
Add support to adjust slice mode.

Change-Id: Id09e951b3085c55cc5bc6b15a2ce002645923435
Signed-off-by: Akshata Sahukar <asahukar@codeaurora.org>
2021-04-13 17:12:27 -07:00
Darshana Patil
23605ffffb video: driver: handle dpb list property
- subscribe for dpb list property in combined
 mode on output port.
- copy dpb list property payload from fw to
 static array.
- using this array, mark read_only list buffers
 as non-reference if not part of array. if count
 of such buffers is greater than output min count,
 send to fw for release.
- once fw returns them, destroy these buffers.
- unmap stale output mappings due to lazy unmap feature.
- unify release internal functions into common function.

Change-Id: Id32f04efb19eecaff453cc4383ee8296a0246263
Signed-off-by: Darshana Patil <darshana@codeaurora.org>
2021-04-09 18:21:34 -07:00
qctecmdr
1dff505773 Merge "video: driver: refine max_host_buffer count logic" 2021-04-09 10:18:22 -07:00
Govindaraj Rajagopal
6791a81197 video: driver: refine max_host_buffer count logic
- added max_host_buffer_count for decoder input & output.
- increased buffer count for image_session & encode
  batching case.

Change-Id: I4edf1c3a0953e38d6f84f554ab78e624d39a7306
Signed-off-by: Govindaraj Rajagopal <grajagop@codeaurora.org>
2021-04-09 11:24:36 +05:30
Govindaraj Rajagopal
f6642e3e67 video: driver: add support to register custom handler.
Need to increase debug timeout incase more debug logs were
enabled. This is to avoid sync cmd timeout.

module_param_cb supports to register custom set/get callbacks.
So using this feature to increase various timeout values,
incase more logs were enabled.

Change-Id: I194c077c2ba00af2403d487a3dcfbb48f119b478
Signed-off-by: Govindaraj Rajagopal <grajagop@codeaurora.org>
2021-04-09 10:46:22 +05:30
Akshata Sahukar
1b42ed0a67 video: driver: adjust/set mark/use ltr dynamically only
Avoid adjusting, sanitizing, and setting mark and use ltr
controls to fw for input port static case.

Change-Id: I8ac7fd9537ff0c5ddce0ff0f4d0337cb19dd83d2
Signed-off-by: Akshata Sahukar <asahukar@codeaurora.org>
2021-04-08 13:33:02 -07:00
qctecmdr
67c1d2454d Merge "video: driver: enable buffer pool for mostly used structures" 2021-04-05 14:47:48 -07:00
Govindaraj Rajagopal
a13f0e1416 video: driver: enable buffer pool for mostly used structures
Enabled recycling for below structure types.

- struct msm_vidc_buffer
- struct msm_vidc_alloc
- struct msm_vidc_map.

Change-Id: I062abef85db24385745119b821f87e5b72a4e835
Signed-off-by: Govindaraj Rajagopal <grajagop@codeaurora.org>
2021-04-05 19:04:55 +05:30
Akshata Sahukar
712640a1a8 video: driver: Modify decode order and some misc changes
- Account for V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY
  ctrl value to decide HFI_PROP_DECODE_ORDER_OUTPUT property value.
- Set encoder run time properties on raw port
- Some logging changes.

Change-Id: I5eef81b484e81b69031854a3a8665de4be7f98f9
Signed-off-by: Akshata Sahukar <asahukar@codeaurora.org>
2021-04-02 14:24:46 -07:00
Govindaraj Rajagopal
d6890cd14a video: driver: print buffer_name instead of hex value
Handled below items as part of this change.

- print buffer_name instead of hex value.
- enable dcvs only for realtime sessions.
- enhanced max_input_data_size handling at
  msm_vidc_scale_power.

Change-Id: If5ac810f4e020bee54364161596c5547af94161a
Signed-off-by: Govindaraj Rajagopal <grajagop@codeaurora.org>
2021-04-03 00:43:18 +05:30
Darshana Patil
19cdce1711 video: driver: skip lazy unmap for dec output buffers
- add support to skip lazy unmapping for decoder
  output buffers only. Map twice for these buffers.
- v4l2 client owned RO SMMU mapped buffers are
  maintained separately in read_only list.
- For FBD with RO flag from fw, add buffer to read_only
  list. Else remove from this list.
- During FTB, if buffer present in read_only list,
  add RO flag to hfi buffer and queue to fw.
- During streamoff output, unmap all buffers except
  those present in read_only list.
- During close, unmap completely and clean up read_only
  list, output list.

Change-Id: Iacee7d298dfbff0b9cb6f17dff27ad98574b489b
Signed-off-by: Darshana Patil <darshana@codeaurora.org>
2021-04-01 12:03:21 -07:00
Akshata Sahukar
89e7e48231 video: driver: Add support to deliver HFI_PROP_BUFFER_TAG via FTB
Add support to deliver HFI_PROP_BUFFER_TAG via FTB metadata buffer
to receive HFI_PROP_DPB_TAG_LIST from fw via FBD metadata buffer.

Change-Id: Id9eeee26135379975f55923505d9c91905fa0b9e
Signed-off-by: Akshata Sahukar <asahukar@codeaurora.org>
2021-03-31 19:09:10 -07:00
Govindaraj Rajagopal
78b1491ee1 video: driver: enable dcvs - power feature
Enable/disable dcvs based on below settings.

- core supports dcvs
- core_clock_voting is set: disable
- encode_batching(superframe): disable
- decode_batching: disable
- thumbnail session: disable
- image session: disable

Handle below items as part of dcvs enablement.

- skip clock scaling for inactive session.
- reset dcvs flags to 0, for encoder at dcvs_window.

Change-Id: I84e6710946bca3fa8c83178f29745d4b9afd4697
Signed-off-by: Govindaraj Rajagopal <grajagop@codeaurora.org>
2021-03-31 02:02:36 +05:30
qctecmdr
57648d98ff Merge "video: driver: Enable Subsystem Restart (SSR) testing" 2021-03-29 11:26:15 -07:00
Mihir Ganu
113c10c489 video: driver: Enable Subsystem Restart (SSR) testing
Enable Subsystem Restart test support.
Clients can trigger SSR through debugfs as follows:

echo <trigger_val> > /d/msm_vidc/core/trigger_ssr

u64 trigger_val provides:
  /* <test_addr><sub_client_id><ssr_type>
   * ssr_type: 0-3 bits
   * sub_client_id: 4-7 bits
   * reserved: 8-31 bits
   * test_addr: 32-63 bits */

Change-Id: If23fce3084de00461f1e5cc57884e10d15ad66a9
Signed-off-by: Mihir Ganu <mganu@codeaurora.org>
2021-03-29 10:21:27 -07:00
Vikash Garodia
0017afac21 video: driver: Add handling for session priority
Following changes are added with this:
1. Handle and adjust session priority.
2. Session addmission based on priority.
3. Power (clock and bus) scaling based on priority.
4. Handle s_parm influence on priority.

Change-Id: I12dec5fb03d733f07b0b0a24b4d74d1ccd4bf791
Signed-off-by: Vikash Garodia <vgarodia@codeaurora.org>
2021-03-29 22:47:28 +05:30
Akshata Sahukar
14efc2a0bc video: driver: Add support to advanced bitrate ctrls
Add support to below properties:
- HFI_PROP_BITRATE_BOOST
- HFI_PROP_CONTENT_ADAPTIVE_CODING
- HFI_PROP_MAINTAIN_MIN_QUALITY
- HFI_PROP_VBV_DELAY
- HFI_PROP_TOTAL_PEAK_BITRATE
- HFI_PROP_BITRATE_LAYERx.

Change-Id: I1072f97c7c202c7f4fc38c26e0ab9274ae06fce0
Signed-off-by: Akshata Sahukar <asahukar@codeaurora.org>
2021-03-25 14:50:20 -07:00
Chinmay Sawarkar
7b9c3cb048 video: driver: Enable encoder input CR stats
Enable encoder input Compression Ratio (CR) stats.
Input CR stats are provided by clients for each input buffer
and used in bandwidth calculations.

Change-Id: Ibd910118837148b0b9dcc288069237f9a2d8f225
Signed-off-by: Chinmay Sawarkar <chinmays@codeaurora.org>
Signed-off-by: Mihir Ganu <mganu@codeaurora.org>
2021-03-22 20:09:45 -07:00
Govindaraj Rajagopal
d238d03c1b video: driver: refine image session handling
Amended below logics for image session.

- set constant quality
- set tier: V4L2_MPEG_VIDEO_HEVC_TIER_MAIN
- frame_rate: 1
- enable subframe metadata
- stage:
	- image encode: 2 stage
	- image decode: 1 stage
- pipe: 4(work_route)
- power mode: max_quality.

Change-Id: I67acd5284910e7cbe26446b5dfc526d002b98981
Signed-off-by: Govindaraj Rajagopal <grajagop@codeaurora.org>
2021-03-22 12:26:54 +05:30
Akshata Sahukar
98e799da29 video: driver: Add support to handle GOP and its dependencies
Add support to below mentioned properties:
- HFI_PROP_LAYER_ENCODING_TYPE
- HFI_PROP_LAYER_COUNT
- HFI_PROP_MAX_GOP_FRAMES
- HFI_PROP_MAX_B_FRAMES.

Change-Id: I3be975a48dc668d0ec83f6ff13837488fc570b78
Signed-off-by: Akshata Sahukar <asahukar@codeaurora.org>
2021-03-19 12:33:27 -07:00
Govindaraj Rajagopal
f4045ecbd6 video: driver: enable image encode and decode support
Added change to enable image encode and decode support.

Decoder:
    - codec: hevc
    - input buffer size: yuv size
    - run as turbo session
    - all intra session
    - disable dcvs & batching
    - ignore admission control(skip mbps, mbpf check)

Encoder:
    - codec: hevc
    - rc mode: CQ
    - profile: MainStillPic
    - all intra session
    - output buffer size: 2 * yuv size
    - output dimension: 512 x 512
    - disable dcvs & batching
    - ignore admission control(skip mbps, mbpf check)
    - skip scaling check
    - hfi: set grid enable & disable time_delta based rc.

Change-Id: I0af47de1406a53d8d8bf1969a65b3a390b0aacb5
Signed-off-by: Govindaraj Rajagopal <grajagop@codeaurora.org>
2021-03-13 18:44:11 +05:30
Mihir Ganu
ccb6da7567 video: driver: Add support for non-secure pix context bank
- Add support for a new non-secure pix context bank.
- Remove usage of deprecated 'buffer-types' in context banks.

Change-Id: I3a21eb8ce1d9aff277568d54aadb54193ad0ce75
Signed-off-by: Mihir Ganu <mganu@codeaurora.org>
2021-03-10 11:18:12 -08:00
qctecmdr
74f2907a9f Merge "video: driver: Enable CR and CF" 2021-03-08 15:08:22 -08:00
Chinmay Sawarkar
1a9c2e36bb video: driver: Enable CR and CF
Enable Compression Ratio and Complexity Factor property.

Change-Id: Ia34ffe0a91b0b3b9941ccb0bbb0eacfdb16b51e9
Signed-off-by: Chinmay Sawarkar <chinmays@codeaurora.org>
2021-03-08 12:06:51 -08:00
Darshana Patil
41d465f5cf video: driver: add dpb tag list metadata support
- add DPB tag list capability in database
- subscribe in metadata mode for the dpb tag list
  property if enabled

Change-Id: Id4b9b7392b7b26cccf0860d578b8a0cb8d798d04
Signed-off-by: Darshana Patil <darshana@codeaurora.org>
2021-03-05 16:36:29 -08:00
Govindaraj Rajagopal
a7670d7f42 video: driver: enable decoder batching support
Added change to enable decoder batching feature.

Batching willbe enabled only when below conditions were met.

[1] platform supports batching
[2] decode session
[3] realtime session
[4] non-thumbnail session
[5] non-heif session
[6] 2-stage decode only(low_latency not supported).

Change-Id: I54b601814c3b5fa2077dc41c5b0ac84964c2674a
Signed-off-by: Govindaraj Rajagopal <grajagop@codeaurora.org>
2021-03-04 09:38:55 +05:30
Darshana Patil
596ca194de video: driver: add thumbnail and priority support
- add thumbnail mode and priority in database.
- modify output min count for thumbnail session
- deprecate is_turbo_session.
- deprecate flags variable in instance structure and
  use database entries.

Change-Id: I04a3386f1e2eb9fb97bd550d6f169f9510f462c8
Signed-off-by: Darshana Patil <darshana@codeaurora.org>
2021-03-03 18:13:09 -08:00
Akshata Sahukar
660008370e video: driver: Add NAL length based encoding
Add support to set HFI_PROP_NAL_LENGTH_FIELD property to
video firmware.

Change-Id: I20db36bad394fe0b5163a156199340836af3f740
Signed-off-by: Akshata Sahukar <asahukar@codeaurora.org>
2021-03-03 11:43:00 -08:00
Maheshwar Ajja
395d4a9ff5 video: driver: amend interlace detection logic
As per HFI_PROP_CODED_FRAMES details, 0x0 is field interlace,
0x1 is progressive and 0x2 is adaptive frame field bitstream.
Treat 0x1 as progressive and both 0x0 and 0x2 as interlace in
driver.

Change-Id: I07c7c8b4faaccc896249b2da84148ec05c2047da
Signed-off-by: Maheshwar Ajja <majja@codeaurora.org>
2021-03-02 09:44:17 -08:00
Darshana Patil
481a6117d8 video: driver: update license year
update license year to 2020-2021

Change-Id: I5a67bf49c386e86337bc7449ded08d186fc9a280
Signed-off-by: Darshana Patil <darshana@codeaurora.org>
2021-03-01 18:07:35 -08:00
Govindaraj Rajagopal
f7dc3c7789 video: driver: increase encoder max host buffer count
Increase encoder max host bufcount 64 -> 256 to support
superframe(encoder batching) usecase.

Change-Id: I8607b8302a10c52ac47a0c67ee7c359c62aa1d02
Signed-off-by: Govindaraj Rajagopal <grajagop@codeaurora.org>
2021-03-01 11:47:08 +05:30
Akshata Sahukar
20d30c5dd2 video: driver: amend colorspace info setting
v4l2 enums for color space info are not one to one
mappings with hevc spec values. Hence, introduce and
use corresponding mapper functions.

Change-Id: I37a79a9b34b66184ece9a284ae98c9fa4efd248f
Signed-off-by: Akshata Sahukar <asahukar@codeaurora.org>
2021-02-26 12:52:14 -08:00
Govindaraj Rajagopal
4055a23255 video: driver: enable smmu_fault_handler support
Added smmu_fault_handler support and printing all buffers,
allocations, mappings list details as part of smmu fault
handling.

Change-Id: Idb5d28357f9fb885adf7ae16f328b4963c56aa8c
Signed-off-by: Govindaraj Rajagopal <grajagop@codeaurora.org>
2021-02-25 12:26:46 +05:30
qctecmdr
e6b6c34490 Merge "video: Added more validations" 2021-02-24 15:25:50 -08:00