1 /* 2 * Copyright (c) 2009-2021, 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_os_hw.h 24 //! \brief 25 //! 26 //! 27 //! \file mos_os_hw.h 28 //! \brief Common interface and structure used in MOS OS HW 29 //! \details Common interface and structure used in MOS OS HW 30 //! 31 32 #ifndef __MOS_OS_HW_H__ 33 #define __MOS_OS_HW_H__ 34 35 //! 36 //! \brief OS HW resource definitions 37 //! 38 typedef enum _MOS_HW_RESOURCE_DEF 39 { 40 // CODEC USAGES 41 MOS_CODEC_RESOURCE_USAGE_BEGIN_CODEC, 42 MOS_CODEC_RESOURCE_USAGE_PRE_DEBLOCKING_CODEC, 43 MOS_CODEC_RESOURCE_USAGE_PRE_DEBLOCKING_CODEC_PARTIALENCSURFACE, //!< Pre-Deblocking codec surface for partial secure surfaces, 44 MOS_CODEC_RESOURCE_USAGE_POST_DEBLOCKING_CODEC, 45 MOS_CODEC_RESOURCE_USAGE_ORIGINAL_UNCOMPRESSED_PICTURE_ENCODE, 46 MOS_CODEC_RESOURCE_USAGE_ORIGINAL_UNCOMPRESSED_PICTURE_DECODE, 47 MOS_CODEC_RESOURCE_USAGE_STREAMOUT_DATA_CODEC, 48 MOS_CODEC_RESOURCE_USAGE_INTRA_ROWSTORE_SCRATCH_BUFFER_CODEC, 49 MOS_CODEC_RESOURCE_USAGE_DEBLOCKINGFILTER_ROWSTORE_SCRATCH_BUFFER_CODEC, 50 MOS_CODEC_RESOURCE_USAGE_REFERENCE_PICTURE_CODEC, 51 MOS_CODEC_RESOURCE_USAGE_MACROBLOCK_STATUS_BUFFER_CODEC, 52 MOS_CODEC_RESOURCE_USAGE_MFX_INDIRECT_BITSTREAM_OBJECT_DECODE, 53 MOS_CODEC_RESOURCE_USAGE_MFX_INDIRECT_MV_OBJECT_CODEC, 54 MOS_CODEC_RESOURCE_USAGE_MFD_INDIRECT_IT_COEF_OBJECT_DECODE, 55 MOS_CODEC_RESOURCE_USAGE_MFC_INDIRECT_PAKBASE_OBJECT_CODEC, 56 MOS_CODEC_RESOURCE_USAGE_BSDMPC_ROWSTORE_SCRATCH_BUFFER_CODEC, 57 MOS_CODEC_RESOURCE_USAGE_MPR_ROWSTORE_SCRATCH_BUFFER_CODEC, 58 MOS_CODEC_RESOURCE_USAGE_BITPLANE_READ_CODEC, 59 MOS_CODEC_RESOURCE_USAGE_DIRECTMV_BUFFER_CODEC, 60 MOS_CODEC_RESOURCE_USAGE_SURFACE_CURR_ENCODE, 61 MOS_CODEC_RESOURCE_USAGE_SURFACE_REF_ENCODE, 62 MOS_CODEC_RESOURCE_USAGE_SURFACE_MV_DATA_ENCODE, 63 MOS_CODEC_RESOURCE_USAGE_SURFACE_HME_DOWNSAMPLED_ENCODE, 64 MOS_CODEC_RESOURCE_USAGE_SURFACE_HME_DOWNSAMPLED_ENCODE_FF, 65 MOS_CODEC_RESOURCE_USAGE_SURFACE_HME_DOWNSAMPLED_ENCODE_DST, 66 MOS_CODEC_RESOURCE_USAGE_SURFACE_ME_DISTORTION_ENCODE, 67 MOS_CODEC_RESOURCE_USAGE_SURFACE_BRC_ME_DISTORTION_ENCODE, 68 MOS_CODEC_RESOURCE_USAGE_PAK_OBJECT_ENCODE, 69 MOS_CODEC_RESOURCE_USAGE_SURFACE_FLATNESS_CHECK_ENCODE, 70 MOS_CODEC_RESOURCE_USAGE_SURFACE_MBENC_CURBE_ENCODE, 71 MOS_CODEC_RESOURCE_USAGE_SURFACE_MAD_ENCODE, 72 MOS_CODEC_RESOURCE_USAGE_VP8_BLOCK_MODE_COST_ENCODE, 73 MOS_CODEC_RESOURCE_USAGE_VP8_MB_MODE_COST_ENCODE, 74 MOS_CODEC_RESOURCE_USAGE_VP8_MBENC_OUTPUT_ENCODE, 75 MOS_CODEC_RESOURCE_USAGE_VP8_HISTOGRAM_ENCODE, 76 MOS_CODEC_RESOURCE_USAGE_VP8_L3_LLC_ENCODE, 77 MOS_CODEC_RESOURCE_USAGE_MFX_STANDALONE_DEBLOCKING_CODEC, 78 MOS_CODEC_RESOURCE_USAGE_HCP_MD_CODEC, 79 MOS_CODEC_RESOURCE_USAGE_HCP_SAO_CODEC, 80 MOS_CODEC_RESOURCE_USAGE_HCP_MV_CODEC, 81 MOS_CODEC_RESOURCE_USAGE_HCP_STATUS_ERROR_CODEC, 82 MOS_CODEC_RESOURCE_USAGE_HCP_LCU_ILDB_STREAMOUT_CODEC, 83 MOS_CODEC_RESOURCE_USAGE_VP9_PROBABILITY_BUFFER_CODEC, 84 MOS_CODEC_RESOURCE_USAGE_VP9_SEGMENT_ID_BUFFER_CODEC, 85 MOS_CODEC_RESOURCE_USAGE_VP9_HVD_ROWSTORE_BUFFER_CODEC, 86 MOS_CODEC_RESOURCE_USAGE_MBDISABLE_SKIPMAP_CODEC, 87 MOS_CODEC_RESOURCE_USAGE_VDENC_ROW_STORE_BUFFER_CODEC, 88 MOS_CODEC_RESOURCE_USAGE_VDENC_STREAMIN_CODEC, 89 MOS_CODEC_RESOURCE_USAGE_SURFACE_MB_QP_CODEC, 90 MOS_CODEC_RESOURCE_USAGE_MACROBLOCK_ILDB_STREAM_OUT_BUFFER_CODEC, 91 MOS_CODEC_RESOURCE_USAGE_SSE_SRC_PIXEL_ROW_STORE_BUFFER_CODEC, 92 MOS_CODEC_RESOURCE_USAGE_SLICE_STATE_STREAM_OUT_BUFFER_CODEC, 93 MOS_CODEC_RESOURCE_USAGE_CABAC_SYNTAX_STREAM_OUT_BUFFER_CODEC, 94 MOS_CODEC_RESOURCE_USAGE_PRED_COL_STORE_BUFFER_CODEC, 95 MOS_CODEC_RESOURCE_USAGE_SURFACE_PAK_IMAGESTATE_ENCODE, 96 MOS_CODEC_RESOURCE_USAGE_SURFACE_MBENC_BRC_ENCODE, 97 MOS_CODEC_RESOURCE_USAGE_SURFACE_MB_BRC_CONST_ENCODE, 98 MOS_CODEC_RESOURCE_USAGE_SURFACE_BRC_MB_QP_ENCODE, 99 MOS_CODEC_RESOURCE_USAGE_SURFACE_BRC_ROI_ENCODE, 100 MOS_CODEC_RESOURCE_USAGE_SURFACE_SLICE_MAP_ENCODE, 101 MOS_CODEC_RESOURCE_USAGE_SURFACE_WP_DOWNSAMPLED_ENCODE, 102 MOS_CODEC_RESOURCE_USAGE_SURFACE_VDENC_IMAGESTATE_ENCODE, 103 MOS_CODEC_RESOURCE_USAGE_SURFACE_UNCACHED, 104 MOS_CODEC_RESOURCE_USAGE_SURFACE_ELLC_ONLY, 105 MOS_CODEC_RESOURCE_USAGE_SURFACE_ELLC_LLC_ONLY, 106 MOS_CODEC_RESOURCE_USAGE_SURFACE_ELLC_LLC_L3, 107 MOS_CODEC_RESOURCE_USAGE_SURFACE_BRC_HISTORY_ENCODE, 108 MOS_CODEC_RESOURCE_USAGE_SURFACE_SOFTWARE_SCOREBOARD_ENCODE, 109 MOS_CODEC_RESOURCE_USAGE_SURFACE_ME_MV_DATA_ENCODE, 110 MOS_CODEC_RESOURCE_USAGE_SURFACE_MV_DISTORTION_ENCODE, 111 MOS_CODEC_RESOURCE_USAGE_SURFACE_4XME_DISTORTION_ENCODE, 112 MOS_CODEC_RESOURCE_USAGE_SURFACE_INTRA_DISTORTION_ENCODE, 113 MOS_CODEC_RESOURCE_USAGE_MB_STATS_ENCODE, 114 MOS_CODEC_RESOURCE_USAGE_SURFACE_PAK_STATS_ENCODE, 115 MOS_CODEC_RESOURCE_USAGE_SURFACE_PIC_STATE_READ_ENCODE, 116 MOS_CODEC_RESOURCE_USAGE_SURFACE_PIC_STATE_WRITE_ENCODE, 117 MOS_CODEC_RESOURCE_USAGE_SURFACE_COMBINED_ENC_ENCODE, 118 MOS_CODEC_RESOURCE_USAGE_SURFACE_BRC_CONSTANT_DATA_ENCODE, 119 MOS_CODEC_RESOURCE_USAGE_SURFACE_INTERMEDIATE_CU_RECORD_SURFACE_ENCODE, 120 MOS_CODEC_RESOURCE_USAGE_SURFACE_SCRATCH_ENCODE, 121 MOS_CODEC_RESOURCE_USAGE_SURFACE_LCU_LEVEL_DATA_ENCODE, 122 MOS_CODEC_RESOURCE_USAGE_SURFACE_ENC_HISTORY_INPUT_ENCODE, 123 MOS_CODEC_RESOURCE_USAGE_SURFACE_ENC_HISTORY_OUTPUT_ENCODE, 124 MOS_CODEC_RESOURCE_USAGE_SURFACE_DEBUG_ENCODE, 125 MOS_CODEC_RESOURCE_USAGE_SURFACE_ENC_CONSTANT_TABLE_ENCODE, 126 MOS_CODEC_RESOURCE_USAGE_SURFACE_ENC_CU_RECORD_ENCODE, 127 MOS_CODEC_RESOURCE_USAGE_SURFACE_ENC_MV_TEMPORAL_BUFFER_ENCODE, 128 MOS_CODEC_RESOURCE_USAGE_SURFACE_ENC_CU_PACKET_FOR_PAK_ENCODE, 129 MOS_CODEC_RESOURCE_USAGE_SURFACE_ENC_BCOMBINED1_ENCODE, 130 MOS_CODEC_RESOURCE_USAGE_SURFACE_ENC_BCOMBINED2_ENCODE, 131 MOS_CODEC_RESOURCE_USAGE_FRAME_STATS_STREAMOUT_DATA_CODEC, 132 MOS_CODEC_RESOURCE_USAGE_DEBLOCKINGFILTER_ROWSTORE_TILE_LINE_BUFFER_CODEC, 133 MOS_CODEC_RESOURCE_USAGE_DEBLOCKINGFILTER_ROWSTORE_TILE_COLUMN_BUFFER_CODEC, 134 MOS_CODEC_RESOURCE_USAGE_HCP_MD_TILE_LINE_CODEC, 135 MOS_CODEC_RESOURCE_USAGE_HCP_MD_TILE_COLUMN_CODEC, 136 MOS_CODEC_RESOURCE_USAGE_HCP_SAO_TILE_LINE_CODEC, 137 MOS_CODEC_RESOURCE_USAGE_HCP_SAO_TILE_COLUMN_CODEC, 138 MOS_CODEC_RESOURCE_USAGE_VP9_PROBABILITY_COUNTER_BUFFER_CODEC, 139 MOS_CODEC_RESOURCE_USAGE_HUC_VIRTUAL_ADDR_REGION_BUFFER_CODEC, 140 MOS_CODEC_RESOURCE_USAGE_SIZE_STREAMOUT_CODEC, 141 MOS_CODEC_RESOURCE_USAGE_COMPRESSED_HEADER_BUFFER_CODEC, 142 MOS_CODEC_RESOURCE_USAGE_PROBABILITY_DELTA_BUFFER_CODEC, 143 MOS_CODEC_RESOURCE_USAGE_TILE_RECORD_BUFFER_CODEC, 144 MOS_CODEC_RESOURCE_USAGE_TILE_SIZE_STAS_BUFFER_CODEC, 145 MOS_CODEC_RESOURCE_USAGE_END_CODEC, 146 147 // CM USAGES 148 MOS_CM_RESOURCE_USAGE_SurfaceState, 149 MOS_CM_RESOURCE_USAGE_StateHeap, 150 MOS_CM_RESOURCE_USAGE_NO_L3_SurfaceState, 151 MOS_CM_RESOURCE_USAGE_NO_LLC_ELLC_SurfaceState, 152 MOS_CM_RESOURCE_USAGE_NO_LLC_SurfaceState, 153 MOS_CM_RESOURCE_USAGE_NO_ELLC_SurfaceState, 154 MOS_CM_RESOURCE_USAGE_NO_LLC_L3_SurfaceState, 155 MOS_CM_RESOURCE_USAGE_NO_ELLC_L3_SurfaceState, 156 MOS_CM_RESOURCE_USAGE_NO_CACHE_SurfaceState, 157 MOS_CM_RESOURCE_USAGE_L1_Enabled_SurfaceState, 158 159 // MP USAGES 160 MOS_MP_RESOURCE_USAGE_BEGIN, 161 MOS_MP_RESOURCE_USAGE_DEFAULT, 162 MOS_MP_RESOURCE_USAGE_DEFAULT_FF, 163 MOS_MP_RESOURCE_USAGE_DEFAULT_RCS, 164 MOS_MP_RESOURCE_USAGE_SurfaceState, 165 MOS_MP_RESOURCE_USAGE_SurfaceState_FF, 166 MOS_MP_RESOURCE_USAGE_SurfaceState_RCS, 167 MOS_MP_RESOURCE_USAGE_AGE3_SurfaceState, 168 MOS_MP_RESOURCE_USAGE_EDRAM_SurfaceState, 169 MOS_MP_RESOURCE_USAGE_EDRAM_AGE3_SurfaceState, 170 MOS_MP_RESOURCE_USAGE_No_L3_SurfaceState, 171 MOS_MP_RESOURCE_USAGE_No_LLC_L3_SurfaceState, 172 MOS_MP_RESOURCE_USAGE_No_LLC_L3_AGE_SurfaceState, 173 MOS_MP_RESOURCE_USAGE_No_LLC_eLLC_L3_AGE_SurfaceState, 174 MOS_MP_RESOURCE_USAGE_PartialEnc_No_LLC_L3_AGE_SurfaceState, 175 MOS_MP_RESOURCE_USAGE_END, 176 177 // MHW - SFC 178 MOS_MHW_RESOURCE_USAGE_Sfc_CurrentOutputSurface, //!< SFC Output Surface 179 MOS_MHW_RESOURCE_USAGE_Sfc_CurrentOutputSurface_PartialEncSurface, //!< SFC Output Surface for partial secure surfaces 180 MOS_MHW_RESOURCE_USAGE_Sfc_AvsLineBufferSurface, //!< SFC AVS Line buffer Surface 181 MOS_MHW_RESOURCE_USAGE_Sfc_IefLineBufferSurface, //!< SFC IEF Line buffer Surface 182 183 // Camera caputure. 184 MOS_MHW_GMM_RESOURCE_USAGE_CAMERA_CAPTURE, 185 186 // PAT Media Usages 187 MOS_HW_RESOURCE_USAGE_MEDIA_BATCH_BUFFERS, 188 // DECODE 189 MOS_HW_RESOURCE_USAGE_DECODE_INPUT_BITSTREAM, 190 MOS_HW_RESOURCE_USAGE_DECODE_INPUT_REFERENCE, 191 MOS_HW_RESOURCE_USAGE_DECODE_INTERNAL_READ, 192 MOS_HW_RESOURCE_USAGE_DECODE_INTERNAL_WRITE, 193 MOS_HW_RESOURCE_USAGE_DECODE_INTERNAL_READ_WRITE_CACHE, 194 MOS_HW_RESOURCE_USAGE_DECODE_INTERNAL_READ_WRITE_NOCACHE, 195 MOS_HW_RESOURCE_USAGE_DECODE_OUTPUT_PICTURE, 196 MOS_HW_RESOURCE_USAGE_DECODE_OUTPUT_STATISTICS_WRITE, 197 MOS_HW_RESOURCE_USAGE_DECODE_OUTPUT_STATISTICS_READ_WRITE, 198 // ENCODE 199 MOS_HW_RESOURCE_USAGE_ENCODE_INPUT_RAW, 200 MOS_HW_RESOURCE_USAGE_ENCODE_INPUT_RECON, 201 MOS_HW_RESOURCE_USAGE_ENCODE_INTERNAL_READ, 202 MOS_HW_RESOURCE_USAGE_ENCODE_INTERNAL_WRITE, 203 MOS_HW_RESOURCE_USAGE_ENCODE_INTERNAL_READ_WRITE_CACHE, 204 MOS_HW_RESOURCE_USAGE_ENCODE_INTERNAL_READ_WRITE_NOCACHE, 205 MOS_HW_RESOURCE_USAGE_ENCODE_EXTERNAL_READ, 206 MOS_HW_RESOURCE_USAGE_ENCODE_OUTPUT_PICTURE, 207 MOS_HW_RESOURCE_USAGE_ENCODE_OUTPUT_BITSTREAM, 208 MOS_HW_RESOURCE_USAGE_ENCODE_OUTPUT_STATISTICS_WRITE, 209 MOS_HW_RESOURCE_USAGE_ENCODE_OUTPUT_STATISTICS_READ_WRITE, 210 // VP 211 MOS_HW_RESOURCE_USAGE_VP_INPUT_PICTURE_FF, 212 MOS_HW_RESOURCE_USAGE_VP_INPUT_REFERENCE_FF, 213 MOS_HW_RESOURCE_USAGE_VP_INTERNAL_READ_FF, 214 MOS_HW_RESOURCE_USAGE_VP_INTERNAL_WRITE_FF, 215 MOS_HW_RESOURCE_USAGE_VP_INTERNAL_READ_WRITE_FF, 216 MOS_HW_RESOURCE_USAGE_VP_OUTPUT_PICTURE_FF, 217 MOS_HW_RESOURCE_USAGE_VP_INPUT_PICTURE_RENDER, 218 MOS_HW_RESOURCE_USAGE_VP_INPUT_REFERENCE_RENDER, 219 MOS_HW_RESOURCE_USAGE_VP_INTERNAL_READ_RENDER, 220 MOS_HW_RESOURCE_USAGE_VP_INTERNAL_WRITE_RENDER, 221 MOS_HW_RESOURCE_USAGE_VP_INTERNAL_READ_WRITE_RENDER, 222 MOS_HW_RESOURCE_USAGE_VP_OUTPUT_PICTURE_RENDER, 223 // CP 224 MOS_HW_RESOURCE_USAGE_CP_EXTERNAL_READ, 225 MOS_HW_RESOURCE_USAGE_CP_INTERNAL_WRITE, 226 // PAT Media Usages END 227 228 // always last one 229 MOS_HW_RESOURCE_DEF_MAX 230 } MOS_HW_RESOURCE_DEF; 231 C_ASSERT(MOS_HW_RESOURCE_DEF_MAX == 171); //!< update this and Mos_CachePolicyGetMemoryObject_XXX() 232 233 //! 234 //! \brief Enum allow callers to specify a command streamer. 235 //! 236 typedef enum MOS_HW_COMMAND_STREAMER_ENUM 237 { 238 MOS_HW_COMMAND_STREAMER_NULL = 0, //!< This stays zero. 239 MOS_CS, //!< Render Command Streamer 240 MOS_BCS, //!< Blitter (BLT) Command Streamer 241 MOS_VCS, //!< Video Codec (MFX) Command Streamer 242 MOS_VECS, //!< Video Enhancement (VEBOX) Command Streamer 243 MOS_HW_COMMAND_STREAMERS //!< This stays last. 244 } MOS_HW_COMMAND_STREAMER; 245 C_ASSERT(MOS_HW_COMMAND_STREAMERS == 5);//!< update this and Mos_GetUseGlobalGtt_XXX() 246 247 //! 248 //! \brief Enum to allow callers to specify a HW command. 249 //! Currently only used with GmmGetUseGlobalGtt--with the 250 //! commands that have a PPGTT/GTT space select field. 251 //! 252 typedef enum MOS_HW_COMMAND_ENUM 253 { 254 MOS_HW_COMMAND_NULL = 0, //!<-- This stays zero. 255 MOS_MI_BATCH_BUFFER_START, 256 MOS_MI_CLFLUSH, 257 MOS_MI_CONDITIONAL_BATCH_BUFFER_END, 258 MOS_MI_COPY_MEM_MEM, 259 MOS_MI_FLUSH_DW, 260 MOS_MI_LOAD_REGISTER_MEM, 261 MOS_MI_REPORT_PERF_COUNT, 262 MOS_MI_SEMAPHORE_MBOX, 263 MOS_MI_SEMAPHORE_SIGNAL, 264 MOS_MI_SEMAPHORE_WAIT, 265 MOS_MI_STORE_DATA_IMM, 266 MOS_MI_STORE_DATA_INDEX, 267 MOS_MI_STORE_REGISTER_MEM, 268 MOS_MI_UPDATE_GTT, 269 MOS_PIPE_CONTROL, 270 MOS_HW_COMMANDS, //!<-- This stays last. 271 272 // Those commands below are not included in GMM 273 MOS_MI_BATCH_BUFFER_START_RCS, 274 MOS_MFX_PIPE_BUF_ADDR, 275 MOS_MFX_INDIRECT_OBJ_BASE_ADDR, 276 MOS_MFX_BSP_BUF_BASE_ADDR, 277 MOS_MFX_AVC_DIRECT_MODE, 278 MOS_MFX_VC1_DIRECT_MODE, 279 MOS_MFX_VP8_PIC, 280 MOS_MFX_DBK_OBJECT, 281 MOS_HUC_DMEM, 282 MOS_HUC_VIRTUAL_ADDR, 283 MOS_HUC_IND_OBJ_BASE_ADDR, 284 MOS_VDENC_PIPE_BUF_ADDR, 285 MOS_SURFACE_STATE, 286 MOS_SURFACE_STATE_ADV, 287 MOS_STATE_BASE_ADDR, 288 MOS_VEBOX_STATE, 289 MOS_VEBOX_DI_IECP, 290 MOS_VEBOX_TILING_CONVERT, 291 MOS_SFC_STATE, 292 MOS_MI_ATOMIC, 293 MOS_MFX_CC_BASE_ADDR_STATE, 294 MOS_VEBOX_SURFACE_STATE, 295 MOS_HW_COMMAND_MAX 296 } MOS_HW_COMMAND; 297 C_ASSERT(MOS_HW_COMMANDS == 16); //!< update this and Mos_GetUseGlobalGtt_XXX() 298 299 #endif // __MOS_OS_HW_H__ 300