blob: a31c17471f9ce80d11b667cff120beb2d32b5c4b [file] [log] [blame]
/*
* Copyright (c) 2019, Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*/
//!
//! \file mos_utilities_common.h
//! \brief Common OS service across different platform
//! \details Common OS service across different platform
//!
#ifndef __MOS_UTILITIES_COMMON_H__
#define __MOS_UTILITIES_COMMON_H__
#include "mos_defs.h"
#ifndef __MOS_USER_FEATURE_WA_
#define __MOS_USER_FEATURE_WA_
#endif
//------------------------------------------------------------------------------
// SECTION: Media User Feature Control
//
// ABSTRACT: Is an abstraction to read and write system level settings relating
// to GEN media driver.
//------------------------------------------------------------------------------
//!
//! \brief ASSERT when failing to read user feature key or default user feature key value,
//! according to MOS_UserFeature_ReadValue_ID.
//!
#define MOS_USER_FEATURE_INVALID_KEY_ASSERT(_expr) \
if ((_expr) == MOS_STATUS_NULL_POINTER) \
{ \
MOS_OS_ASSERT(false); \
}
//!
//! \brief User Feature Type maximum and minimum data size
//!
#define MOS_USER_CONTROL_MIN_DATA_SIZE 128
#define MOS_USER_CONTROL_MAX_DATA_SIZE 2048
#define MOS_USER_MAX_STRING_COUNT 128
#define MOS_USER_FEATURE_MAX_UINT32_STR_VALUE "4294967295"
//! MOS User Feature
#define __NULL_USER_FEATURE_VALUE_WRITE_DATA__ \
{ \
__MOS_USER_FEATURE_KEY_INVALID_ID, { {0}, 0 } \
}
#ifdef __MOS_USER_FEATURE_WA_
#define __NULL_USER_FEATURE_VALUE__ \
{ \
__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 } \
}
#define MOS_DECLARE_UF_KEY(Id, ValueName, Readpath, Writepath, Group, Type, ValueType, DefaultValue, Description) \
{ \
Id, ValueName, Group, Readpath, Writepath, Type, ValueType, DefaultValue, Description, false, 1, nullptr, MOS_USER_FEATURE_EFFECT_ALWAYS, {0}, { {0}, 0 } \
}
// 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
// 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
// user feature key read request that is needed for release driver
#define MOS_DECLARE_UF_KEY_DBGONLY(Id, ValueName, Readpath, Writepath, Group, Type, ValueType, DefaultValue, Description) \
{ \
Id, ValueName, Group, Readpath, Writepath, Type, ValueType, DefaultValue, Description, false, 1, nullptr, MOS_USER_FEATURE_EFFECT_DEBUGONLY, {0}, { {0}, 0 } \
}
#else
#define __NULL_USER_FEATURE_VALUE__ \
{ \
__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 } \
}
#define MOS_DECLARE_UF_KEY(Id, ValueName, Readpath, Writepath, Group, Type, ValueType, DefaultValue, Description) \
{ \
Id, ValueName, Group, Readpath, Writepath, Type, ValueType, DefaultValue, Description, false, 1, nullptr, MOS_USER_FEATURE_EFFECT_ALWAYS, { {0}, 0 } \
}
#define MOS_DECLARE_UF_KEY_DBGONLY(Id, ValueName, Readpath, Writepath, Group, Type, ValueType, DefaultValue, Description) \
{ \
Id, ValueName, Group, Readpath, Writepath, Type, ValueType, DefaultValue, Description, false, 1, nullptr, MOS_USER_FEATURE_EFFECT_DEBUGONLY, { {0}, 0 } \
}
#endif
#ifndef MAX_USER_FEATURE_FIELD_LENGTH
#define MAX_USER_FEATURE_FIELD_LENGTH 256
#endif
//!
//! \brief User Feature Value IDs
//!
typedef enum _MOS_USER_FEATURE_VALUE_ID
{
__MOS_USER_FEATURE_KEY_INVALID_ID = 0,
__MEDIA_USER_FEATURE_VALUE_MEDIA_RESET_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_MEDIA_RESET_TH_ID,
__MEDIA_USER_FEATURE_VALUE_SOFT_RESET_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_SIM_IN_USE_ID,
__MEDIA_USER_FEATURE_VALUE_FORCE_VDBOX_ID,
__MEDIA_USER_FEATURE_VALUE_LINUX_PERFORMANCETAG_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_PERF_PROFILER_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_PERF_PROFILER_FE_BE_TIMING,
__MEDIA_USER_FEATURE_VALUE_PERF_PROFILER_OUTPUT_FILE,
__MEDIA_USER_FEATURE_VALUE_PERF_PROFILER_BUFFER_SIZE,
__MEDIA_USER_FEATURE_VALUE_PERF_PROFILER_TIMER_REG,
__MEDIA_USER_FEATURE_VALUE_PERF_PROFILER_ENABLE_MULTI_PROCESS,
__MEDIA_USER_FEATURE_VALUE_PERF_PROFILER_REGISTER_1,
__MEDIA_USER_FEATURE_VALUE_PERF_PROFILER_REGISTER_2,
__MEDIA_USER_FEATURE_VALUE_PERF_PROFILER_REGISTER_3,
__MEDIA_USER_FEATURE_VALUE_PERF_PROFILER_REGISTER_4,
__MEDIA_USER_FEATURE_VALUE_PERF_PROFILER_REGISTER_5,
__MEDIA_USER_FEATURE_VALUE_PERF_PROFILER_REGISTER_6,
__MEDIA_USER_FEATURE_VALUE_PERF_PROFILER_REGISTER_7,
__MEDIA_USER_FEATURE_VALUE_PERF_PROFILER_REGISTER_8,
__MEDIA_USER_FEATURE_VALUE_DISABLE_KMD_WATCHDOG_ID,
__MEDIA_USER_FEATURE_VALUE_SINGLE_TASK_PHASE_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_AUX_TABLE_16K_GRANULAR_ID,
__MEDIA_USER_FEATURE_VALUE_MFE_MBENC_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_MFE_FIRST_BUFFER_SUBMIT_ID,
__MEDIA_USER_FEATURE_VALUE_RC_PANIC_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_SLICE_SHUTDOWN_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_FORCE_YFYS_ID,
__MEDIA_USER_FEATURE_VALUE_DECODE_LOCK_DISABLE_ID,
__MEDIA_USER_FEATURE_VALUE_ENCODE_HW_WALKER_ID,
__MEDIA_USER_FEATURE_VALUE_ENCODE_SUPPRESS_RECON_PIC_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_ENCODE_ME_IN_USE_ID,
__MEDIA_USER_FEATURE_VALUE_ENCODE_16xME_IN_USE_ID,
__MEDIA_USER_FEATURE_VALUE_ENCODE_32xME_IN_USE_ID,
__MEDIA_USER_FEATURE_VALUE_ENCODE_BRC_IN_USE_ID,
__MEDIA_USER_FEATURE_VALUE_ENCODE_RATECONTROL_METHOD_ID,
__MEDIA_USER_FEATURE_VALUE_ENCODE_TARGET_USAGE_OVERRIDE_ID,
__MEDIA_USER_FEATURE_VALUE_ENCODE_ENABLE_FRAME_TRACKING_ID,
__MEDIA_USER_FEATURE_VALUE_ENCODE_USED_VDBOX_NUM_ID,
__MEDIA_USER_FEATURE_VALUE_ENCODE_ENABLE_COMPUTE_CONTEXT_ID,
__MEDIA_USER_FEATURE_VALUE_DECODE_ENABLE_COMPUTE_CONTEXT_ID,
__MEDIA_USER_FEATURE_VALUE_AVC_ENCODE_ME_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_AVC_ENCODE_16xME_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_AVC_ENCODE_32xME_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_AVC_ENCODE_MULTIPRED_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_AVC_ENCODE_INTRA_REFRESH_QP_THRESHOLD_ID,
__MEDIA_USER_FEATURE_VALUE_AVC_FTQ_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_AVC_CAF_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_AVC_CAF_DISABLE_HD_ID,
__MEDIA_USER_FEATURE_VALUE_AVC_MB_BRC_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_AVC_ROUNDING_INTER_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_AVC_ROUNDING_INTER_P_ID,
__MEDIA_USER_FEATURE_VALUE_AVC_ROUNDING_INTER_B_ID,
__MEDIA_USER_FEATURE_VALUE_AVC_ROUNDING_INTER_BREF_ID,
__MEDIA_USER_FEATURE_VALUE_AVC_ADAPTIVE_ROUNDING_INTER_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_AVC_SKIP_BIAS_ADJUSTMENT_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_AVC_ADAPTIVE_INTRA_SCALING_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_AVC_OLD_MODE_COST_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_AVC_FORCE_TO_SKIP_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_AVC_SLIDING_WINDOW_SIZE_ID,
__MEDIA_USER_FEATURE_VALUE_VDENC_MB_SLICE_THRESHOLD_ID,
__MEDIA_USER_FEATURE_VALUE_VDENC_SLICE_THRESHOLD_TABLE_ID,
__MEDIA_USER_FEATURE_VALUE_VDENC_TAIL_INSERTION_DELAY_COUNT_ID,
__MEDIA_USER_FEATURE_VALUE_VDENC_THRESHOLD_I_SLICE_SIZE_MINUS_ID,
__MEDIA_USER_FEATURE_VALUE_VDENC_THRESHOLD_P_SLICE_SIZE_MINUS_ID,
__MEDIA_USER_FEATURE_VALUE_VDENC_CRE_PREFETCH_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_VDENC_TLB_PREFETCH_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_VDENC_TLB_ALLOCATION_WA_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_VDENC_PERMB_STREAMOUT_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_VDENC_SINGLE_PASS_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_VDENC_BRC_MOTION_ADAPTIVE_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_MMIO_MFX_LRA_0_OVERRIDE_ID,
__MEDIA_USER_FEATURE_VALUE_MMIO_MFX_LRA_1_OVERRIDE_ID,
__MEDIA_USER_FEATURE_VALUE_MMIO_MFX_LRA_2_OVERRIDE_ID,
__MEDIA_USER_FEATURE_VALUE_FLATNESS_CHECK_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_AVC_ADAPTIVE_SEARCH_WINDOW_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_ADAPTIVE_TRANSFORM_DECISION_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_WEIGHTED_PREDICTION_L0_IN_USE_ID,
__MEDIA_USER_FEATURE_VALUE_WEIGHTED_PREDICTION_L1_IN_USE_ID,
__MEDIA_USER_FEATURE_VALUE_FBR_BYPASS_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_STATIC_FRAME_DETECTION_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_COLOR_BIT_SUPPORT_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_GROUP_ID_SELECT_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_AVC_BRC_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_AVC_MULTIREF_QP_ID,
__MEDIA_USER_FEATURE_VALUE_AVC_BRC_SOFTWARE_ID,
__MEDIA_USER_FEATURE_VALUE_AVC_BRC_VAR_COMPU_BYPASS_ID,
__MEDIA_USER_FEATURE_VALUE_AVC_BRC_SOFTWARE_IN_USE_ID,
__MEDIA_USER_FEATURE_VALUE_ENABLE_CNL_AVC_ENCODE_ARB_WA_ID,
__MEDIA_USER_FEATURE_VALUE_HUC_DEMO_KERNEL_ID,
__MEDIA_USER_FEATURE_VALUE_VP9_ENCODE_ME_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_VP9_ENCODE_16xME_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_VP9_ENCODE_HUC_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_VP9_ENCODE_MULTIPASS_BRC_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_VP9_ENCODE_MULTIPASS_BRC_IN_USE_ID,
__MEDIA_USER_FEATURE_VALUE_VP9_ENCODE_ADAPTIVE_REPAK_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_VP9_ENCODE_ADAPTIVE_REPAK_IN_USE_ID,
__MEDIA_USER_FEATURE_VALUE_VP9_ENCODE_SINGLE_PASS_DYS_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_MEMNINJA_COUNTER_ID,
__MEDIA_USER_FEATURE_VALUE_ENCODE_ENABLE_CMD_INIT_HUC_ID,
__MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_SECURE_INPUT_ID,
__MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_MODE_ID,
__MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_ME_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_16xME_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_32xME_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_HEVC_VDENC_16xME_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_HEVC_VDENC_32xME_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_26Z_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_REGION_NUMBER_ID,
__MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_NUM_B_KERNEL_SPLIT,
__MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_POWER_SAVING,
__MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_NUM_8x8_INTRA_KERNEL_SPLIT,
__MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_ENABLE_WP_SUPPORT_ID,
__MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_ENABLE_MEDIARESET_TEST_ID,
__MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_RDOQ_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_IFRAME_RDOQ_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_MULTIPASS_BRC_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_MULTIPASS_BRC_IN_USE_ID,
__MEDIA_USER_FEATURE_VALUE_ENCODE_BRC_SOFTWARE_ID,
__MEDIA_USER_FEATURE_VALUE_ENCODE_BRC_SOFTWARE_PATH_ID,
__MEDIA_USER_FEATURE_VALUE_ENCODE_BRC_SOFTWARE_IN_USE_ID,
__MEDIA_USER_FEATURE_VALUE_HEVC_VDENC_ACQP_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_HEVC_VDENC_VQI_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_FORCE_PAK_PASS_NUM_ID,
__MEDIA_USER_FEATURE_VALUE_HEVC_VDENC_ROUNDING_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_HEVC_VDENC_PAKOBJCMD_STREAMOUT_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_HEVC_VDENC_LBCONLY_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_HEVC_VDENC_PARTIAL_FRAME_UPDATE_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_HEVC_NUM_THREADS_PER_LCU_ID,
__MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_MDF_DISABLE_ID,
__MEDIA_USER_FEATURE_VALUE_CODEC_MMC_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_DECODE_MMC_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_ENCODE_MMC_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_CODEC_MMC_IN_USE_ID,
__MEDIA_USER_FEATURE_VALUE_DECODE_MMC_IN_USE_ID,
__MEDIA_USER_FEATURE_VALUE_DECODE_MPEG2_MODE_ID,
__MEDIA_USER_FEATURE_VALUE_DECODE_VC1_MODE_ID,
__MEDIA_USER_FEATURE_VALUE_DECODE_AVC_MODE_ID,
__MEDIA_USER_FEATURE_VALUE_DECODE_JPEG_MODE_ID,
__MEDIA_USER_FEATURE_VALUE_DECODE_VP8_MODE_ID,
__MEDIA_USER_FEATURE_VALUE_DECODE_HEVC_MODE_ID,
__MEDIA_USER_FEATURE_VALUE_DECODE_VP9_MODE_ID,
__MEDIA_USER_FEATURE_VALUE_DECODE_HISTOGRAM_FROM_VEBOX_ID,
__MEDIA_USER_FEATURE_VALUE_DECODE_EXTENDED_MMC_IN_USE_ID,
__MEDIA_USER_FEATURE_VALUE_ENCODE_MMC_IN_USE_ID,
__MEDIA_USER_FEATURE_VALUE_ENCODE_EXTENDED_MMC_IN_USE_ID,
__MEDIA_USER_FEATURE_VALUE_MMC_DEC_RT_COMPRESSIBLE_ID,
__MEDIA_USER_FEATURE_VALUE_MMC_DEC_RT_COMPRESSMODE_ID,
__MEDIA_USER_FEATURE_VALUE_MMC_ENC_RECON_COMPRESSIBLE_ID,
__MEDIA_USER_FEATURE_VALUE_MMC_ENC_RECON_COMPRESSMODE_ID,
__MEDIA_USER_FEATURE_VALUE_SSEU_SETTING_OVERRIDE_ID,
__MEDIA_USER_FEATURE_VALUE_SLICE_SHUTDOWN_DEFAULT_STATE_ID,
__MEDIA_USER_FEATURE_VALUE_SLICE_SHUTDOWN_REQUEST_STATE_ID,
__MEDIA_USER_FEATURE_VALUE_SLICE_SHUTDOWN_RESOLUTION_THRESHOLD_ID,
__MEDIA_USER_FEATURE_VALUE_SLICE_SHUTDOWN_TARGET_USAGE_THRESHOLD_ID,
__MEDIA_USER_FEATURE_VALUE_SLICE_COUNT_SET_SUPPORT_ID,
__MEDIA_USER_FEATURE_VALUE_DYNAMIC_SLICE_SHUTDOWN_ID,
__MEDIA_USER_FEATURE_VALUE_ENABLE_VDBOX_BALANCING_ID,
__MEDIA_USER_FEATURE_VALUE_MPEG2_SLICE_STATE_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_MPEG2_ENCODE_BRC_DISTORTION_BUFFER_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_NUMBER_OF_CODEC_DEVICES_ON_VDBOX1_ID,
__MEDIA_USER_FEATURE_VALUE_NUMBER_OF_CODEC_DEVICES_ON_VDBOX2_ID,
__MEDIA_USER_FEATURE_VALUE_VDI_MODE_ID,
__MEDIA_USER_FEATURE_VALUE_MEDIA_WALKER_MODE_ID,
__MEDIA_USER_FEATURE_VALUE_CSC_COEFF_PATCH_MODE_DISABLE_ID,
__MEDIA_USER_FEATURE_VALUE_VP8_HW_SCOREBOARD_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_VP8_ENCODE_ME_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_VP8_ENCODE_16xME_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_VP8_ENCODE_REPAK_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_VP8_ENCODE_MULTIPASS_BRC_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_VP8_ENCODE_ADAPTIVE_REPAK_ENABLE_ID,
#if MOS_COMMAND_BUFFER_DUMP_SUPPORTED
__MEDIA_USER_FEATURE_VALUE_DUMP_COMMAND_BUFFER_ENABLE_ID,
#endif // MOS_COMMAND_BUFFER_DUMP_SUPPORTED
#if MOS_COMMAND_RESINFO_DUMP_SUPPORTED
__MEDIA_USER_FEATURE_VALUE_DUMP_COMMAND_INFO_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_DUMP_COMMAND_INFO_PATH_ID,
#endif // MOS_COMMAND_RESINFO_DUMP_SUPPORTED
#if (_DEBUG || _RELEASE_INTERNAL)
__MEDIA_USER_FEATURE_VALUE_GROUP_ID_ID,
__MEDIA_USER_FEATURE_VALUE_MEDIA_PREEMPTION_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_MDF_OVERRIDE_L3TCCNTRL_REG,
__MEDIA_USER_FEATURE_VALUE_MDF_OVERRIDE_MOCS_INDEX,
__MEDIA_USER_FEATURE_VALUE_MDF_OVERRIDE_L3ALLOC_REG,
__MEDIA_USER_FEATURE_VALUE_MDF_FORCE_RAMODE,
__MEDIA_USER_FEATURE_VALUE_ENCODE_VFE_MAX_THREADS_ID,
__MEDIA_USER_FEATURE_VALUE_ENCODE_VFE_MAX_THREADS_SCALING_ID,
__MEDIA_USER_FEATURE_VALUE_AVC_FTQ_IN_USE_ID,
__MEDIA_USER_FEATURE_VALUE_AVC_CAF_IN_USE_ID,
__MEDIA_USER_FEATURE_VALUE_ENCODE_HW_WALKER_MODE_ID,
__MEDIA_USER_FEATURE_VALUE_ENCODE_L3_CACHE_CNTLREG_OVERRIDE_ID,
__MEDIA_USER_FEATURE_VALUE_ENCODE_L3_CACHE_CNTLREG2_OVERRIDE_ID,
__MEDIA_USER_FEATURE_VALUE_ENCODE_L3_CACHE_CNTLREG3_OVERRIDE_ID,
__MEDIA_USER_FEATURE_VALUE_ENCODE_L3_CACHE_SQCREG1_OVERRIDE_ID,
__MEDIA_USER_FEATURE_VALUE_ENCODE_L3_CACHE_SQCREG4_OVERRIDE_ID,
__MEDIA_USER_FEATURE_VALUE_ENCODE_L3_LRA_1_REG1_OVERRIDE_ID,
__MEDIA_USER_FEATURE_VALUE_NULL_HW_ACCELERATION_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_VDBOX_ID_USED,
__MEDIA_USER_FEATURE_VALUE_VDENC_IN_USE_ID,
__MEDIA_USER_FEATURE_VALUE_ENCODE_CSC_METHOD_ID,
__MEDIA_USER_FEATURE_VALUE_ENCODE_RAW_TILE_ID,
__MEDIA_USER_FEATURE_VALUE_ENCODE_RAW_FORMAT_ID,
__MEDIA_USER_FEATURE_VALUE_ISA_ASM_DEBUG_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_ISA_ASM_DEBUG_SURF_BTI_ID,
__MEDIA_USER_FEATURE_VALUE_ROWSTORE_CACHE_DISABLE_ID,
__MEDIA_USER_FEATURE_VALUE_INTRAROWSTORECACHE_DISABLE_ID,
__MEDIA_USER_FEATURE_VALUE_DEBLOCKINGFILTERROWSTORECACHE_DISABLE_ID,
__MEDIA_USER_FEATURE_VALUE_BSDMPCROWSTORECACHE_DISABLE_ID,
__MEDIA_USER_FEATURE_VALUE_MPRROWSTORECACHE_DISABLE_ID,
__MEDIA_USER_FEATURE_VALUE_VDENCROWSTORECACHE_DISABLE_ID,
__MEDIA_USER_FEATURE_VALUE_CODEC_SIM_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_BREAK_IN_CODECHAL_CREATE_ID,
__MEDIA_USER_FEATURE_VALUE_MEDIASOLO_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_STREAM_OUT_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_DECOMPRESS_DECODE_OUTPUT_ID,
__MEDIA_USER_FEATURE_VALUE_DECOMPRESS_DECODE_SFC_OUTPUT_ID,
__MEDIA_USER_FEATURE_VALUE_CODECHAL_DEBUG_OUTPUT_DIRECTORY_ID,
__MEDIA_USER_FEATURE_VALUE_CODECHAL_DUMP_OUTPUT_DIRECTORY_ID,
__MEDIA_USER_FEATURE_VALUE_CODECHAL_DEBUG_CFG_GENERATION_ID,
__MEDIA_USER_FEATURE_VALUE_CODECHAL_RDOQ_INTRA_TU_OVERRIDE_ID,
__MEDIA_USER_FEATURE_VALUE_CODECHAL_RDOQ_INTRA_TU_DISABLE_ID,
__MEDIA_USER_FEATURE_VALUE_CODECHAL_RDOQ_INTRA_TU_THRESHOLD_ID,
__MEDIA_USER_FEATURE_VALUE_CODECHAL_ENABLE_FAKE_HEADER_SIZE_ID,
__MEDIA_USER_FEATURE_VALUE_CODECHAL_FAKE_IFRAME_HEADER_SIZE_ID,
__MEDIA_USER_FEATURE_VALUE_CODECHAL_FAKE_PBFRAME_HEADER_SIZE_ID,
__MEDIA_USER_FEATURE_VALUE_COMMAND_OVERRIDE_INPUT_FILE_PATH_ID,
__MEDIA_USER_FEATURE_VALUE_MHW_BASE_VDENC_INTERFACE_ID,
#endif // (_DEBUG || _RELEASE_INTERNAL)
__MEDIA_USER_FEATURE_VALUE_STATUS_REPORTING_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_SPLIT_SCREEN_DEMO_POSITION_ID,
__MEDIA_USER_FEATURE_VALUE_SPLIT_SCREEN_DEMO_PARAMETERS_ID,
#if MOS_MESSAGES_ENABLED
__MOS_USER_FEATURE_KEY_MESSAGE_HLT_ENABLED_ID,
__MOS_USER_FEATURE_KEY_MESSAGE_HLT_OUTPUT_DIRECTORY_ID,
__MOS_USER_FEATURE_KEY_MESSAGE_PRINT_ENABLED_ID,
__MOS_USER_FEATURE_KEY_MESSAGE_OS_TAG_ID,
__MOS_USER_FEATURE_KEY_BY_SUB_COMPONENT_OS_ID,
__MOS_USER_FEATURE_KEY_SUB_COMPONENT_OS_TAG_ID,
__MOS_USER_FEATURE_KEY_MESSAGE_HW_TAG_ID,
__MOS_USER_FEATURE_KEY_BY_SUB_COMPONENT_HW_ID,
//!
//! \brief 63____________________________________________________________________________3__________0
//! | | All |
//! | Reserved |Asrt|level|
//! |____________________________________________________________________________|__________|
//!
__MOS_USER_FEATURE_KEY_SUB_COMPONENT_HW_TAG_ID,
__MOS_USER_FEATURE_KEY_MESSAGE_CODEC_TAG_ID,
__MOS_USER_FEATURE_KEY_BY_SUB_COMPONENT_CODEC_ID,
__MOS_USER_FEATURE_KEY_SUB_COMPONENT_CODEC_TAG_ID,
__MOS_USER_FEATURE_KEY_MESSAGE_VP_TAG_ID,
__MOS_USER_FEATURE_KEY_BY_SUB_COMPONENT_VP_ID,
__MOS_USER_FEATURE_KEY_SUB_COMPONENT_VP_TAG_ID,
__MOS_USER_FEATURE_KEY_MESSAGE_CP_TAG_ID,
__MOS_USER_FEATURE_KEY_BY_SUB_COMPONENT_CP_ID,
__MOS_USER_FEATURE_KEY_SUB_COMPONENT_CP_TAG_ID,
__MOS_USER_FEATURE_KEY_MESSAGE_DDI_TAG_ID,
__MOS_USER_FEATURE_KEY_BY_SUB_COMPONENT_DDI_ID,
__MOS_USER_FEATURE_KEY_SUB_COMPONENT_DDI_TAG_ID,
__MOS_USER_FEATURE_KEY_MESSAGE_CM_TAG_ID,
__MOS_USER_FEATURE_KEY_BY_SUB_COMPONENT_CM_ID,
__MOS_USER_FEATURE_KEY_SUB_COMPONENT_CM_TAG_ID,
__MOS_USER_FEATURE_KEY_MESSAGE_SCALABILITY_TAG_ID,
__MOS_USER_FEATURE_KEY_BY_SUB_COMPONENT_SCALABILITY_ID,
__MOS_USER_FEATURE_KEY_SUB_COMPONENT_SCALABILITY_TAG_ID,
__MOS_USER_FEATURE_KEY_MESSAGE_MMC_TAG_ID,
__MOS_USER_FEATURE_KEY_BY_SUB_COMPONENT_MMC_ID,
__MOS_USER_FEATURE_KEY_SUB_COMPONENT_MMC_TAG_ID,
__MOS_USER_FEATURE_KEY_MESSAGE_BLT_TAG_ID,
__MOS_USER_FEATURE_KEY_BY_SUB_COMPONENT_BLT_ID,
__MOS_USER_FEATURE_KEY_SUB_COMPONENT_BLT_TAG_ID,
#endif // MOS_MESSAGES_ENABLED
__MEDIA_USER_FEATURE_VALUE_HEVC_SF_2_DMA_SUBMITS_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_HEVCDATROWSTORECACHE_DISABLE_ID,
__MEDIA_USER_FEATURE_VALUE_HEVCDFROWSTORECACHE_DISABLE_ID,
__MEDIA_USER_FEATURE_VALUE_HEVCSAOROWSTORECACHE_DISABLE_ID,
__MEDIA_USER_FEATURE_VALUE_VP9_HVDROWSTORECACHE_DISABLE_ID,
__MEDIA_USER_FEATURE_VALUE_VP9_DATROWSTORECACHE_DISABLE_ID,
__MEDIA_USER_FEATURE_VALUE_VP9_DFROWSTORECACHE_DISABLE_ID,
__MEDIA_USER_FEATURE_VALUE_DDI_DUMP_DIRECTORY_ID,
__MEDIA_USER_FEATURE_VALUE_ENCODE_DDI_DUMP_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_MDF_CMD_DUMP_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_MDF_ETW_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_MDF_LOG_LEVEL_ID,
__MEDIA_USER_FEATURE_VALUE_MDF_UMD_ULT_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_MDF_CURBE_DUMP_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_MDF_SURFACE_DUMP_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_MDF_SURFACE_STATE_DUMP_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_MDF_CMD_DUMP_COUNTER_ID,
__MEDIA_USER_FEATURE_VALUE_MDF_SURFACE_STATE_DUMP_COUNTER_ID,
__MEDIA_USER_FEATURE_VALUE_MDF_INTERFACE_DESCRIPTOR_DATA_DUMP_ID,
__MEDIA_USER_FEATURE_VALUE_MDF_INTERFACE_DESCRIPTOR_DATA_COUNTER_ID,
__MEDIA_USER_FEATURE_VALUE_MDF_DUMPPATH_USER_ID,
__MEDIA_USER_FEATURE_VALUE_MDF_EMU_MODE_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_MDF_DEFAULT_CM_QUEUE_TYPE_ID,
__MEDIA_USER_FEATURE_VALUE_MDF_CCS_USE_VE_INTERFACE,
__MEDIA_USER_FEATURE_VALUE_MDF_CCS_USE_VE_DEBUG_OVERRIDE,
__MEDIA_USER_FEATURE_VALUE_MDF_FORCE_EXECUTION_PATH_ID,
__MEDIA_USER_FEATURE_VALUE_MDF_MAX_THREAD_NUM_ID,
__MEDIA_USER_FEATURE_VALUE_MDF_FORCE_COHERENT_STATELESSBTI_ID,
__MEDIA_USER_FEATURE_ENABLE_RENDER_ENGINE_MMC_ID,
__MEDIA_USER_FEATURE_VALUE_DISABLE_MMC_ID,
__VPHAL_VEBOX_OUTPUTPIPE_MODE_ID,
__VPHAL_VEBOX_FEATURE_INUSE_ID,
__VPHAL_RNDR_SSD_CONTROL_ID,
__VPHAL_RNDR_SCOREBOARD_CONTROL_ID,
__VPHAL_RNDR_CMFC_CONTROL_ID,
#if (_DEBUG || _RELEASE_INTERNAL)
__VPHAL_DBG_SURF_DUMP_OUTFILE_KEY_NAME_ID,
__VPHAL_DBG_SURF_DUMP_LOCATION_KEY_NAME_ID,
__VPHAL_DBG_SURF_DUMP_MANUAL_TRIGGER_KEY_NAME_ID,
__VPHAL_DBG_SURF_DUMP_START_FRAME_KEY_NAME_ID,
__VPHAL_DBG_SURF_DUMP_END_FRAME_KEY_NAME_ID,
__VPHAL_DBG_SURF_DUMPER_ENABLE_PLANE_DUMP,
__VPHAL_DBG_SURF_DUMP_ENABLE_AUX_DUMP_ID,
__VPHAL_DBG_SURF_DUMPER_RESOURCE_LOCK_ID,
__VPHAL_DBG_STATE_DUMP_OUTFILE_KEY_NAME_ID,
__VPHAL_DBG_STATE_DUMP_LOCATION_KEY_NAME_ID,
__VPHAL_DBG_STATE_DUMP_START_FRAME_KEY_NAME_ID,
__VPHAL_DBG_STATE_DUMP_END_FRAME_KEY_NAME_ID,
__VPHAL_DBG_PARAM_DUMP_OUTFILE_KEY_NAME_ID,
__VPHAL_DBG_PARAM_DUMP_START_FRAME_KEY_NAME_ID,
__VPHAL_DBG_PARAM_DUMP_END_FRAME_KEY_NAME_ID,
__VPHAL_DBG_DUMP_OUTPUT_DIRECTORY_ID,
#endif
__VPHAL_SET_SINGLE_SLICE_VEBOX_ID,
__VPHAL_BYPASS_COMPOSITION_ID,
__VPHAL_VEBOX_DISABLE_SFC_ID,
__VPHAL_ENABLE_MMC_ID,
__VPHAL_ENABLE_MMC_IN_USE_ID,
__VPHAL_PRIMARY_SURFACE_COMPRESS_MODE_ID,
__VPHAL_PRIMARY_SURFACE_COMPRESSIBLE_ID,
__VPHAL_RT_COMPRESS_MODE_ID,
__VPHAL_RT_COMPRESSIBLE_ID,
__VPHAL_ENABLE_VEBOX_MMC_DECOMPRESS_ID,
__VPHAL_VEBOX_DISABLE_TEMPORAL_DENOISE_FILTER_ID,
__VPHAL_ENABLE_SUPER_RESOLUTION_ID,
__VPHAL_SUPER_RESOLUTION_MODE_ID,
__VPHAL_ENABLE_SUPER_RESOLUTION_EDSR_ID,
__VPHAL_SUPER_RESOLUTION_EDSR_MODE_ID,
#if (_DEBUG || _RELEASE_INTERNAL)
__VPHAL_COMP_8TAP_ADAPTIVE_ENABLE_ID,
__VPHAL_RNDR_FORCE_VP_DECOMPRESSED_OUTPUT_ID,
#endif
#if ((_DEBUG || _RELEASE_INTERNAL) && !EMUL)
__VPHAL_RNDR_VEBOX_MODE_0_ID,
__VPHAL_RNDR_VEBOX_MODE_0_TO_2_ID,
__VPHAL_RNDR_VEBOX_MODE_2_ID,
__VPHAL_RNDR_VEBOX_MODE_2_TO_0_ID,
#endif
#if (_DEBUG || _RELEASE_INTERNAL)
__VPHAL_ENABLE_COMPUTE_CONTEXT_ID,
#endif
__MOS_USER_FEATURE_KEY_VP_CAPS_FF_OVERRIDE_ID,
__MOS_USER_FEATURE_KEY_XML_AUTOGEN_ID,
__MOS_USER_FEATURE_KEY_XML_FILEPATH_ID,
__MOS_USER_FEATURE_KEY_XML_DUMP_GROUPS_ID,
__MEDIA_USER_FEATURE_VALUE_FORCE_VEBOX_ID,
__MEDIA_USER_FEATURE_VALUE_ENABLE_VEBOX_SCALABILITY_MODE_ID,
__MEDIA_USER_FEATURE_VALUE_VEBOX_SPLIT_RATIO_ID,
__MEDIA_USER_FEATURE_VALUE_HCP_DECODE_MODE_SWITCH_THRESHOLD1_ID,
__MEDIA_USER_FEATURE_VALUE_HCP_DECODE_MODE_SWITCH_THRESHOLD2_ID,
__MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_ENABLE_VE_DEBUG_OVERRIDE,
__MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_ENABLE_HW_SEMAPHORE,
__MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_ENABLE_VDBOX_HW_SEMAPHORE,
__MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_ENABLE_HW_STITCH,
__MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_SUBTHREAD_NUM_ID,
__MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_PAK_ONLY_ID,
__MEDIA_USER_FEATURE_VALUE_HEVC_VME_ENCODE_SSE_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_ENCODE_DISABLE_SCALABILITY,
__MEDIA_USER_FEATURE_VALUE_HEVC_ENCODE_RDOQ_PERF_DISABLE_ID,
__MEDIA_USER_FEATURE_VALUE_WATCHDOG_TIMER_THRESHOLD,
__MEDIA_USER_FEATURE_VALUE_ENABLE_DECODE_VIRTUAL_ENGINE_ID,
__MEDIA_USER_FEATURE_VALUE_ENABLE_DECODE_VE_CTXSCHEDULING_ID,
__MEDIA_USER_FEATURE_VALUE_ENABLE_LINUX_FRAME_SPLIT_ID,
__MEDIA_USER_FEATURE_VALUE_ENABLE_ENCODE_VIRTUAL_ENGINE_ID,
__MEDIA_USER_FEATURE_VALUE_ENABLE_ENCODE_VE_CTXSCHEDULING_ID,
__MEDIA_USER_FEATURE_VALUE_ENABLE_VE_DEBUG_OVERRIDE_ID,
__MEDIA_USER_FEATURE_VALUE_ENABLE_HCP_SCALABILITY_DECODE_ID,
__MEDIA_USER_FEATURE_VALUE_HCP_DECODE_ALWAYS_FRAME_SPLIT_ID,
__MEDIA_USER_FEATURE_VALUE_SCALABILITY_OVERRIDE_SPLIT_WIDTH_IN_MINCB,
__MEDIA_USER_FEATURE_VALUE_SCALABILITY_FE_SEPARATE_SUBMISSION_ENABLED_ID,
__MEDIA_USER_FEATURE_VALUE_SCALABILITY_FE_SEPARATE_SUBMISSION_IN_USE_ID,
__MEDIA_USER_FEATURE_VALUE_HEVC_VME_BRC_LTR_DISABLE_ID,
__MEDIA_USER_FEATURE_VALUE_HEVC_VME_BRC_LTR_INTERVAL_ID,
__MEDIA_USER_FEATURE_VALUE_HEVC_VME_FORCE_SCALABILITY_ID,
__MEDIA_USER_FEATURE_VALUE_HEVC_VDENC_SEMA_RESET_DELAY_ID,
__MEDIA_USER_FEATURE_VALUE_SET_CMD_DEFAULT_PARS_FROM_FILES_ID,
__MEDIA_USER_FEATURE_VALUE_CMD_PARS_FILES_DIRECORY_ID,
__MEDIA_USER_FEATURE_VALUE_APOGEIOS_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_VPP_APOGEIOS_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_SUPER_RESOLUTION_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_SUPER_RESOLUTION_MODE_ID,
__MEDIA_USER_FEATURE_VALUE_EXTERNAL_COPY_SYNC_ID,
__MEDIA_USER_FEATURE_VALUE_ENABLE_UMD_OCA_ID,
__MEDIA_USER_FEATURE_VALUE_COUNT_FOR_OCA_BUFFER_LEAKED_ID,
__MEDIA_USER_FEATURE_VALUE_COUNT_FOR_OCA_1ST_LEVEL_BB_END_MISSED_ID,
__MEDIA_USER_FEATURE_VALUE_COUNT_FOR_ADDITIONAL_OCA_BUFFER_ALLOCATED_ID,
__MEDIA_USER_FEATURE_VALUE_OCA_STATUS_ID,
__MEDIA_USER_FEATURE_VALUE_OCA_ERROR_HINT_ID,
__MEDIA_USER_FEATURE_VALUE_IS_INDIRECT_STATE_HEAP_INVALID_ID,
__MEDIA_USER_FEATURE_VALUE_ENABLE_SW_BACK_ANNOTATION_ID,
__MEDIA_USER_FEATURE_VALUE_ENABLE_CC_STITCHING_ID,
#if (_DEBUG || _RELEASE_INTERNAL)
__MEDIA_USER_FEATURE_VALUE_ENABLE_SW_STITCHING_ID,
__MEDIA_USER_FEATURE_VALUE_ALLOC_MEMORY_FAIL_SIMULATE_MODE_ID,
__MEDIA_USER_FEATURE_VALUE_ALLOC_MEMORY_FAIL_SIMULATE_FREQ_ID,
__MEDIA_USER_FEATURE_VALUE_ALLOC_MEMORY_FAIL_SIMULATE_HINT_ID,
#endif
__MEDIA_USER_FEATURE_VALUE_PERF_UTILITY_TOOL_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_PERF_OUTPUT_DIRECTORY_ID,
__MEDIA_USER_FEATURE_VALUE_APO_MOS_PATH_ENABLE_ID,
__MEDIA_USER_FEATURE_VALUE_APOGEIOS_HEVCD_ENABLE_ID,
__MOS_USER_FEATURE_KEY_MAX_ID,
} MOS_USER_FEATURE_VALUE_ID;
//!
//! \brief User Feature Type
//!
typedef enum
{
MOS_USER_FEATURE_TYPE_INVALID,
MOS_USER_FEATURE_TYPE_USER,
MOS_USER_FEATURE_TYPE_SYSTEM,
} MOS_USER_FEATURE_TYPE,
*PMOS_USER_FEATURE_TYPE;
//!
//! \brief User Feature Value type
//!
typedef enum
{
MOS_USER_FEATURE_VALUE_TYPE_INVALID,
MOS_USER_FEATURE_VALUE_TYPE_BINARY,
MOS_USER_FEATURE_VALUE_TYPE_BOOL,
MOS_USER_FEATURE_VALUE_TYPE_INT32,
MOS_USER_FEATURE_VALUE_TYPE_INT64,
MOS_USER_FEATURE_VALUE_TYPE_UINT32,
MOS_USER_FEATURE_VALUE_TYPE_UINT64,
MOS_USER_FEATURE_VALUE_TYPE_FLOAT,
MOS_USER_FEATURE_VALUE_TYPE_STRING,
MOS_USER_FEATURE_VALUE_TYPE_MULTI_STRING,
} MOS_USER_FEATURE_VALUE_TYPE,
*PMOS_USER_FEATURE_VALUE_TYPE;
//!
//! \brief User Feature Notification type
//!
typedef enum
{
MOS_USER_FEATURE_NOTIFY_TYPE_INVALID,
MOS_USER_FEATURE_NOTIFY_TYPE_VALUE_CHANGE,
} MOS_USER_FEATURE_NOTIFY_TYPE,
*PMOS_USER_FEATURE_NOTIFY_TYPE;
//!
//! \brief User Feature Data Operation type
//! NONE_CUSTOM_DEFAULT_VALUE : None Custom Default Value for Input Data
//! CUSTOM_DEFAULT_VALUE_TYPE : With Custom Default Value for Input Data
//!
typedef enum
{
MOS_USER_FEATURE_VALUE_DATA_FLAG_NONE_CUSTOM_DEFAULT_VALUE_TYPE = 0,
MOS_USER_FEATURE_VALUE_DATA_FLAG_CUSTOM_DEFAULT_VALUE_TYPE,
} MOS_USER_FEATURE_VALUE_DATA_FLAG_TYPE,
*PMOS_USER_FEATURE_VALUE_DATA_FLAG_TYPE;
//!
//! \brief User Feature Key Effective Range type
//! EFFECT_ALWALYS : Effective on all driver builds
//! EFFECT_DEBUGONLY : Effective on release-internal and debug driver only
//!
typedef enum
{
MOS_USER_FEATURE_EFFECT_ALWAYS = 0,
MOS_USER_FEATURE_EFFECT_DEBUGONLY,
} MOS_USER_FEATURE_EFFECTIVE_TYPE,
*PMOS_USER_FEATURE_EFFECTIVE_TYPE;
//!
//! \brief User Feature String Data
//!
typedef struct
{
char * pStringData;
uint32_t uMaxSize;
uint32_t uSize;
} MOS_USER_FEATURE_VALUE_STRING, *PMOS_USER_FEATURE_VALUE_STRING;
//!
//! \brief User Feature Multi String Data
//!
typedef struct
{
char * pMultStringData;
uint32_t uMaxSize;
uint32_t uSize;
PMOS_USER_FEATURE_VALUE_STRING pStrings;
uint32_t uCount;
} MOS_USER_FEATURE_VALUE_MULTI_STRING, *PMOS_USER_FEATURE_VALUE_MULTI_STRING;
//!
//! \brief User Feature Binary Data
//!
typedef struct
{
uint8_t *pBinaryData;
uint32_t uMaxSize;
uint32_t uSize;
} MOS_USER_FEATURE_VALUE_BINARY, *PMOS_USER_FEATURE_VALUE_BINARY;
//!
//! \brief User Feature Value Data
//! \details union : to store the user feature value
//! i32DataFlag : the input data valye type
//! refer to MOS_USER_FEATURE_VALUE_DATA_FLAG_TYPE
//!
//!
typedef struct _MOS_USER_FEATURE_VALUE_DATA
{
union
{
int32_t bData;
uint32_t u32Data;
uint64_t u64Data;
int32_t i32Data;
int64_t i64Data;
float fData;
MOS_USER_FEATURE_VALUE_STRING StringData;
MOS_USER_FEATURE_VALUE_MULTI_STRING MultiStringData;
MOS_USER_FEATURE_VALUE_BINARY BinaryData;
};
int32_t i32DataFlag;
} MOS_USER_FEATURE_VALUE_DATA, *PMOS_USER_FEATURE_VALUE_DATA;
//!
//! \brief User Feature Value Information
//!
typedef struct _MOS_USER_FEATURE_VALUE_WRITE_DATA
{
uint32_t ValueID;
MOS_USER_FEATURE_VALUE_DATA Value;
} MOS_USER_FEATURE_VALUE_WRITE_DATA, *PMOS_USER_FEATURE_VALUE_WRITE_DATA;
//!
//! \brief User Feature Value Information
//!
typedef struct _MOS_USER_FEATURE_VALUE_INFO
{
char * pcName; //store name for the bitmask/enum values
uint32_t Value;
} MOS_USER_FEATURE_VALUE_INFO, *PMOS_USER_FEATURE_VALUE_INFO;
//!
//! \brief User Feature Data
//!
typedef struct
{
uint32_t ValueID;
const char * pValueName;
const char * pcGroup; //!< User feature key group - eg: MediaSolo, MOS, Codec
const char * pcPath; //!< User feature Key Read Path
const char * pcWritePath; //!< User feature Key Write Path
MOS_USER_FEATURE_TYPE Type; //!< User feature Key User Feature type - eg: System, User
MOS_USER_FEATURE_VALUE_TYPE ValueType; //!< User feature key type - eg: bool,dword
const char * DefaultValue; //!< User feature key value
const char * pcDescription; //!< User feature key description
int32_t bExists; //<! Set if the user feature key is defined in the user feature key manager
uint32_t uiNumOfValues; //<! Number of valid user feature key values. Useful for user feature keys of type bitmask and enum
PMOS_USER_FEATURE_VALUE_INFO pValueInfo; //<! Store information of all valid enum/bit mask values and names
MOS_USER_FEATURE_EFFECTIVE_TYPE EffctiveRange; //<! User feature key effect range, eg: Always effective / debug driver only
// Temp WA for old user feature read/write
#ifdef __MOS_USER_FEATURE_WA_
union
{
int32_t bData;
uint32_t u32Data;
uint64_t u64Data;
int32_t i32Data;
int64_t i64Data;
float fData;
MOS_USER_FEATURE_VALUE_STRING StringData;
MOS_USER_FEATURE_VALUE_MULTI_STRING MultiStringData;
MOS_USER_FEATURE_VALUE_BINARY BinaryData;
};
#endif
MOS_USER_FEATURE_VALUE_DATA Value; //!< User feature key value
} MOS_USER_FEATURE_VALUE, *PMOS_USER_FEATURE_VALUE;
//!
//! \brief User Feature Value Information
//!
typedef struct
{
PMOS_USER_FEATURE_VALUE pUserFeatureValue;
} MOS_USER_FEATURE_VALUE_MAP, *PMOS_USER_FEATURE_VALUE_MAP;
//!
//! \brief User Feature Notification Data
//!
typedef struct
{
MOS_USER_FEATURE_TYPE Type; //!< User Feature Type
char * pPath; //!< User Feature Path
MOS_USER_FEATURE_NOTIFY_TYPE NotifyType; //!< Notification Type
int32_t bTriggered; //!< Notification is triggered or not
void * pHandle; //!< OS Specific Handle
} MOS_USER_FEATURE_NOTIFY_DATA, *PMOS_USER_FEATURE_NOTIFY_DATA;
//!
//! \brief User Feature Interface
//!
typedef struct
{
MOS_USER_FEATURE_TYPE Type; //!< User Feature Type
const char * pPath; //!< User Feature Path
PMOS_USER_FEATURE_VALUE pValues; //!< Array of User Feature Values
uint32_t uiNumValues; //!< Number of User Feature Values
} MOS_USER_FEATURE, *PMOS_USER_FEATURE;
//!
//! \brief OS User Feature Interface
//!
typedef struct _MOS_USER_FEATURE_INTERFACE *PMOS_USER_FEATURE_INTERFACE;
typedef struct _MOS_USER_FEATURE_INTERFACE
{
void * pOsInterface; //!< Pointer to OS Interface
int32_t bIsNotificationSupported; //!< Whether Notification feature is supported
MOS_STATUS (*pfnEnableNotification)
(
PMOS_USER_FEATURE_INTERFACE pOsUserFeatureInterface,
PMOS_USER_FEATURE_NOTIFY_DATA pNotification);
MOS_STATUS (*pfnDisableNotification)
(
PMOS_USER_FEATURE_INTERFACE pOsUserFeatureInterface,
PMOS_USER_FEATURE_NOTIFY_DATA pNotification);
MOS_STATUS (*pfnParsePath)
(
PMOS_USER_FEATURE_INTERFACE pOsUserFeatureInterface,
char *const pInputPath,
PMOS_USER_FEATURE_TYPE pUserFeatureType,
char ** ppSubPath);
} MOS_USER_FEATURE_INTERFACE;
//!
//! \brief User Feature Notification Data Common
//!
typedef struct
{
void * UFKey; //!< Handle to User Feature Key
HANDLE hEvent; //!< Handle to User Feature Key Event
PTP_WAIT hWaitEvent; //!< Handle to User Feature Key Wait Event
} MOS_USER_FEATURE_NOTIFY_DATA_COMMON, *PMOS_USER_FEATURE_NOTIFY_DATA_COMMON;
#ifdef __cplusplus
//Memory alloc fail simulatiion related defination
#if (_DEBUG || _RELEASE_INTERNAL)
#define NO_ALLOC_ALIGNMENT (1)
#endif //(_DEBUG || _RELEASE_INTERNAL)
#endif
#endif // __MOS_UTILITIES_COMMON_H__