1 /*
2 * Copyright (c) 2011-2019, Intel Corporation
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included
12 * in all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
18 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
20 * OTHER DEALINGS IN THE SOFTWARE.
21 */
22
23 //!
24 //! \file media_user_settings_mgr_g12.cpp
25 //! \brief Common user feature interface on Gen12 platform
26 //!
27
28 #include "mos_utilities.h"
29 #include "media_user_settings_mgr_g12.h"
30
31 static MOS_USER_FEATURE_VALUE MOSUserFeatureValueDescFields_g12[MOS_NUM_USER_FEATURE_VALUES_G12] =
32 {
33 MOS_DECLARE_UF_KEY_DBGONLY(__MEDIA_USER_FEATURE_VALUE_DISABLE_HEVC_REALTILE_DECODE_ID_G12,
34 "Disable HEVC Real Tile Decode",
35 __MEDIA_USER_FEATURE_SUBKEY_INTERNAL,
36 __MEDIA_USER_FEATURE_SUBKEY_REPORT,
37 "Decode",
38 MOS_USER_FEATURE_TYPE_USER,
39 MOS_USER_FEATURE_VALUE_TYPE_UINT32,
40 "0",
41 "Disable HEVC real tile decode mode. Default is not disabled"),
42 MOS_DECLARE_UF_KEY_DBGONLY(__MEDIA_USER_FEATURE_VALUE_ENABLE_HEVC_REALTILE_MULTI_PHASE_DECODE_ID_G12,
43 "Enable HEVC Real Tile Multi Phase Decode",
44 __MEDIA_USER_FEATURE_SUBKEY_INTERNAL,
45 __MEDIA_USER_FEATURE_SUBKEY_REPORT,
46 "Decode",
47 MOS_USER_FEATURE_TYPE_USER,
48 MOS_USER_FEATURE_VALUE_TYPE_UINT32,
49 "1",
50 "Enable HEVC real tile multi-phase decode mode. Default is enabled"),
51 MOS_DECLARE_UF_KEY_DBGONLY(__MEDIA_USER_FEATURE_VALUE_HEVC_VDENC_TILEREPLAY_ENABLE_ID_G12,
52 "HEVC VDEnc TileReplay Enable",
53 __MEDIA_USER_FEATURE_SUBKEY_INTERNAL,
54 __MEDIA_USER_FEATURE_SUBKEY_REPORT,
55 "Encode",
56 MOS_USER_FEATURE_TYPE_USER,
57 MOS_USER_FEATURE_VALUE_TYPE_INT32,
58 "0",
59 "Enable TileReplay for HEVC VDEnc"),
60 MOS_DECLARE_UF_KEY_DBGONLY(__MEDIA_USER_FEATURE_VALUE_HEVC_VDENC_RGB_ENCODING_ENABLE_ID_G12,
61 "HEVC VDEnc RGB Encoding Enable",
62 __MEDIA_USER_FEATURE_SUBKEY_INTERNAL,
63 __MEDIA_USER_FEATURE_SUBKEY_REPORT,
64 "Encode",
65 MOS_USER_FEATURE_TYPE_USER,
66 MOS_USER_FEATURE_VALUE_TYPE_INT32,
67 "0",
68 "Enable RGB Encoding for HEVC VDEnc"),
69 MOS_DECLARE_UF_KEY_DBGONLY(__MEDIA_USER_FEATURE_VALUE_HEVC_VDENC_CAPTURE_MODE_ENABLE_ID_G12,
70 "HEVC VDEnc Capture Mode Enable",
71 __MEDIA_USER_FEATURE_SUBKEY_INTERNAL,
72 __MEDIA_USER_FEATURE_SUBKEY_REPORT,
73 "Encode",
74 MOS_USER_FEATURE_TYPE_USER,
75 MOS_USER_FEATURE_VALUE_TYPE_INT32,
76 "0",
77 "Enable Capture Mode for HEVC VDEnc"),
78 MOS_DECLARE_UF_KEY_DBGONLY(__MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_SUBTHREAD_NUM_ID_G12,
79 "HEVC Encode SubThread Number",
80 __MEDIA_USER_FEATURE_SUBKEY_INTERNAL,
81 __MEDIA_USER_FEATURE_SUBKEY_REPORT,
82 "Encode",
83 MOS_USER_FEATURE_TYPE_USER,
84 MOS_USER_FEATURE_VALUE_TYPE_INT32,
85 "3",
86 "Used to enable HEVC ENCODE SubThread Number in the ENC kernel."),
87 MOS_DECLARE_UF_KEY_DBGONLY(__MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_LOAD_KERNEL_INPUT_ID_G12,
88 "Load HEVC Kernel Input",
89 __MEDIA_USER_FEATURE_SUBKEY_INTERNAL,
90 __MEDIA_USER_FEATURE_SUBKEY_REPORT,
91 "Encode",
92 MOS_USER_FEATURE_TYPE_USER,
93 MOS_USER_FEATURE_VALUE_TYPE_STRING,
94 "",
95 "Set fodler name for HEVC encoder kernel input loading"),
96 MOS_DECLARE_UF_KEY_DBGONLY(__MEDIA_USER_FEATURE_VALUE_HCP_DECODE_USER_PIPE_NUM_ID_G12,
97 "HCP Decode User Pipe Num",
98 __MEDIA_USER_FEATURE_SUBKEY_INTERNAL,
99 __MEDIA_USER_FEATURE_SUBKEY_REPORT,
100 "Codec",
101 MOS_USER_FEATURE_TYPE_USER,
102 MOS_USER_FEATURE_VALUE_TYPE_UINT32,
103 "2",
104 "When vdbox >= 4, pipe num equals to the value set by user. (Default 2: use 2 pipes)"), //This is WA for scalability when vdbox num >= 4 because of kmd not ready
105 MOS_DECLARE_UF_KEY_DBGONLY(__MEDIA_USER_FEATURE_VALUE_HEVC_VME_BRC_LTR_ENABLE_ID_G12,
106 "HEVC VME BRC LTR Enable",
107 __MEDIA_USER_FEATURE_SUBKEY_INTERNAL,
108 __MEDIA_USER_FEATURE_SUBKEY_REPORT,
109 "Codec",
110 MOS_USER_FEATURE_TYPE_USER,
111 MOS_USER_FEATURE_VALUE_TYPE_BOOL,
112 "0",
113 "Enable long term reference in hevc vme brc. (Default 0: Disable)"),
114 MOS_DECLARE_UF_KEY_DBGONLY(__MEDIA_USER_FEATURE_VALUE_HEVC_VDENC_FORCE_SCALABILITY_ID_G12,
115 "HEVC VDEnc Force Scalability For Low Size",
116 __MEDIA_USER_FEATURE_SUBKEY_INTERNAL,
117 __MEDIA_USER_FEATURE_SUBKEY_REPORT,
118 "Codec",
119 MOS_USER_FEATURE_TYPE_USER,
120 MOS_USER_FEATURE_VALUE_TYPE_BOOL,
121 "0",
122 "HEVC VDEnc encode force scalability for low (less than 4K) resolution. (Default 0)"),
123 /* codec gen12 based */
124 MOS_DECLARE_UF_KEY_DBGONLY(__MEDIA_USER_FEATURE_VALUE_VDENC_ULTRA_MODE_ENABLE_ID_G12,
125 "VDEnc Ultra Mode Enable",
126 __MEDIA_USER_FEATURE_SUBKEY_INTERNAL,
127 __MEDIA_USER_FEATURE_SUBKEY_REPORT,
128 "Encode",
129 MOS_USER_FEATURE_TYPE_USER,
130 MOS_USER_FEATURE_VALUE_TYPE_UINT32,
131 "0",
132 "Enables/Disables VDEnc Ultra Mode feature. Starting from TGL for AVC VDEnc."),
133 MOS_DECLARE_UF_KEY(__MEDIA_USER_FEATURE_VALUE_ENABLE_HEVC_DECODE_RT_FRAME_COUNT_ID_G12,
134 "RT Decoded Count",
135 __MEDIA_USER_FEATURE_SUBKEY_INTERNAL,
136 __MEDIA_USER_FEATURE_SUBKEY_REPORT,
137 "Report",
138 MOS_USER_FEATURE_TYPE_USER,
139 MOS_USER_FEATURE_VALUE_TYPE_INT32,
140 "0",
141 "Reports out real tile decoded frame count."),
142 MOS_DECLARE_UF_KEY(__MEDIA_USER_FEATURE_VALUE_ENABLE_HEVC_DECODE_VT_FRAME_COUNT_ID_G12,
143 "VT Decoded Count",
144 __MEDIA_USER_FEATURE_SUBKEY_INTERNAL,
145 __MEDIA_USER_FEATURE_SUBKEY_REPORT,
146 "Report",
147 MOS_USER_FEATURE_TYPE_USER,
148 MOS_USER_FEATURE_VALUE_TYPE_INT32,
149 "0",
150 "Reports out virtual tile decoded frame count."),
151 MOS_DECLARE_UF_KEY(__MEDIA_USER_FEATURE_VALUE_ENABLE_HEVC_DECODE_SP_FRAME_COUNT_ID_G12,
152 "SP Decoded Count",
153 __MEDIA_USER_FEATURE_SUBKEY_INTERNAL,
154 __MEDIA_USER_FEATURE_SUBKEY_REPORT,
155 "Report",
156 MOS_USER_FEATURE_TYPE_USER,
157 MOS_USER_FEATURE_VALUE_TYPE_INT32,
158 "0",
159 "Reports out single pipe decoded frame count."),
160 MOS_DECLARE_UF_KEY(__MEDIA_USER_FEATURE_VALUE_HEVC_DECODE_HISTOGRAM_DEBUG_ID_G12,
161 "HEVC SFC Histogram Debug",
162 __MEDIA_USER_FEATURE_SUBKEY_INTERNAL,
163 __MEDIA_USER_FEATURE_SUBKEY_REPORT,
164 "Decode",
165 MOS_USER_FEATURE_TYPE_USER,
166 MOS_USER_FEATURE_VALUE_TYPE_INT32,
167 "0",
168 "Enable HEVC SFC Histogram StreamOut debug. 0:Disable, 1:Enable"),
169 MOS_DECLARE_UF_KEY_DBGONLY(__MEDIA_USER_FEATURE_VALUE_HEVC_VME_DISABLE_PANIC_MODE_ID_G12,
170 "HEVC VME Disable Panic Mode",
171 __MEDIA_USER_FEATURE_SUBKEY_INTERNAL,
172 __MEDIA_USER_FEATURE_SUBKEY_REPORT,
173 "Codec",
174 MOS_USER_FEATURE_TYPE_USER,
175 MOS_USER_FEATURE_VALUE_TYPE_BOOL,
176 "0",
177 "HEVC Vme encode disable panic mode. (Default 0)"),
178 MOS_DECLARE_UF_KEY_DBGONLY(__MEDIA_USER_FEATURE_VALUE_HEVC_VME_NUM_MEDIA_HWWALKER_INUSE_ID_G12,
179 "HEVC VME Media HW Walker Number In Use",
180 __MEDIA_USER_FEATURE_SUBKEY_INTERNAL,
181 __MEDIA_USER_FEATURE_SUBKEY_REPORT,
182 "Codec",
183 MOS_USER_FEATURE_TYPE_USER,
184 MOS_USER_FEATURE_VALUE_TYPE_INT32,
185 "1",
186 "HEVC Vme encode media hw walker number in use. (Default 1)"),
187 MOS_DECLARE_UF_KEY_DBGONLY(__MEDIA_USER_FEATURE_VALUE_HEVC_VME_BREAK12_ID_G12,
188 "HEVC VME Break12",
189 __MEDIA_USER_FEATURE_SUBKEY_INTERNAL,
190 __MEDIA_USER_FEATURE_SUBKEY_REPORT,
191 "Encode",
192 MOS_USER_FEATURE_TYPE_USER,
193 MOS_USER_FEATURE_VALUE_TYPE_INT32,
194 "1",
195 "HEVC Vme encode break12 setting:[0, 3]. (Default 1"),
196 /* VP gen12 based */
197 MOS_DECLARE_UF_KEY(__MEDIA_USER_FEATURE_VALUE_SFC_OUTPUT_CENTERING_DISABLE_ID_G12,
198 "SFC Output Centering Disable",
199 __MEDIA_USER_FEATURE_SUBKEY_INTERNAL,
200 __MEDIA_USER_FEATURE_SUBKEY_REPORT,
201 "VP",
202 MOS_USER_FEATURE_TYPE_USER,
203 MOS_USER_FEATURE_VALUE_TYPE_INT32,
204 "0",
205 "Disabling SFC Centering output. 1 -- Disable, 0 -- Enable."),
206 MOS_DECLARE_UF_KEY(__MEDIA_USER_FEATURE_VALUE_SFC_OUTPUT_DTR_DISABLE_ID_G12,
207 "Disable SFC DTR",
208 __MEDIA_USER_FEATURE_SUBKEY_INTERNAL,
209 __MEDIA_USER_FEATURE_SUBKEY_REPORT,
210 "VP",
211 MOS_USER_FEATURE_TYPE_USER,
212 MOS_USER_FEATURE_VALUE_TYPE_UINT32,
213 "1",
214 "Disabling SFC DTR output. 1: Disable, 0: Enable."),
215 };
216
MediaUserSettingsMgr_g12()217 MediaUserSettingsMgr_g12::MediaUserSettingsMgr_g12()
218 {
219 MOS_STATUS eStatus = MOS_DeclareUserFeatureKeysFromDescFields(
220 MOSUserFeatureValueDescFields_g12,
221 MOS_NUM_USER_FEATURE_VALUES_G12,
222 __MOS_USER_FEATURE_KEY_G12_MAX_ID,
223 nullptr);
224
225 MosUtilUserInterface::SetDefaultValueChanged(true);
226
227 if (MOS_FAILED(eStatus))
228 {
229 MOS_OS_ASSERTMESSAGE("MOS util G12 user feature key init error");
230 }
231
232 }
233
~MediaUserSettingsMgr_g12()234 MediaUserSettingsMgr_g12::~MediaUserSettingsMgr_g12()
235 {
236
237 MOS_STATUS eStatus = MOS_DestroyUserFeatureKeysFromDescFields(
238 MOSUserFeatureValueDescFields_g12,
239 MOS_NUM_USER_FEATURE_VALUES_G12,
240 __MOS_USER_FEATURE_KEY_G12_MAX_ID,
241 nullptr);
242
243 if (MOS_FAILED(eStatus))
244 {
245 MOS_OS_ASSERTMESSAGE("MOS util G12 user feature key destroy error");
246 }
247
248 }
249
250
251