xref: /aosp_15_r20/external/intel-media-driver/media_driver/agnostic/Xe_M/Xe_XPM/vp/hal/vphal_renderer_xe_xpm.h (revision ba62d9d3abf0e404f2022b4cd7a85e107f48596f)
1 /*===================== begin_copyright_notice ==================================
2 
3 # Copyright (c) 2020-2021, 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     vphal_renderer_xe_xpm.h
26 //! \brief    The header file of VPHAL top level rendering component
27 //! \details  The top renderer is responsible for coordinating the sequence of calls to low level renderers, e.g. DNDI or Comp
28 //!
29 #ifndef __VPHAL_RENDERER_XE_XPM_H__
30 #define __VPHAL_RENDERER_XE_XPM_H__
31 
32 #include "vphal_renderer_g12.h"
33 #include "vphal_debug_xe_xpm.h"
34 
35 void KernelDll_ModifyFunctionPointers_g12hp(Kdll_State *pState);
36 
37 //!
38 //! \brief VPHAL renderer Gen12 class
39 //!
40 class VphalRendererXe_Xpm : public VphalRendererG12
41 {
42 public:
43     //!
44     //! \brief    VphalRendererXe_Xpm constructor
45     //! \details  Based on the HW and OS info, initialize the renderer interfaces
46     //! \param    [in] pRenderHal
47     //!           Pointer to RenderHal Interface Structure
48     //! \param    [in,out] pStatus
49     //!           Pointer to the MOS_STATUS flag.
50     //!           Will assign this flag to MOS_STATUS_SUCCESS if successful, otherwise failed
51     //!
VphalRendererXe_Xpm(PRENDERHAL_INTERFACE pRenderHal,MOS_STATUS * pStatus)52     VphalRendererXe_Xpm(
53         PRENDERHAL_INTERFACE                pRenderHal,
54         MOS_STATUS                          *pStatus) :
55         VphalRendererG12(pRenderHal, pStatus)
56     {
57         bEnableCMFC = true;
58 
59         m_modifyKdllFunctionPointers = KernelDll_ModifyFunctionPointers_g12hp;
60     }
61 
62     //!
63     //! \brief    VPHAL renderer destructor
64     //! \details  Destory the resources allocated for the renderers
65     //!           including VEBOX and Composite.
66     //! \param    [in,out] VphalRenderer* pRenderer
67     //!           VPHAL renderer pointer
68     //! \return   VOID
69     //!
~VphalRendererXe_Xpm()70     ~VphalRendererXe_Xpm()
71     {
72     }
73 
74     //!
75     //! \brief    Get Renderer Cache Settings
76     //! \details  Get cache settings for various VP features
77     //! \param    [in] pOsInterface
78     //!           OS Interface
79     //! \param    [in] pPlatform
80     //!           Platform Pointer
81     //! \param    [in] pSkuTable
82     //!           SKU feature table
83     //! \param    [in,out] pSettings
84     //!           Pointer to Render Cache Control Settings
85     //! \return   void
86     //!
87     virtual void GetCacheCntl(
88         PMOS_INTERFACE                      pOsInterface,
89         PLATFORM                            *pPlatform,
90         MEDIA_FEATURE_TABLE                 *pSkuTable,
91         PVPHAL_RENDER_CACHE_CNTL            pSettings);
92 
93     //!
94     //! \brief    Allocate render components
95     //! \details  Allocate render components
96     //! \param    [in] pVeboxInterface
97     //!           Pointer to Vebox Interface Structure
98     //! \param    [in] pSfcInterface
99     //!           Pointer to SFC interface Structure
100     //! \return   MOS_STATUS
101     //!           Return MOS_STATUS_SUCCESS if successful, otherwise failed
102     //!
103     virtual MOS_STATUS AllocateRenderComponents(
104         PMHW_VEBOX_INTERFACE                pVeboxInterface,
105         PMHW_SFC_INTERFACE                  pSfcInterface);
106 
107     //!
108     //! \brief    Main render function
109     //! \details  The top level renderer function, which may contain multiple
110     //!           passes of rendering
111     //! \param    [in] pcRenderParams
112     //!           Const pointer to VPHAL render parameter
113     //! \return   MOS_STATUS
114     //!           Return MOS_STATUS_SUCCESS if successful, otherwise failed
115     //!
116     virtual MOS_STATUS Render(
117         PCVPHAL_RENDER_PARAMS    pcRenderParams);
118 
119     //!
120     //! \brief    Initialize the KDLL parameters
121     //! \details  Initialize the KDLL parameters
122     //! \return   MOS_STATUS
123     //!
124     MOS_STATUS InitKdllParam();
125 
126     //!
127     //! \brief    Allocate surface dumper
128     //! \return   MOS_STATUS
129     //!           Return MOS_STATUS_SUCCESS if successful, otherwise failed
130     //!
131     MOS_STATUS CreateSurfaceDumper();
132 };
133 
134 #endif // __VPHAL_RENDER_XE_XPM_H__
135