xref: /aosp_15_r20/external/intel-media-driver/media_softlet/agnostic/common/hw/mhw_vebox_itf.h (revision ba62d9d3abf0e404f2022b4cd7a85e107f48596f)
1 /*
2 * Copyright (c) 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     mhw_vebox_itf.h
24 //! \brief    MHW VEBOX interface common base
25 //! \details
26 //!
27 
28 #ifndef __MHW_VEBOX_ITF_H__
29 #define __MHW_VEBOX_ITF_H__
30 
31 #include "mhw_itf.h"
32 #include "mhw_vebox_cmdpar.h"
33 #include "mhw_mi.h"
34 
35 #define _VEBOX_CMD_DEF(DEF)                             \
36     DEF(VEBOX_SURFACE_STATE);                           \
37     DEF(VEBOX_STATE);                                   \
38     DEF(VEB_DI_IECP);                                   \
39     DEF(VEBOX_TILING_CONVERT);                          \
40 
41 namespace mhw
42 {
43 namespace vebox
44 {
45 class Itf
46 {
47 public:
48     class ParSetting
49     {
50     public:
51         virtual ~ParSetting() = default;
52         _VEBOX_CMD_DEF(_MHW_SETPAR_DEF);
53     };
54 
55     virtual ~Itf() = default;
56 
57     virtual MOS_STATUS SetVeboxSurfaceControlBits(PMHW_VEBOX_SURFACE_CNTL_PARAMS pVeboxSurfCntlParams, uint32_t* pSurfCtrlBits) = 0;
58 
59     virtual MOS_STATUS VeboxAdjustBoundary(PMHW_VEBOX_SURFACE_PARAMS pCurrSurf, uint32_t* pdwSurfaceWidth, uint32_t* pdwSurfaceHeight, bool bDIEnable) = 0;
60 
61     virtual MOS_STATUS SetVeboxIndex(uint32_t dwVeboxIndex, uint32_t dwVeboxCount, uint32_t dwUsingSFC) = 0;
62 
63     virtual MOS_STATUS DestroyHeap() = 0;
64 
65     virtual MOS_STATUS CreateHeap() = 0;
66 
67     virtual MOS_STATUS UpdateVeboxSync() = 0;
68 
69     virtual MOS_STATUS AddVeboxTilingConvert(PMOS_COMMAND_BUFFER cmdBuffer, PMHW_VEBOX_SURFACE_PARAMS          inSurParams, PMHW_VEBOX_SURFACE_PARAMS outSurParams) = 0;
70 
71     virtual MOS_STATUS GetVeboxHeapInfo(const MHW_VEBOX_HEAP** ppVeboxHeap) = 0;
72 
73     virtual MOS_STATUS SetVeboxHeapStateIndex(uint32_t index) = 0;
74 
75     virtual MOS_STATUS AddVeboxSurfaces(PMOS_COMMAND_BUFFER pCmdBufferInUse, PMHW_VEBOX_SURFACE_STATE_CMD_PARAMS pVeboxSurfaceStateCmdParams) = 0;
76 
77     virtual MOS_STATUS SetVeboxDndiState(PMHW_VEBOX_DNDI_PARAMS pVeboxDndiParams) = 0;
78 
79     virtual MOS_STATUS SetVeboxIecpState(PMHW_VEBOX_IECP_PARAMS pVeboxIecpParams) = 0;
80 
81     virtual MOS_STATUS SetDisableHistogram(PMHW_VEBOX_IECP_PARAMS pVeboxIecpParams) = 0;
82 
83     virtual MOS_STATUS SetAlphaFromStateSelect(PMHW_VEBOX_IECP_PARAMS pVeboxIecpParams) = 0;
84 
85     virtual MOS_STATUS SetVeboxLaceColorParams(MHW_LACE_COLOR_CORRECTION *pLaceColorParams)  = 0;
86 
87     virtual MOS_STATUS SetVeboxIecpAceState(PMHW_VEBOX_IECP_PARAMS pVeboxIecpParams) = 0;
88 
89     virtual MOS_STATUS SetVeboxGamutState(PMHW_VEBOX_IECP_PARAMS pVeboxIecpParams, PMHW_VEBOX_GAMUT_PARAMS pVeboxGamutParams) = 0;
90 
91     virtual MOS_STATUS SetVeboxChromaParams(MHW_VEBOX_CHROMA_PARAMS* chromaParams) = 0;
92 
93     virtual MOS_STATUS AddVeboxHdrState(PMHW_VEBOX_IECP_PARAMS pVeboxIecpParams) = 0;
94 
95     virtual MOS_STATUS AssignVeboxState() = 0;
96 
97     virtual MOS_STATUS SetgnLumaWgts(uint32_t dwLumaStadTh, uint32_t dw4X4TGNEThCnt, bool bTGNEEnable) = 0;
98 
99     virtual MOS_STATUS SetgnChromaWgts(uint32_t dwChromaStadTh) = 0;
100 
101     virtual MOS_STATUS SetgnHVSParams(bool tGNEEnable, uint32_t lumaStadTh, uint32_t chromaStadTh, uint32_t tGNEThCnt, uint32_t historyInit, bool fallBack) = 0;
102 
103     virtual MOS_STATUS SetgnHVSMode(bool hVSAutoBdrate, bool hVSAutoSubjective, uint32_t bSDThreshold) = 0;
104 
105     virtual MOS_STATUS FindVeboxGpuNodeToUse(PMHW_VEBOX_GPUNODE_LIMIT pVeboxGpuNodeLimit) = 0;
106 
107     virtual MOS_STATUS CreateGpuContext(PMOS_INTERFACE  pOsInterface, MOS_GPU_CONTEXT VeboxGpuContext, MOS_GPU_NODE VeboxGpuNode) = 0;
108 
109     virtual uint32_t GetVeboxNumInstances() = 0;
110 
111     virtual bool IsVeboxScalabilitywith4K() = 0;
112 
113     virtual MOS_STATUS Add1DLutState(void *&surface, PMHW_1DLUT_PARAMS p1DLutParams) = 0;
114 
115     virtual MOS_STATUS AddFP16State(PMHW_FP16_PARAMS pFP16Params) = 0;
116 
117     _VEBOX_CMD_DEF(_MHW_CMD_ALL_DEF_FOR_ITF);
118 
119 MEDIA_CLASS_DEFINE_END(mhw__vebox__Itf)
120 };
121 }  // namespace vebox
122 }  // namespace mhw
123 #endif  // __MHW_VEBOX_ITF_H__
124