xref: /aosp_15_r20/external/intel-media-driver/media_softlet/agnostic/common/vp/hal/packet/vp_kernel_config.h (revision ba62d9d3abf0e404f2022b4cd7a85e107f48596f)
1 /*
2 * Copyright (c) 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 #ifndef __VP_KERNEL_CONFIG_H__
23 #define __VP_KERNEL_CONFIG_H__
24 
25 #include <map>
26 #include "mos_defs.h"
27 #include "renderhal.h"
28 #include "hal_kerneldll_next.h"
29 #include "media_class_trace.h"
30 
31 #define VP_USE_MEDIA_THREADS_MAX    0
32 // Compositing Block size
33 #define VP_COMP_BLOCK_WIDTH         16
34 #define VP_COMP_BLOCK_HEIGHT        16
35 
36 #define ADD_VP_KERNEL_PARAMS(kernelId, grfCount, btCount, samplerCount, threadCount, grfStartReg, curbeLen, blockWidth, blockHeight, blocksX, blocksY)  \
37             m_kernelParams.insert(std::make_pair((VpKernelID)(kernelId),                                                                                \
38             RENDERHAL_KERNEL_PARAM{ (grfCount), (btCount), (samplerCount), (threadCount), (grfStartReg), (curbeLen), (blockWidth), (blockHeight), (blocksX), (blocksY)}))
39 
40 #define VP_ADV_KERNEL_BINARY_ID(kernelId)   ((IDR_VP_TOTAL_NUM_KERNELS) + (kernelId))
41 
42 enum DelayLoadedKernelType
43 {
44     KernelNone = 0,
45     KernelFDFB,
46     KernelSEG,
47     KernelSR,
48     //If more kernels need to load delayed, can add to list
49 };
50 
51 namespace vp {
52 class VpKernelConfig
53 {
54 public:
55     VpKernelConfig();
56     virtual ~VpKernelConfig();
57     MOS_STATUS GetKernelParam(VpKernelID kernelId, RENDERHAL_KERNEL_PARAM &param);
58 
GetFilterScalingRatio(float scaleX,float scaleY)59     virtual Kdll_Scalingratio GetFilterScalingRatio(float scaleX, float scaleY)
60     {
61         return Scalingratio_Any;
62     }
63 
IsFcCscCoeffPatchModeEnabled()64     virtual bool IsFcCscCoeffPatchModeEnabled()
65     {
66         return true;
67     }
68 
IsDpFcKernelEnabled()69     virtual bool IsDpFcKernelEnabled()
70     {
71         return false;
72     }
73 
74 protected:
75     std::map<VpKernelID, RENDERHAL_KERNEL_PARAM> m_kernelParams;    // Kernel params.
76 
77 MEDIA_CLASS_DEFINE_END(vp__VpKernelConfig)
78 };
79 }
80 #endif // __VP_KERNEL_CONFIG_H__
81