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     codechal_debug_kernel.h
24 //! \brief    Defines the kernel debug map
25 //! \details
26 //!
27 
28 #pragma once
29 
30 #include "codechal_debug.h"
31 #if USE_CODECHAL_DEBUG_TOOL
32 
33 namespace CodechalDbgKernel
34 {
35 class KernelStateMap
36 {
37 public:
38     using kernelMapType = std::map<CODECHAL_MEDIA_STATE_TYPE, std::string>;
39 
RegisterKernelStr(CODECHAL_MEDIA_STATE_TYPE mediaState,std::string kernelName)40     static bool RegisterKernelStr(CODECHAL_MEDIA_STATE_TYPE mediaState, std::string kernelName)
41     {
42         kernelMapType &kernelMap = GetKernelStateMap();
43         auto           it        = kernelMap.find(mediaState);
44         if (it == kernelMap.end())
45         {
46             kernelMap.insert(std::make_pair(mediaState, kernelName));
47         }
48         return true;
49     }
50 
GetKernelStateMap()51     static kernelMapType &GetKernelStateMap()
52     {
53         static kernelMapType m_kernelStateMap;
54         return m_kernelStateMap;
55     }
56 MEDIA_CLASS_DEFINE_END(CodechalDbgKernel__KernelStateMap)
57 };
58 
59 //Codec Kernel
60 static const char *kernelOlp                          = "Vc1Olp";
61 static const char *kernelEncNormal                    = "MbEncNorm";
62 static const char *kernelEncPerf                      = "MbEncPerf";
63 static const char *kernelEncQuality                   = "MbEncQlty";
64 static const char *kernelEncIFrameDist                = "IFrameDist";
65 static const char *kernel32xScaling                   = "32xScaling";
66 static const char *kernel16xScaling                   = "16xScaling";
67 static const char *kernel4xScaling                    = "4xScaling";
68 static const char *kernel32xMe                        = "32xMe";
69 static const char *kernel16xMe                        = "16xMe";
70 static const char *kernel4xMe                         = "4xMe";
71 static const char *kernelBrcInitReset                 = "BrcInitReset";
72 static const char *kernelBrcUpdate                    = "BrcUpdate";
73 static const char *kernel2xScaling                    = "2xScaling";
74 static const char *kernelHevc32x32PuModeDecision      = "HEVC_32x32_PU_MD";
75 static const char *kernelHevc16x16PuSad               = "HEVC_16x16_PU_SAD";
76 static const char *kernelHevc16x16PuModeDecision      = "HEVC_16x16_PU_MD";
77 static const char *kernelHevc8x8Pu                    = "HEVC_8x8_PU_MD";
78 static const char *kernelHevc8x8PuFMode               = "HEVC_8x8_PU_FMODE";
79 static const char *kernelHevc32x32BIntraCheck         = "HEVC_32x32_B_INTRA_CHECK";
80 static const char *kernelHevcBMbenc                   = "HEVC_B_MBENC";
81 static const char *kernelHevcBPak                     = "HEVC_B_PAK";
82 static const char *kernelHevcBrcLcuUpdate             = "HEVC_LCU_BRCUpdate";
83 static const char *kernelMeVdencStreamIn              = "MeVDEncStreamIn";
84 static const char *kernelVP9EncI32x32                 = "VP9_I_32x32_MBENC";
85 static const char *kernelVP9EncI16x16                 = "VP9_I_16x16_MBENC";
86 static const char *kernelVP9EncP                      = "VP9_P_MBENC";
87 static const char *kernelVP9EncTx                     = "VP9_TX_MBENC";
88 static const char *kernelVP9Dys                       = "VP9_DYS";
89 static const char *kernelVP9PakLumaRecon              = "VP9_I_MBPAK_LumaRecon";
90 static const char *kernelVP9PakChromaRecon            = "VP9_I_MBPAK_ChromaRecon";
91 static const char *kernelVP9PakDeblockMask            = "VP9_I_MBPAK_DeblockMask";
92 static const char *kernelVP9PakLumaDeblock            = "VP9_I_MBPAK_LumaDeblock";
93 static const char *kernelVP9PakChromaDeblock          = "VP9_I_MBPAK_ChromaDeblock";
94 static const char *kernelVP9PakMcPred                 = "VP9_P_MbPak_McPred";
95 static const char *kernelVP9PakPFrameLumaRecon        = "VP9_P_MbPak_LumaRecon";
96 static const char *kernelVP9PakPFrameLumaRecon32x32   = "VP9_P_MbPak_LumaRecon";
97 static const char *kernelVP9PakPFrameChromaRecon      = "VP9_P_MbPak_ChromaRecon";
98 static const char *kernelVP9PakPFrameIntraLumaRecon   = "VP9_Intra_P_MbPak_LumaRecon";
99 static const char *kernelVP9PakPFrameIntraChromaRecon = "VP9_Intra_P_MbPak_ChromaRecon";
100 static const char *kernelPreProc                      = "PreProc";
101 static const char *kernelEncWP                        = "WP";
102 static const char *kernelHevcIMbenc                   = "HEVC_I_MBENC";
103 static const char *kernelCscDsCopy                    = "CSCDsCopy";
104 static const char *kernel2x4xScaling                  = "2x_4xScaling";
105 static const char *kernelHevcLcu64BMbenc              = "HEVC_LCU64_B_MBENC";
106 static const char *kernelMbBrcUpdate                  = "MbBrcUpdate";
107 static const char *kernelStaticFrameDetection         = "StaticFrameDetection";
108 static const char *kernelHevcRoi                      = "HEVC_ROI";
109 
110 static bool regOlp                          = KernelStateMap::RegisterKernelStr(CODECHAL_MEDIA_STATE_OLP, kernelOlp);
111 static bool regEncNormal                    = KernelStateMap::RegisterKernelStr(CODECHAL_MEDIA_STATE_ENC_NORMAL, kernelEncNormal);
112 static bool regEncQuality                   = KernelStateMap::RegisterKernelStr(CODECHAL_MEDIA_STATE_ENC_PERFORMANCE, kernelEncPerf);
113 static bool regEncPerf                      = KernelStateMap::RegisterKernelStr(CODECHAL_MEDIA_STATE_ENC_QUALITY, kernelEncQuality);
114 static bool regEncIFrameDist                = KernelStateMap::RegisterKernelStr(CODECHAL_MEDIA_STATE_ENC_I_FRAME_DIST, kernelEncIFrameDist);
115 static bool reg32xScaling                   = KernelStateMap::RegisterKernelStr(CODECHAL_MEDIA_STATE_32X_SCALING, kernel32xScaling);
116 static bool reg16xScaling                   = KernelStateMap::RegisterKernelStr(CODECHAL_MEDIA_STATE_16X_SCALING, kernel16xScaling);
117 static bool reg4xScaling                    = KernelStateMap::RegisterKernelStr(CODECHAL_MEDIA_STATE_4X_SCALING, kernel4xScaling);
118 static bool reg32xMe                        = KernelStateMap::RegisterKernelStr(CODECHAL_MEDIA_STATE_32X_ME, kernel32xMe);
119 static bool reg16xMe                        = KernelStateMap::RegisterKernelStr(CODECHAL_MEDIA_STATE_16X_ME, kernel16xMe);
120 static bool reg4xMe                         = KernelStateMap::RegisterKernelStr(CODECHAL_MEDIA_STATE_4X_ME, kernel4xMe);
121 static bool regBrcInit                      = KernelStateMap::RegisterKernelStr(CODECHAL_MEDIA_STATE_BRC_INIT_RESET, kernelBrcInitReset);
122 static bool regBrcUpdate                    = KernelStateMap::RegisterKernelStr(CODECHAL_MEDIA_STATE_BRC_UPDATE, kernelBrcUpdate);
123 static bool reg2xScale                      = KernelStateMap::RegisterKernelStr(CODECHAL_MEDIA_STATE_2X_SCALING, kernel2xScaling);
124 static bool regHevc32x32PuMode              = KernelStateMap::RegisterKernelStr(CODECHAL_MEDIA_STATE_32x32_PU_MODE_DECISION, kernelHevc32x32PuModeDecision);
125 static bool regHevc16x16PuSad               = KernelStateMap::RegisterKernelStr(CODECHAL_MEDIA_STATE_16x16_PU_SAD, kernelHevc16x16PuSad);
126 static bool regHevc16x16PuMode              = KernelStateMap::RegisterKernelStr(CODECHAL_MEDIA_STATE_16x16_PU_MODE_DECISION, kernelHevc16x16PuModeDecision);
127 static bool regHevc8x8Pu                    = KernelStateMap::RegisterKernelStr(CODECHAL_MEDIA_STATE_8x8_PU, kernelHevc8x8Pu);
128 static bool regHevc8x8PuFMode               = KernelStateMap::RegisterKernelStr(CODECHAL_MEDIA_STATE_8x8_PU_FMODE, kernelHevc8x8PuFMode);
129 static bool regHevc32x32BIntraCheck         = KernelStateMap::RegisterKernelStr(CODECHAL_MEDIA_STATE_32x32_B_INTRA_CHECK, kernelHevc32x32BIntraCheck);
130 static bool regHevcBMben                    = KernelStateMap::RegisterKernelStr(CODECHAL_MEDIA_STATE_HEVC_B_MBENC, kernelHevcBMbenc);
131 static bool regHevcBPak                     = KernelStateMap::RegisterKernelStr(CODECHAL_MEDIA_STATE_HEVC_B_PAK, kernelHevcBPak);
132 static bool regHevcBrcLcuUpdate             = KernelStateMap::RegisterKernelStr(CODECHAL_MEDIA_STATE_HEVC_BRC_LCU_UPDATE, kernelHevcBrcLcuUpdate);
133 static bool regMeVdencStreamIn              = KernelStateMap::RegisterKernelStr(CODECHAL_MEDIA_STATE_ME_VDENC_STREAMIN, kernelMeVdencStreamIn);
134 static bool regVp9EncI32x32                 = KernelStateMap::RegisterKernelStr(CODECHAL_MEDIA_STATE_VP9_ENC_I_32x32, kernelVP9EncI32x32);
135 static bool regVp9EncI16x16                 = KernelStateMap::RegisterKernelStr(CODECHAL_MEDIA_STATE_VP9_ENC_I_16x16, kernelVP9EncI16x16);
136 static bool regVp9EncP                      = KernelStateMap::RegisterKernelStr(CODECHAL_MEDIA_STATE_VP9_ENC_P, kernelVP9EncP);
137 static bool regVp9EncTx                     = KernelStateMap::RegisterKernelStr(CODECHAL_MEDIA_STATE_VP9_ENC_TX, kernelVP9EncTx);
138 static bool regVp9Dys                       = KernelStateMap::RegisterKernelStr(CODECHAL_MEDIA_STATE_VP9_DYS, kernelVP9Dys);
139 static bool regVp9PakLumaRecon              = KernelStateMap::RegisterKernelStr(CODECHAL_MEDIA_STATE_VP9_PAK_LUMA_RECON, kernelVP9PakLumaRecon);
140 static bool regVp9PakChromaRecon            = KernelStateMap::RegisterKernelStr(CODECHAL_MEDIA_STATE_VP9_PAK_CHROMA_RECON, kernelVP9PakChromaRecon);
141 static bool regVp9PakDeblockMask            = KernelStateMap::RegisterKernelStr(CODECHAL_MEDIA_STATE_VP9_PAK_DEBLOCK_MASK, kernelVP9PakDeblockMask);
142 static bool regVp9PakLumaDeblock            = KernelStateMap::RegisterKernelStr(CODECHAL_MEDIA_STATE_VP9_PAK_LUMA_DEBLOCK, kernelVP9PakLumaDeblock);
143 static bool regVp9PakChromaDeblock          = KernelStateMap::RegisterKernelStr(CODECHAL_MEDIA_STATE_VP9_PAK_CHROMA_DEBLOCK, kernelVP9PakChromaDeblock);
144 static bool regVp9PakMcPred                 = KernelStateMap::RegisterKernelStr(CODECHAL_MEDIA_STATE_VP9_PAK_MC_PRED, kernelVP9PakMcPred);
145 static bool regVp9PakPFrameLumaRecon        = KernelStateMap::RegisterKernelStr(CODECHAL_MEDIA_STATE_VP9_PAK_P_FRAME_LUMA_RECON, kernelVP9PakPFrameLumaRecon);
146 static bool regVp9PakPFrameLumaRecon32x32   = KernelStateMap::RegisterKernelStr(CODECHAL_MEDIA_STATE_VP9_PAK_P_FRAME_LUMA_RECON_32x32, kernelVP9PakPFrameLumaRecon32x32);
147 static bool regVp9PakPFrameChromaRecon      = KernelStateMap::RegisterKernelStr(CODECHAL_MEDIA_STATE_VP9_PAK_P_FRAME_CHROMA_RECON, kernelVP9PakPFrameChromaRecon);
148 static bool regVp9PakPFrameIntraLumaRecon   = KernelStateMap::RegisterKernelStr(CODECHAL_MEDIA_STATE_VP9_PAK_P_FRAME_INTRA_LUMA_RECON, kernelVP9PakPFrameIntraLumaRecon);
149 static bool regVp9PakPFrameIntraChromaRecon = KernelStateMap::RegisterKernelStr(CODECHAL_MEDIA_STATE_VP9_PAK_P_FRAME_INTRA_CHROMA_RECON, kernelVP9PakPFrameIntraChromaRecon);
150 static bool regPreProc                      = KernelStateMap::RegisterKernelStr(CODECHAL_MEDIA_STATE_PREPROC, kernelPreProc);
151 static bool regEncWP                        = KernelStateMap::RegisterKernelStr(CODECHAL_MEDIA_STATE_ENC_WP, kernelEncWP);
152 static bool regHevcIMbenc                   = KernelStateMap::RegisterKernelStr(CODECHAL_MEDIA_STATE_HEVC_I_MBENC, kernelHevcIMbenc);
153 static bool regCscDsCopy                    = KernelStateMap::RegisterKernelStr(CODECHAL_MEDIA_STATE_CSC_DS_COPY, kernelCscDsCopy);
154 static bool reg2x4xScaling                  = KernelStateMap::RegisterKernelStr(CODECHAL_MEDIA_STATE_2X_4X_SCALING, kernel2x4xScaling);
155 static bool regHevcLcu64BMbenc              = KernelStateMap::RegisterKernelStr(CODECHAL_MEDIA_STATE_HEVC_LCU64_B_MBENC, kernelHevcLcu64BMbenc);
156 static bool regMbBrcUpdate                  = KernelStateMap::RegisterKernelStr(CODECHAL_MEDIA_STATE_MB_BRC_UPDATE, kernelMbBrcUpdate);
157 static bool regStaticFrameDetection         = KernelStateMap::RegisterKernelStr(CODECHAL_MEDIA_STATE_STATIC_FRAME_DETECTION, kernelStaticFrameDetection);
158 static bool regHevcRoi                      = KernelStateMap::RegisterKernelStr(CODECHAL_MEDIA_STATE_HEVC_ROI, kernelHevcRoi);
159 }  // namespace CodechalDbgKernel
160 
161 #endif