The Wayback Machine - https://web.archive.org/web/20200713101210/https://github.com/intel/media-driver/commit/9491998f40d496fc458d282f213c0e9e945b8062
Skip to content
Permalink
Browse files

[Decode] This enables HW AV1 decode acceleration on Gen12

This enables HW AV1 decode acceleration on Gen12.



Change-Id: I0c2014377527683cde6201a7e3efeb628159a779
  • Loading branch information
ZefuLI authored and hanlong1 committed Jul 6, 2020
1 parent 129d8b6 commit 9491998f40d496fc458d282f213c0e9e945b8062
Showing with 33,984 additions and 48 deletions.
  1. +2 −2 media_driver/agnostic/common/codec/shared/codec_def_decode.h
  2. +2 −1 media_driver/agnostic/common/media_interfaces/media_interfaces_mhw.h
  3. +106 −2 media_driver/agnostic/gen12/codec/hal/codechal_hw_g12_X.cpp
  4. +77 −1 media_driver/agnostic/gen12/codec/hal/codechal_hw_g12_X.h
  5. +4,957 −0 media_driver/agnostic/gen12/codec/shared/codec_def_common_av1.h
  6. +303 −0 media_driver/agnostic/gen12/codec/shared/codec_def_decode_av1.h
  7. +13 −1 media_driver/agnostic/gen12/codec/shared/media_srcs.cmake
  8. +10 −3 media_driver/agnostic/gen12/hw/mhw_mi_g12_X.cpp
  9. +2 −1 media_driver/agnostic/gen12/hw/mhw_mi_g12_X.h
  10. +2 −0 media_driver/agnostic/gen12/hw/mhw_mi_hwcmd_g12_X.h
  11. +8 −1 media_driver/agnostic/gen12/hw/vdbox/media_srcs.cmake
  12. +1,996 −0 media_driver/agnostic/gen12/hw/vdbox/mhw_vdbox_avp_g12_X.cpp
  13. +370 −0 media_driver/agnostic/gen12/hw/vdbox/mhw_vdbox_avp_g12_X.h
  14. +117 −0 media_driver/agnostic/gen12/hw/vdbox/mhw_vdbox_avp_generic.h
  15. +366 −0 media_driver/agnostic/gen12/hw/vdbox/mhw_vdbox_avp_hwcmd_g12_X.cpp
  16. +2,364 −0 media_driver/agnostic/gen12/hw/vdbox/mhw_vdbox_avp_hwcmd_g12_X.h
  17. +141 −0 media_driver/agnostic/gen12/hw/vdbox/mhw_vdbox_avp_interface.cpp
  18. +825 −0 media_driver/agnostic/gen12/hw/vdbox/mhw_vdbox_avp_interface.h
  19. +5 −1 media_driver/agnostic/gen12/hw/vdbox/mhw_vdbox_vdenc_g12_X.h
  20. +4 −2 media_driver/agnostic/gen12/hw/vdbox/mhw_vdbox_vdenc_hwcmd_g12_X.h
  21. +9 −0 media_driver/agnostic/gen12/shared/media_user_settings_mgr_g12.h
  22. +5 −0 media_driver/cmake/linux/media_feature_flags_linux.cmake
  23. +0 −10 media_driver/linux/common/codec/ddi/media_ddi_decode_base.cpp
  24. +0 −4 media_driver/linux/common/codec/ddi/media_ddi_decode_base.h
  25. +0 −4 media_driver/linux/common/codec/ddi/media_libva_decoder.cpp
  26. +0 −2 media_driver/linux/common/codec/ddi/media_libva_decoder.h
  27. +0 −2 media_driver/linux/common/ddi/media_libva.cpp
  28. +877 −0 media_driver/linux/gen12/codec/ddi/media_ddi_decode_av1_g12.cpp
  29. +166 −0 media_driver/linux/gen12/codec/ddi/media_ddi_decode_av1_g12.h
  30. +2 −1 media_driver/linux/gen12/codec/ddi/media_ddi_decode_const_g12.h
  31. +12 −1 media_driver/linux/gen12/codec/ddi/media_srcs.cmake
  32. +80 −5 media_driver/linux/gen12/ddi/media_libva_caps_g12.cpp
  33. +20 −0 media_driver/linux/gen12/ddi/media_libva_caps_g12.h
  34. +7 −0 media_driver/linux/gen12/ddi/media_sku_wa_g12.cpp
  35. +472 −0 ..._driver/media_driver_next/agnostic/common/codec/hal/dec/av1/features/decode_av1_basic_feature.cpp
  36. +157 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/av1/features/decode_av1_basic_feature.h
  37. +54 −0 ...river/media_driver_next/agnostic/common/codec/hal/dec/av1/features/decode_av1_feature_manager.cpp
  38. +83 −0 ..._driver/media_driver_next/agnostic/common/codec/hal/dec/av1/features/decode_av1_feature_manager.h
  39. +401 −0 ...iver/media_driver_next/agnostic/common/codec/hal/dec/av1/features/decode_av1_reference_frames.cpp
  40. +163 −0 ...driver/media_driver_next/agnostic/common/codec/hal/dec/av1/features/decode_av1_reference_frames.h
  41. +195 −0 ...iver/media_driver_next/agnostic/common/codec/hal/dec/av1/features/decode_av1_temporal_buffers.cpp
  42. +67 −0 ...driver/media_driver_next/agnostic/common/codec/hal/dec/av1/features/decode_av1_temporal_buffers.h
  43. +296 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/av1/features/decode_av1_tile_coding.cpp
  44. +166 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/av1/features/decode_av1_tile_coding.h
  45. +41 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/av1/features/media_srcs.cmake
  46. +24 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/av1/media_srcs.cmake
  47. +266 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/av1/packet/decode_av1_packet.cpp
  48. +191 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/av1/packet/decode_av1_packet.h
  49. +1,439 −0 ...a_driver/media_driver_next/agnostic/common/codec/hal/dec/av1/packet/decode_av1_picture_packet.cpp
  50. +223 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/av1/packet/decode_av1_picture_packet.h
  51. +165 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/av1/packet/decode_av1_tile_packet.cpp
  52. +122 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/av1/packet/decode_av1_tile_packet.h
  53. +37 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/av1/packet/media_srcs.cmake
  54. +154 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/av1/pipeline/decode_av1_pipeline.cpp
  55. +133 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/av1/pipeline/decode_av1_pipeline.h
  56. +33 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/av1/pipeline/media_srcs.cmake
  57. +49 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/media_srcs.cmake
  58. +529 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/shared/bufferMgr/decode_allocator.cpp
  59. +413 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/shared/bufferMgr/decode_allocator.h
  60. +201 −0 ..._driver/media_driver_next/agnostic/common/codec/hal/dec/shared/bufferMgr/decode_internal_target.h
  61. +317 −0 ...a_driver_next/agnostic/common/codec/hal/dec/shared/bufferMgr/decode_reference_associated_buffer.h
  62. +172 −0 ...a_driver/media_driver_next/agnostic/common/codec/hal/dec/shared/bufferMgr/decode_resource_array.h
  63. +92 −0 ...iver/media_driver_next/agnostic/common/codec/hal/dec/shared/bufferMgr/decode_resource_auto_lock.h
  64. +34 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/shared/bufferMgr/media_srcs.cmake
  65. +175 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/shared/decode_input_bitstream.cpp
  66. +150 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/shared/decode_input_bitstream.h
  67. +35 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/shared/decode_unique_id.cpp
  68. +74 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/shared/decode_unique_id.h
  69. +207 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/shared/decode_utils.h
  70. +46 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/shared/decode_vdbox_mfx_common.h
  71. +115 −0 ...a_driver/media_driver_next/agnostic/common/codec/hal/dec/shared/features/decode_basic_feature.cpp
  72. +136 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/shared/features/decode_basic_feature.h
  73. +52 −0 ...driver/media_driver_next/agnostic/common/codec/hal/dec/shared/features/decode_feature_manager.cpp
  74. +80 −0 ...a_driver/media_driver_next/agnostic/common/codec/hal/dec/shared/features/decode_feature_manager.h
  75. +68 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/shared/features/decode_marker.cpp
  76. +71 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/shared/features/decode_marker.h
  77. +80 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/shared/features/decode_predication.cpp
  78. +70 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/shared/features/decode_predication.h
  79. +37 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/shared/features/media_srcs.cmake
  80. +43 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/shared/media_srcs.cmake
  81. +118 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/shared/mmc/decode_mem_compression.cpp
  82. +75 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/shared/mmc/decode_mem_compression.h
  83. +31 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/shared/mmc/media_srcs.cmake
  84. +252 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/shared/packet/decode_huc.cpp
  85. +176 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/shared/packet/decode_huc.h
  86. +241 −0 ...a_driver/media_driver_next/agnostic/common/codec/hal/dec/shared/packet/decode_huc_copy_packet.cpp
  87. +114 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/shared/packet/decode_huc_copy_packet.h
  88. +100 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/shared/packet/decode_marker_packet.cpp
  89. +96 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/shared/packet/decode_marker_packet.h
  90. +41 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/shared/packet/decode_packet_id.h
  91. +174 −0 ...river/media_driver_next/agnostic/common/codec/hal/dec/shared/packet/decode_predication_packet.cpp
  92. +96 −0 ..._driver/media_driver_next/agnostic/common/codec/hal/dec/shared/packet/decode_predication_packet.h
  93. +51 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/shared/packet/decode_sub_packet.cpp
  94. +96 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/shared/packet/decode_sub_packet.h
  95. +83 −0 ...river/media_driver_next/agnostic/common/codec/hal/dec/shared/packet/decode_sub_packet_manager.cpp
  96. +87 −0 ..._driver/media_driver_next/agnostic/common/codec/hal/dec/shared/packet/decode_sub_packet_manager.h
  97. +41 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/shared/packet/media_srcs.cmake
  98. +305 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/shared/pipeline/decode_pipeline.cpp
  99. +363 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/shared/pipeline/decode_pipeline.h
  100. +60 −0 ..._driver/media_driver_next/agnostic/common/codec/hal/dec/shared/pipeline/decode_pipeline_adapter.h
  101. +110 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/shared/pipeline/decode_sub_pipeline.cpp
  102. +159 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/shared/pipeline/decode_sub_pipeline.h
  103. +115 −0 ...r/media_driver_next/agnostic/common/codec/hal/dec/shared/pipeline/decode_sub_pipeline_manager.cpp
  104. +113 −0 ...ver/media_driver_next/agnostic/common/codec/hal/dec/shared/pipeline/decode_sub_pipeline_manager.h
  105. +36 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/shared/pipeline/media_srcs.cmake
  106. +47 −0 ...iver/media_driver_next/agnostic/common/codec/hal/dec/shared/scalability/decode_scalability_defs.h
  107. +123 −0 .../media_driver_next/agnostic/common/codec/hal/dec/shared/scalability/decode_scalability_option.cpp
  108. +97 −0 ...er/media_driver_next/agnostic/common/codec/hal/dec/shared/scalability/decode_scalability_option.h
  109. +194 −0 ...ia_driver_next/agnostic/common/codec/hal/dec/shared/scalability/decode_scalability_singlepipe.cpp
  110. +137 −0 ...edia_driver_next/agnostic/common/codec/hal/dec/shared/scalability/decode_scalability_singlepipe.h
  111. +36 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/shared/scalability/media_srcs.cmake
  112. +276 −0 ...iver/media_driver_next/agnostic/common/codec/hal/dec/shared/statusreport/decode_status_report.cpp
  113. +175 −0 ...driver/media_driver_next/agnostic/common/codec/hal/dec/shared/statusreport/decode_status_report.h
  114. +132 −0 ...r/media_driver_next/agnostic/common/codec/hal/dec/shared/statusreport/decode_status_report_defs.h
  115. +32 −0 media_driver/media_driver_next/agnostic/common/codec/hal/dec/shared/statusreport/media_srcs.cmake
  116. +23 −0 media_driver/media_driver_next/agnostic/common/codec/hal/media_srcs.cmake
  117. +21 −0 media_driver/media_driver_next/agnostic/common/codec/media_srcs.cmake
  118. +58 −0 media_driver/media_driver_next/agnostic/common/cp/cp_streamout_interface.h
  119. +86 −0 media_driver/media_driver_next/agnostic/common/cp/decode_cp_bitstream.h
  120. +139 −0 media_driver/media_driver_next/agnostic/common/cp/decodecp_interface.h
  121. +41 −0 media_driver/media_driver_next/agnostic/common/cp/media_srcs.cmake
  122. +2 −1 media_driver/media_driver_next/agnostic/common/media_srcs.cmake
  123. +15 −1 media_driver/media_driver_next/agnostic/common/shared/mediacontext/media_context.cpp
  124. +37 −1 media_driver/media_driver_next/agnostic/common/shared/scalability/media_scalability_factory.cpp
  125. +42 −0 ..._driver/media_driver_next/agnostic/gen12/codec/hal/dec/av1/features/decode_av1_feature_defs_g12.h
  126. +49 −0 ...er/media_driver_next/agnostic/gen12/codec/hal/dec/av1/features/decode_av1_feature_manager_g12.cpp
  127. +73 −0 ...iver/media_driver_next/agnostic/gen12/codec/hal/dec/av1/features/decode_av1_feature_manager_g12.h
  128. +1,483 −0 .../media_driver_next/agnostic/gen12/codec/hal/dec/av1/features/decode_av1_filmgrain_feature_g12.cpp
  129. +338 −0 ...er/media_driver_next/agnostic/gen12/codec/hal/dec/av1/features/decode_av1_filmgrain_feature_g12.h
  130. +36 −0 media_driver/media_driver_next/agnostic/gen12/codec/hal/dec/av1/features/media_srcs.cmake
  131. +25 −0 media_driver/media_driver_next/agnostic/gen12/codec/hal/dec/av1/media_srcs.cmake
  132. +150 −0 media_driver/media_driver_next/agnostic/gen12/codec/hal/dec/av1/packet/decode_av1_packet_g12.cpp
  133. +73 −0 media_driver/media_driver_next/agnostic/gen12/codec/hal/dec/av1/packet/decode_av1_packet_g12.h
  134. +200 −0 ...river/media_driver_next/agnostic/gen12/codec/hal/dec/av1/packet/decode_av1_picture_packet_g12.cpp
  135. +83 −0 ..._driver/media_driver_next/agnostic/gen12/codec/hal/dec/av1/packet/decode_av1_picture_packet_g12.h
  136. +47 −0 ...a_driver/media_driver_next/agnostic/gen12/codec/hal/dec/av1/packet/decode_av1_tile_packet_g12.cpp
  137. +53 −0 media_driver/media_driver_next/agnostic/gen12/codec/hal/dec/av1/packet/decode_av1_tile_packet_g12.h
  138. +607 −0 ...ia_driver_next/agnostic/gen12/codec/hal/dec/av1/packet/decode_filmgrain_applynoise_packet_g12.cpp
  139. +408 −0 ...edia_driver_next/agnostic/gen12/codec/hal/dec/av1/packet/decode_filmgrain_applynoise_packet_g12.h
  140. +492 −0 ..._driver_next/agnostic/gen12/codec/hal/dec/av1/packet/decode_filmgrain_gennoise_grv_packet_g12.cpp
  141. +233 −0 ...ia_driver_next/agnostic/gen12/codec/hal/dec/av1/packet/decode_filmgrain_gennoise_grv_packet_g12.h
  142. +406 −0 ..._driver_next/agnostic/gen12/codec/hal/dec/av1/packet/decode_filmgrain_gennoise_rp1_packet_g12.cpp
  143. +165 −0 ...ia_driver_next/agnostic/gen12/codec/hal/dec/av1/packet/decode_filmgrain_gennoise_rp1_packet_g12.h
  144. +528 −0 ..._driver_next/agnostic/gen12/codec/hal/dec/av1/packet/decode_filmgrain_gennoise_rp2_packet_g12.cpp
  145. +292 −0 ...ia_driver_next/agnostic/gen12/codec/hal/dec/av1/packet/decode_filmgrain_gennoise_rp2_packet_g12.h
  146. +45 −0 media_driver/media_driver_next/agnostic/gen12/codec/hal/dec/av1/packet/media_srcs.cmake
  147. +118 −0 ...r/media_driver_next/agnostic/gen12/codec/hal/dec/av1/pipeline/decode_av1_pipeline_adapter_g12.cpp
  148. +73 −0 ...ver/media_driver_next/agnostic/gen12/codec/hal/dec/av1/pipeline/decode_av1_pipeline_adapter_g12.h
  149. +623 −0 media_driver/media_driver_next/agnostic/gen12/codec/hal/dec/av1/pipeline/decode_av1_pipeline_g12.cpp
  150. +164 −0 media_driver/media_driver_next/agnostic/gen12/codec/hal/dec/av1/pipeline/decode_av1_pipeline_g12.h
  151. +119 −0 ...ia_driver_next/agnostic/gen12/codec/hal/dec/av1/pipeline/decode_filmgrain_postsubpipeline_g12.cpp
  152. +117 −0 ...edia_driver_next/agnostic/gen12/codec/hal/dec/av1/pipeline/decode_filmgrain_postsubpipeline_g12.h
  153. +156 −0 ...dia_driver_next/agnostic/gen12/codec/hal/dec/av1/pipeline/decode_filmgrain_presubpipeline_g12.cpp
  154. +141 −0 ...media_driver_next/agnostic/gen12/codec/hal/dec/av1/pipeline/decode_filmgrain_presubpipeline_g12.h
  155. +39 −0 media_driver/media_driver_next/agnostic/gen12/codec/hal/dec/av1/pipeline/media_srcs.cmake
  156. +49 −0 media_driver/media_driver_next/agnostic/gen12/codec/hal/dec/media_srcs.cmake
  157. +50 −0 media_driver/media_driver_next/agnostic/gen12/codec/hal/dec/shared/decode_mem_compression_g12.cpp
  158. +57 −0 media_driver/media_driver_next/agnostic/gen12/codec/hal/dec/shared/decode_mem_compression_g12.h
  159. +31 −0 media_driver/media_driver_next/agnostic/gen12/codec/hal/dec/shared/media_srcs.cmake
  160. +24 −0 media_driver/media_driver_next/agnostic/gen12/codec/hal/media_srcs.cmake
  161. +97 −0 media_driver/media_driver_next/agnostic/gen12/codec/hal/shared/codec_mem_compression_g12.cpp
  162. +57 −0 media_driver/media_driver_next/agnostic/gen12/codec/hal/shared/codec_mem_compression_g12.h
  163. +50 −0 media_driver/media_driver_next/agnostic/gen12/codec/hal/shared/media_srcs.cmake
  164. +21 −0 media_driver/media_driver_next/agnostic/gen12/codec/media_srcs.cmake
  165. +2 −1 media_driver/media_driver_next/agnostic/gen12/media_srcs.cmake
  166. +87 −0 media_driver/media_driver_next/linux/common/cp/cp_interfaces_next.cpp
  167. +108 −0 media_driver/media_driver_next/linux/common/cp/cp_interfaces_next.h
  168. +70 −0 media_driver/media_driver_next/linux/common/cp/cp_streamout_interface.cpp
  169. +69 −0 media_driver/media_driver_next/linux/common/cp/decodecp_interface.cpp
  170. +32 −0 media_driver/media_driver_next/linux/common/cp/media_srcs.cmake
  171. +12 −0 media_driver/media_interface/media_interfaces_m12_tgllp/media_interfaces_g12_tgllp.cpp
  172. +10 −0 media_driver/media_interface/media_interfaces_m12_tgllp/media_interfaces_g12_tgllp.h
