From 95dc8591e83e2c60700c95825843b271a3c2950d Mon Sep 17 00:00:00 2001 From: Gu_Peiyi Date: Mon, 14 Aug 2023 12:59:07 +0800 Subject: [PATCH] [VP] Add DDI in Dump File Name Add DDI in dump file name, so that clear view and vp blt can be recognized. --- .../hal/packet/vp_vebox_cmd_packet_legacy.cpp | 6 +- .../common/vp/hal/packet/vp_packet_pipe.cpp | 9 +-- .../vp/hal/packet/vp_vebox_cmd_packet.cpp | 6 +- .../common/vp/hal/pipeline/vp_pipeline.cpp | 6 +- .../vp/hal/utils/vp_debug_interface.cpp | 40 ++++++----- .../common/vp/hal/utils/vp_debug_interface.h | 17 +++-- .../common/vp/hal/utils/vp_dumper.cpp | 71 ++++++++++++++----- .../agnostic/common/vp/hal/utils/vp_dumper.h | 63 +++++++++++----- 8 files changed, 149 insertions(+), 69 deletions(-) diff --git a/media_driver/media_softlet/agnostic/common/vp/hal/packet/vp_vebox_cmd_packet_legacy.cpp b/media_driver/media_softlet/agnostic/common/vp/hal/packet/vp_vebox_cmd_packet_legacy.cpp index 1c351f18fc5..0ed7f4f1ac1 100644 --- a/media_driver/media_softlet/agnostic/common/vp/hal/packet/vp_vebox_cmd_packet_legacy.cpp +++ b/media_driver/media_softlet/agnostic/common/vp/hal/packet/vp_vebox_cmd_packet_legacy.cpp @@ -2364,13 +2364,15 @@ MOS_STATUS VpVeboxCmdPacketLegacy::DumpVeboxStateHeap() &kernelResource, counter, 0, - VPHAL_DUMP_TYPE_VEBOX_DRIVERHEAP); + VPHAL_DUMP_TYPE_VEBOX_DRIVERHEAP, + VPHAL_SURF_DUMP_DDI_VP_BLT); VP_SURFACE_DUMP(debuginterface, &kernelResource, counter, 0, - VPHAL_DUMP_TYPE_VEBOX_KERNELHEAP); + VPHAL_DUMP_TYPE_VEBOX_KERNELHEAP, + VPHAL_SURF_DUMP_DDI_VP_BLT); counter++; #endif diff --git a/media_softlet/agnostic/common/vp/hal/packet/vp_packet_pipe.cpp b/media_softlet/agnostic/common/vp/hal/packet/vp_packet_pipe.cpp index 91d088a3cae..4afee2a4905 100644 --- a/media_softlet/agnostic/common/vp/hal/packet/vp_packet_pipe.cpp +++ b/media_softlet/agnostic/common/vp/hal/packet/vp_packet_pipe.cpp @@ -316,10 +316,11 @@ MOS_STATUS PacketPipe::Execute(MediaStatusReport *statusReport, MediaScalability if(handle.first && handle.second) { VP_SURFACE_DUMP(m_PacketFactory.m_debugInterface, - handle.second, - 0, - handle.first, - VPHAL_DUMP_TYPE_POST_COMP); + handle.second, + 0, + handle.first, + VPHAL_DUMP_TYPE_POST_COMP, + VPHAL_SURF_DUMP_DDI_VP_BLT); } } #endif diff --git a/media_softlet/agnostic/common/vp/hal/packet/vp_vebox_cmd_packet.cpp b/media_softlet/agnostic/common/vp/hal/packet/vp_vebox_cmd_packet.cpp index 66ceafb54fd..945f1233c5a 100644 --- a/media_softlet/agnostic/common/vp/hal/packet/vp_vebox_cmd_packet.cpp +++ b/media_softlet/agnostic/common/vp/hal/packet/vp_vebox_cmd_packet.cpp @@ -2171,13 +2171,15 @@ MOS_STATUS VpVeboxCmdPacket::DumpVeboxStateHeap() &kernelResource, counter, 0, - VPHAL_DUMP_TYPE_VEBOX_DRIVERHEAP); + VPHAL_DUMP_TYPE_VEBOX_DRIVERHEAP, + VPHAL_SURF_DUMP_DDI_VP_BLT); VP_SURFACE_DUMP(debuginterface, &kernelResource, counter, 0, - VPHAL_DUMP_TYPE_VEBOX_KERNELHEAP); + VPHAL_DUMP_TYPE_VEBOX_KERNELHEAP, + VPHAL_SURF_DUMP_DDI_VP_BLT); counter++; #endif diff --git a/media_softlet/agnostic/common/vp/hal/pipeline/vp_pipeline.cpp b/media_softlet/agnostic/common/vp/hal/pipeline/vp_pipeline.cpp index dbf317769ed..0ed23610c4d 100644 --- a/media_softlet/agnostic/common/vp/hal/pipeline/vp_pipeline.cpp +++ b/media_softlet/agnostic/common/vp/hal/pipeline/vp_pipeline.cpp @@ -414,7 +414,8 @@ MOS_STATUS VpPipeline::ExecuteVpPipeline() params->pSrc[uiLayer], m_vpPipeContexts[0]->GetFrameCounter(), uiLayer, - VPHAL_DUMP_TYPE_PRE_ALL); + VPHAL_DUMP_TYPE_PRE_ALL, + VPHAL_SURF_DUMP_DDI_VP_BLT); } #endif // Predication @@ -582,7 +583,8 @@ MOS_STATUS VpPipeline::UpdateExecuteStatus(uint32_t frameCnt) VPHAL_MAX_TARGETS, params->uDstCount, frameCnt, - VPHAL_DUMP_TYPE_POST_ALL); + VPHAL_DUMP_TYPE_POST_ALL, + params->uSrcCount > 0 ? VPHAL_SURF_DUMP_DDI_VP_BLT : VPHAL_SURF_DUMP_DDI_CLEAR_VIEW); // Decompre output surface for debug bool uiForceDecompressedOutput = false; diff --git a/media_softlet/agnostic/common/vp/hal/utils/vp_debug_interface.cpp b/media_softlet/agnostic/common/vp/hal/utils/vp_debug_interface.cpp index 1a20e7277c5..0cc4b5a1752 100644 --- a/media_softlet/agnostic/common/vp/hal/utils/vp_debug_interface.cpp +++ b/media_softlet/agnostic/common/vp/hal/utils/vp_debug_interface.cpp @@ -107,32 +107,36 @@ MOS_STATUS VpDebugInterface::DumpVpSurface( PVPHAL_SURFACE pSurf, uint32_t uiFrameNumber, uint32_t uiCounter, - uint32_t Location) + uint32_t Location, + uint32_t uiDDI) { VP_FUNC_CALL(); VP_DEBUG_CHK_NULL_RETURN(m_surfaceDumper) return m_surfaceDumper->DumpSurface( - pSurf, - uiFrameNumber, - uiCounter, - Location); + pSurf, + uiFrameNumber, + uiCounter, + Location, + uiDDI); } MOS_STATUS VpDebugInterface::DumpVpSurface( - PVP_SURFACE pSurf, + PVP_SURFACE pSurf, uint32_t uiFrameNumber, uint32_t uiCounter, - uint32_t Location) + uint32_t Location, + uint32_t uiDDI) { VP_FUNC_CALL(); VP_DEBUG_CHK_NULL_RETURN(m_surfaceDumper) return m_surfaceDumper->DumpSurface( - pSurf, - uiFrameNumber, - uiCounter, - Location); + pSurf, + uiFrameNumber, + uiCounter, + Location, + uiDDI); } MOS_STATUS VpDebugInterface::DumpVpSurfaceArray( @@ -140,17 +144,19 @@ MOS_STATUS VpDebugInterface::DumpVpSurfaceArray( uint32_t uiMaxSurfaces, uint32_t uiNumSurfaces, uint32_t uiFrameNumber, - uint32_t Location) + uint32_t Location, + uint32_t uiDDI) { VP_FUNC_CALL(); VP_DEBUG_CHK_NULL_RETURN(m_surfaceDumper) return m_surfaceDumper->DumpSurfaceArray( - ppSurfaces, - uiMaxSurfaces, - uiNumSurfaces, - uiFrameNumber, - Location); + ppSurfaces, + uiMaxSurfaces, + uiNumSurfaces, + uiFrameNumber, + Location, + uiDDI); } std::string VpDebugInterface::SetOutputPathKey() diff --git a/media_softlet/agnostic/common/vp/hal/utils/vp_debug_interface.h b/media_softlet/agnostic/common/vp/hal/utils/vp_debug_interface.h index 0e7e2303093..975cab4372d 100644 --- a/media_softlet/agnostic/common/vp/hal/utils/vp_debug_interface.h +++ b/media_softlet/agnostic/common/vp/hal/utils/vp_debug_interface.h @@ -54,23 +54,26 @@ class VpDebugInterface : public MediaDebugInterface MEDIA_WA_TABLE *waTable); MOS_STATUS DumpVpSurfaceArray( - PVPHAL_SURFACE *ppSurfaces, - uint32_t uiMaxSurfaces, - uint32_t uiNumSurfaces, - uint32_t uiFrameNumber, - uint32_t Location); + PVPHAL_SURFACE *ppSurfaces, + uint32_t uiMaxSurfaces, + uint32_t uiNumSurfaces, + uint32_t uiFrameNumber, + uint32_t Location, + uint32_t uiDDI = VPHAL_SURF_DUMP_DDI_UNKNOWN); MOS_STATUS DumpVpSurface( PVPHAL_SURFACE pSurf, uint32_t uiFrameNumber, uint32_t uiCounter, - uint32_t Location); + uint32_t Location, + uint32_t uiDDI = VPHAL_SURF_DUMP_DDI_UNKNOWN); MOS_STATUS DumpVpSurface( PVP_SURFACE pSurf, uint32_t uiFrameNumber, uint32_t uiCounter, - uint32_t Location); + uint32_t Location, + uint32_t uiDDI = VPHAL_SURF_DUMP_DDI_UNKNOWN); protected: std::string SetOutputPathKey() override; diff --git a/media_softlet/agnostic/common/vp/hal/utils/vp_dumper.cpp b/media_softlet/agnostic/common/vp/hal/utils/vp_dumper.cpp index 8dd787d0340..0986e145835 100644 --- a/media_softlet/agnostic/common/vp/hal/utils/vp_dumper.cpp +++ b/media_softlet/agnostic/common/vp/hal/utils/vp_dumper.cpp @@ -63,6 +63,11 @@ #define VPHAL_PARAMS_DUMP_START_FRAME_KEY_NAME "startxmlFrame" #define VPHAL_PARAMS_DUMP_END_FRAME_KEY_NAME "endxmlFrame" +//====================================================== +#define VPHAL_PARAMS_DUMP_DDI_UNKNOWN "unknown" +#define VPHAL_PARAMS_DUMP_DDI_VP_BLT "vpblt" +#define VPHAL_PARAMS_DUMP_DDI_CLEAR_VIEW "clearview" + void VpDumperTool::GetOsFilePath( const char* pcFilePath, char* pOsFilePath) @@ -1713,6 +1718,30 @@ MOS_STATUS VpSurfaceDumper::EnumToLocString( return eStatus; } +MOS_STATUS VpSurfaceDumper::EnumToDdiString( + uint32_t uiDDI, + char* pcDdiString) +{ + VP_DEBUG_CHK_NULL_RETURN(pcDdiString) + + switch (uiDDI) + { + case VPHAL_SURF_DUMP_DDI_UNKNOWN: + MOS_SecureStringPrint(pcDdiString, MAX_PATH, MAX_PATH, VPHAL_PARAMS_DUMP_DDI_UNKNOWN); + break; + case VPHAL_SURF_DUMP_DDI_VP_BLT: + MOS_SecureStringPrint(pcDdiString, MAX_PATH, MAX_PATH, VPHAL_PARAMS_DUMP_DDI_VP_BLT); + break; + case VPHAL_SURF_DUMP_DDI_CLEAR_VIEW: + MOS_SecureStringPrint(pcDdiString, MAX_PATH, MAX_PATH, VPHAL_PARAMS_DUMP_DDI_CLEAR_VIEW); + break; + default: + VP_DEBUG_ASSERTMESSAGE("Unknown dump DDI \"%d\".", uiDDI); + return MOS_STATUS_UNKNOWN; + } + + return MOS_STATUS_SUCCESS; +} MOS_STATUS VpSurfaceDumper::SurfTypeStringToEnum( char* pcSurfType, @@ -1995,7 +2024,8 @@ MOS_STATUS VpSurfaceDumper::DumpSurface( PVPHAL_SURFACE pSurf, uint32_t uiFrameNumber, uint32_t uiCounter, - uint32_t Location) + uint32_t Location, + uint32_t uiDDI) { VP_FUNC_CALL(); @@ -2069,6 +2099,7 @@ MOS_STATUS VpSurfaceDumper::DumpSurface( loc = osCtx->GetdumpLoc(); } VP_DEBUG_CHK_STATUS(EnumToLocString(Location, m_dumpLoc)); + VP_DEBUG_CHK_STATUS(EnumToDdiString(uiDDI, m_dumpDDI)); if (!isDumpFromDecomp && pSurf->bIsCompressed && loc) { EnumToLocString(Location, loc); @@ -2076,13 +2107,13 @@ MOS_STATUS VpSurfaceDumper::DumpSurface( if (!isDumpFromDecomp || (loc && loc[0] == 0)) { - MOS_SecureStringPrint(m_dumpPrefix, MAX_PATH, MAX_PATH, "%s/surfdump_pid%x_ts%llx_loc[%s]_lyr[%d]", pDumpSpec->pcOutputPath, pid, timeStamp, m_dumpLoc, uiCounter); + MOS_SecureStringPrint(m_dumpPrefix, MAX_PATH, MAX_PATH, "%s/surfdump_pid%x_ts%llx_loc[%s]_lyr[%d]_ddi[%s(%d)]", pDumpSpec->pcOutputPath, pid, timeStamp, m_dumpLoc, uiCounter, m_dumpDDI, uiDDI); } else { if (loc) { - MOS_SecureStringPrint(m_dumpPrefix, MAX_PATH, MAX_PATH, "%s/surfdump_pid%x_ts%llx_loc[%s_%s]_lyr[%d]", pDumpSpec->pcOutputPath, pid, timeStamp, loc, m_dumpLoc, uiCounter); + MOS_SecureStringPrint(m_dumpPrefix, MAX_PATH, MAX_PATH, "%s/surfdump_pid%x_ts%llx_loc[%s_%s]_lyr[%d]_ddi[%s(%d)]", pDumpSpec->pcOutputPath, pid, timeStamp, loc, m_dumpLoc, uiCounter, m_dumpDDI, uiDDI); } } DumpSurfaceToFile( @@ -2121,6 +2152,7 @@ MOS_STATUS VpSurfaceDumper::DumpSurface( loc = osCtx->GetdumpLoc(); } VP_DEBUG_CHK_STATUS(EnumToLocString(Location, m_dumpLoc)); + VP_DEBUG_CHK_STATUS(EnumToDdiString(uiDDI, m_dumpDDI)); if (!isDumpFromDecomp && pSurf->bIsCompressed && loc) { EnumToLocString(Location, loc); @@ -2128,15 +2160,15 @@ MOS_STATUS VpSurfaceDumper::DumpSurface( if (!isDumpFromDecomp || (loc && loc[0] == 0)) { - MOS_SecureStringPrint(m_dumpPrefix, MAX_PATH, MAX_PATH, "%s/surfdump_pid%x_ts%llx_loc_loc[%s]_lyr[%d]", - pDumpSpec->pcOutputPath, pid, timeStamp, m_dumpLoc, uiCounter); + MOS_SecureStringPrint(m_dumpPrefix, MAX_PATH, MAX_PATH, "%s/surfdump_pid%x_ts%llx_loc_loc[%s]_lyr[%d]_ddi[%s(%d)]", + pDumpSpec->pcOutputPath, pid, timeStamp, m_dumpLoc, uiCounter, m_dumpDDI, uiDDI); } else { if (loc) { - MOS_SecureStringPrint(m_dumpPrefix, MAX_PATH, MAX_PATH, "%s/surfdump_pid%x_ts%llx_loc_loc[%s_%s]_lyr[%d]", - pDumpSpec->pcOutputPath, pid, timeStamp, loc, m_dumpLoc, uiCounter); + MOS_SecureStringPrint(m_dumpPrefix, MAX_PATH, MAX_PATH, "%s/surfdump_pid%x_ts%llx_loc_loc[%s_%s]_lyr[%d]_ddi[%s(%d)]", + pDumpSpec->pcOutputPath, pid, timeStamp, loc, m_dumpLoc, uiCounter, m_dumpDDI, uiDDI); } } @@ -2169,10 +2201,11 @@ MOS_STATUS VpSurfaceDumper::DumpSurface( } MOS_STATUS VpSurfaceDumper::DumpSurface( - PVP_SURFACE pSurf, + PVP_SURFACE pSurf, uint32_t uiFrameNumber, uint32_t uiCounter, - uint32_t Location) + uint32_t Location, + uint32_t uiDDI) { VP_FUNC_CALL(); @@ -2246,6 +2279,7 @@ MOS_STATUS VpSurfaceDumper::DumpSurface( loc = osCtx->GetdumpLoc(); } VP_DEBUG_CHK_STATUS(EnumToLocString(Location, m_dumpLoc)); + VP_DEBUG_CHK_STATUS(EnumToDdiString(uiDDI, m_dumpDDI)); if (!isDumpFromDecomp && pSurf->osSurface->bIsCompressed && loc) { EnumToLocString(Location, loc); @@ -2253,13 +2287,13 @@ MOS_STATUS VpSurfaceDumper::DumpSurface( if (!isDumpFromDecomp || (loc && loc[0] == 0)) { - MOS_SecureStringPrint(m_dumpPrefix, MAX_PATH, MAX_PATH, "%s/surfdump_pid%x_ts%llx_loc[%s]_lyr[%d]", pDumpSpec->pcOutputPath, pid, timeStamp, m_dumpLoc, uiCounter); + MOS_SecureStringPrint(m_dumpPrefix, MAX_PATH, MAX_PATH, "%s/surfdump_pid%x_ts%llx_loc[%s]_lyr[%d]_ddi[%s(%d)]", pDumpSpec->pcOutputPath, pid, timeStamp, m_dumpLoc, uiCounter, m_dumpDDI, uiDDI); } else { if (loc) { - MOS_SecureStringPrint(m_dumpPrefix, MAX_PATH, MAX_PATH, "%s/surfdump_pid%x_ts%llx_loc[%s_%s]_lyr[%d]", pDumpSpec->pcOutputPath, pid, timeStamp, loc, m_dumpLoc, uiCounter); + MOS_SecureStringPrint(m_dumpPrefix, MAX_PATH, MAX_PATH, "%s/surfdump_pid%x_ts%llx_loc[%s_%s]_lyr[%d]_ddi[%s(%d)]", pDumpSpec->pcOutputPath, pid, timeStamp, loc, m_dumpLoc, uiCounter, m_dumpDDI, uiDDI); } } DumpSurfaceToFile( @@ -2298,6 +2332,7 @@ MOS_STATUS VpSurfaceDumper::DumpSurface( loc = osCtx->GetdumpLoc(); } VP_DEBUG_CHK_STATUS(EnumToLocString(Location, m_dumpLoc)); + VP_DEBUG_CHK_STATUS(EnumToDdiString(uiDDI, m_dumpDDI)); if (!isDumpFromDecomp && pSurf->osSurface->bIsCompressed && loc) { EnumToLocString(Location, loc); @@ -2305,15 +2340,15 @@ MOS_STATUS VpSurfaceDumper::DumpSurface( if (!isDumpFromDecomp || (loc && loc[0] == 0)) { - MOS_SecureStringPrint(m_dumpPrefix, MAX_PATH, MAX_PATH, "%s/surfdump_pid%x_ts%llx_loc[%s]_lyr[%d]", - pDumpSpec->pcOutputPath, pid, timeStamp, m_dumpLoc, uiCounter); + MOS_SecureStringPrint(m_dumpPrefix, MAX_PATH, MAX_PATH, "%s/surfdump_pid%x_ts%llx_loc[%s]_lyr[%d]_ddi[%s(%d)]", + pDumpSpec->pcOutputPath, pid, timeStamp, m_dumpLoc, uiCounter, m_dumpDDI, uiDDI); } else { if (loc) { - MOS_SecureStringPrint(m_dumpPrefix, MAX_PATH, MAX_PATH, "%s/surfdump_pid%x_ts%llx_loc[%s_%s]_lyr[%d]", - pDumpSpec->pcOutputPath, pid, timeStamp, loc, m_dumpLoc, uiCounter); + MOS_SecureStringPrint(m_dumpPrefix, MAX_PATH, MAX_PATH, "%s/surfdump_pid%x_ts%llx_loc[%s_%s]_lyr[%d]_ddi[%s(%d)]", + pDumpSpec->pcOutputPath, pid, timeStamp, loc, m_dumpLoc, uiCounter, m_dumpDDI, uiDDI); } } @@ -2350,7 +2385,8 @@ MOS_STATUS VpSurfaceDumper::DumpSurfaceArray( uint32_t uiMaxSurfaces, uint32_t uiNumSurfaces, uint32_t uiFrameNumber, - uint32_t Location) + uint32_t Location, + uint32_t uiDDI) { VP_FUNC_CALL(); @@ -2375,7 +2411,8 @@ MOS_STATUS VpSurfaceDumper::DumpSurfaceArray( ppSurfaces[uiIndex], uiFrameNumber, uiLayer, - Location)); + Location, + uiDDI)); uiLayer++; } diff --git a/media_softlet/agnostic/common/vp/hal/utils/vp_dumper.h b/media_softlet/agnostic/common/vp/hal/utils/vp_dumper.h index 60dc6093ec2..7bae6887529 100644 --- a/media_softlet/agnostic/common/vp/hal/utils/vp_dumper.h +++ b/media_softlet/agnostic/common/vp/hal/utils/vp_dumper.h @@ -60,19 +60,19 @@ // Dump macro. Simply calls the dump function. defined as null in production //------------------------------------------------------------------------------ #define VP_SURFACE_DUMP( \ - debuginterface, surf, frameCntr, layerCntr, loc) \ + debuginterface, surf, frameCntr, layerCntr, loc, ddi) \ if (debuginterface) \ debuginterface->DumpVpSurface( \ - surf, frameCntr, layerCntr, loc); + surf, frameCntr, layerCntr, loc, ddi); //------------------------------------------------------------------------------ // Dump array of surfaces //------------------------------------------------------------------------------ #define VP_SURFACE_PTRS_DUMP( \ - debuginterface, surfs, maxCntr, numCntr, frameCntr, loc) \ + debuginterface, surfs, maxCntr, numCntr, frameCntr, loc, ddi) \ if (debuginterface) \ VP_DEBUG_CHK_STATUS(debuginterface->DumpVpSurfaceArray( \ - surfs, maxCntr, numCntr, frameCntr, loc)); + surfs, maxCntr, numCntr, frameCntr, loc, ddi)); //------------------------------------------------------------------------------ // Create macro for dumper. Allocates and initializes. // Potential leak if renderer not destroyed properly. However, cannot add a @@ -167,6 +167,16 @@ enum VPHAL_SURF_DUMP_LOCATION VPHAL_DUMP_TYPE_INTERNAL }; +//! +//! \brief Dump DDI as enum +//! +enum VPHAL_SURF_DUMP_DDI +{ + VPHAL_SURF_DUMP_DDI_UNKNOWN, + VPHAL_SURF_DUMP_DDI_VP_BLT, + VPHAL_SURF_DUMP_DDI_CLEAR_VIEW +}; + //! //! Structure VPHAL_SURF_DUMP_LOC //! \brief Specification for a single pipeline location dump @@ -321,17 +331,19 @@ class VpSurfaceDumper //! Return MOS_STATUS_SUCCESS if successful, otherwise failed //! virtual MOS_STATUS DumpSurface( - PVPHAL_SURFACE pSurf, - uint32_t uiFrameNumber, - uint32_t uiCounter, - uint32_t Location); + PVPHAL_SURFACE pSurf, + uint32_t uiFrameNumber, + uint32_t uiCounter, + uint32_t Location, + uint32_t uiDDI = VPHAL_SURF_DUMP_DDI_UNKNOWN); virtual MOS_STATUS DumpSurface( - PVP_SURFACE pSurf, - uint32_t uiFrameNumber, - uint32_t uiCounter, - uint32_t Location); + PVP_SURFACE pSurf, + uint32_t uiFrameNumber, + uint32_t uiCounter, + uint32_t Location, + uint32_t uiDDI = VPHAL_SURF_DUMP_DDI_UNKNOWN); // VpHalDbg_SurfaceDumperDumpPtrs //! @@ -351,12 +363,13 @@ class VpSurfaceDumper //! \return MOS_STATUS //! Return MOS_STATUS_SUCCESS if successful, otherwise failed //! - MOS_STATUS DumpSurfaceArray( - PVPHAL_SURFACE *ppSurfaces, - uint32_t uiMaxSurfaces, - uint32_t uiNumSurfaces, - uint32_t uiFrameNumber, - uint32_t Location); + MOS_STATUS DumpSurfaceArray( + PVPHAL_SURFACE *ppSurfaces, + uint32_t uiMaxSurfaces, + uint32_t uiNumSurfaces, + uint32_t uiFrameNumber, + uint32_t Location, + uint32_t uiDDI = VPHAL_SURF_DUMP_DDI_UNKNOWN); //! //! \brief Query the register to get surface dump specification. @@ -393,6 +406,19 @@ class VpSurfaceDumper uint32_t Location, char* pcLocString); + //! + //! \brief Convert a DDI to string + //! \param [in] DDI + //! Enum of a DDI + //! \param [out] DDI string + //! Enum type + //! \return MOS_STATUS + //! Return MOS_STATUS_SUCCESS if successful, otherwise failed + //! + virtual MOS_STATUS EnumToDdiString( + uint32_t uiDDI, + char* pcDdiString); + //! //! \brief Check if an osResource have aux surf //! \param [in] osResource @@ -406,6 +432,7 @@ class VpSurfaceDumper PMOS_INTERFACE m_osInterface; char m_dumpPrefix[MAX_PATH]; // Called frequently, so avoid repeated stack resizing with member data char m_dumpLoc[MAX_PATH]; // to avoid recursive call from diff owner but sharing the same buffer + char m_dumpDDI[MAX_PATH]; // to avoid recursive call from diff owner but sharing the same buffer MediaUserSettingSharedPtr m_userSettingPtr = nullptr; // userSettingInstance private: