blob: d8ef254873180f8c02a20b560dce4599a52fa096 [file] [log] [blame]
/*
* Copyright (c) 2018-2021, Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*/
//!
//! \file vp_dumper.h
//! \brief Defines structures and functions of vp dumpers for debugging
//! This file contains the definition of structures and functions for
//! surface dumper and parameter dumper
//!
#ifndef __VP_DUMPER_H__
#define __VP_DUMPER_H__
#if (_DEBUG || _RELEASE_INTERNAL)
#include "renderhal.h"
#include "mhw_vebox.h"
#include "vphal_common.h" // Common interfaces and structures
#include "vp_pipeline_common.h"
#if !defined(LINUX) && !defined(ANDROID)
#include "UmdStateSeparation.h"
#endif
#define MAX_NAME_LEN 100
#define VPHAL_DUMP_OUTPUT_FOLDER "\\vphaldump\\"
#define VPHAL_SURF_DUMP_MANUAL_TRIGGER_DEFAULT_NOT_SET (-1)
#define VPHAL_SURF_DUMP_MANUAL_TRIGGER_STARTED (1)
#define VPHAL_SURF_DUMP_MANUAL_TRIGGER_STOPPED (0)
//------------------------------------------------------------------------------
// Dump macro for dumper. Dump vphal parameters.
//------------------------------------------------------------------------------
#define VP_PARAMETERS_DUMPPER_DUMP_XML( \
debuginterface, pRenderParams, frameCounter) \
if (debuginterface) \
debuginterface->DumpToXML(pRenderParams, frameCounter); \
//------------------------------------------------------------------------------
// Dump macro. Simply calls the dump function. defined as null in production
//------------------------------------------------------------------------------
#define VP_SURFACE_DUMP( \
debuginterface, surf, frameCntr, layerCntr, loc) \
if (debuginterface) \
VP_DEBUG_CHK_STATUS(debuginterface->DumpVpSurface( \
surf, frameCntr, layerCntr, loc));
//------------------------------------------------------------------------------
// Dump array of surfaces
//------------------------------------------------------------------------------
#define VP_SURFACE_PTRS_DUMP( \
debuginterface, surfs, maxCntr, numCntr, frameCntr, loc) \
if (debuginterface) \
VP_DEBUG_CHK_STATUS(debuginterface->DumpVpSurfaceArray( \
surfs, maxCntr, numCntr, frameCntr, loc));
//------------------------------------------------------------------------------
// Create macro for dumper. Allocates and initializes.
// Potential leak if renderer not destroyed properly. However, cannot add a
// free here since renderer is not initialized to null (0)
//------------------------------------------------------------------------------
#define VP_SURF_DUMP_CREATE(surfaceDumper) \
surfaceDumper = MOS_New(VpSurfaceDumper, m_osInterface); \
if (surfaceDumper) \
surfaceDumper->GetSurfaceDumpSpec();
//------------------------------------------------------------------------------
// Destroy macro for dumper. Frees and sets to null.
//------------------------------------------------------------------------------
#define VP_SURF_DUMP_DESTORY(surfaceDumper) \
MOS_Delete(surfaceDumper); \
surfaceDumper = nullptr;
//------------------------------------------------------------------------------
// Create macro for vphal parameters dumper. Allocates and initializes.
//------------------------------------------------------------------------------
#define VP_PARAMETERS_DUMPPER_CREATE(parameterDumper) \
parameterDumper = MOS_New(VpParameterDumper, m_osInterface); \
if (parameterDumper) \
parameterDumper->GetParametersDumpSpec();
//------------------------------------------------------------------------------
// Destroy macro for dumper. Frees and sets to null.
//------------------------------------------------------------------------------
#define VP_PARAMETERS_DUMPPER_DESTORY(parameterDumper) \
MOS_Delete(parameterDumper); \
parameterDumper = nullptr;
//------------------------------------------------------------------------------
// Create macro for vp debug interface. Allocates and initializes.
//------------------------------------------------------------------------------
#define VP_DEBUG_INTERFACE_CREATE(debuginterface) \
debuginterface = MOS_New(VpDebugInterface); \
if (debuginterface) \
VP_PUBLIC_CHK_STATUS_RETURN( \
debuginterface->Initialize(m_osInterface)); \
//------------------------------------------------------------------------------
// Destroy macro for vp debug interface. Frees and sets to null.
//------------------------------------------------------------------------------
#define VP_DEBUG_INTERFACE_DESTROY(debuginterface) \
MOS_Delete(debuginterface); \
debuginterface = nullptr;
//------------------------------------------------------------------------------
// Dump macro for dumper. Dump Sku and workaround information.
//------------------------------------------------------------------------------
#define SkuWaTable_DUMP_XML(skuTable, waTable) \
if (m_debugInterface) \
m_debugInterface->SkuWa_DumpToXML( \
skuTable, \
waTable);
//!
//! Structure VPHAL_DBG_SURF_DUMP_SURFACE_DEF
//! \brief Plane definition
//! \details Plane information including offset, height, width, pitch
//!
struct VPHAL_SURF_DUMP_SURFACE_DEF
{
uint32_t dwOffset; //!< Offset from start of the plane
uint32_t dwHeight; //!< Height in rows
uint32_t dwWidth; //!< Width in bytes
uint32_t dwPitch; //!< Pitch in bytes
};
//!
//! \brief Dump locations as enum
//!
enum VPHAL_SURF_DUMP_LOCATION
{
VPHAL_DUMP_TYPE_PRE_ALL,
VPHAL_DUMP_TYPE_PRE_DNDI,
VPHAL_DUMP_TYPE_POST_DNDI,
VPHAL_DUMP_TYPE_PRE_COMP,
VPHAL_DUMP_TYPE_POST_COMP,
VPHAL_DUMP_TYPE_PRE_MEMDECOMP,
VPHAL_DUMP_TYPE_POST_MEMDECOMP,
VPHAL_DUMP_TYPE_POST_ALL,
VPHAL_DUMP_TYPE_INTERNAL
};
//!
//! Structure VPHAL_SURF_DUMP_LOC
//! \brief Specification for a single pipeline location dump
//! \details Specification for a single pipeline location dump
//!
struct VPHAL_SURF_DUMP_LOC
{
uint32_t DumpLocation; //!< Dump location
VPHAL_SURFACE_TYPE SurfType; //!< Type of this surface
};
//!
//! Structure VPHAL_SURF_DUMP_SPEC
//! \brief All information about a surface dump specification
//! \details All information about a surface dump specification
//!
struct VPHAL_SURF_DUMP_SPEC
{
char pcOutputPath[MAX_PATH]; //!< Path where dumps are written
VPHAL_SURF_DUMP_LOC *pDumpLocations; //!< Locations in post-processing pipeline to dump at
uint32_t uiStartFrame; //!< Frame to start dumping at
uint32_t uiEndFrame; //!< Frame to stop dumping at
int32_t iNumDumpLocs; //!< Number of pipe stage dump locations
bool enableAuxDump; //!< Enable aux data dump for compressed surface
bool enablePlaneDump; //!< Enable surface dump by plane
};
//!
//! Structure PVPHAL_DBG_PFIELD_LAYOUT
//! \brief Debug Field Structure
//! \details Debug Field Structure
//!
struct VPHAL_FIELD_LAYOUT
{
char pcName[MAX_NAME_LEN];
uint32_t dwOffset;
uint32_t dwSize;
uint32_t uiNumber;
char pcStructName[MAX_NAME_LEN];
VPHAL_FIELD_LAYOUT *pChildLayout;
uint32_t uiNumChildren;
};
//-------------------------------------------------------------------------------
// All information about parameters output dump
//-------------------------------------------------------------------------------
struct VPHAL_PARAMS_DUMP_SPEC
{
char outFileLocation[MAX_PATH]; // Location where dump files need to be stored
uint32_t uiStartFrame; // Start frame for dumping
uint32_t uiEndFrame; // End Frame for dumping
uint32_t enableSkuWaDump; // Enable sku and wa info dump
};
//==<FUNCTIONS>=================================================================
//!
//! Class VpSurfaceDumper
//! \brief VP Surface Dumper definition
//!
class VpSurfaceDumper
{
public:
//!
//! \brief Dump a surface into a file
//! \details Dump a surface into a file, called by VpHalDbg_SurfaceDumperDump
//! File name will be generated based on surface format, width,
//! height, pitch, iCounter and psPathPrefix. For example, if the
//! psPathPrefix is /dump/primary, then file will be created under
//! /dump/ and file name will start as primary_
//! \param [in] pOsInterface
//! The pointer to OS interface
//! \param [in] pSurface
//! The pointer to the surface to be dumped
//! \param [in] psPathPrefix
//! The prefix of the file path which the surface will dump to
//! \param [in] iCounter
//! The counter that tells which render this surface belongs to
//! \param [in] bLockSurface
//! True if need to lock the surface
//! \param [in] bNoDecompWhenLock
//! True if force not to do decompress when Lock
//! \param [in] pData
//! non-null if caller already locked the surface byitself
//! \return MOS_STATUS
//! Return MOS_STATUS_SUCCESS if successful, otherwise failed
//!
virtual MOS_STATUS DumpSurfaceToFile(
PMOS_INTERFACE pOsInterface,
PVPHAL_SURFACE pSurface,
const char *psPathPrefix,
uint64_t iCounter,
bool bLockSurface,
bool bNoDecompWhenLock,
uint8_t* pData);
virtual MOS_STATUS DumpSurfaceToFile(
PMOS_INTERFACE pOsInterface,
PVP_SURFACE pSurface,
const char *psPathPrefix,
uint64_t iCounter,
bool bLockSurface,
bool bNoDecompWhenLock,
uint8_t* pData);
VPHAL_SURF_DUMP_SPEC m_dumpSpec;
//!
//! \brief VpSurfaceDumper constuctor
//!
VpSurfaceDumper(PMOS_INTERFACE pOsInterface)
: m_dumpSpec(),
m_osInterface(pOsInterface)
{
};
//!
//! \brief VpSurfaceDumper destuctor
//!
virtual ~VpSurfaceDumper();
//!
//! \brief Dump a surface
//! \details Dump a surface according to the surface dumper spec
//! \param [in] pSurf
//! The pointer to the surface to be dumped
//! \param [in] uiFrameNumber
//! The counter that tells which render this surface belongs to
//! \param [in] uiCounter
//! The counter that tells which layer this surface belongs to
//! \param [in] Location
//! The render stage, e.g. preall, predndi, postdndi ...
//! \return MOS_STATUS
//! Return MOS_STATUS_SUCCESS if successful, otherwise failed
//!
virtual MOS_STATUS DumpSurface(
PVPHAL_SURFACE pSurf,
uint32_t uiFrameNumber,
uint32_t uiCounter,
uint32_t Location);
virtual MOS_STATUS DumpSurface(
PVP_SURFACE pSurf,
uint32_t uiFrameNumber,
uint32_t uiCounter,
uint32_t Location);
// VpHalDbg_SurfaceDumperDumpPtrs
//!
//! \brief Dump all surfaces in surface array
//! \details Dump all surfaces in surface array according to the surface
//! dumper spec
//! \param [in] ppSurfaces
//! The pointer to surface array to be dumped
//! \param [in] uiMaxSurfaces
//! The max number of surfaces supported in VPHAL
//! \param [in] uiNumSurfaces
//! The number of surfaces to be dumped
//! \param [in] uint32_t uiFrameNumber
//! The counter that tells which render this surface belongs to
//! \param [in] Location
//! The render stage, e.g. preall, predndi, postdndi ...
//! \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);
//!
//! \brief Query the register to get surface dump specification.
//! \return void
//!
void GetSurfaceDumpSpec();
protected:
//!
//! \brief Convert a string to loc enum type
//! \param [in] pcLocString
//! Pointer to the string to be converted
//! \param [out] pLocation
//! Enum type
//! \return MOS_STATUS
//! Return MOS_STATUS_SUCCESS if successful, otherwise failed
//!
virtual MOS_STATUS LocStringToEnum(
char* pcLocString,
uint32_t *pLocation);
//!
//! \brief Converts an enum for loc type to a string
//! \param [in] Location
//! Enum type to be converted
//! \param [out] pcLocString
//! Location as a string -- must be allocated before sent in
//! \return MOS_STATUS
//! Return MOS_STATUS_SUCCESS if successful, otherwise failed
//!
virtual MOS_STATUS EnumToLocString(
uint32_t Location,
char* pcLocString);
//!
//! \brief Check if an osResource have aux surf
//! \param [in] osResource
//! Pointer to MOS Resource
//! \return bool
//! Return true if has aux surf, otherwise false
//!
bool HasAuxSurf(
PMOS_RESOURCE osResource);
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
private:
//!
//! \brief Get plane information of a surface
//! \details Get plane information of a surface, e.g. offset of each plane,
//! number of planes, total size of the surface
//! \param [in] pSurface
//! The pointer to the surface
//! \param [out] pPlanes
//! The pointer to the plane information of the surface
//! \param [out] pdwNumPlanes
//! Number of planes of the surface
//! \param [out] pdwSize
//! The total size of the surface
//! \param [in] auxEnable
//! Whether aux dump is enabled
//! \param [in] isDeswizzled
//! Whether deswizzleing is considered. If yes, uv offset should remove paddings
//! \return MOS_STATUS
//! Return MOS_STATUS_SUCCESS if successful, otherwise failed
//!
MOS_STATUS GetPlaneDefs(
PVPHAL_SURFACE pSurface,
VPHAL_SURF_DUMP_SURFACE_DEF *pPlanes,
uint32_t* pdwNumPlanes,
uint32_t* pdwSize,
bool auxEnable,
bool isDeswizzled);
MOS_STATUS GetPlaneDefs(
PVP_SURFACE pSurface,
VPHAL_SURF_DUMP_SURFACE_DEF* pPlanes,
uint32_t* pdwNumPlanes,
uint32_t* pdwSize,
bool auxEnable,
bool isDeswizzled);
//!
//! \brief Parse dump location
//! \details Take dump location strings and break down into individual post-
//! processing pipeline locations and surface types.
//! \param [in] pcDumpLocData
//! String containing all dump locations
//! \return MOS_STATUS
//! Return MOS_STATUS_SUCCESS if successful, otherwise failed
//!
MOS_STATUS ProcessDumpLocations(
char* pcDumpLocData);
//!
//! \brief Convert a string to surf enum type
//! \param [in] pcSurfType
//! The pointer to string to be converted
//! \param [out] pSurfType
//! Enum version of string
//! \return MOS_STATUS
//! Return MOS_STATUS_SUCCESS if successful, otherwise failed
//!
MOS_STATUS SurfTypeStringToEnum(
char* pcSurfType,
VPHAL_SURFACE_TYPE *pSurfType);
//!
//! \brief Removes white space from a C-string
//! \param [in] ptr
//! String to be trimmed
//! \return char*
//! String after trim
//!
char* WhitespaceTrim(
char* ptr);
};
//!
//! Class VpPArameerDumper
//! \brief RenderParameter Dumper definition
//!
class VpParameterDumper
{
public:
VPHAL_PARAMS_DUMP_SPEC m_dumpSpec;
//!
//! \brief VphalParameterDumper constuctor
//!
VpParameterDumper(PMOS_INTERFACE pOsInterface)
: m_dumpSpec(),
m_osInterface(pOsInterface)
{
};
//!
//! \brief Get VPHAL Parameters Dump Spec
//! \param [in] pDumpSpec
//! parameter dump spec
//! \param [in] pOsInterface
//! OS interface
//! \return void
//!
void GetParametersDumpSpec();
//!
//! \brief VphalParameterDumper destuctor
//!
virtual ~VpParameterDumper();
//!
//! \brief Dumps the Render Parameters to XML File
//! \param [in] uiFrameCounter
//! frame counter
//! \param [in] pcOutputPath
//! Surface dump output path
//! \param [in] pRenderParams
//! Render parameter to be dumped
//! \return MOS_STATUS
//!
virtual MOS_STATUS DumpToXML(
uint32_t uiFrameCounter,
char *pcOutputPath,
PVPHAL_RENDER_PARAMS pRenderParams);
//!
//! \brief Dumps Sku and Workaround information to XML File
//!
virtual MOS_STATUS SkuWa_DumpToXML(
MEDIA_FEATURE_TABLE *skuTable,
MEDIA_WA_TABLE *waTable);
protected:
//!
//! \brief Dumps the source Surface Parameters
//! \param [in] uiFrameCounter
//! frame counter
//! \param [in] pcOutputPath
//! Surface dump output path
//! \param [in] pSrc
//! source Surface to be dumped
//! \param [in] index
//! index of source Surface
//! \param [in/out] pcOutContents
//! output string buffer
//! \return MOS_STATUS
//!
virtual MOS_STATUS DumpSourceSurface(
uint32_t uiFrameCounter,
char *pcOutputPath,
PVPHAL_SURFACE pSrc,
uint32_t index,
char* &pcOutContents);
//!
//! \brief Dumps the target Surface Parameters
//! \param [in] uiFrameCounter
//! frame counter
//! \param [in] pcOutputPath
//! Surface dump output path
//! \param [in] pSrc
//! target Surface to be dumped
//! \param [in] index
//! index of target Surface
//! \param [in/out] pcOutContents
//! output string buffer
//! \return MOS_STATUS
//!
virtual MOS_STATUS DumpTargetSurface(
uint32_t uiFrameCounter,
char *pcOutputPath,
PVPHAL_SURFACE pTarget,
uint32_t index,
char* &pcOutContents);
//!
//! \brief Dumps the target Surface Parameters
//! \param [in] uiFrameCounter
//! frame counter
//! \param [in] pcOutputPath
//! Surface dump output path
//! \param [in] pRenderParams
//! Render parameter to be dumped
//! \param [in/out] pcOutContents
//! output string buffer
//! \return MOS_STATUS
//!
virtual MOS_STATUS DumpRenderParameter(
uint32_t uiFrameCounter,
char *pcOutputPath,
PVPHAL_RENDER_PARAMS pRenderParams,
char* &pcOutContents);
//!
//! \brief Gets Debug Component String
//! \param [in] component
//! Mos component
//! \return const char *
//! String of the Component
//!
virtual const char * GetComponentStr(
MOS_COMPONENT component);
private:
PMOS_INTERFACE m_osInterface;
//!
//! \brief Gets Debug Whole Format String
//! \param [in] format
//! Mos format
//! \return const char *
//! String of the whole format sucha as Format_NV12
//!
const char * GetWholeFormatStr(MOS_FORMAT format);
//!
//! \brief Gets Debug Tile Type String
//! \param [in] format
//! Mos tile type
//! \return const char *
//! String of the tile type
//!
const char * GetTileTypeStr(MOS_TILE_TYPE tile_type);
//!
//! \brief Gets Debug Surface Type String
//! \param [in] component
//! Mos component
//! \return const char *
//! String of the component
//!
const char * GetSurfaceTypeStr(VPHAL_SURFACE_TYPE surface_type);
//!
//! \brief Gets Debug Sample Type String
//! \param [in] sample type
//! vphal sample type
//! \return const char *
//! String of the vphal sample type
//!
const char * GetSampleTypeStr(VPHAL_SAMPLE_TYPE sample_type);
//!
//! \brief Gets Debug Color Type String
//! \param [in] Color type
//! vphal color type
//! \return const char *
//! String of the vphal color type
//!
const char * GetColorSpaceStr(VPHAL_CSPACE color_space);
//!
//! \brief Gets Debug Blend Type String
//! \param [in] Blend type
//! vphal blend type
//! \return const char *
//! String of the vphal color type
//!
const char * GetBlendTypeStr(VPHAL_BLEND_TYPE blend_type);
//!
//! \brief Gets Debug Palette Type String
//! \param [in] palette type
//! vphal palette type
//! \return const char *
//! String of vphal palette type
//!
const char * GetPaletteTypeStr(VPHAL_PALETTE_TYPE palette_type);
//!
//! \brief Gets Debug Scaling Mode String
//! \param [in] scaling mode
//! vphal scaling mode
//! \return const char *
//! String of vphal scaling mode
//!
const char * GetScalingModeStr(VPHAL_SCALING_MODE scaling_mode);
//!
//! \brief Gets Debug Rotation Mode String
//! \param [in] rotation mode
//! vphal rotation mode
//! \return const char *
//! String of vphal rotation mode
//!
const char * GetRotationModeStr(VPHAL_ROTATION rotation_mode);
//!
//! \brief Gets Debug Deinterlace Mode String
//! \param [in] deinterlace mode
//! vphal deinterlace mode
//! \return const char *
//! String of vphal deinterlace mode
//!
const char * GetDIModeStr(VPHAL_DI_MODE di_mode);
//!
//! \brief Gets Debug Denoise Mode String
//! \param [in] denoise level
//! vphal denoise level
//! \return const char *
//! String of vphal denoise level
//!
const char * GetDenoiseModeStr(VPHAL_NOISELEVEL noise_level);
};
//!
//! Class VpDumperTool
//! \brief Dumper Tool class definition
//!
class VpDumperTool
{
public:
//!
//! \brief Get a file path in current OS
//! \details Covert a file path to a path that can be recognized in current OS.
//! File path may be different in different OS.
//! \param [in] pcFilePath
// Input string of the file path to be converted
//! \param [out] pOsFilePath
//! Converted file path
//! \return void
//!
static void GetOsFilePath(
const char* pcFilePath,
char* pOsFilePath);
//!
//! \brief Convert a string to an all lower case version
//! \param [in/out] pcString
//! The pointer to string to be converted
//! \return void
//!
static void StringToLower(
char* pcString);
//!
//! \brief Append to the string
//! \details Adds second arg to end of first arg. Works like sprintf, but
//! optimized for this special use.
//! \param [in] bFirst
//! True if this is the first call to this function for next param.
//! Note that multiple strings cannot be appended at the same time.
//! They should be appended one by one, e.g. pcBigString2 can be appended
//! after you finish appending pcBigString1.
//! \param [in/out] ppcBigString
//! Pointer to string for that is appended to
//! \param [in] pcToAppendFmt
//! String format for appended part
//! \param [in] ...
//! Fields to fill in for appended part
//! \return MOS_STATUS
//! Return MOS_STATUS_SUCCESS if successful, otherwise failed
//!
static MOS_STATUS AppendString(
bool bFirst,
char **ppcBigString,
PCCHAR pcToAppendFmt,
...);
//!
//! \brief Write Frame
//! \details Debug function to write intermediate output to C:\dump
//! \param [in] pOsInterface
//! Pointer to OS interface
//! \param [in] pSurface
//! Pointer to surface that will be read from
//! \param [in] fileName
//! File to be written to
//! \param [in] iCounter
//! Frame ID and cycle counter
//! \return void
//!
static void WriteFrame(
PMOS_INTERFACE pOsInterface,
PVPHAL_SURFACE pSurface,
PCCHAR fileName,
uint64_t iCounter);
//!
//! \brief Returns the Size of the surface in bytes
//! \param [in] pSurface
//! The pointer to the surface
//! \param [int] iBpp
//! Number of bits per pixel
//! \param [out] piWidthInBytes
//! Width of the surface
//! \param [out] piHeightInRows
//! Height of the surface
//! \return MOS_STATUS
//! Return MOS_STATUS_SUCCESS if successful, otherwise failed
//!
static MOS_STATUS GetSurfaceSize(
PVPHAL_SURFACE pSurface,
uint32_t iBpp,
uint32_t* piWidthInBytes,
uint32_t* piHeightInRows);
//!
//! \brief Gets Debug Format String
//! \param [in] format
//! Mos format
//! \return const char *
//! String of the format
//!
static const char * GetFormatStr(
MOS_FORMAT format);
};
#endif // (_DEBUG || _RELEASE_INTERNAL)
#if (!(_DEBUG || _RELEASE_INTERNAL))
#define VP_PARAMETERS_DUMPPER_DUMP_XML(debuginterface, pRenderParams, frameCounter)
#define VP_SURFACE_DUMP(debuginterface, surf, frameCntr, layerCntr, loc)
#define VP_SURFACE_PTRS_DUMP( \
debuginterface, surfs, maxCntr, numCntr, frameCntr, loc)
#define VP_SURF_DUMP_CREATE(surfaceDumper)
#define VP_SURF_DUMP_DESTORY(surfaceDumper)
#define VP_PARAMETERS_DUMPPER_CREATE(pParametersDumpSpec)
#define VP_PARAMETERS_DUMPPER_DESTORY(pParametersDumpSpec)
#define VP_DEBUG_INTERFACE_CREATE(debuginterface)
#define VP_DEBUG_INTERFACE_DESTROY(debuginterface)
#define SkuWaTable_DUMP_XML(skuTable, waTable)
#endif // (!(_DEBUG || _RELEASE_INTERNAL) || EMUL)
#endif // __VP_DUMPER_H__