@@ -130,9 +130,9 @@ struct CodechalDecodeParams
//! \brief Parameters used for processing the decode render target, if invalid, decode render target processing will not be used.
void *m_procParams = nullptr;
#endif

//! \brief Parameters used for codec frame processing
CodecProcessingParams m_codecProcParams;
CodecProcessingParams m_codecProcParams;

//! \brief [Predication] Resource for predication
PMOS_RESOURCE m_presPredication = nullptr;
@@ -77,7 +77,8 @@ class MhwInterfaces
uint32_t m_huc : 1;
uint32_t m_vdenc : 1;
uint32_t m_blt : 1;
uint32_t m_reserved : 22;
uint32_t m_avp : 1;
uint32_t m_reserved : 21;
};
uint32_t m_value;
} Flags;
@@ -114,8 +114,7 @@ CodechalHwInterfaceG12::CodechalHwInterfaceG12(
{
CODECHAL_HW_FUNCTION_ENTER;

PLATFORM platform;
osInterface->pfnGetPlatform(osInterface, &platform);
m_avpInterface = static_cast<MhwInterfacesG12Tgllp*>(mhwInterfaces)->m_avpInterface;

InitCacheabilityControlSettings(codecFunction);

@@ -256,10 +255,109 @@ MOS_STATUS CodechalHwInterfaceG12::SetCacheabilitySettings(
{
CODECHAL_HW_CHK_STATUS_RETURN(m_vdencInterface->SetCacheabilitySettings(cacheabilitySettings));
}
if (m_avpInterface)
{
CODECHAL_HW_CHK_STATUS_RETURN(m_avpInterface->SetCacheabilitySettings(cacheabilitySettings));
}

return eStatus;
}

MOS_STATUS CodechalHwInterfaceG12::SetRowstoreCachingOffsets(
PMHW_VDBOX_ROWSTORE_PARAMS rowstoreParams)
{
MOS_STATUS eStatus = MOS_STATUS_SUCCESS;

CODECHAL_HW_FUNCTION_ENTER;

CODECHAL_HW_CHK_STATUS_RETURN(CodechalHwInterface::SetRowstoreCachingOffsets(rowstoreParams));

if (m_avpInterface)
{
CODECHAL_HW_CHK_STATUS_RETURN(m_avpInterface->GetRowstoreCachingAddrs(rowstoreParams));
}

return eStatus;
}

MOS_STATUS CodechalHwInterfaceG12::GetAvpStateCommandSize(
uint32_t mode,
uint32_t *commandsSize,
uint32_t *patchListSize,
PMHW_VDBOX_STATE_CMDSIZE_PARAMS params)
{
CODECHAL_HW_FUNCTION_ENTER;

//calculate AVP related commands size
uint32_t avpCommandsSize = 0;
uint32_t avpPatchListSize = 0;

if (m_avpInterface)
{
CODECHAL_HW_CHK_STATUS_RETURN(m_avpInterface->GetAvpStateCommandSize(
(uint32_t *)&avpCommandsSize,
(uint32_t *)&avpPatchListSize,
params));
}

//calculate HUC related command size
uint32_t hucCommandsSize = 0;
uint32_t hucPatchListSize = 0;

if (m_hucInterface)
{
CODECHAL_HW_CHK_STATUS_RETURN(m_hucInterface->GetHucStateCommandSize(
mode,
(uint32_t*)&hucCommandsSize,
(uint32_t*)&hucPatchListSize,
params));
}

//Calc final command size
*commandsSize = avpCommandsSize + hucCommandsSize * 4;
*patchListSize = avpPatchListSize + hucPatchListSize * 4;

return MOS_STATUS_SUCCESS;
}

MOS_STATUS CodechalHwInterfaceG12::GetAvpPrimitiveCommandSize(
uint32_t mode,
uint32_t *commandsSize,
uint32_t *patchListSize)
{
CODECHAL_HW_FUNCTION_ENTER;

//calculate AVP related commands size
uint32_t avpCommandsSize = 0;
uint32_t avpPatchListSize = 0;

if (m_avpInterface)
{
CODECHAL_HW_CHK_STATUS_RETURN(m_avpInterface->GetAvpPrimitiveCommandSize(
(uint32_t*)&avpCommandsSize,
(uint32_t*)&avpPatchListSize));
}

//calculate HUC related command size
uint32_t hucCommandsSize = 0;
uint32_t hucPatchListSize = 0;

if (m_hucInterface)
{
CODECHAL_HW_CHK_STATUS_RETURN(m_hucInterface->GetHucPrimitiveCommandSize(
mode,
(uint32_t*)&hucCommandsSize,
(uint32_t*)&hucPatchListSize));
}

//Calc final command size
*commandsSize = avpCommandsSize + hucCommandsSize;
*patchListSize = avpPatchListSize + hucPatchListSize;

return MOS_STATUS_SUCCESS;
}


MOS_STATUS CodechalHwInterfaceG12::SendCondBbEndCmd(
PMOS_RESOURCE resource,
uint32_t offset,
@@ -346,4 +444,10 @@ CodechalHwInterfaceG12::~CodechalHwInterfaceG12()
MOS_FreeMemory(m_renderHal);
m_renderHal = nullptr;
}

if (m_avpInterface)
{
MOS_Delete(m_avpInterface);
m_avpInterface = nullptr;
}
}
@@ -21,14 +21,26 @@
*/
//!
//! \file codechal_hw_g12_X.h
//! \brief This modules implements HW interface layer to be used on Gen12 platforms on all operating systems/DDIs, across CODECHAL components.
//! \brief This modules implements HW interface layer to be used on Gen12 platforms on all operating systems/DDIs, across CODECHAL components.
//!
#ifndef __CODECHAL_HW_G12_X_H__
#define __CODECHAL_HW_G12_X_H__

#include "codechal_hw.h"
#include "mhw_mi_hwcmd_g12_X.h"
#include "mhw_render_hwcmd_g12_X.h"
#include "mhw_vdbox_avp_interface.h"

//!
//! \enum MediaStatesAv1FilmGrain
//!
enum
{
CODECHAl_MEDIA_STATE_AV1_FILM_GRAIN_GRV = CODECHAL_MEDIA_STATE_SW_SCOREBOARD_INIT + 1,
CODECHAl_MEDIA_STATE_AV1_FILM_GRAIN_RP1,
CODECHAl_MEDIA_STATE_AV1_FILM_GRAIN_RP2,
CODECHAl_MEDIA_STATE_AV1_FILM_GRAIN_AN,
}; //Please merge to CODECHAL_MEDIA_STATE_TYPE

#define CODECHAL_NUM_MEDIA_STATES_G12 (CODECHAL_NUM_MEDIA_STATES + 4)

@@ -41,6 +53,8 @@ class CodechalHwInterfaceG12 : public CodechalHwInterface
protected:
static const CODECHAL_SSEU_SETTING m_defaultSsEuLutG12[CODECHAL_NUM_MEDIA_STATES_G12];

MhwVdboxAvpInterface *m_avpInterface = nullptr; //!< Pointer to Mhw avp interface

public:
//!
//! \brief Constructor
@@ -83,6 +97,68 @@ class CodechalHwInterfaceG12 : public CodechalHwInterface
MOS_STATUS SetCacheabilitySettings(
MHW_MEMORY_OBJECT_CONTROL_PARAMS cacheabilitySettings[MOS_CODEC_RESOURCE_USAGE_END_CODEC]) override;

//!
//! \brief Get avp interface
//! \details Get avp interface in codechal hw interface
//!
//! \return [out] MhwVdboxAvpInterface*
//! Interface got.
//!
inline MhwVdboxAvpInterface* GetAvpInterface()
{
return m_avpInterface;
}

//!
//! \brief Calculates the maximum size for AVP picture level commands
//! \details Client facing function to calculate the maximum size for AVP picture level commands
//! \param [in] mode
//! Indicate the codec mode
//! \param [out] commandsSize
//! The maximum command buffer size
//! \param [out] patchListSize
//! The maximum command patch list size
//! \param [in] params
//! Indicate the command size parameters
//! \return MOS_STATUS
//! MOS_STATUS_SUCCESS if success, else fail reason
//!
MOS_STATUS GetAvpStateCommandSize(
uint32_t mode,
uint32_t *commandsSize,
uint32_t *patchListSize,
PMHW_VDBOX_STATE_CMDSIZE_PARAMS params);

//!
//! \brief Calculates maximum size for AVP tile level commands
//! \details Client facing function to calculate maximum size for AVP tile level commands
//! \param [in] mode
//! Indicate the codec mode
//! \param [out] commandsSize
//! The maximum command buffer size
//! \param [out] patchListSize
//! The maximum command patch list size
//! \return MOS_STATUS
//! MOS_STATUS_SUCCESS if success, else fail reason
//!
MOS_STATUS GetAvpPrimitiveCommandSize(
uint32_t mode,
uint32_t *commandsSize,
uint32_t *patchListSize);

//!
//! \brief Set Rowstore Cache offsets for Gen12 specific interfaces
//! \details Set Rowstore Cache offsets in sub interfaces in codechal hw G12 interface
//!
//! \param [in] rowstoreParams
//! parameters to set rowstore cache offsets
//!
//! \return MOS_STATUS
//! MOS_STATUS_SUCCESS if success, else fail reason
//!
MOS_STATUS SetRowstoreCachingOffsets(
PMHW_VDBOX_ROWSTORE_PARAMS rowstoreParams) override;

//!
//! \brief Send conditional batch buffer end cmd
//! \details Send conditional batch buffer end cmd

0 comments on commit 9491998

Please sign in to comment.
You can’t perform that action at this time.