blob: f7639b7f4e3460f905568926ab5621523b374679 [file] [log] [blame]
/*
* Copyright (c) 2010-2019, 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 vphal_render_sfc_base.h
//! \brief The header file of the base class of VPHAL SFC rendering component
//! \details The SFC renderer supports Scaling, IEF, CSC/ColorFill and Rotation.
//! It's responsible for setting up HW states and generating the SFC
//! commands.
//!
#ifndef __VPHAL_RENDER_SFC_BASE_H__
#define __VPHAL_RENDER_SFC_BASE_H__
#include "mhw_sfc.h"
#include "renderhal.h"
#include "vphal.h"
#include "vphal_render_common.h"
#include "vphal_render_vebox_iecp.h"
#ifndef __VPHAL_SFC_SUPPORTED
#define __VPHAL_SFC_SUPPORTED 1
#endif
//!
//! \brief Structure to hold AVS Coeff tables
//!
struct VPHAL_SFC_AVS_STATE
{
MHW_SFC_AVS_LUMA_TABLE LumaCoeffs;
MHW_SFC_AVS_CHROMA_TABLE ChromaCoeffs;
MHW_SFC_AVS_STATE AvsStateParams;
};
//!
//! \brief Transient Render data populated for every BLT call
//!
typedef struct _VPHAL_SFC_RENDER_DATA
{
bool bColorFill; //!< Enable ColorFill
bool bScaling; //!< Enable Scaling
bool bIEF; //!< Enable IEF filter
bool bCSC; //!< Enable CSC filter
float fScaleX; //!< X Scaling ratio
float fScaleY; //!< Y Scaling ratio
uint16_t wIEFFactor; //!< IEF factor
MHW_SFC_STATE_PARAMS *SfcStateParams; //!< Pointer to SFC state params
MHW_SFC_IEF_STATE_PARAMS IEFStateParams; //!< Pointer to IEF state params
PMHW_AVS_PARAMS pAvsParams; //!< Pointer to AVS params
PVPHAL_COLORFILL_PARAMS pColorFillParams; //!< Pointer to ColorFill params
PVPHAL_ALPHA_PARAMS pAlphaParams; //!< Pointer to Alpha params
VPHAL_CSPACE SfcInputCspace; //!< SFC Input Color Space
MOS_FORMAT SfcInputFormat; //!< SFC Input Format
VPHAL_ROTATION SfcRotation; //!< SFC Rotation Mode
VPHAL_SCALING_MODE SfcScalingMode; //!< SFC Scaling Mode
uint32_t SfcSrcChromaSiting; //!< SFC Source Surface Chroma Siting
PVPHAL_SURFACE pSfcPipeOutSurface; //!< SFC Pipe output surface
bool bForcePolyPhaseCoefs; //!< SFC AVS force polyphase coef
} VPHAL_SFC_RENDER_DATA, *PVPHAL_SFC_RENDER_DATA;
#if __VPHAL_SFC_SUPPORTED
class VphalSfcState
{
public:
//!
//! \brief VphalSfcState constructor
//! \param [in] osInterface
//! Pointer to os interface
//! \param [in] renderHal
//! pointer to renderhal structure
//! \param [in] sfcInterface
//! pointer to mhw sfc interface
//! \return void
//!
VphalSfcState(PMOS_INTERFACE osInterface,
PRENDERHAL_INTERFACE renderHal,
PMHW_SFC_INTERFACE sfcInterface);
//!
//! \brief VphalSfcState destructor
//! \return void
//!
virtual ~VphalSfcState();
//!
//! \brief Disable the SFC functionality
//! \param [in] disable
//! true to disable, false to enable SFC
//! \return void
//!
void SetDisable(bool disable)
{
disableSFC = disable;
}
//!
//! \brief Set SFC MMC status
//! \param [in] enable
//! true to disable, false to enable SFC MMC
//! \return void
//!
void SetSfcOutputMmcStatus(bool enable)
{
enableSfcMMC = enable;
}
//!
//! \brief Check if SFC functionality is disabled
//! \return true if disabled, false if enabled
//!
bool IsDisabled()
{
return disableSFC;
}
//!
//! \brief Check if SFC MMC is enabled
//! \return true if enabled, false if disabled
//!
bool IsSfcMmcEnabled()
{
return enableSfcMMC;
}
//!
//! \brief Set stero channel of input
//! \param [in] currentChannel
//! Current stero channel
//! \return void
//!
void SetStereoChannel(uint32_t currentChannel)
{
m_currentChannel = currentChannel;
}
//!
//! \brief Get Sfc's input format
//! \return MOS_FORMAT
//!
MOS_FORMAT GetInputFormat()
{
return m_renderData.SfcInputFormat;
}
//!
//! \brief Get Sfc's input color space
//! \return VPHAL_CSPACE
//!
VPHAL_CSPACE GetInputColorSpace()
{
return m_renderData.SfcInputCspace;
}
//!
//! \brief Initialize sfc render data
//! \return void
//!
virtual void InitRenderData()
{
MOS_FreeMemory(m_renderData.SfcStateParams);
m_renderData = { };
}
//!
//! \brief Get the output pipe considering the SFC restrictions
//! \details Check which output pipe can be applied, SFC or Comp
//! \param [in] pSrc
//! Pointer to input surface of SFC
//! \param [in] pRenderTarget
//! Pointer to RenderTarget
//! \param [in] pcRenderParams
//! Pointer to VpHal render parameters
//! \return the output pipe mode
//!
virtual VPHAL_OUTPUT_PIPE_MODE GetOutputPipe(
PVPHAL_SURFACE pSrc,
PVPHAL_SURFACE pRenderTarget,
PCVPHAL_RENDER_PARAMS pcRenderParams);
//!
//! \brief Check if SFC is feasible to generate output
//! \param [in] pcRenderParams
//! Pointer to VpHal render parameters
//! \param [in] pSrcSurface
//! Pointer to input surface of SFC
//! \param [in] pRenderTarget
//! Pointer to RenderTarget
//! \return true if SFC is feasible
//!
virtual bool IsOutputPipeSfcFeasible(
PCVPHAL_RENDER_PARAMS pcRenderParams,
PVPHAL_SURFACE pSrcSurface,
PVPHAL_SURFACE pRenderTarget);
//!
//! \brief Setup SFC Rendering Flags
//! \details Set up the SFC rendering flag based the input and render target
//! surface, SFC state and the ColorFill/Alpha parameters
//! \param [in] pColorFillParams
//! Pointer to ColorFill params
//! \param [in] pAlphaParams
//! Pointer to Alpha params
//! \param [in] pSrc
//! Pointer to Source Surface
//! \param [in] pRenderTarget
//! Pointer to Render Target Surface
//! \param [in,out] pRenderData
//! Pointer to Vebox render Data
//! \return void
//!
virtual void SetRenderingFlags(
PVPHAL_COLORFILL_PARAMS pColorFillParams,
PVPHAL_ALPHA_PARAMS pAlphaParams,
PVPHAL_SURFACE pSrc,
PVPHAL_SURFACE pRenderTarget,
PVPHAL_VEBOX_RENDER_DATA pRenderData);
//!
//! \brief Free resources used by SFC Pipe
//! \details Free the AVS and IEF line buffer surfaces for SFC
//! \return void
//!
virtual void FreeResources();
//!
//! \brief Check to see if the i/o surface is supported by SFC
//! \details Check the format and the size of i/o surface and determine
//! whether it can go through SFC pipe
//! \param [in] pSrcSurface
//! Pointer to Src surface
//! \param [in] pOutSurface
//! Pointer to Output surface
//! \param [in] pAlphaParams
//! Pointer to Alpha params
//! \return true if SFC Pipe is needed else false
//!
virtual bool IsFormatSupported(
PVPHAL_SURFACE pSrcSurface,
PVPHAL_SURFACE pOutSurface,
PVPHAL_ALPHA_PARAMS pAlphaParams);
//!
//! \brief Setup SFC states and parameters
//! \details Setup SFC states and parameters including SFC State, AVS
//! and IEF parameters
//! \param [in] pSrcSurface
//! Pointer to Source Surface
//! \param [in] pOutSurface
//! Pointer to Output Surface
//! \param [in,out] pRenderData
//! Pointer to Vebox Render data
//! \return Return MOS_STATUS_SUCCESS if successful, otherwise failed
//!
virtual MOS_STATUS SetupSfcState(
PVPHAL_SURFACE pSrcSurface,
PVPHAL_SURFACE pOutSurface,
PVPHAL_VEBOX_RENDER_DATA pRenderData);
//!
//! \brief Send SFC pipe commands
//! \details Register the surfaces and send the commands needed by SFC pipe
//! \param [in] pRenderData
//! Pointer to Vebox Render data
//! \param [in,out] pCmdBuffer
//! Pointer to command buffer
//! \return MOS_STATUS_SUCCESS if successful, otherwise failed
//!
virtual MOS_STATUS SendSfcCmd(
PVPHAL_VEBOX_RENDER_DATA pRenderData,
PMOS_COMMAND_BUFFER pCmdBuffer);
//!
//! \brief Set Sfc index used by HW
//! \details VPHAL set Sfc index used by HW
//! \param [in] dwSfcIndex;
//! set which Sfc can be used by HW
//! \param [in] dwSfcCount;
//! set Sfc Count
//! \return MOS_STATUS
//! MOS_STATUS_SUCCESS if success, else fail reason
virtual MOS_STATUS SetSfcIndex(
uint32_t dwSfcIndex,
uint32_t dwSfcCount)
{
MOS_UNUSED(dwSfcIndex);
MOS_UNUSED(dwSfcCount);
return MOS_STATUS_SUCCESS;
}
protected:
//!
//! \brief Gen specific function for SFC adjust boundary
//! \details Adjust the width and height of the input surface for SFC
//! \param [in] pSurface
//! Pointer to input Surface
//! \param [out] pdwSurfaceWidth
//! Pointer to adjusted surface width
//! \param [out] pdwSurfaceHeight
//! Pointer to adjusted surface height
//! \return void
//!
virtual void AdjustBoundary(
PVPHAL_SURFACE pSurface,
uint32_t* pdwSurfaceWidth,
uint32_t* pdwSurfaceHeight);
//!
//! \brief Allocate Resources for SFC Pipe
//! \details Allocate the AVS and IEF line buffer surfaces for SFC
//! \return Return MOS_STATUS_SUCCESS if successful, otherwise failed
//!
virtual MOS_STATUS AllocateResources();
//!
//! \brief Is the Format MMC Supported in SFC
//! \details Check whether input format is supported by memory compression
//! \param [in] Format
//! Surface format
//! \return true if supported, false if not
//!
virtual bool IsFormatMMCSupported(
MOS_FORMAT Format);
//!
//! \brief Check if SFC is capable to output
//! \details Check all conditions to see if it meets SFC's capablitiy
//! \param [in] isColorFill
//! indicates whether color fill is required
//! \param [in] src
//! Pointer to source surface
//! \param [in] renderTarget
//! Pointer to renderTarget surface
//! \return true if capable, false if not
//!
virtual bool IsOutputCapable(
bool isColorFill,
PVPHAL_SURFACE src,
PVPHAL_SURFACE renderTarget);
//!
//! \brief Check if the input format is supported
//! \param [in] srcSurface
//! input surface
//! \return true if supported, false if not
//!
virtual bool IsInputFormatSupported(
PVPHAL_SURFACE srcSurface) = 0;
//!
//! \brief Check if the output format is supported
//! \param [in] outSurface
//! output surface
//! \return true if supported, false if not
//!
virtual bool IsOutputFormatSupported(
PVPHAL_SURFACE outSurface) = 0;
//!
//! \brief Get width and height align unit of input format
//! \param [in] inputFormat
//! input format
//! \param [in] outputFormat
//! output format
//! \param [out] widthAlignUnit
//! width align unit
//! \param [out] heightAlignUnit
//! height align unit
//! \return void
//!
virtual void GetInputWidthHeightAlignUnit(
MOS_FORMAT inputFormat,
MOS_FORMAT outputFormat,
uint16_t &widthAlignUnit,
uint16_t &heightAlignUnit) = 0;
//!
//! \brief Get width and height align unit of output format
//! \param [in] outputFormat
//! output format
//! \param [out] widthAlignUnit
//! width align unit
//! \param [out] heightAlignUnit
//! height align unit
//! \return void
//!
virtual void GetOutputWidthHeightAlignUnit(
MOS_FORMAT outputFormat,
uint16_t &widthAlignUnit,
uint16_t &heightAlignUnit,
bool isInterlacedScaling = false);
//!
//! \brief Setup SFC State related parameters
//! \details Setup the SFC State related parameters based on the i/o surface
//! and Vebox and SFC rendering data
//! \param [in,out] pRenderData
//! Pointer to Vebox Render data
//! \param [in] pSrcSurface
//! Pointer to Input Source Surface
//! \param [in] pOutSurface
//! Pointer to Output Source Surface
//! \return MOS_STATUS
//! Return MOS_STATUS_SUCCESS if successful, otherwise failed
//!
virtual MOS_STATUS SetSfcStateParams(
PVPHAL_VEBOX_RENDER_DATA pRenderData,
PVPHAL_SURFACE pSrcSurface,
PVPHAL_SURFACE pOutSurface);
//!
//! \brief Setup parameters related to SFC_IEF State
//! \details Setup the IEF and CSC params of the SFC_IEF State
//! \param [in] veboxRenderData
//! Pointer to Vebox Render Data
//! \param [in,out] sfcStateParams
//! Pointer to SFC_STATE params
//! \param [in] inputSurface
//! Pointer to Input Surface
//! \return void
//!
virtual void SetIefStateParams(
PVPHAL_VEBOX_RENDER_DATA veboxRenderData,
PMHW_SFC_STATE_PARAMS sfcStateParams,
PVPHAL_SURFACE inputSurface);
//!
//! \brief Setup CSC parameters of the SFC State
//! \param [in,out] pSfcStateParams
//! Pointer to SFC_STATE params
//! \param [out] pIEFStateParams
//! Pointer to MHW IEF state params
//! \return void
//!
virtual void SetIefStateCscParams(
PMHW_SFC_STATE_PARAMS pSfcStateParams,
PMHW_SFC_IEF_STATE_PARAMS pIEFStateParams);
//!
//! \brief Update SFC Rendering Flags
//! \details Update the SFC rendering flag based the input and render target
//! surface, SFC state and the ColorFill/Alpha parameters
//! \param [in] pSrcSurface
//! Pointer to Source Surface
//! \param [in] pOutSurface
//! Pointer to Render Target Surface
//! \param [in,out] pRenderData
//! Pointer to Vebox Render Data
//! \return MOS_STATUS
//!
virtual MOS_STATUS UpdateRenderingFlags(
PVPHAL_SURFACE pSrcSurface,
PVPHAL_SURFACE pOutSurface,
PVPHAL_VEBOX_RENDER_DATA pRenderData);
//!
//! \brief Determine if CSC is required in SFC pipe and set related params
//! \param [in] src
//! Pointer to Source Surface
//! \param [in] renderTarget
//! Pointer to Target Surface
//! \return void
//!
virtual void DetermineCscParams(
PVPHAL_SURFACE src,
PVPHAL_SURFACE renderTarget);
//!
//! \brief Determine SFC input surface format
//! \details Determine SFC input surface format according to
//! surface info and vebox flags
//! \param [in] src
//! Pointer to Source Surface
//! \param [in] veboxRenderData
//! Pointer to vebox Render Data
//! \return void
//!
virtual void DetermineInputFormat(
PVPHAL_SURFACE src,
PVPHAL_VEBOX_RENDER_DATA veboxRenderData);
//!
//! \brief Determine SFC input ordering mode
//! \details Determine SFC input ordering mode according to
//! vebox flags
//! \param [in] veboxRenderData
//! Pointer to vebox Render Data
//! \param [out] sfcStateParams
//! Pointer to SFC state params
//! \return void
//!
virtual void SetSfcStateInputOrderingMode(
PVPHAL_VEBOX_RENDER_DATA veboxRenderData,
PMHW_SFC_STATE_PARAMS sfcStateParams);
//!
//! \brief Send SFC pipe commands
//! \details Register the surfaces and send the commands needed by SFC pipe
//! \param [in] pSfcInterface
//! Pointer to SFC interface
//! \param [in] pMhwMiInterface
//! Pointer to MI interface
//! \param [in] pOsInterface
//! Pointer to OS interface
//! \param [in] pSfcPipeOutSurface
//! Pointer to SFC Output surface
//! \param [in,out] pCmdBuffer
//! Pointer to command buffer
//! \return MOS_STATUS_SUCCESS if successful, otherwise failed
//!
virtual MOS_STATUS RenderSfcMmcCMD(
PMHW_SFC_INTERFACE pSfcInterface,
MhwMiInterface * pMhwMiInterface,
PMOS_INTERFACE pOsInterface,
PMHW_SFC_OUT_SURFACE_PARAMS pSfcPipeOutSurface,
PMOS_COMMAND_BUFFER pCmdBuffer)
{
return MOS_STATUS_SUCCESS;
}
//!
//! \brief Set SFC MMC States
//! \details Update the SFC output MMC status
//! \param [in] renderData
//! Pointer to Render Data
//! \param [in] outSurface
//! Pointer to Sfc Output Surface
//! \param [in,out] sfcStateParams
//! Pointer to SFC State Params
//! \return MOS_STATUS
//!
virtual MOS_STATUS SetSfcMmcStatus(
PVPHAL_VEBOX_RENDER_DATA renderData,
PVPHAL_SURFACE outSurface,
PMHW_SFC_STATE_PARAMS sfcStateParams);
private:
//!
//! \brief Setup parameters related to SFC_AVS State
//! \details Setup the 8x8 table of SFC sampler
//! \return MOS_STATUS
//!
MOS_STATUS SetAvsStateParams();
public:
bool m_bSFC2Pass = false;
bool m_bSFC2PassPerfMode = false;
protected:
bool disableSFC = false; //!< Disable SFC for validation purposes
bool enableSfcMMC = false; //!< Memory compression enbale flag - read from User feature keys
PMOS_INTERFACE m_osInterface; //!< Os Interface
PRENDERHAL_INTERFACE m_renderHal; //!< Pointer to RenderHal Structure Interface
PMHW_SFC_INTERFACE m_sfcInterface; //!< Pointer to SFC Structure Interface
// AVS related params
MHW_AVS_PARAMS m_AvsParameters = {}; //!< AVS parameters
VPHAL_SFC_AVS_STATE m_avsState = {}; //!< AVS State and Coeff. table
// ColorFill CSC related params
VPHAL_COLOR_SAMPLE_8 m_colorFillColorSrc = {}; //!< ColorFill Sample from DDI
VPHAL_COLOR_SAMPLE_8 m_colorFillColorDst = {}; //!< ColorFill Sample programmed in Sfc State
VPHAL_CSPACE m_colorFillSrcCspace = {}; //!< Cspace of the source ColorFill Color
VPHAL_CSPACE m_colorFillRTCspace = {}; //!< Cspace of the Render Target
// CSC related params
VPHAL_CSPACE m_cscRTCspace = {}; //!< Cspace of Render Target
VPHAL_CSPACE m_cscInputCspace = {}; //!< Cspace of input frame
float m_cscCoeff[9] = {}; //!< [3x3] Coeff matrix
float m_cscInOffset[3] = {}; //!< [3x1] Input Offset matrix
float m_cscOutOffset[3] = {}; //!< [3x1] Output Offset matrix
// Surfaces used by SFC
VPHAL_SURFACE m_AVSLineBufferSurface = {}; //!< AVS Line Buffer Surface for SFC
VPHAL_SURFACE m_IEFLineBufferSurface = {}; //!< IEF Line Buffer Surface for SFC
VPHAL_SURFACE m_SFDLineBufferSurface = {}; //!< SFD Line Buffer Surface for SFC
// Stereo state.
uint32_t m_currentChannel = 0; //!< 0=StereoLeft or nonStereo, 1=StereoRight. N/A in nonStereo
VPHAL_SFC_RENDER_DATA m_renderData = {}; //!< Transient Render data populated for every BLT call
};
#else
// A dummy class that does nothing when SFC is not supported
class VphalSfcState
{
public:
VphalSfcState(
PMOS_INTERFACE osInterface,
PRENDERHAL_INTERFACE renderHal,
PMHW_SFC_INTERFACE sfcInterface) {}
virtual ~VphalSfcState() {}
//!
//! \brief Disable the SFC functionality
//! \param [in] disable
//! true to disable, false to enable SFC
//! \return void
void SetDisable(bool disable)
{
}
//!
//! \brief Set SFC MMC status
//! \param [in] enable
//! true to disable, false to enable SFC MMC
//! \return void
void SetSfcOutputMmcStatus(bool enable)
{
}
//!
//! \brief Check if SFC functionality is disabled
//! \return true if disabled, false if enabled
bool IsDisabled()
{
return true;
}
//!
//! \brief Set stero channel of input
//! \param [in] currentChannel
//! Current stero channel
//! \return void
void SetStereoChannel(uint32_t currentChannel)
{
}
MOS_FORMAT GetInputFormat()
{
return Format_Invalid;
}
VPHAL_CSPACE GetInputColorSpace()
{
return CSpace_None;
}
void InitRenderData()
{
{};
}
//!
//! \brief Get the output pipe considering the SFC restrictions
//! \details Check which output pipe can be applied, SFC or Comp
//! \param [in] pSrc
//! Pointer to input surface of SFC
//! \param [in] pRenderTarget
//! Pointer to RenderTarget
//! \param [in] pcRenderParams
//! Pointer to VpHal render parameters
//! \return the output pipe mode
//!
VPHAL_OUTPUT_PIPE_MODE GetOutputPipe(
PVPHAL_SURFACE pSrc,
PVPHAL_SURFACE pRenderTarget,
PCVPHAL_RENDER_PARAMS pcRenderParams)
{
return VPHAL_OUTPUT_PIPE_MODE_COMP;
}
//!
//! \brief Setup SFC Rendering Flags
//! \details Set up the SFC rendering flag based the input and render target
//! surface, SFC state and the ColorFill/Alpha parameters
//! \param [in] pColorFillParams
//! Pointer to ColorFill params
//! \param [in] pAlphaParams
//! Pointer to Alpha params
//! \param [in] pSrc
//! Pointer to Source Surface
//! \param [in] pRenderTarget
//! Pointer to Render Target Surface
//! \param [in,out] pRenderData
//! Pointer to Vebox render Data
//! \return void
//!
void SetRenderingFlags(
PVPHAL_COLORFILL_PARAMS pColorFillParams,
PVPHAL_ALPHA_PARAMS pAlphaParams,
PVPHAL_SURFACE pSrc,
PVPHAL_SURFACE pRenderTarget,
PVPHAL_VEBOX_RENDER_DATA pRenderData) { }
//!
//! \brief Free resources used by SFC Pipe
//! \details Free the AVS and IEF line buffer surfaces for SFC
//! \return void
//!
void FreeResources() { }
//!
//! \brief Check to see if the i/o surface is supported by SFC
//! \details Check the format and the size of i/o surface and determine
//! whether it can go through SFC pipe
//! \param [in] pSrcSurface
//! Pointer to Src surface
//! \param [in] pOutSurface
//! Pointer to Output surface
//! \param [in] pAlphaParams
//! Pointer to Alpha params
//! \return true if SFC Pipe is needed else false
//!
bool IsFormatSupported(
PVPHAL_SURFACE pSrcSurface,
PVPHAL_SURFACE pOutSurface,
PVPHAL_ALPHA_PARAMS pAlphaParams) { return false;}
//!
//! \brief Setup SFC states and parameters
//! \details Setup SFC states and parameters including SFC State, AVS
//! and IEF parameters
//! \param [in] pSrcSurface
//! Pointer to Source Surface
//! \param [in] pOutSurface
//! Pointer to Output Surface
//! \param [in,out] pRenderData
//! Pointer to Vebox Render data
//! \return Return MOS_STATUS_SUCCESS if successful, otherwise failed
//!
MOS_STATUS SetupSfcState(
PVPHAL_SURFACE pSrcSurface,
PVPHAL_SURFACE pOutSurface,
PVPHAL_VEBOX_RENDER_DATA pRenderData) {return MOS_STATUS_SUCCESS; }
//!
//! \brief Send SFC pipe commands
//! \details Register the surfaces and send the commands needed by SFC pipe
//! \param [in] pRenderData
//! Pointer to Vebox Render data
//! \param [in,out] pCmdBuffer
//! Pointer to command buffer
//! \return MOS_STATUS_SUCCESS if successful, otherwise failed
//!
MOS_STATUS SendSfcCmd(
PVPHAL_VEBOX_RENDER_DATA pRenderData,
PMOS_COMMAND_BUFFER pCmdBuffer) { return MOS_STATUS_SUCCESS;}
};
#endif
#endif // __VPHAL_RENDER_SFC_BASE_H__