1 /*===================== begin_copyright_notice ================================== 2 3 * Copyright (c) 2024, Intel Corporation 4 * 5 * Permission is hereby granted, free of charge, to any person obtaining a 6 * copy of this software and associated documentation files (the "Software"), 7 * to deal in the Software without restriction, including without limitation 8 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 9 * and/or sell copies of the Software, and to permit persons to whom the 10 * Software is furnished to do so, subject to the following conditions: 11 * 12 * The above copyright notice and this permission notice shall be included 13 * in all copies or substantial portions of the Software. 14 * 15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 16 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 18 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR 19 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 20 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 21 * OTHER DEALINGS IN THE SOFTWARE. 22 23 ======================= end_copyright_notice ==================================*/ 24 //! 25 //! \file media_interfaces_lnl.h 26 //! \brief All interfaces used for LNL that require factory creation 27 //! 28 29 #ifndef __MEDIA_INTERFACES_XE2_LPM_H__ 30 #define __MEDIA_INTERFACES_XE2_LPM_H__ 31 32 #include "media_interfaces_mhw_next.h" 33 #include "media_interfaces_codechal_next.h" 34 #include "media_interfaces_vphal.h" 35 #include "media_interfaces_renderhal.h" 36 #include "media_interfaces_hwinfo_device.h" 37 #include "media_interfaces_mcpy_next.h" 38 39 #include "mhw_cp_interface.h" 40 #include "mhw_state_heap_xe2_hpg.h" 41 #include "mhw_vdbox_hcp_impl_xe2_lpm.h" 42 43 #include "mhw_vdbox_mfx_impl_xe2_lpm.h" 44 45 #include "mhw_vdbox_vvcp_impl_xe2_lpm.h" 46 #include "mhw_vdbox_avp_impl_xe2_lpm.h" 47 48 #include "mhw_vdbox_huc_impl_xe2_lpm.h" 49 50 #include "mhw_vdbox_vdenc_impl_xe2_lpm.h" 51 52 #ifdef _MEDIA_RESERVED 53 #include "codec_hw_xe2_lpm_base.h" 54 #endif 55 56 #ifdef _AVC_DECODE_SUPPORTED 57 #include "decode_avc_pipeline_adapter_xe2_lpm_base.h" 58 #endif 59 60 #ifdef _HEVC_DECODE_SUPPORTED 61 #include "decode_hevc_pipeline_adapter_xe2_lpm_base.h" 62 #endif 63 64 #ifdef _JPEG_DECODE_SUPPORTED 65 #include "decode_jpeg_pipeline_adapter_xe2_lpm_base.h" 66 #endif 67 68 #ifdef _MPEG2_DECODE_SUPPORTED 69 #include "decode_mpeg2_pipeline_adapter_xe2_lpm_base.h" 70 #endif 71 72 #ifdef _VP9_DECODE_SUPPORTED 73 #include "decode_vp9_pipeline_adapter_xe2_lpm_base.h" 74 #endif 75 76 #ifdef _VP8_DECODE_SUPPORTED 77 #include "decode_vp8_pipeline_adapter_xe2_lpm_base.h" 78 #endif 79 80 #ifdef _AV1_DECODE_SUPPORTED 81 #include "decode_av1_pipeline_adapter_xe2_lpm_base.h" 82 #endif 83 84 #ifdef _VVC_DECODE_SUPPORTED 85 #include "decode_vvc_pipeline_adapter_xe2_lpm.h" 86 #endif 87 88 #ifdef _JPEG_ENCODE_SUPPORTED 89 #include "encode_jpeg_pipeline_adapter.h" 90 #endif 91 92 #ifdef _AVC_ENCODE_VDENC_SUPPORTED 93 #include "encode_avc_vdenc_pipeline_adapter_xe2_lpm.h" 94 #endif 95 96 #ifdef _HEVC_ENCODE_VDENC_SUPPORTED 97 #include "encode_hevc_vdenc_pipeline_adapter_xe2_lpm_base.h" 98 #endif 99 100 #ifdef _AV1_ENCODE_VDENC_SUPPORTED 101 #include "encode_av1_vdenc_pipeline_adapter_xe2_lpm.h" 102 #endif 103 104 #ifdef _MEDIA_RESERVED 105 #ifdef _VP9_ENCODE_VDENC_SUPPORTED 106 #include "encode_vp9_vdenc_pipeline_adapter_xe2_lpm.h" 107 #endif 108 #endif 109 110 #include "renderhal_xe2_hpg_next.h" 111 #include "decode_scalability_singlepipe_next.h" 112 #include "decode_scalability_multipipe_next.h" 113 114 #include "media_copy_xe2_lpm.h" 115 116 class MhwInterfacesLnl_Next : public MhwInterfacesNext 117 { 118 public: 119 120 using Cp = MhwCpInterface; 121 using StateHeap = MHW_STATE_HEAP_INTERFACE_XE2_HPG; 122 123 virtual MOS_STATUS Initialize( 124 CreateParams params, 125 PMOS_INTERFACE osInterface); 126 127 //! 128 //! \brief Destroys all created MHW interfaces 129 //! \details If the HAL creation fails, this is used for cleanup 130 //! 131 virtual void Destroy(); 132 MEDIA_CLASS_DEFINE_END(MhwInterfacesLnl_Next) 133 }; 134 135 class CodechalDecodeInterfacesXe2_Lpm 136 { 137 public: 138 #ifdef _AVC_DECODE_SUPPORTED 139 using Avc = DecodeAvcPipelineAdapterXe2_Lpm_Base; 140 #endif 141 #ifdef _HEVC_DECODE_SUPPORTED 142 using Hevc = DecodeHevcPipelineAdapterXe2_Lpm_Base; 143 #endif 144 #ifdef _JPEG_DECODE_SUPPORTED 145 using Jpeg = DecodeJpegPipelineAdapterXe2_Lpm_Base; 146 #endif 147 #ifdef _MPEG2_DECODE_SUPPORTED 148 using Mpeg2 = DecodeMpeg2PipelineAdapterXe2_Lpm_Base; 149 #endif 150 #ifdef _VP9_DECODE_SUPPORTED 151 using Vp9 = DecodeVp9PipelineAdapterXe2_Lpm_Base; 152 #endif 153 #ifdef _VP8_DECODE_SUPPORTED 154 using Vp8 = DecodeVp8PipelineAdapterXe2_Lpm_Base; 155 #endif 156 #ifdef _AV1_DECODE_SUPPORTED 157 using Av1 = DecodeAv1PipelineAdapterXe2_Lpm_Base; 158 #endif 159 #ifdef _VVC_DECODE_SUPPORTED 160 using Vvc = DecodeVvcPipelineAdapterXe2Lpm; 161 #endif 162 163 MEDIA_CLASS_DEFINE_END(CodechalDecodeInterfacesXe2_Lpm) 164 }; 165 166 class CodechalInterfacesXe2_Lpm : public CodechalDeviceNext 167 { 168 public: 169 using Decode = CodechalDecodeInterfacesXe2_Lpm; 170 using Hw = CodechalHwInterfaceXe2_Lpm_Base; 171 172 MOS_STATUS Initialize( 173 void * standardInfo, 174 void * settings, 175 MhwInterfacesNext *mhwInterfaces, 176 PMOS_INTERFACE osInterface) override; 177 178 MEDIA_CLASS_DEFINE_END(CodechalInterfacesXe2_Lpm) 179 }; 180 181 class VphalInterfacesXe2_Lpm : public VphalDevice 182 { 183 public: 184 MOS_STATUS Initialize( 185 PMOS_INTERFACE osInterface, 186 bool bInitVphalState, 187 MOS_STATUS * eStatus, 188 bool clearViewMode = false); 189 190 MOS_STATUS CreateVpPlatformInterface( 191 PMOS_INTERFACE osInterface, 192 MOS_STATUS * eStatus); 193 194 private: 195 void InitPlatformKernelBinary( 196 vp::VpPlatformInterface *&vpPlatformInterface); 197 198 MEDIA_CLASS_DEFINE_END(VphalInterfacesXe2_Lpm) 199 }; 200 201 class RenderHalInterfacesXe2_Lpc : public RenderHalDevice 202 { 203 protected: 204 using XRenderHal = XRenderHal_Interface_Xe2_Hpg_Next; 205 MOS_STATUS Initialize(); 206 207 MEDIA_CLASS_DEFINE_END(RenderHalInterfacesXe2_Lpc) 208 }; 209 210 class MediaInterfacesHwInfoDeviceXe2_Lpm : public MediaInterfacesHwInfoDevice 211 { 212 public: 213 virtual MOS_STATUS Initialize(PLATFORM platform) override; 214 215 MEDIA_CLASS_DEFINE_END(MediaInterfacesHwInfoDeviceXe2_Lpm) 216 }; 217 218 class McpyDeviceXe2_Lpm : public McpyDeviceNext 219 { 220 public: 221 using Mcpy = MediaCopyStateXe2_Lpm; 222 MOS_STATUS Initialize( 223 PMOS_INTERFACE osInterface, 224 MhwInterfacesNext *mhwInterfaces); 225 226 MEDIA_CLASS_DEFINE_END(McpyDeviceXe2_Lpm) 227 }; 228 #endif // __MEDIA_INTERFACES_XE2_LPM_H__ 229