blob: 5440ecbcc2bc57a210f4a7f38702800b83e4033c [file] [log] [blame]
/*
* Copyright (c) 2011-2020, 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 codechal_debug.h
//! \brief Defines the debug interface shared by codec only.
//! \details The debug interface dumps output from Media based on in input config file.
//!
#ifndef __CODEC_DEBUG_H__
#define __CODEC_DEBUG_H__
#include "media_debug_interface.h"
#if USE_MEDIA_DEBUG_TOOL
#define USE_CODECHAL_DEBUG_TOOL 1
#define CODECHAL_DEBUG_TOOL(expr) expr;
typedef struct _CODECHAL_DBG_CFG CODECHAL_DBG_CFG, *PCODECHAL_DBG_CFG;
namespace CodechalDbgFieldType = MediaDbgFieldType;
namespace CodechalDbgExtType = MediaDbgExtType;
namespace CodechalDbgSurfaceType = MediaDbgSurfaceType;
namespace CodechalDbgBufferType = MediaDbgBufferType;
namespace CodechalDbgAttr = MediaDbgAttr;
namespace CodechalDbgKernel = MediaDbgKernel;
//------------------------------------------------------------------------------
// Macros specific to MOS_CODEC_SUBCOMP_DEBUG sub-comp
//------------------------------------------------------------------------------
#define CODECHAL_DEBUG_ASSERT(_expr) \
MOS_ASSERT(MOS_COMPONENT_CODEC, MOS_CODEC_SUBCOMP_DEBUG, _expr)
#define CODECHAL_DEBUG_ASSERTMESSAGE(_message, ...) \
MOS_ASSERTMESSAGE(MOS_COMPONENT_CODEC, MOS_CODEC_SUBCOMP_DEBUG, _message, ##__VA_ARGS__)
#define CODECHAL_DEBUG_NORMALMESSAGE(_message, ...) \
MOS_NORMALMESSAGE(MOS_COMPONENT_CODEC, MOS_CODEC_SUBCOMP_DEBUG, _message, ##__VA_ARGS__)
#define CODECHAL_DEBUG_VERBOSEMESSAGE(_message, ...) \
MOS_VERBOSEMESSAGE(MOS_COMPONENT_CODEC, MOS_CODEC_SUBCOMP_DEBUG, _message, ##__VA_ARGS__)
#define CODECHAL_DEBUG_FUNCTION_ENTER \
MOS_FUNCTION_ENTER(MOS_COMPONENT_CODEC, MOS_CODEC_SUBCOMP_DEBUG)
#define CODECHAL_DEBUG_CHK_STATUS(_stmt) \
MOS_CHK_STATUS_RETURN(MOS_COMPONENT_CODEC, MOS_CODEC_SUBCOMP_DEBUG, _stmt)
#define CODECHAL_DEBUG_CHK_STATUS_MESSAGE(_stmt, _message, ...) \
MOS_CHK_STATUS_MESSAGE_RETURN(MOS_COMPONENT_CODEC, MOS_CODEC_SUBCOMP_DEBUG, _stmt, _message, ##__VA_ARGS__)
#define CODECHAL_DEBUG_CHK_NULL(_ptr) \
MOS_CHK_NULL_RETURN(MOS_COMPONENT_CODEC, MOS_CODEC_SUBCOMP_DEBUG, _ptr)
#define CODECHAL_DEBUG_CHK_NULL_NO_STATUS(_ptr) \
MOS_CHK_NULL_NO_STATUS_RETURN(MOS_COMPONENT_CODEC, MOS_CODEC_SUBCOMP_DEBUG, _ptr)
enum CodechalHucRegionDumpType
{
hucRegionDumpDefault = 0,
hucRegionDumpInit = 1,
hucRegionDumpUpdate = 2,
hucRegionDumpRegionLocked = 3,
hucRegionDumpCmdInitializer = 4,
hucRegionDumpPakIntegrate = 5,
hucRegionDumpHpu = 6,
hucRegionDumpBackAnnotation = 7,
hucRegionDumpHpuSuperFrame = 8
};
typedef struct _CODECHAL_ME_OUTPUT_PARAMS
{
PMOS_SURFACE psMeMvBuffer;
PMOS_SURFACE psMeBrcDistortionBuffer;
PMOS_SURFACE psMeDistortionBuffer;
PMOS_RESOURCE pResVdenStreamInBuffer;
bool b16xMeInUse;
bool b32xMeInUse;
bool bVdencStreamInInUse;
} CODECHAL_ME_OUTPUT_PARAMS, *PCODECHAL_ME_OUTPUT_PARAMS;
class MediaDebugInterface;
class CodechalDebugInterface : public MediaDebugInterface
{
public:
CodechalDebugInterface();
virtual ~CodechalDebugInterface();
virtual MOS_STATUS Initialize(
CodechalHwInterface *hwInterface,
CODECHAL_FUNCTION codecFunction);
MOS_STATUS DumpHucDmem(
PMOS_RESOURCE dmemResource,
uint32_t dmemSize,
uint32_t hucPassNum,
CodechalHucRegionDumpType dumpType);
MOS_STATUS DumpHucRegion(
PMOS_RESOURCE region,
uint32_t regionOffset,
uint32_t regionSize,
uint32_t regionNum,
const char * regionName,
bool inputBuffer,
uint32_t hucPassNum,
CodechalHucRegionDumpType dumpType);
MOS_STATUS DumpEncodeStatusReport(
uint8_t *report);
CodechalHwInterface *m_hwInterface = nullptr;
CODECHAL_FUNCTION m_codecFunction = CODECHAL_FUNCTION_INVALID;
PCODECHAL_DBG_CFG m_dbgCfgHead = nullptr;
protected:
MOS_USER_FEATURE_VALUE_ID SetOutputPathKey() override;
MOS_USER_FEATURE_VALUE_ID InitDefaultOutput() override;
};
#else
#define USE_CODECHAL_DEBUG_TOOL 0
#define CODECHAL_DEBUG_TOOL(expr) ;
#endif // USE_MEDIA_DEBUG_TOOL
#endif /* __MEDIA_DEBUG_H__ */