|
| 1 | +/* |
| 2 | +* Copyright (c) 2024-2026, 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 huc_kernel_source_xe3p_lpm_base.cpp |
| 24 | +//! \brief Implementation of the huc kernel source management |
| 25 | +//! |
| 26 | +#include "huc_kernel_source_xe3p_lpm_base.h" |
| 27 | + |
| 28 | +#include "nvlMediaKernels.h" |
| 29 | + |
| 30 | +#ifndef MEDIA_BIN_SUPPORT |
| 31 | +HUC_KERNEL_BIN_LOCAL(__MediaKernels_s2l_nvl) |
| 32 | +HUC_KERNEL_BIN_LOCAL(__MediaKernels_copykrn_nvl) |
| 33 | +HUC_KERNEL_BIN_LOCAL(__MediaKernels_avcbrc_init_nvl) |
| 34 | +HUC_KERNEL_BIN_LOCAL(__MediaKernels_avcbrc_update_nvl) |
| 35 | +HUC_KERNEL_BIN_LOCAL(__MediaKernels_vp9dec_nvl) |
| 36 | +HUC_KERNEL_BIN_LOCAL(__MediaKernels_vp9hpu_nvl) |
| 37 | +HUC_KERNEL_BIN_LOCAL(__MediaKernels_hevcbrc_init_nvl) |
| 38 | +HUC_KERNEL_BIN_LOCAL(__MediaKernels_hevcbrc_update_nvl) |
| 39 | +HUC_KERNEL_BIN_LOCAL(__MediaKernels_vp9brc_init_nvl) |
| 40 | +HUC_KERNEL_BIN_LOCAL(__MediaKernels_vp9brc_update_nvl) |
| 41 | +HUC_KERNEL_BIN_LOCAL(__MediaKernels_pakint_nvl) |
| 42 | +HUC_KERNEL_BIN_LOCAL(__MediaKernels_lookahead_nvl) |
| 43 | +HUC_KERNEL_BIN_LOCAL(__MediaKernels_av1ba_nvl) |
| 44 | +HUC_KERNEL_BIN_LOCAL(__MediaKernels_av1brc_init_nvl) |
| 45 | +HUC_KERNEL_BIN_LOCAL(__MediaKernels_av1brc_update_nvl) |
| 46 | +HUC_KERNEL_BIN_LOCAL(__MediaKernels_vvcs2l_nvl) |
| 47 | +#ifdef _MEDIA_RESERVED |
| 48 | +HUC_KERNEL_BIN_LOCAL(__MediaKernels_drm_nvl) |
| 49 | +HUC_KERNEL_BIN_LOCAL(__MediaKernels_avcbrc_pxp_init_nvl) |
| 50 | +HUC_KERNEL_BIN_LOCAL(__MediaKernels_avcbrc_pxp_update_nvl) |
| 51 | +#endif |
| 52 | +HUC_KERNEL_BIN_LOCAL(__MediaKernels_av1slbb_update_nvl) |
| 53 | +HUC_KERNEL_BIN_LOCAL(__MediaKernels_avcslbb_update_nvl) |
| 54 | +HUC_KERNEL_BIN_LOCAL(__MediaKernels_hevcslbb_update_nvl) |
| 55 | +#endif |
| 56 | + |
| 57 | +const HucKernelSource::BinaryTable HucKernelSourceXe3P_Lpm_Base::m_binTable = |
| 58 | +{ |
| 59 | + {HucKernelSource::hevcS2lKernelId, HUC_KERNEL_BIN_ELEMENT(__MediaKernels_s2l_nvl)}, |
| 60 | +#ifdef _MEDIA_RESERVED |
| 61 | + {HucKernelSource::drmKernelId, HUC_KERNEL_BIN_ELEMENT(__MediaKernels_drm_nvl)}, |
| 62 | +#endif |
| 63 | + {HucKernelSource::copyKernelId, HUC_KERNEL_BIN_ELEMENT(__MediaKernels_copykrn_nvl)}, |
| 64 | + {HucKernelSource::vdencBrcInitKernelId, HUC_KERNEL_BIN_ELEMENT(__MediaKernels_avcbrc_init_nvl)}, |
| 65 | + {HucKernelSource::vdencBrcUpdateKernelId, HUC_KERNEL_BIN_ELEMENT(__MediaKernels_avcbrc_update_nvl)}, |
| 66 | + {HucKernelSource::vp9ProbUpdateKernelId, HUC_KERNEL_BIN_ELEMENT(__MediaKernels_vp9dec_nvl)}, |
| 67 | + {HucKernelSource::vp9EncKernelId, HUC_KERNEL_BIN_ELEMENT(__MediaKernels_vp9hpu_nvl)}, |
| 68 | + {HucKernelSource::hevcBrcInitKernelId, HUC_KERNEL_BIN_ELEMENT(__MediaKernels_hevcbrc_init_nvl)}, |
| 69 | + {HucKernelSource::hevcBrcUpdateKernelId, HUC_KERNEL_BIN_ELEMENT(__MediaKernels_hevcbrc_update_nvl)}, |
| 70 | + {HucKernelSource::hevcBrcLowdelayKernelId, HucKernelSource::m_invalidKernelBin}, |
| 71 | + {HucKernelSource::vp9VdencBrcInitKernelId, HUC_KERNEL_BIN_ELEMENT(__MediaKernels_vp9brc_init_nvl)}, |
| 72 | + {HucKernelSource::vp9VdencBrcUpdateKernelId, HUC_KERNEL_BIN_ELEMENT(__MediaKernels_vp9brc_update_nvl)}, |
| 73 | + {HucKernelSource::vp9VdencProbKernelId, HucKernelSource::m_invalidKernelBin}, |
| 74 | + {HucKernelSource::pakIntegrationKernelId, HUC_KERNEL_BIN_ELEMENT(__MediaKernels_pakint_nvl)}, |
| 75 | + {HucKernelSource::hevcLaAnalysisKernelId, HUC_KERNEL_BIN_ELEMENT(__MediaKernels_lookahead_nvl)}, |
| 76 | + {HucKernelSource::backAnnonationKernelId, HUC_KERNEL_BIN_ELEMENT(__MediaKernels_av1ba_nvl)}, |
| 77 | + {HucKernelSource::av1BrcInitKernelId, HUC_KERNEL_BIN_ELEMENT(__MediaKernels_av1brc_init_nvl)}, |
| 78 | + {HucKernelSource::av1BrcUpdateKernelId, HUC_KERNEL_BIN_ELEMENT(__MediaKernels_av1brc_update_nvl)}, |
| 79 | + {HucKernelSource::vvcS2lKernelId, HUC_KERNEL_BIN_ELEMENT(__MediaKernels_vvcs2l_nvl)}, |
| 80 | +#ifdef _MEDIA_RESERVED |
| 81 | + {HucKernelSource::avcPxpBrcInitKernelId, HUC_KERNEL_BIN_ELEMENT(__MediaKernels_avcbrc_pxp_init_nvl)}, |
| 82 | + {HucKernelSource::avcPxpBrcUpdateKernelId, HUC_KERNEL_BIN_ELEMENT(__MediaKernels_avcbrc_pxp_update_nvl)}, |
| 83 | +#endif |
| 84 | + {HucKernelSource::av1SlbbUpdateKernelId, HUC_KERNEL_BIN_ELEMENT(__MediaKernels_av1slbb_update_nvl)}, |
| 85 | + {HucKernelSource::avcSlbbUpdateKernelId, HUC_KERNEL_BIN_ELEMENT(__MediaKernels_avcslbb_update_nvl)}, |
| 86 | + {HucKernelSource::hevcSlbbUpdateKernelId, HUC_KERNEL_BIN_ELEMENT(__MediaKernels_hevcslbb_update_nvl)}, |
| 87 | +}; |
| 88 | + |
| 89 | +// Hash index table (kernel id, hash index) |
| 90 | +const HucKernelSource::HashIdxTable HucKernelSourceXe3P_Lpm_Base::m_hashIdxTable = |
| 91 | +{ |
| 92 | + {HucKernelSource::hevcS2lKernelId, 1}, |
| 93 | + {HucKernelSource::drmKernelId, 2}, |
| 94 | + {HucKernelSource::copyKernelId, 3}, |
| 95 | + {HucKernelSource::avcPxpBrcInitKernelId, 4}, |
| 96 | + {HucKernelSource::avcPxpBrcUpdateKernelId, 5}, |
| 97 | + {HucKernelSource::vp9ProbUpdateKernelId, 6}, |
| 98 | + {HucKernelSource::vdencBrcInitKernelId, HucKernelSource::m_invalidHashIndex}, |
| 99 | + {HucKernelSource::vdencBrcUpdateKernelId, HucKernelSource::m_invalidHashIndex}, |
| 100 | + {HucKernelSource::vp9EncKernelId, HucKernelSource::m_invalidHashIndex}, |
| 101 | + {HucKernelSource::hevcBrcInitKernelId, HucKernelSource::m_invalidHashIndex}, |
| 102 | + {HucKernelSource::hevcBrcUpdateKernelId, HucKernelSource::m_invalidHashIndex}, |
| 103 | + {HucKernelSource::hevcBrcLowdelayKernelId, HucKernelSource::m_invalidHashIndex}, |
| 104 | + {HucKernelSource::vp9VdencBrcInitKernelId, HucKernelSource::m_invalidHashIndex}, |
| 105 | + {HucKernelSource::vp9VdencBrcUpdateKernelId, HucKernelSource::m_invalidHashIndex}, |
| 106 | + {HucKernelSource::vp9VdencProbKernelId, HucKernelSource::m_invalidHashIndex}, |
| 107 | + {HucKernelSource::cmdInitializerKernelId, HucKernelSource::m_invalidHashIndex}, |
| 108 | + {HucKernelSource::pakIntegrationKernelId, HucKernelSource::m_invalidHashIndex}, |
| 109 | + {HucKernelSource::hevcLaAnalysisKernelId, HucKernelSource::m_invalidHashIndex}, |
| 110 | + {HucKernelSource::backAnnonationKernelId, HucKernelSource::m_invalidHashIndex}, |
| 111 | + {HucKernelSource::av1BrcInitKernelId, HucKernelSource::m_invalidHashIndex}, |
| 112 | + {HucKernelSource::av1BrcUpdateKernelId, HucKernelSource::m_invalidHashIndex}, |
| 113 | + {HucKernelSource::vvcS2lKernelId, 7}, |
| 114 | + {HucKernelSource::av1SlbbUpdateKernelId, HucKernelSource::m_invalidHashIndex}, |
| 115 | + {HucKernelSource::avcSlbbUpdateKernelId, HucKernelSource::m_invalidHashIndex}, |
| 116 | + {HucKernelSource::hevcSlbbUpdateKernelId, HucKernelSource::m_invalidHashIndex}, |
| 117 | +}; |
| 118 | + |
| 119 | +MOS_STATUS HucKernelSourceXe3P_Lpm_Base::GetManifest(HucManifest &manifest) |
| 120 | +{ |
| 121 | +#ifdef _MEDIA_RESERVED |
| 122 | + manifest.m_data = reinterpret_cast<const uint8_t *>(__MediaKernels_manifest_nvl); |
| 123 | + manifest.m_size = __MediaKernels_manifest_nvl_size; |
| 124 | +#endif |
| 125 | + return MOS_STATUS_SUCCESS; |
| 126 | +} |
| 127 | + |
| 128 | +HucKernelSourceXe3P_Lpm_Base &HucKernelSourceXe3P_Lpm_Base::GetInstance() |
| 129 | +{ |
| 130 | + static HucKernelSourceXe3P_Lpm_Base instance; |
| 131 | + return instance; |
| 132 | +} |
0 commit comments