1 /* 2 * Copyright (c) 2020-2022, 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 //! \file mos_utilities_common.h 24 //! \brief Common OS service across different platform 25 //! \details Common OS service across different platform 26 //! 27 #ifndef __MOS_UTILITIES_COMMON_H__ 28 #define __MOS_UTILITIES_COMMON_H__ 29 30 #include <string> 31 #include "mos_defs.h" 32 33 #ifndef __MOS_USER_FEATURE_WA_ 34 #define __MOS_USER_FEATURE_WA_ 35 #endif 36 //------------------------------------------------------------------------------ 37 // SECTION: Media User Feature Control 38 // 39 // ABSTRACT: Is an abstraction to read and write system level settings relating 40 // to GEN media driver. 41 //------------------------------------------------------------------------------ 42 43 //! 44 //! \brief ASSERT when failing to read user feature key or default user feature key value, 45 //! according to MOS_UserFeature_ReadValue_ID. 46 //! 47 #define MOS_USER_FEATURE_INVALID_KEY_ASSERT(_expr) \ 48 if ((_expr) == MOS_STATUS_NULL_POINTER) \ 49 { \ 50 MOS_OS_ASSERT(false); \ 51 } 52 53 //! 54 //! \brief User Feature Type maximum and minimum data size 55 //! 56 #define MOS_USER_CONTROL_MIN_DATA_SIZE 128 57 #define MOS_USER_CONTROL_MAX_DATA_SIZE 2048 58 #define MOS_USER_MAX_STRING_COUNT 128 59 60 #define MOS_USER_FEATURE_MAX_UINT32_STR_VALUE "4294967295" 61 62 //! MOS User Feature 63 #define __NULL_USER_FEATURE_VALUE_WRITE_DATA__ \ 64 { \ 65 __MOS_USER_FEATURE_KEY_INVALID_ID, { {0}, 0 } \ 66 } 67 #ifdef __MOS_USER_FEATURE_WA_ 68 #define __NULL_USER_FEATURE_VALUE__ \ 69 { \ 70 __MOS_USER_FEATURE_KEY_INVALID_ID, nullptr, nullptr, nullptr, nullptr, MOS_USER_FEATURE_TYPE_INVALID, MOS_USER_FEATURE_VALUE_TYPE_INVALID, nullptr, nullptr, false, 0, nullptr, MOS_USER_FEATURE_EFFECT_ALWAYS, {0}, { {0}, 0 } \ 71 } 72 #define MOS_DECLARE_UF_KEY(Id, ValueName, Readpath, Writepath, Group, Type, ValueType, DefaultValue, Description) \ 73 { \ 74 Id, ValueName, Group, Readpath, Writepath, Type, ValueType, DefaultValue, Description, false, 1, nullptr, MOS_USER_FEATURE_EFFECT_ALWAYS, {0}, { {0}, 0 } \ 75 } 76 // The MOS_DECLARE_UF_KEY_DBGONLY macro will make the user feature key read only return default value in release build without accessing user setting 77 // it is an alternative way for removing the key defintion entirely in release driver, and still provide an unified place for default values of the 78 // user feature key read request that is needed for release driver 79 #define MOS_DECLARE_UF_KEY_DBGONLY(Id, ValueName, Readpath, Writepath, Group, Type, ValueType, DefaultValue, Description) \ 80 { \ 81 Id, ValueName, Group, Readpath, Writepath, Type, ValueType, DefaultValue, Description, false, 1, nullptr, MOS_USER_FEATURE_EFFECT_DEBUGONLY, {0}, { {0}, 0 } \ 82 } 83 #else 84 #define __NULL_USER_FEATURE_VALUE__ \ 85 { \ 86 __MOS_USER_FEATURE_KEY_INVALID_ID, nullptr, nullptr, nullptr, nullptr, MOS_USER_FEATURE_TYPE_INVALID, MOS_USER_FEATURE_VALUE_TYPE_INVALID, nullptr, nullptr, false, 0, nullptr, MOS_USER_FEATURE_EFFECT_ALWAYS, { {0}, 0 } \ 87 } 88 #define MOS_DECLARE_UF_KEY(Id, ValueName, Readpath, Writepath, Group, Type, ValueType, DefaultValue, Description) \ 89 { \ 90 Id, ValueName, Group, Readpath, Writepath, Type, ValueType, DefaultValue, Description, false, 1, nullptr, MOS_USER_FEATURE_EFFECT_ALWAYS, { {0}, 0 } \ 91 } 92 #define MOS_DECLARE_UF_KEY_DBGONLY(Id, ValueName, Readpath, Writepath, Group, Type, ValueType, DefaultValue, Description) \ 93 { \ 94 Id, ValueName, Group, Readpath, Writepath, Type, ValueType, DefaultValue, Description, false, 1, nullptr, MOS_USER_FEATURE_EFFECT_DEBUGONLY, { {0}, 0 } \ 95 } 96 #endif 97 #ifndef MAX_USER_FEATURE_FIELD_LENGTH 98 #define MAX_USER_FEATURE_FIELD_LENGTH 256 99 #endif 100 101 //! 102 //! \brief User Feature Value IDs 103 //! 104 typedef enum _MOS_USER_FEATURE_VALUE_ID 105 { 106 __MOS_USER_FEATURE_KEY_INVALID_ID = 0, 107 __MEDIA_USER_FEATURE_VALUE_MEDIA_RESET_TH_ID, 108 __MEDIA_USER_FEATURE_VALUE_MEDIA_RESET_COUNT_ID, 109 __MEDIA_USER_FEATURE_VALUE_PERF_PROFILER_ENABLE_ID, 110 __MEDIA_USER_FEATURE_VALUE_PERF_PROFILER_FE_BE_TIMING, 111 __MEDIA_USER_FEATURE_VALUE_PERF_PROFILER_OUTPUT_FILE, 112 __MEDIA_USER_FEATURE_VALUE_PERF_PROFILER_BUFFER_SIZE, 113 __MEDIA_USER_FEATURE_VALUE_PERF_PROFILER_ENABLE_MULTI_PROCESS, 114 __MEDIA_USER_FEATURE_VALUE_PERF_PROFILER_REGISTER_1, 115 __MEDIA_USER_FEATURE_VALUE_PERF_PROFILER_REGISTER_2, 116 __MEDIA_USER_FEATURE_VALUE_PERF_PROFILER_REGISTER_3, 117 __MEDIA_USER_FEATURE_VALUE_PERF_PROFILER_REGISTER_4, 118 __MEDIA_USER_FEATURE_VALUE_PERF_PROFILER_REGISTER_5, 119 __MEDIA_USER_FEATURE_VALUE_PERF_PROFILER_REGISTER_6, 120 __MEDIA_USER_FEATURE_VALUE_PERF_PROFILER_REGISTER_7, 121 __MEDIA_USER_FEATURE_VALUE_PERF_PROFILER_REGISTER_8, 122 __MEDIA_USER_FEATURE_VALUE_SINGLE_TASK_PHASE_ENABLE_ID, 123 __MEDIA_USER_FEATURE_VALUE_DECODE_SINGLE_TASK_PHASE_ENABLE_ID, 124 __MEDIA_USER_FEATURE_VALUE_AUX_TABLE_16K_GRANULAR_ID, 125 __MEDIA_USER_FEATURE_VALUE_ENABLE_SOFTPIN_ID, 126 __MEDIA_USER_FEATURE_VALUE_MFE_MBENC_ENABLE_ID, 127 __MEDIA_USER_FEATURE_VALUE_MFE_FIRST_BUFFER_SUBMIT_ID, 128 __MEDIA_USER_FEATURE_VALUE_RC_PANIC_ENABLE_ID, 129 __MEDIA_USER_FEATURE_VALUE_SLICE_SHUTDOWN_ENABLE_ID, 130 __MEDIA_USER_FEATURE_VALUE_DECODE_LOCK_DISABLE_ID, 131 __MEDIA_USER_FEATURE_VALUE_ENCODE_HW_WALKER_ID, 132 __MEDIA_USER_FEATURE_VALUE_ENCODE_HUC_FIRMWARE_LOAD_FAILED_ID, 133 __MEDIA_USER_FEATURE_VALUE_ENCODE_HUC_IMEM_LOAD_FALIED_ID, 134 __MEDIA_USER_FEATURE_VALUE_ENCODE_SUPPRESS_RECON_PIC_ENABLE_ID, 135 __MEDIA_USER_FEATURE_VALUE_ENCODE_ME_IN_USE_ID, 136 __MEDIA_USER_FEATURE_VALUE_ENCODE_16xME_IN_USE_ID, 137 __MEDIA_USER_FEATURE_VALUE_ENCODE_32xME_IN_USE_ID, 138 __MEDIA_USER_FEATURE_VALUE_ENCODE_BRC_IN_USE_ID, 139 __MEDIA_USER_FEATURE_VALUE_ENCODE_RATECONTROL_METHOD_ID, 140 __MEDIA_USER_FEATURE_VALUE_ENCODE_TARGET_USAGE_OVERRIDE_ID, 141 __MEDIA_USER_FEATURE_VALUE_ENCODE_ENABLE_FRAME_TRACKING_ID, 142 __MEDIA_USER_FEATURE_VALUE_ENCODE_USED_VDBOX_NUM_ID, 143 __MEDIA_USER_FEATURE_VALUE_ENCODE_ENABLE_COMPUTE_CONTEXT_ID, 144 __MEDIA_USER_FEATURE_VALUE_DECODE_ENABLE_COMPUTE_CONTEXT_ID, 145 __MEDIA_USER_FEATURE_VALUE_AVC_ENCODE_ME_ENABLE_ID, 146 __MEDIA_USER_FEATURE_VALUE_AVC_ENCODE_16xME_ENABLE_ID, 147 __MEDIA_USER_FEATURE_VALUE_AVC_ENCODE_32xME_ENABLE_ID, 148 __MEDIA_USER_FEATURE_VALUE_AVC_ENCODE_MULTIPRED_ENABLE_ID, 149 __MEDIA_USER_FEATURE_VALUE_AVC_ENCODE_INTRA_REFRESH_QP_THRESHOLD_ID, 150 __MEDIA_USER_FEATURE_VALUE_AVC_FTQ_ENABLE_ID, 151 __MEDIA_USER_FEATURE_VALUE_AVC_CAF_ENABLE_ID, 152 __MEDIA_USER_FEATURE_VALUE_AVC_CAF_DISABLE_HD_ID, 153 __MEDIA_USER_FEATURE_VALUE_AVC_MB_BRC_ENABLE_ID, 154 __MEDIA_USER_FEATURE_VALUE_AVC_ROUNDING_INTER_ENABLE_ID, 155 __MEDIA_USER_FEATURE_VALUE_AVC_ROUNDING_INTER_P_ID, 156 __MEDIA_USER_FEATURE_VALUE_AVC_ROUNDING_INTER_B_ID, 157 __MEDIA_USER_FEATURE_VALUE_AVC_ROUNDING_INTER_BREF_ID, 158 __MEDIA_USER_FEATURE_VALUE_AVC_ADAPTIVE_ROUNDING_INTER_ENABLE_ID, 159 __MEDIA_USER_FEATURE_VALUE_AVC_SKIP_BIAS_ADJUSTMENT_ENABLE_ID, 160 __MEDIA_USER_FEATURE_VALUE_AVC_ADAPTIVE_INTRA_SCALING_ENABLE_ID, 161 __MEDIA_USER_FEATURE_VALUE_AVC_OLD_MODE_COST_ENABLE_ID, 162 __MEDIA_USER_FEATURE_VALUE_AVC_FORCE_TO_SKIP_ENABLE_ID, 163 __MEDIA_USER_FEATURE_VALUE_AVC_SLIDING_WINDOW_SIZE_ID, 164 __MEDIA_USER_FEATURE_VALUE_VDENC_TAIL_INSERTION_DELAY_COUNT_ID, 165 __MEDIA_USER_FEATURE_VALUE_VDENC_CRE_PREFETCH_ENABLE_ID, 166 __MEDIA_USER_FEATURE_VALUE_VDENC_TLB_PREFETCH_ENABLE_ID, 167 __MEDIA_USER_FEATURE_VALUE_VDENC_TLB_ALLOCATION_WA_ENABLE_ID, 168 __MEDIA_USER_FEATURE_VALUE_VDENC_PERMB_STREAMOUT_ENABLE_ID, 169 __MEDIA_USER_FEATURE_VALUE_VDENC_SINGLE_PASS_ENABLE_ID, 170 __MEDIA_USER_FEATURE_VALUE_VDENC_BRC_MOTION_ADAPTIVE_ENABLE_ID, 171 __MEDIA_USER_FEATURE_VALUE_MMIO_MFX_LRA_0_OVERRIDE_ID, 172 __MEDIA_USER_FEATURE_VALUE_MMIO_MFX_LRA_1_OVERRIDE_ID, 173 __MEDIA_USER_FEATURE_VALUE_MMIO_MFX_LRA_2_OVERRIDE_ID, 174 __MEDIA_USER_FEATURE_VALUE_FLATNESS_CHECK_ENABLE_ID, 175 __MEDIA_USER_FEATURE_VALUE_AVC_ADAPTIVE_SEARCH_WINDOW_ENABLE_ID, 176 __MEDIA_USER_FEATURE_VALUE_ADAPTIVE_TRANSFORM_DECISION_ENABLE_ID, 177 __MEDIA_USER_FEATURE_VALUE_WEIGHTED_PREDICTION_L0_IN_USE_ID, 178 __MEDIA_USER_FEATURE_VALUE_WEIGHTED_PREDICTION_L1_IN_USE_ID, 179 __MEDIA_USER_FEATURE_VALUE_FBR_BYPASS_ENABLE_ID, 180 __MEDIA_USER_FEATURE_VALUE_STATIC_FRAME_DETECTION_ENABLE_ID, 181 __MEDIA_USER_FEATURE_VALUE_COLOR_BIT_SUPPORT_ENABLE_ID, 182 __MEDIA_USER_FEATURE_VALUE_GROUP_ID_SELECT_ENABLE_ID, 183 __MEDIA_USER_FEATURE_VALUE_AVC_BRC_ENABLE_ID, 184 __MEDIA_USER_FEATURE_VALUE_AVC_MULTIREF_QP_ID, 185 __MEDIA_USER_FEATURE_VALUE_AVC_BRC_SOFTWARE_ID, 186 __MEDIA_USER_FEATURE_VALUE_AVC_BRC_VAR_COMPU_BYPASS_ID, 187 __MEDIA_USER_FEATURE_VALUE_AVC_BRC_SOFTWARE_IN_USE_ID, 188 __MEDIA_USER_FEATURE_VALUE_ENABLE_CNL_AVC_ENCODE_ARB_WA_ID, 189 __MEDIA_USER_FEATURE_VALUE_HUC_DEMO_KERNEL_ID, 190 __MEDIA_USER_FEATURE_VALUE_VP9_ENCODE_ME_ENABLE_ID, 191 __MEDIA_USER_FEATURE_VALUE_VP9_ENCODE_16xME_ENABLE_ID, 192 __MEDIA_USER_FEATURE_VALUE_VP9_ENCODE_HUC_ENABLE_ID, 193 __MEDIA_USER_FEATURE_VALUE_VP9_ENCODE_MULTIPASS_BRC_ENABLE_ID, 194 __MEDIA_USER_FEATURE_VALUE_VP9_ENCODE_MULTIPASS_BRC_IN_USE_ID, 195 __MEDIA_USER_FEATURE_VALUE_VP9_ENCODE_ADAPTIVE_REPAK_ENABLE_ID, 196 __MEDIA_USER_FEATURE_VALUE_VP9_ENCODE_ADAPTIVE_REPAK_IN_USE_ID, 197 __MEDIA_USER_FEATURE_VALUE_VP9_ENCODE_SINGLE_PASS_DYS_ENABLE_ID, 198 __MEDIA_USER_FEATURE_VALUE_VP9_ENCODE_PAK_TEST_ENABLE_ID, 199 __MEDIA_USER_FEATURE_VALUE_VP9_ENCODE_MULTIREF_QP_ENABLE_ID, 200 __MEDIA_USER_FEATURE_VALUE_VP9_ENCODE_ENABLE_VE_ID, 201 __MEDIA_USER_FEATURE_VALUE_VP9_ENCODE_ENABLE_HW_STITCH, 202 __MEDIA_USER_FEATURE_VALUE_VP9_ENCODE_ENABLE_BRC_DLL, 203 __MEDIA_USER_FEATURE_VALUE_VP9_ENCODE_BRC_DLL_PATH, 204 __MEDIA_USER_FEATURE_VALUE_VP9_ENCODE_ENABLE_BRC_DLL_CUSTOMPATH, 205 __MEDIA_USER_FEATURE_VALUE_ENCODE_ENABLE_CMD_INIT_HUC_ID, 206 __MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_ENABLE_ID, 207 __MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_SECURE_INPUT_ID, 208 __MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_MODE_ID, 209 __MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_ME_ENABLE_ID, 210 __MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_16xME_ENABLE_ID, 211 __MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_32xME_ENABLE_ID, 212 __MEDIA_USER_FEATURE_VALUE_HEVC_VDENC_16xME_ENABLE_ID, 213 __MEDIA_USER_FEATURE_VALUE_HEVC_VDENC_32xME_ENABLE_ID, 214 __MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_26Z_ENABLE_ID, 215 __MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_REGION_NUMBER_ID, 216 __MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_NUM_B_KERNEL_SPLIT, 217 __MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_POWER_SAVING, 218 __MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_NUM_8x8_INTRA_KERNEL_SPLIT, 219 __MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_ENABLE_WP_SUPPORT_ID, 220 __MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_ENABLE_MEDIARESET_TEST_ID, 221 __MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_RDOQ_ENABLE_ID, 222 __MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_IFRAME_RDOQ_ENABLE_ID, 223 __MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_MULTIPASS_BRC_ENABLE_ID, 224 __MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_MULTIPASS_BRC_IN_USE_ID, 225 __MEDIA_USER_FEATURE_VALUE_ENCODE_BRC_SOFTWARE_ID, 226 __MEDIA_USER_FEATURE_VALUE_ENCODE_BRC_SOFTWARE_PATH_ID, 227 __MEDIA_USER_FEATURE_VALUE_ENCODE_BRC_SOFTWARE_IN_USE_ID, 228 __MEDIA_USER_FEATURE_VALUE_ENCODE_LA_SOFTWARE_ID, 229 __MEDIA_USER_FEATURE_VALUE_ENCODE_LA_SOFTWARE_PATH_ID, 230 __MEDIA_USER_FEATURE_VALUE_ENCODE_LA_SOFTWARE_IN_USE_ID, 231 __MEDIA_USER_FEATURE_VALUE_HEVC_VDENC_ACQP_ENABLE_ID, 232 __MEDIA_USER_FEATURE_VALUE_HEVC_VDENC_VQI_ENABLE_ID, 233 __MEDIA_USER_FEATURE_VALUE_FORCE_PAK_PASS_NUM_ID, 234 __MEDIA_USER_FEATURE_VALUE_HEVC_VDENC_ROUNDING_ENABLE_ID, 235 __MEDIA_USER_FEATURE_VALUE_HEVC_VDENC_PAKOBJCMD_STREAMOUT_ENABLE_ID, 236 __MEDIA_USER_FEATURE_VALUE_HEVC_VDENC_LBCONLY_ENABLE_ID, 237 __MEDIA_USER_FEATURE_VALUE_HEVC_VDENC_PARTIAL_FRAME_UPDATE_ENABLE_ID, 238 __MEDIA_USER_FEATURE_VALUE_HEVC_NUM_THREADS_PER_LCU_ID, 239 __MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_MDF_DISABLE_ID, 240 __MEDIA_USER_FEATURE_VALUE_CODEC_MMC_ENABLE_ID, 241 __MEDIA_USER_FEATURE_VALUE_DECODE_MMC_ENABLE_ID, 242 __MEDIA_USER_FEATURE_VALUE_ENCODE_MMC_ENABLE_ID, 243 __MEDIA_USER_FEATURE_VALUE_CODEC_MMC_IN_USE_ID, 244 __MEDIA_USER_FEATURE_VALUE_DECODE_MMC_IN_USE_ID, 245 __MEDIA_USER_FEATURE_VALUE_DECODE_MPEG2_MODE_ID, 246 __MEDIA_USER_FEATURE_VALUE_DECODE_VC1_MODE_ID, 247 __MEDIA_USER_FEATURE_VALUE_DECODE_AVC_MODE_ID, 248 __MEDIA_USER_FEATURE_VALUE_DECODE_JPEG_MODE_ID, 249 __MEDIA_USER_FEATURE_VALUE_DECODE_VP8_MODE_ID, 250 __MEDIA_USER_FEATURE_VALUE_DECODE_HEVC_MODE_ID, 251 __MEDIA_USER_FEATURE_VALUE_DECODE_VP9_MODE_ID, 252 __MEDIA_USER_FEATURE_VALUE_DECODE_AV1_MODE_ID, 253 __MEDIA_USER_FEATURE_VALUE_DECODE_HISTOGRAM_FROM_VEBOX_ID, 254 __MEDIA_USER_FEATURE_VALUE_DECODE_EXTENDED_MMC_IN_USE_ID, 255 __MEDIA_USER_FEATURE_VALUE_ENCODE_MMC_IN_USE_ID, 256 __MEDIA_USER_FEATURE_VALUE_ENCODE_EXTENDED_MMC_IN_USE_ID, 257 __MEDIA_USER_FEATURE_VALUE_MMC_DEC_RT_COMPRESSIBLE_ID, 258 __MEDIA_USER_FEATURE_VALUE_MMC_DEC_RT_COMPRESSMODE_ID, 259 __MEDIA_USER_FEATURE_VALUE_MMC_ENC_RECON_COMPRESSIBLE_ID, 260 __MEDIA_USER_FEATURE_VALUE_MMC_ENC_RECON_COMPRESSMODE_ID, 261 __MEDIA_USER_FEATURE_VALUE_SLICE_SHUTDOWN_DEFAULT_STATE_ID, 262 __MEDIA_USER_FEATURE_VALUE_SLICE_SHUTDOWN_REQUEST_STATE_ID, 263 __MEDIA_USER_FEATURE_VALUE_SLICE_SHUTDOWN_RESOLUTION_THRESHOLD_ID, 264 __MEDIA_USER_FEATURE_VALUE_SLICE_SHUTDOWN_TARGET_USAGE_THRESHOLD_ID, 265 __MEDIA_USER_FEATURE_VALUE_MPEG2_SLICE_STATE_ENABLE_ID, 266 __MEDIA_USER_FEATURE_VALUE_MPEG2_ENCODE_BRC_DISTORTION_BUFFER_ENABLE_ID, 267 __MEDIA_USER_FEATURE_VALUE_NUMBER_OF_CODEC_DEVICES_ON_VDBOX1_ID, 268 __MEDIA_USER_FEATURE_VALUE_NUMBER_OF_CODEC_DEVICES_ON_VDBOX2_ID, 269 __MEDIA_USER_FEATURE_VALUE_VDI_MODE_ID, 270 __MEDIA_USER_FEATURE_VALUE_MEDIA_WALKER_MODE_ID, 271 __MEDIA_USER_FEATURE_VALUE_VP8_HW_SCOREBOARD_ENABLE_ID, 272 __MEDIA_USER_FEATURE_VALUE_VP8_ENCODE_ME_ENABLE_ID, 273 __MEDIA_USER_FEATURE_VALUE_VP8_ENCODE_16xME_ENABLE_ID, 274 __MEDIA_USER_FEATURE_VALUE_VP8_ENCODE_REPAK_ENABLE_ID, 275 __MEDIA_USER_FEATURE_VALUE_VP8_ENCODE_MULTIPASS_BRC_ENABLE_ID, 276 __MEDIA_USER_FEATURE_VALUE_VP8_ENCODE_ADAPTIVE_REPAK_ENABLE_ID, 277 __MEDIA_USER_FEATURE_VALUE_DISABLE_HEVC_REALTILE_DECODE_ID, 278 __MEDIA_USER_FEATURE_VALUE_ENABLE_HEVC_REALTILE_MULTI_PHASE_DECODE_ID, 279 __MEDIA_USER_FEATURE_VALUE_HCP_DECODE_USER_PIPE_NUM_ID, 280 __MEDIA_USER_FEATURE_VALUE_APOGEIOS_AV1D_ENABLE_ID, 281 __MEDIA_USER_FEATURE_VALUE_ENABLE_HEVC_DECODE_RT_FRAME_COUNT_ID, 282 __MEDIA_USER_FEATURE_VALUE_ENABLE_HEVC_DECODE_VT_FRAME_COUNT_ID, 283 __MEDIA_USER_FEATURE_VALUE_ENABLE_HEVC_DECODE_SP_FRAME_COUNT_ID, 284 __MEDIA_USER_FEATURE_VALUE_AV1BTDLROWSTORECACHE_DISABLE_ID, 285 __MEDIA_USER_FEATURE_VALUE_AV1SMVLROWSTORECACHE_DISABLE_ID, 286 __MEDIA_USER_FEATURE_VALUE_AV1IPDLROWSTORECACHE_DISABLE_ID, 287 __MEDIA_USER_FEATURE_VALUE_AV1DFLYROWSTORECACHE_DISABLE_ID, 288 __MEDIA_USER_FEATURE_VALUE_AV1DFLUROWSTORECACHE_DISABLE_ID, 289 __MEDIA_USER_FEATURE_VALUE_AV1DFLVROWSTORECACHE_DISABLE_ID, 290 __MEDIA_USER_FEATURE_VALUE_AV1CDEFROWSTORECACHE_DISABLE_ID, 291 __MEDIA_USER_FEATURE_VALUE_ENABLE_AVP_SCALABILITY_DECODE_ID, 292 __MEDIA_USER_FEATURE_VALUE_AV1_DECODE_ON_SIMULATION_ID, 293 294 #if (_DEBUG || _RELEASE_INTERNAL) 295 __MEDIA_USER_FEATURE_VALUE_ENCODE_HUC_STATUS2_VALUE, 296 __MEDIA_USER_FEATURE_VALUE_GROUP_ID_ID, 297 __MEDIA_USER_FEATURE_VALUE_MEDIA_PREEMPTION_ENABLE_ID, 298 __MEDIA_USER_FEATURE_VALUE_MDF_OVERRIDE_L3TCCNTRL_REG, 299 __MEDIA_USER_FEATURE_VALUE_MDF_OVERRIDE_MOCS_INDEX, 300 __MEDIA_USER_FEATURE_VALUE_MDF_OVERRIDE_L3ALLOC_REG, 301 __MEDIA_USER_FEATURE_VALUE_MDF_FORCE_RAMODE, 302 __MEDIA_USER_FEATURE_VALUE_ENCODE_VFE_MAX_THREADS_ID, 303 __MEDIA_USER_FEATURE_VALUE_ENCODE_VFE_MAX_THREADS_SCALING_ID, 304 __MEDIA_USER_FEATURE_VALUE_AVC_FTQ_IN_USE_ID, 305 __MEDIA_USER_FEATURE_VALUE_AVC_CAF_IN_USE_ID, 306 __MEDIA_USER_FEATURE_VALUE_ENCODE_HW_WALKER_MODE_ID, 307 __MEDIA_USER_FEATURE_VALUE_ENCODE_L3_CACHE_CNTLREG_OVERRIDE_ID, 308 __MEDIA_USER_FEATURE_VALUE_ENCODE_L3_CACHE_CNTLREG2_OVERRIDE_ID, 309 __MEDIA_USER_FEATURE_VALUE_ENCODE_L3_CACHE_CNTLREG3_OVERRIDE_ID, 310 __MEDIA_USER_FEATURE_VALUE_ENCODE_L3_CACHE_SQCREG1_OVERRIDE_ID, 311 __MEDIA_USER_FEATURE_VALUE_ENCODE_L3_CACHE_SQCREG4_OVERRIDE_ID, 312 __MEDIA_USER_FEATURE_VALUE_ENCODE_L3_LRA_1_REG1_OVERRIDE_ID, 313 __MEDIA_USER_FEATURE_VALUE_VDBOX_ID_USED, 314 __MEDIA_USER_FEATURE_VALUE_VDENC_IN_USE_ID, 315 __MEDIA_USER_FEATURE_VALUE_ENCODE_CSC_METHOD_ID, 316 __MEDIA_USER_FEATURE_VALUE_ENCODE_RAW_TILE_ID, 317 __MEDIA_USER_FEATURE_VALUE_ENCODE_RAW_FORMAT_ID, 318 __MEDIA_USER_FEATURE_VALUE_ENCODE_CQM_QP_THRESHOLD_ID, 319 __MEDIA_USER_FEATURE_VALUE_ISA_ASM_DEBUG_ENABLE_ID, 320 __MEDIA_USER_FEATURE_VALUE_ISA_ASM_DEBUG_SURF_BTI_ID, 321 __MEDIA_USER_FEATURE_VALUE_ROWSTORE_CACHE_DISABLE_ID, 322 __MEDIA_USER_FEATURE_VALUE_INTRAROWSTORECACHE_DISABLE_ID, 323 __MEDIA_USER_FEATURE_VALUE_DEBLOCKINGFILTERROWSTORECACHE_DISABLE_ID, 324 __MEDIA_USER_FEATURE_VALUE_BSDMPCROWSTORECACHE_DISABLE_ID, 325 __MEDIA_USER_FEATURE_VALUE_MPRROWSTORECACHE_DISABLE_ID, 326 __MEDIA_USER_FEATURE_VALUE_VDENCROWSTORECACHE_DISABLE_ID, 327 __MEDIA_USER_FEATURE_VALUE_IS_CODEC_ROW_STORE_CACHE_ENABLED_ID, 328 __MEDIA_USER_FEATURE_VALUE_BREAK_IN_CODECHAL_CREATE_ID, 329 __MEDIA_USER_FEATURE_VALUE_MEDIASOLO_ENABLE_ID, 330 __MEDIA_USER_FEATURE_VALUE_STREAM_OUT_ENABLE_ID, 331 __MEDIA_USER_FEATURE_VALUE_DECOMPRESS_DECODE_OUTPUT_ID, 332 __MEDIA_USER_FEATURE_VALUE_DECOMPRESS_DECODE_SFC_OUTPUT_ID, 333 __MEDIA_USER_FEATURE_VALUE_CODECHAL_DEBUG_OUTPUT_DIRECTORY_ID, 334 __MEDIA_USER_FEATURE_VALUE_CODECHAL_DUMP_OUTPUT_DIRECTORY_ID, 335 __MEDIA_USER_FEATURE_VALUE_MEDIA_DEBUG_CFG_GENERATION_ID, 336 __MEDIA_USER_FEATURE_VALUE_CODECHAL_RDOQ_INTRA_TU_OVERRIDE_ID, 337 __MEDIA_USER_FEATURE_VALUE_CODECHAL_RDOQ_INTRA_TU_DISABLE_ID, 338 __MEDIA_USER_FEATURE_VALUE_CODECHAL_RDOQ_INTRA_TU_THRESHOLD_ID, 339 __MEDIA_USER_FEATURE_VALUE_CODECHAL_ENABLE_FAKE_HEADER_SIZE_ID, 340 __MEDIA_USER_FEATURE_VALUE_CODECHAL_FAKE_IFRAME_HEADER_SIZE_ID, 341 __MEDIA_USER_FEATURE_VALUE_CODECHAL_FAKE_PBFRAME_HEADER_SIZE_ID, 342 __MEDIA_USER_FEATURE_VALUE_COMMAND_PARSER_INPUT_FILE_PATH_ID, 343 __MEDIA_USER_FEATURE_VALUE_MHW_BASE_VDENC_INTERFACE_ID, 344 __MEDIA_USER_FEATURE_VALUE_FORCE_AV1_TILE_BASED_DECODE_ID, 345 __MEDIA_USER_FEATURE_VALUE_AV1_ERROR_STATUS_ADDR_VALUE_ID, 346 __MEDIA_USER_FEATURE_VALUE_DECODE_HISTOGRAM_DEBUG_ID, 347 __MEDIA_USER_FEATURE_VALUE_DECODE_SFC_RGBFORMAT_OUTPUT_DEBUG_ID, 348 __MEDIA_USER_FEATURE_VALUE_DECODE_SFC_LINEAR_OUTPUT_DEBUG_ID, 349 __MEDIA_USER_FEATURE_VALUE_HEVC_VDENC_TCBRC_ARB_DISABLE_ID, 350 __MEDIA_USER_FEATURE_VALUE_LPLA_DS_DATA_ID, 351 #endif // (_DEBUG || _RELEASE_INTERNAL) 352 __MEDIA_USER_FEATURE_VALUE_STATUS_REPORTING_ENABLE_ID, 353 __MEDIA_USER_FEATURE_VALUE_SPLIT_SCREEN_DEMO_POSITION_ID, 354 __MEDIA_USER_FEATURE_VALUE_SPLIT_SCREEN_DEMO_PARAMETERS_ID, 355 __MEDIA_USER_FEATURE_VALUE_HEVC_SF_2_DMA_SUBMITS_ENABLE_ID, 356 __MEDIA_USER_FEATURE_VALUE_HEVCDATROWSTORECACHE_DISABLE_ID, 357 __MEDIA_USER_FEATURE_VALUE_HEVCDFROWSTORECACHE_DISABLE_ID, 358 __MEDIA_USER_FEATURE_VALUE_HEVCSAOROWSTORECACHE_DISABLE_ID, 359 __MEDIA_USER_FEATURE_VALUE_VP9_HVDROWSTORECACHE_DISABLE_ID, 360 __MEDIA_USER_FEATURE_VALUE_VP9_DATROWSTORECACHE_DISABLE_ID, 361 __MEDIA_USER_FEATURE_VALUE_VP9_DFROWSTORECACHE_DISABLE_ID, 362 __MEDIA_USER_FEATURE_VALUE_MDF_CMD_DUMP_ENABLE_ID, 363 __MEDIA_USER_FEATURE_VALUE_MDF_ETW_ENABLE_ID, 364 __MEDIA_USER_FEATURE_VALUE_MDF_LOG_LEVEL_ID, 365 __MEDIA_USER_FEATURE_VALUE_MDF_UMD_ULT_ENABLE_ID, 366 __MEDIA_USER_FEATURE_VALUE_MDF_CURBE_DUMP_ENABLE_ID, 367 __MEDIA_USER_FEATURE_VALUE_MDF_SURFACE_DUMP_ENABLE_ID, 368 __MEDIA_USER_FEATURE_VALUE_MDF_SURFACE_STATE_DUMP_ENABLE_ID, 369 __MEDIA_USER_FEATURE_VALUE_MDF_CMD_DUMP_COUNTER_ID, 370 __MEDIA_USER_FEATURE_VALUE_MDF_SURFACE_STATE_DUMP_COUNTER_ID, 371 __MEDIA_USER_FEATURE_VALUE_MDF_INTERFACE_DESCRIPTOR_DATA_DUMP_ID, 372 __MEDIA_USER_FEATURE_VALUE_MDF_INTERFACE_DESCRIPTOR_DATA_COUNTER_ID, 373 __MEDIA_USER_FEATURE_VALUE_MDF_DUMPPATH_USER_ID, 374 __MEDIA_USER_FEATURE_VALUE_MDF_EMU_MODE_ENABLE_ID, 375 __MEDIA_USER_FEATURE_VALUE_MDF_DEFAULT_CM_QUEUE_TYPE_ID, 376 __MEDIA_USER_FEATURE_VALUE_MDF_CCS_USE_VE_INTERFACE, 377 __MEDIA_USER_FEATURE_VALUE_MDF_CCS_USE_VE_DEBUG_OVERRIDE, 378 __MEDIA_USER_FEATURE_VALUE_MDF_FORCE_EXECUTION_PATH_ID, 379 __MEDIA_USER_FEATURE_VALUE_MDF_MAX_THREAD_NUM_ID, 380 __MEDIA_USER_FEATURE_VALUE_MDF_FORCE_COHERENT_STATELESSBTI_ID, 381 __MEDIA_USER_FEATURE_ENABLE_RENDER_ENGINE_MMC_ID, 382 __MEDIA_USER_FEATURE_VALUE_DISABLE_MMC_ID, 383 __MEDIA_USER_FEATURE_VALUE_FORCE_MMC_ON_ID, 384 __MEDIA_USER_FEATURE_MCPY_MODE_ID, 385 __MEDIA_USER_FEATURE_ENABLE_HW_DEBUG_HOOKS_ID, 386 __MEDIA_USER_FEATURE_VALUE_CODECHAL_FRAME_NUMBER_TO_STOP_ID, 387 __MEDIA_USER_FEATURE_VALUE_CODECHAL_ENABLE_SW_CRC_ID, 388 #if (_DEBUG || _RELEASE_INTERNAL) 389 __VPHAL_DBG_SURF_DUMP_OUTFILE_KEY_NAME_ID, 390 #endif 391 __VPHAL_ENABLE_MMC_ID, 392 __VPHAL_ENABLE_MMC_IN_USE_ID, 393 __VPHAL_PRIMARY_SURFACE_COMPRESS_MODE_ID, 394 __VPHAL_PRIMARY_SURFACE_COMPRESSIBLE_ID, 395 __VPHAL_RT_COMPRESS_MODE_ID, 396 __VPHAL_RT_COMPRESSIBLE_ID, 397 #if (_DEBUG || _RELEASE_INTERNAL) 398 __VPHAL_ENABLE_1K_1DLUT_ID, 399 __VPHAL_ENABLE_CPU_GENERATE_3DLUT_ID, 400 #endif 401 #if (_DEBUG || _RELEASE_INTERNAL) 402 __VPHAL_ENABLE_COMPUTE_CONTEXT_ID, 403 #endif 404 __MOS_USER_FEATURE_KEY_XML_AUTOGEN_ID, 405 __MOS_USER_FEATURE_KEY_XML_FILEPATH_ID, 406 __MOS_USER_FEATURE_KEY_XML_DUMP_GROUPS_ID, 407 __MEDIA_USER_FEATURE_VALUE_VEBOX_SPLIT_RATIO_ID, 408 __MEDIA_USER_FEATURE_VALUE_HCP_DECODE_MODE_SWITCH_THRESHOLD1_ID, 409 __MEDIA_USER_FEATURE_VALUE_HCP_DECODE_MODE_SWITCH_THRESHOLD2_ID, 410 __MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_ENABLE_VE_DEBUG_OVERRIDE, 411 __MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_ENABLE_HW_SEMAPHORE, 412 __MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_ENABLE_VDBOX_HW_SEMAPHORE, 413 __MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_ENABLE_HW_STITCH, 414 __MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_SUBTHREAD_NUM_ID, 415 __MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_PAK_ONLY_ID, 416 __MEDIA_USER_FEATURE_VALUE_HEVC_VME_ENCODE_SSE_ENABLE_ID, 417 __MEDIA_USER_FEATURE_VALUE_ENCODE_DISABLE_SCALABILITY, 418 __MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_RDOQ_PERF_DISABLE_ID, 419 __MEDIA_USER_FEATURE_VALUE_HEVC_TCBRC_QUALITY_BOOST_ENABLE_ID, 420 __MEDIA_USER_FEATURE_VALUE_WATCHDOG_TIMER_THRESHOLD, 421 __MEDIA_USER_FEATURE_VALUE_ENABLE_ENCODE_VE_CTXSCHEDULING_ID, 422 __MEDIA_USER_FEATURE_VALUE_HCP_DECODE_ALWAYS_FRAME_SPLIT_ID, 423 __MEDIA_USER_FEATURE_VALUE_SCALABILITY_OVERRIDE_SPLIT_WIDTH_IN_MINCB, 424 __MEDIA_USER_FEATURE_VALUE_SCALABILITY_FE_SEPARATE_SUBMISSION_IN_USE_ID, 425 __MEDIA_USER_FEATURE_VALUE_HEVC_VME_BRC_LTR_DISABLE_ID, 426 __MEDIA_USER_FEATURE_VALUE_HEVC_VME_BRC_LTR_INTERVAL_ID, 427 __MEDIA_USER_FEATURE_VALUE_HEVC_VME_FORCE_SCALABILITY_ID, 428 __MEDIA_USER_FEATURE_VALUE_HEVC_VDENC_SEMA_RESET_DELAY_ID, 429 __MEDIA_USER_FEATURE_VALUE_SET_CMD_DEFAULT_PARS_FROM_FILES_ID, 430 __MEDIA_USER_FEATURE_VALUE_CMD_PARS_FILES_DIRECORY_ID, 431 __MEDIA_USER_FEATURE_VALUE_APOGEIOS_ENABLE_ID, 432 __MEDIA_USER_FEATURE_VALUE_VPP_APOGEIOS_ENABLE_ID, 433 __MEDIA_USER_FEATURE_VALUE_EXTERNAL_COPY_SYNC_ID, 434 __MEDIA_USER_FEATURE_VALUE_INTER_FRAME_MEMORY_NINJA_START_COUNTER_ID, 435 __MEDIA_USER_FEATURE_VALUE_INTER_FRAME_MEMORY_NINJA_END_COUNTER_ID, 436 __MEDIA_USER_FEATURE_VALUE_APOGEIOS_HEVCD_ENABLE_ID, 437 __MEDIA_USER_FEATURE_VALUE_APOGEIOS_AVCD_ENABLE_ID, 438 __MEDIA_USER_FEATURE_VALUE_APOGEIOS_VP8D_ENABLE_ID, 439 __MEDIA_USER_FEATURE_VALUE_APOGEIOS_VP9D_ENABLE_ID, 440 __MEDIA_USER_FEATURE_VALUE_APOGEIOS_MPEG2D_ENABLE_ID, 441 __MEDIA_USER_FEATURE_VALUE_APOGEIOS_JPEGD_ENABLE_ID, 442 __MEDIA_USER_FEATURE_VALUE_RA_MODE_ENABLE_ID, 443 __MEDIA_USER_FEATURE_VALUE_LOCAL_MEMORY_LEVEL_SWITCH_ID, 444 __MEDIA_USER_FEATURE_VALUE_DISABLE_TLB_PREFETCH_ID, 445 #if (_DEBUG || _RELEASE_INTERNAL) 446 __MEDIA_USER_FEATURE_VALUE_FORCE_DECODE_RESOURCE_LOCKABLE_ID, 447 __MEDIA_USER_FEATURE_VALUE_SFC_LINEAR_OUTPUT_USED_ID, 448 #endif 449 __MEDIA_USER_FEATURE_VALUE_PROTECT_MODE_ENABLE_ID, 450 __MEDIA_USER_FEATURE_VALUE_OLP_IN_USE_ID, 451 __MEDIA_USER_FEATURE_VALUE_SKIP_FRAME_IN_USE_ID, 452 __MEDIA_USER_FEATURE_VALUE_HUC_LOAD_STATUS_ID, 453 __MEDIA_USER_FEATURE_VALUE_HUC_REPORT_CRITICAL_ERROR_ID, 454 __MEDIA_USER_FEATURE_VALUE_AV1_DECODE_DRIVER_S2L_ENABLE_ID, 455 __MEDIA_USER_FEATURE_VALUE_HEVC_VDENC_TILEREPLAY_ENABLE_ID, 456 __MEDIA_USER_FEATURE_VALUE_HEVC_VDENC_RGB_ENCODING_ENABLE_ID, 457 __MEDIA_USER_FEATURE_VALUE_HEVC_VDENC_CAPTURE_MODE_ENABLE_ID, 458 __MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_LOAD_KERNEL_INPUT_ID, 459 __MEDIA_USER_FEATURE_VALUE_VDENC_ULTRA_MODE_ENABLE_ID, 460 __MEDIA_USER_FEATURE_VALUE_HEVC_VME_BREAK12_ID, 461 __MEDIA_USER_FEATURE_VALUE_HEVC_VDENC_FORCE_DELTA_QP_ENABLE_ID, 462 __MEDIA_USER_FEATURE_VALUE_HEVC_VME_BRC_LTR_ENABLE_ID, 463 __MEDIA_USER_FEATURE_VALUE_HEVC_VDENC_FORCE_SCALABILITY_ID, 464 __MEDIA_USER_FEATURE_VALUE_HEVC_VME_DISABLE_PANIC_MODE_ID, 465 __MEDIA_USER_FEATURE_VALUE_HEVC_VME_NUM_MEDIA_HWWALKER_INUSE_ID, 466 __MEDIA_USER_FEATURE_VALUE_HEVC_VME_ENABLE_RENDER_CONTEXT_ID, 467 __MEDIA_USER_FEATURE_VALUE_MFE_FAST_SUBMIT_ID, 468 __MEDIA_USER_FEATURE_VALUE_MFE_MULTISTREAM_SCHEDULER_ID, 469 __MEDIA_USER_FEATURE_VALUE_LOCKABLE_RESOURCE_ID, 470 __MEDIA_USER_FEATURE_VALUE_MMC_ENC_POST_CDEF_RECON_COMPRESSIBLE_ID, 471 __MEDIA_USER_FEATURE_VALUE_MMC_ENC_POST_CDEF_RECON_COMPRESSMODE_ID, 472 473 __MOS_USER_FEATURE_KEY_MAX_ID, 474 } MOS_USER_FEATURE_VALUE_ID; 475 476 //! 477 //! \brief User Feature Type 478 //! 479 typedef enum 480 { 481 MOS_USER_FEATURE_TYPE_INVALID, 482 MOS_USER_FEATURE_TYPE_USER, 483 MOS_USER_FEATURE_TYPE_SYSTEM, 484 } MOS_USER_FEATURE_TYPE, 485 *PMOS_USER_FEATURE_TYPE; 486 487 //! 488 //! \brief User Feature Value type 489 //! 490 typedef enum 491 { 492 MOS_USER_FEATURE_VALUE_TYPE_INVALID, 493 MOS_USER_FEATURE_VALUE_TYPE_BINARY, 494 MOS_USER_FEATURE_VALUE_TYPE_BOOL, 495 MOS_USER_FEATURE_VALUE_TYPE_INT32, 496 MOS_USER_FEATURE_VALUE_TYPE_INT64, 497 MOS_USER_FEATURE_VALUE_TYPE_UINT32, 498 MOS_USER_FEATURE_VALUE_TYPE_UINT64, 499 MOS_USER_FEATURE_VALUE_TYPE_FLOAT, 500 MOS_USER_FEATURE_VALUE_TYPE_STRING, 501 MOS_USER_FEATURE_VALUE_TYPE_MULTI_STRING, 502 } MOS_USER_FEATURE_VALUE_TYPE, 503 *PMOS_USER_FEATURE_VALUE_TYPE; 504 505 //! 506 //! \brief User Feature Notification type 507 //! 508 typedef enum 509 { 510 MOS_USER_FEATURE_NOTIFY_TYPE_INVALID, 511 MOS_USER_FEATURE_NOTIFY_TYPE_VALUE_CHANGE, 512 } MOS_USER_FEATURE_NOTIFY_TYPE, 513 *PMOS_USER_FEATURE_NOTIFY_TYPE; 514 515 //! 516 //! \brief User Feature Data Operation type 517 //! NONE_CUSTOM_DEFAULT_VALUE : None Custom Default Value for Input Data 518 //! CUSTOM_DEFAULT_VALUE_TYPE : With Custom Default Value for Input Data 519 //! 520 typedef enum 521 { 522 MOS_USER_FEATURE_VALUE_DATA_FLAG_NONE_CUSTOM_DEFAULT_VALUE_TYPE = 0, 523 MOS_USER_FEATURE_VALUE_DATA_FLAG_CUSTOM_DEFAULT_VALUE_TYPE, 524 } MOS_USER_FEATURE_VALUE_DATA_FLAG_TYPE, 525 *PMOS_USER_FEATURE_VALUE_DATA_FLAG_TYPE; 526 527 //! 528 //! \brief User Feature Key Effective Range type 529 //! EFFECT_ALWALYS : Effective on all driver builds 530 //! EFFECT_DEBUGONLY : Effective on release-internal and debug driver only 531 //! 532 typedef enum 533 { 534 MOS_USER_FEATURE_EFFECT_ALWAYS = 0, 535 MOS_USER_FEATURE_EFFECT_DEBUGONLY, 536 } MOS_USER_FEATURE_EFFECTIVE_TYPE, 537 *PMOS_USER_FEATURE_EFFECTIVE_TYPE; 538 539 //! 540 //! \brief User Feature String Data 541 //! 542 typedef struct 543 { 544 char * pStringData; 545 uint32_t uMaxSize; 546 uint32_t uSize; 547 } MOS_USER_FEATURE_VALUE_STRING, *PMOS_USER_FEATURE_VALUE_STRING; 548 549 //! 550 //! \brief User Feature Multi String Data 551 //! 552 typedef struct 553 { 554 char * pMultStringData; 555 uint32_t uMaxSize; 556 uint32_t uSize; 557 PMOS_USER_FEATURE_VALUE_STRING pStrings; 558 uint32_t uCount; 559 } MOS_USER_FEATURE_VALUE_MULTI_STRING, *PMOS_USER_FEATURE_VALUE_MULTI_STRING; 560 561 //! 562 //! \brief User Feature Binary Data 563 //! 564 typedef struct 565 { 566 uint8_t *pBinaryData; 567 uint32_t uMaxSize; 568 uint32_t uSize; 569 } MOS_USER_FEATURE_VALUE_BINARY, *PMOS_USER_FEATURE_VALUE_BINARY; 570 571 //! 572 //! \brief User Feature Value Data 573 //! \details union : to store the user feature value 574 //! i32DataFlag : the input data valye type 575 //! refer to MOS_USER_FEATURE_VALUE_DATA_FLAG_TYPE 576 //! 577 //! 578 typedef struct _MOS_USER_FEATURE_VALUE_DATA 579 { 580 union 581 { 582 int32_t bData; 583 uint32_t u32Data; 584 uint64_t u64Data; 585 int32_t i32Data; 586 int64_t i64Data; 587 float fData; 588 MOS_USER_FEATURE_VALUE_STRING StringData; 589 MOS_USER_FEATURE_VALUE_MULTI_STRING MultiStringData; 590 MOS_USER_FEATURE_VALUE_BINARY BinaryData; 591 }; 592 int32_t i32DataFlag; 593 } MOS_USER_FEATURE_VALUE_DATA, *PMOS_USER_FEATURE_VALUE_DATA; 594 595 //! 596 //! \brief User Feature Value Information 597 //! 598 typedef struct _MOS_USER_FEATURE_VALUE_WRITE_DATA 599 { 600 uint32_t ValueID; 601 MOS_USER_FEATURE_VALUE_DATA Value; 602 } MOS_USER_FEATURE_VALUE_WRITE_DATA, *PMOS_USER_FEATURE_VALUE_WRITE_DATA; 603 604 //! 605 //! \brief User Feature Value Information 606 //! 607 typedef struct _MOS_USER_FEATURE_VALUE_INFO 608 { 609 char * pcName; //store name for the bitmask/enum values 610 uint32_t Value; 611 } MOS_USER_FEATURE_VALUE_INFO, *PMOS_USER_FEATURE_VALUE_INFO; 612 613 //! 614 //! \brief User Feature Data 615 //! 616 typedef struct 617 { 618 uint32_t ValueID; 619 const char * pValueName; 620 const char * pcGroup; //!< User feature key group - eg: MediaSolo, MOS, Codec 621 const char * pcPath; //!< User feature Key Read Path 622 const char * pcWritePath; //!< User feature Key Write Path 623 MOS_USER_FEATURE_TYPE Type; //!< User feature Key User Feature type - eg: System, User 624 MOS_USER_FEATURE_VALUE_TYPE ValueType; //!< User feature key type - eg: bool,dword 625 const char * DefaultValue; //!< User feature key value 626 const char * pcDescription; //!< User feature key description 627 int32_t bExists; //<! Set if the user feature key is defined in the user feature key manager 628 uint32_t uiNumOfValues; //<! Number of valid user feature key values. Useful for user feature keys of type bitmask and enum 629 PMOS_USER_FEATURE_VALUE_INFO pValueInfo; //<! Store information of all valid enum/bit mask values and names 630 MOS_USER_FEATURE_EFFECTIVE_TYPE EffctiveRange; //<! User feature key effect range, eg: Always effective / debug driver only 631 // Temp WA for old user feature read/write 632 #ifdef __MOS_USER_FEATURE_WA_ 633 union 634 { 635 int32_t bData; 636 uint32_t u32Data; 637 uint64_t u64Data; 638 int32_t i32Data; 639 int64_t i64Data; 640 float fData; 641 MOS_USER_FEATURE_VALUE_STRING StringData; 642 MOS_USER_FEATURE_VALUE_MULTI_STRING MultiStringData; 643 MOS_USER_FEATURE_VALUE_BINARY BinaryData; 644 }; 645 #endif 646 MOS_USER_FEATURE_VALUE_DATA Value; //!< User feature key value 647 } MOS_USER_FEATURE_VALUE, *PMOS_USER_FEATURE_VALUE; 648 649 //! 650 //! \brief User Feature Value Information 651 //! 652 typedef struct 653 { 654 PMOS_USER_FEATURE_VALUE pUserFeatureValue; 655 } MOS_USER_FEATURE_VALUE_MAP, *PMOS_USER_FEATURE_VALUE_MAP; 656 657 //! 658 //! \brief User Feature Notification Data 659 //! 660 typedef struct 661 { 662 MOS_USER_FEATURE_TYPE Type; //!< User Feature Type 663 char * pPath; //!< User Feature Path 664 MOS_USER_FEATURE_NOTIFY_TYPE NotifyType; //!< Notification Type 665 int32_t bTriggered; //!< Notification is triggered or not 666 void * pHandle; //!< OS Specific Handle 667 } MOS_USER_FEATURE_NOTIFY_DATA, *PMOS_USER_FEATURE_NOTIFY_DATA; 668 669 //! 670 //! \brief User Feature Interface 671 //! 672 typedef struct 673 { 674 MOS_USER_FEATURE_TYPE Type; //!< User Feature Type 675 const char * pPath; //!< User Feature Path 676 PMOS_USER_FEATURE_VALUE pValues; //!< Array of User Feature Values 677 uint32_t uiNumValues; //!< Number of User Feature Values 678 } MOS_USER_FEATURE, *PMOS_USER_FEATURE; 679 680 //! 681 //! \brief OS User Feature Interface 682 //! 683 typedef struct _MOS_USER_FEATURE_INTERFACE *PMOS_USER_FEATURE_INTERFACE; 684 typedef struct _MOS_USER_FEATURE_INTERFACE 685 { 686 void * pOsInterface; //!< Pointer to OS Interface 687 int32_t bIsNotificationSupported; //!< Whether Notification feature is supported 688 689 MOS_STATUS (*pfnEnableNotification) 690 ( 691 PMOS_USER_FEATURE_INTERFACE pOsUserFeatureInterface, 692 PMOS_USER_FEATURE_NOTIFY_DATA pNotification, 693 MOS_CONTEXT_HANDLE mosCtx); 694 695 MOS_STATUS (*pfnDisableNotification) 696 ( 697 PMOS_USER_FEATURE_INTERFACE pOsUserFeatureInterface, 698 PMOS_USER_FEATURE_NOTIFY_DATA pNotification); 699 700 MOS_STATUS (*pfnParsePath) 701 ( 702 PMOS_USER_FEATURE_INTERFACE pOsUserFeatureInterface, 703 char *const pInputPath, 704 PMOS_USER_FEATURE_TYPE pUserFeatureType, 705 char ** ppSubPath); 706 707 } MOS_USER_FEATURE_INTERFACE; 708 709 //! 710 //! \brief User Feature Notification Data Common 711 //! 712 typedef struct 713 { 714 void * UFKey; //!< Handle to User Feature Key 715 HANDLE hEvent; //!< Handle to User Feature Key Event 716 PTP_WAIT hWaitEvent; //!< Handle to User Feature Key Wait Event 717 } MOS_USER_FEATURE_NOTIFY_DATA_COMMON, *PMOS_USER_FEATURE_NOTIFY_DATA_COMMON; 718 719 //! 720 //! \brief User Feature Key Path Info 721 //! 722 typedef struct 723 { 724 char * Path; 725 uint32_t Length; 726 } MOS_USER_FEATURE_KEY_PATH_INFO, *PMOS_USER_FEATURE_KEY_PATH_INFO; 727 728 #include "mos_util_user_feature_keys.h" 729 730 #ifdef __cplusplus 731 //Memory alloc fail simulatiion related defination 732 #if (_DEBUG || _RELEASE_INTERNAL) 733 #define NO_ALLOC_ALIGNMENT (1) 734 #endif //(_DEBUG || _RELEASE_INTERNAL) 735 #endif 736 #endif // __MOS_UTILITIES_COMMON_H__ 737