| /* |
| * Copyright (c) 2019-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 hal_oca_interface.cpp |
| //! \brief Implementation of functions for Hal OCA Interface |
| //! \details Implementation of functions for Hal OCA Interface |
| //! |
| |
| #include "stdint.h" |
| #include "mos_os.h" |
| #include "hal_oca_interface.h" |
| #include "mhw_mmio.h" |
| |
| /****************************************************************************************************/ |
| /* HalOcaInterface */ |
| /****************************************************************************************************/ |
| |
| //! |
| //! \brief Oca operation which should be called at the beginning of 1st level batch buffer start. |
| //! \param [in/out] cmdBuffer |
| //! Command buffer for current BB. hOcaBuf in cmdBuffer will be updated. |
| //! \param [in] mosContext |
| //! Reference to MOS_CONTEXT. |
| //! \param [in] gpuContextHandle |
| //! Gpu context handle |
| //! \param [in] mhwMiInterface |
| //! Reference to MhwMiInterface. |
| //! \param [in] mmioRegisters |
| //! mmio registers for current engine. |
| //! \param [in] offsetOf1stLevelBB |
| //! Offset for current BB in cmdBuffer. |
| //! \param [in] bUseSizeOfCmdBuf |
| //! If true, use size of cmdBuffer for batch buffer, else use sizeOf1stLevelBB. |
| //! \param [in] sizeOf1stLevelBB |
| //! Size of BB. Ignore if bUseSizeOfResource == true. |
| //! \return void |
| //! No return value. Handle all exception inside the function. |
| //! |
| void HalOcaInterface::On1stLevelBBStart(MOS_COMMAND_BUFFER &cmdBuffer, MOS_CONTEXT &mosContext, |
| uint32_t gpuContextHandle, MhwMiInterface &mhwMiInterface, MHW_MI_MMIOREGISTERS &mmioRegisters, |
| uint32_t offsetOf1stLevelBB, bool bUseSizeOfCmdBuf, uint32_t sizeOf1stLevelBB) |
| { |
| } |
| |
| //! |
| //! \brief Oca operation which should be called at the beginning of 1st level batch buffer start. |
| //! \param [in/out] cmdBuffer |
| //! Command buffer for current BB. hOcaBuf in cmdBuffer will be updated. |
| //! \param [in] mosContext |
| //! Reference to MOS_CONTEXT. |
| //! \param [in] gpuContextHandle |
| //! Gpu context handle |
| //! \param [in] mhwMiInterface |
| //! Reference to MhwMiInterface. |
| //! \param [in] mmioRegisters |
| //! mmio registers for current engine. |
| //! \param [in] offsetOf1stLevelBB |
| //! Offset for current BB in cmdBuffer. |
| //! \param [in] bUseSizeOfCmdBuf |
| //! If true, use size of cmdBuffer for batch buffer, else use sizeOf1stLevelBB. |
| //! \param [in] sizeOf1stLevelBB |
| //! Size of BB. Ignore if bUseSizeOfResource == true. |
| //! \return void |
| //! No return value. Handle all exception inside the function. |
| //! |
| void HalOcaInterface::On1stLevelBBStart(MOS_COMMAND_BUFFER &cmdBuffer, MOS_CONTEXT &mosContext, |
| uint32_t gpuContextHandle, MhwMiInterface &mhwMiInterface, MmioRegistersMfx &mmioRegisters, |
| uint32_t offsetOf1stLevelBB, bool bUseSizeOfCmdBuf, uint32_t sizeOf1stLevelBB) |
| { |
| } |
| |
| //! |
| //! \brief Oca operation which should be called before adding batch buffer end command for 1st |
| //! level batch buffer. |
| //! \param [in/out] cmdBuffer |
| //! Command buffer for current BB. hOcaBuf in cmdBuffer will be updated. |
| //! \param [in] osInterface |
| //! Reference to MOS_INTERFACE. |
| //! \return void |
| //! No return value. Handle all exception inside the function. |
| //! |
| void HalOcaInterface::On1stLevelBBEnd(MOS_COMMAND_BUFFER &cmdBuffer, MOS_INTERFACE &osInterface) |
| { |
| } |
| |
| //! |
| //! \brief Oca operation which should be called before sending start sub level batch buffer command. |
| //! \param [in] cmdBuffer |
| //! Command buffer for current BB. |
| //! \param [in] mosContext |
| //! Reference to MOS_CONTEXT. |
| //! \param [in] pMosResource |
| //! Pointer to the MOS_RESOURCE. |
| //! \param [in] offsetOfSubLevelBB |
| //! Offset for current BB in pMosResource. |
| //! \param [in] bUseSizeOfResource |
| //! If true, use size of pMosResource for batch buffer, else use sizeOfIndirectState. |
| //! \param [in] sizeOfSubLevelBB |
| //! Size of BB. Ignore if bUseSizeOfResource == true. |
| //! \return void |
| //! No return value. Handle all exception inside the function. |
| //! |
| void HalOcaInterface::OnSubLevelBBStart(MOS_COMMAND_BUFFER &cmdBuffer, MOS_CONTEXT &mosContext, void *pMosResource, uint32_t offsetOfSubLevelBB, bool bUseSizeOfResource, uint32_t sizeOfSubLevelBB) |
| { |
| } |
| |
| //! |
| //! \brief Oca operation which should be called when indirect states being added. |
| //! \param [in] cmdBuffer |
| //! Command buffer for current BB. |
| //! \param [in] mosContext |
| //! Reference to MOS_CONTEXT. |
| //! \param [in] pMosResource |
| //! Pointer to the MOS_RESOURCE. |
| //! \param [in] offsetOfIndirectState |
| //! Offset for current state in pMosResource. |
| //! \param [in] bUseSizeOfResource |
| //! If true, use size of pMosResource for indirect state, else use sizeOfIndirectState. |
| //! \param [in] sizeOfIndirectState |
| //! Size of indirect state. Ignore if bUseSizeOfResource == true. |
| //! \return void |
| //! No return value. Handle all exception inside the function. |
| //! |
| void HalOcaInterface::OnIndirectState(MOS_COMMAND_BUFFER &cmdBuffer, MOS_CONTEXT &mosContext, void *pMosResource, uint32_t offsetOfIndirectState, bool bUseSizeOfResource, uint32_t sizeOfIndirectState) |
| { |
| } |
| |
| //! |
| //! \brief Oca operation which should be called before adding dispatch states, |
| //! e.g. VEB_DI_IECP_STATE and MEDIA_OBJECT_WALKER. |
| //! \param [in] cmdBuffer |
| //! Command buffer for current BB. |
| //! \param [in] mosContext |
| //! Reference to MOS_CONTEXT. |
| //! \param [in] mhwMiInterface |
| //! Reference to MhwMiInterface. |
| //! \param [in] mmioRegisters |
| //! mmio registers for current engine. |
| //! \return void |
| //! No return value. Handle all exception inside the function. |
| //! |
| void HalOcaInterface::OnDispatch(MOS_COMMAND_BUFFER &cmdBuffer, MOS_CONTEXT &mosContext, MhwMiInterface &mhwMiInterface, MHW_MI_MMIOREGISTERS &mmioRegisters) |
| { |
| } |
| |
| //! |
| //! \brief Add string to oca log section |
| //! \param [in] cmdBuffer |
| //! Command buffer for current BB. |
| //! \param [in] mosContext |
| //! Reference to MOS_CONTEXT. |
| //! \param [in] str |
| //! string to be added. |
| //! \param [in] maxCount |
| //! size of the buffer pointed by str. |
| //! \return void |
| //! No return value. Handle all exception inside the function. |
| //! |
| void HalOcaInterface::TraceMessage(MOS_COMMAND_BUFFER &cmdBuffer, MOS_CONTEXT &mosContext, const char *str, uint32_t maxCount) |
| { |
| } |
| |
| //! |
| //! \brief Add vp kernel info to oca log section. |
| //! \param [in] cmdBuffer |
| //! Command buffer for current BB. |
| //! \param [in] osInterface |
| //! Reference to MOS_INTERFACE. |
| //! \param [in] res |
| //! Reference to MOS_RESOURCE. |
| //! \param [in] hwCmdType |
| //! Hw command type. |
| //! \param [in] locationInCmd |
| //! Location in command. |
| //! \param [in] offsetInRes |
| //! Offset in resource. |
| //! \return void |
| //! No return value. Handle all exception inside the function. |
| //! |
| void HalOcaInterface::DumpResourceInfo(MOS_COMMAND_BUFFER &cmdBuffer, MOS_INTERFACE &osInterface, MOS_RESOURCE &res, MOS_HW_COMMAND hwCmdType, uint32_t locationInCmd, uint32_t offsetInRes) |
| { |
| } |
| |
| //! |
| //! \brief Add vp kernel info to oca log section. |
| //! \param [in] cmdBuffer |
| //! Command buffer for current BB. |
| //! \param [in] mosContext |
| //! Reference to MOS_CONTEXT. |
| //! \param [in] vpKernelID |
| //! Value of enum VpKernelID. |
| //! \param [in] fcKernelCount |
| //! If vpKernelID == kernelCombinedFc, fcKernelCount is the kernel count for fc, otherwise, it's not used. |
| //! \param [in] fcKernelList |
| //! If vpKernelID == kernelCombinedFc, fcKernelList is the kernel list for fc, otherwise, it's not used. |
| //! \return void |
| //! No return value. Handle all exception inside the function. |
| //! |
| void HalOcaInterface::DumpVpKernelInfo(MOS_COMMAND_BUFFER &cmdBuffer, MOS_CONTEXT &mosContext, int vpKernelID, int fcKernelCount, int *fcKernelList) |
| { |
| } |
| |
| //! |
| //! \brief Add vphal parameters to oca log section. |
| //! \param [in] mosContext |
| //! Reference to MOS_CONTEXT. |
| //! \param [in] pVphalDumper |
| //! Pointer to vphal dumper object. |
| //! \return void |
| //! No return value. Handle all exception inside the function. |
| //! |
| void HalOcaInterface::DumpVphalParam(MOS_COMMAND_BUFFER &cmdBuffer, MOS_CONTEXT &mosContext, void *pVphalDumper) |
| { |
| } |
| |
| void HalOcaInterface::DumpCpParam(MosOcaInterface &ocaInterface, MOS_OCA_BUFFER_HANDLE &hOcaBuf, PMOS_CONTEXT mosCtx, void *pCpDumper) |
| { |
| } |
| |
| void HalOcaInterface::OnOcaError(PMOS_CONTEXT mosContext, MOS_STATUS status, const char *functionName, uint32_t lineNumber) |
| { |
| } |
| |
| /****************************************************************************************************/ |
| /* Private functions to ensure class singleton. */ |
| /****************************************************************************************************/ |
| HalOcaInterface::HalOcaInterface() |
| { |
| } |
| |
| HalOcaInterface::HalOcaInterface(HalOcaInterface &) |
| { |
| } |
| |
| HalOcaInterface& HalOcaInterface::operator= (HalOcaInterface &) |
| { |
| return *this; |
| } |