Revert "[VP] Common: VPP Policy update and Render CMD packet refine"
This reverts commit fdd3d5d8.
diff --git a/media_driver/agnostic/common/vp/hal/vphal_render_vebox_base.cpp b/media_driver/agnostic/common/vp/hal/vphal_render_vebox_base.cpp
index a0ec85c..bde7eaa 100644
--- a/media_driver/agnostic/common/vp/hal/vphal_render_vebox_base.cpp
+++ b/media_driver/agnostic/common/vp/hal/vphal_render_vebox_base.cpp
@@ -346,7 +346,7 @@
pVeboxState->SetRenderDisableFlag( pSettings->disableDnDi == false ? false : true );
// Enable/Disable kernel Copy/Update for VEBox
- pVeboxState->dwKernelUpdate = pSettings->kernelUpdate;
+ pVeboxState->dwKernelUpdate = pSettings->kernelUpdate;
// Setup Same Sample Threshold for VEBOX
pVeboxState->iSameSampleThreshold = pSettings->sameSampleThreshold;
diff --git a/media_driver/media_driver_next/agnostic/common/shared/packet/media_render_cmd_packet.cpp b/media_driver/media_driver_next/agnostic/common/shared/packet/media_render_cmd_packet.cpp
index 1ae755c..63c08da 100644
--- a/media_driver/media_driver_next/agnostic/common/shared/packet/media_render_cmd_packet.cpp
+++ b/media_driver/media_driver_next/agnostic/common/shared/packet/media_render_cmd_packet.cpp
@@ -260,9 +260,6 @@
m_renderHal,
&m_bindingTable));
- // Reset a new Binding index from start
- m_bindingTableEntry = 0;
-
// load kernels before packet submit PipeLine to load kernel
return MOS_STATUS_SUCCESS;
@@ -355,6 +352,7 @@
uint32_t RenderCmdPacket::SetSurfaceForHwAccess(PMOS_SURFACE surface, PRENDERHAL_SURFACE_NEXT pRenderSurface, PRENDERHAL_SURFACE_STATE_PARAMS pSurfaceParams, bool bWrite)
{
+
PMOS_INTERFACE pOsInterface;
PRENDERHAL_SURFACE_STATE_ENTRY pSurfaceEntries[MHW_MAX_SURFACE_PLANES];
int32_t iSurfaceEntries;
@@ -425,133 +423,6 @@
return iBTEntry;
}
-uint32_t RenderCmdPacket::SetSurfaceForHwAccess(
- PMOS_SURFACE surface,
- PRENDERHAL_SURFACE_NEXT pRenderSurface,
- PRENDERHAL_SURFACE_STATE_PARAMS pSurfaceParams,
- uint32_t bindingIndex,
- bool bWrite)
-{
- PMOS_INTERFACE pOsInterface;
- PRENDERHAL_SURFACE_STATE_ENTRY pSurfaceEntries[MHW_MAX_SURFACE_PLANES];
- int32_t iSurfaceEntries;
- int32_t i;
- MOS_STATUS eStatus;
- RENDERHAL_SURFACE_STATE_PARAMS surfaceParams;
-
- // Initialize Variables
- eStatus = MOS_STATUS_SUCCESS;
- pOsInterface = m_osInterface;
-
- RENDER_PACKET_CHK_NULL_RETURN(pRenderSurface);
- RENDER_PACKET_CHK_NULL_RETURN(pOsInterface);
-
- // Register surfaces for rendering (GfxAddress/Allocation index)
- // Register resource
- RENDER_PACKET_CHK_STATUS_RETURN(m_osInterface->pfnRegisterResource(
- m_osInterface,
- &surface->OsResource,
- bWrite,
- true));
-
- if (!pSurfaceParams)
- {
- MOS_ZeroMemory(&surfaceParams, sizeof(RENDERHAL_SURFACE_STATE_PARAMS));
- pSurfaceParams = &surfaceParams;
- }
-
- pSurfaceParams->Type = m_renderHal->SurfaceTypeDefault;
-
- RENDER_PACKET_CHK_STATUS_RETURN(InitRenderHalSurface(
- *surface,
- pRenderSurface));
-
- if (bWrite)
- {
- pRenderSurface->SurfType = RENDERHAL_SURF_OUT_RENDERTARGET;
- }
-
- // Setup surface states-----------------------------------------------------
- RENDER_PACKET_CHK_STATUS_RETURN(m_renderHal->pfnSetupSurfaceState(
- m_renderHal,
- pRenderSurface,
- pSurfaceParams,
- &iSurfaceEntries, // for most cases, surface entry should only take 1 entry, need align with kerenl design
- pSurfaceEntries,
- nullptr));
-
- uint32_t iBTEntry = bindingIndex;
- // Bind surface states------------------------------------------------------
- for (i = 0; i < iSurfaceEntries; i++, iBTEntry++)
- {
- RENDER_PACKET_CHK_STATUS_RETURN(m_renderHal->pfnBindSurfaceState(
- m_renderHal,
- m_bindingTable,
- iBTEntry,
- pSurfaceEntries[i]));
-
- pRenderSurface->Index = iBTEntry;
- }
-
- return bindingIndex;
-}
-
-uint32_t RenderCmdPacket::SetBufferForHwAccess(PMOS_SURFACE buffer, PRENDERHAL_SURFACE_NEXT pRenderSurface, PRENDERHAL_SURFACE_STATE_PARAMS pSurfaceParams, bool bWrite)
-{
- RENDERHAL_SURFACE RenderHalSurface;
- RENDERHAL_SURFACE_STATE_PARAMS SurfaceParam;
- PRENDERHAL_SURFACE_STATE_ENTRY pSurfaceEntry;
-
- RENDER_PACKET_CHK_NULL_RETURN(m_osInterface);
- RENDER_PACKET_CHK_NULL_RETURN(m_osInterface->osCpInterface);
- RENDER_PACKET_CHK_NULL_RETURN(buffer);
-
- MOS_ZeroMemory(&RenderHalSurface, sizeof(RenderHalSurface));
-
- // not support CP yet
- if (m_osInterface->osCpInterface->IsHMEnabled())
- {
- RENDER_PACKET_ASSERTMESSAGE("ERROR, need to use VpHal_CommonSetBufferSurfaceForHwAccess if under CP HM.");
- }
-
- // Register surfaces for rendering (GfxAddress/Allocation index)
- // Register resource
- RENDER_PACKET_CHK_STATUS_RETURN(m_osInterface->pfnRegisterResource(
- m_osInterface,
- &buffer->OsResource,
- bWrite,
- true));
-
- // Setup Buffer surface-----------------------------------------------------
- if (pSurfaceParams == nullptr)
- {
- MOS_ZeroMemory(&SurfaceParam, sizeof(SurfaceParam));
- pSurfaceParams = &SurfaceParam;
- }
-
- RENDER_PACKET_CHK_STATUS_RETURN(InitRenderHalSurface(
- *buffer,
- &RenderHalSurface));
-
- RENDER_PACKET_CHK_STATUS_RETURN(m_renderHal->pfnSetupBufferSurfaceState(
- m_renderHal,
- &RenderHalSurface,
- pSurfaceParams,
- &pSurfaceEntry));
-
- // Bind surface state-------------------------------------------------------
- RENDER_PACKET_CHK_STATUS_RETURN(m_renderHal->pfnBindSurfaceState(
- m_renderHal,
- m_bindingTable,
- m_bindingTableEntry,
- pSurfaceEntry));
-
- pRenderSurface->Index = m_bindingTableEntry;
-
- m_bindingTableEntry++;
- return pRenderSurface->Index;
-}
-
uint32_t RenderCmdPacket::SetBufferForHwAccess(MOS_BUFFER buffer, PRENDERHAL_SURFACE_NEXT pRenderSurface, PRENDERHAL_SURFACE_STATE_PARAMS pSurfaceParams, bool bWrite)
{
RENDERHAL_SURFACE RenderHalSurface;
@@ -561,8 +432,6 @@
RENDER_PACKET_CHK_NULL_RETURN(m_osInterface);
RENDER_PACKET_CHK_NULL_RETURN(m_osInterface->osCpInterface);
- MOS_ZeroMemory(&RenderHalSurface, sizeof(RenderHalSurface));
-
// not support CP yet
if (m_osInterface->osCpInterface->IsHMEnabled())
{
@@ -822,17 +691,18 @@
{
pRenderSurface->OsSurface = surface;
}
-
return MOS_STATUS_SUCCESS;
}
-MOS_STATUS RenderCmdPacket::InitRenderHalBuffer(MOS_BUFFER surface, PRENDERHAL_SURFACE pRenderSurface)
+MOS_STATUS RenderCmdPacket::InitRenderHalBuffer(MOS_BUFFER pSurface, PRENDERHAL_SURFACE pRenderSurface)
{
RENDER_PACKET_CHK_NULL_RETURN(pRenderSurface);
- pRenderSurface->OsSurface.OsResource = surface.OsResource;
- pRenderSurface->OsSurface.dwWidth = surface.size;
+ pRenderSurface->OsSurface.OsResource = pSurface.OsResource;
+
+ pRenderSurface->OsSurface.OsResource = pSurface.OsResource;
+ pRenderSurface->OsSurface.dwWidth = pSurface.size;
pRenderSurface->OsSurface.dwHeight = 1;
- pRenderSurface->OsSurface.dwPitch = surface.size;
+ pRenderSurface->OsSurface.dwPitch = pSurface.size;
pRenderSurface->OsSurface.Format = Format_RAW;
return MOS_STATUS_SUCCESS;
diff --git a/media_driver/media_driver_next/agnostic/common/shared/packet/media_render_cmd_packet.h b/media_driver/media_driver_next/agnostic/common/shared/packet/media_render_cmd_packet.h
index 952da4d..0bc3c28 100644
--- a/media_driver/media_driver_next/agnostic/common/shared/packet/media_render_cmd_packet.h
+++ b/media_driver/media_driver_next/agnostic/common/shared/packet/media_render_cmd_packet.h
@@ -146,7 +146,6 @@
// 2 VEBOX KERNELS
VeboxSecureBlockCopy,
VeboxUpdateDnState,
- VeboxKernelMax,
// User Ptr
UserPtr,
@@ -194,20 +193,6 @@
PRENDERHAL_SURFACE_STATE_PARAMS pSurfaceParams,
bool bWrite);
- // Step3: RSS Setup with fixed binding index, return index insert in binding table
- virtual uint32_t SetSurfaceForHwAccess(
- PMOS_SURFACE surface,
- PRENDERHAL_SURFACE_NEXT pRenderSurface,
- PRENDERHAL_SURFACE_STATE_PARAMS pSurfaceParams,
- uint32_t bindingIndex,
- bool bWrite);
-
- virtual uint32_t SetBufferForHwAccess(
- PMOS_SURFACE buffer,
- PRENDERHAL_SURFACE_NEXT pRenderSurface,
- PRENDERHAL_SURFACE_STATE_PARAMS pSurfaceParams,
- bool bWrite);
-
virtual uint32_t SetBufferForHwAccess(
MOS_BUFFER buffer,
PRENDERHAL_SURFACE_NEXT pRenderSurface,
@@ -222,10 +207,7 @@
uint32_t maximumNumberofThreads = 0);
// Step6: different kernel have different media walker settings
- virtual MOS_STATUS SetupMediaWalker()
- {
- return MOS_STATUS_SUCCESS;
- }
+ virtual MOS_STATUS SetupMediaWalker() = 0;
MOS_STATUS PrepareMediaWalkerParams(KERNEL_WALKER_PARAMS params, MHW_WALKER_PARAMS& mediaWalker);
@@ -238,11 +220,11 @@
// for VPP usage, there are more data need to updated, create as virtual for future inplemention in VPP
virtual MOS_STATUS InitRenderHalSurface(
- MOS_SURFACE surface,
+ MOS_SURFACE pSurface,
PRENDERHAL_SURFACE pRenderSurface);
virtual MOS_STATUS InitRenderHalBuffer(
- MOS_BUFFER surface,
+ MOS_BUFFER pSurface,
PRENDERHAL_SURFACE pRenderSurface);
MOS_STATUS InitKernelEntry();
diff --git a/media_driver/media_driver_next/agnostic/common/vp/hal/bufferMgr/vp_allocator.cpp b/media_driver/media_driver_next/agnostic/common/vp/hal/bufferMgr/vp_allocator.cpp
index 0071d3f..0be2b08 100644
--- a/media_driver/media_driver_next/agnostic/common/vp/hal/bufferMgr/vp_allocator.cpp
+++ b/media_driver/media_driver_next/agnostic/common/vp/hal/bufferMgr/vp_allocator.cpp
@@ -434,8 +434,7 @@
{
// VP_SURFACE should always be allocated by interface in VpAllocator,
// which will ensure nullptr != surface->osSurface.
- VP_PUBLIC_NORMALMESSAGE("Surfaces already been deleted, return status!");
- return status;
+ VP_PUBLIC_CHK_STATUS_RETURN(MOS_STATUS_INVALID_PARAMETER);
}
if (surface->isResourceOwner)
diff --git a/media_driver/media_driver_next/agnostic/common/vp/hal/bufferMgr/vp_resource_manager.cpp b/media_driver/media_driver_next/agnostic/common/vp/hal/bufferMgr/vp_resource_manager.cpp
index 9fdba55..1217c54 100644
--- a/media_driver/media_driver_next/agnostic/common/vp/hal/bufferMgr/vp_resource_manager.cpp
+++ b/media_driver/media_driver_next/agnostic/common/vp/hal/bufferMgr/vp_resource_manager.cpp
@@ -319,7 +319,7 @@
{
surfSetting.Clean();
- if (caps.bVebox || caps.bDnKernelUpdate)
+ if (caps.bVebox)
{
// Create Vebox Resources
VP_PUBLIC_CHK_STATUS_RETURN(AssignVeboxResource(caps, inputSurface, outputSurface, pastSurface, futureSurface, resHint, surfSetting));
diff --git a/media_driver/media_driver_next/agnostic/common/vp/hal/feature_manager/hw_filter.cpp b/media_driver/media_driver_next/agnostic/common/vp/hal/feature_manager/hw_filter.cpp
index d009a44..18ecfc3 100644
--- a/media_driver/media_driver_next/agnostic/common/vp/hal/feature_manager/hw_filter.cpp
+++ b/media_driver/media_driver_next/agnostic/common/vp/hal/feature_manager/hw_filter.cpp
@@ -168,29 +168,5 @@
MOS_STATUS HwFilterRender::SetPacketParams(VpCmdPacket &packet)
{
- bool bRet = true;
-
- PVPHAL_SURFACE pSrcSurface = nullptr;
- PVPHAL_SURFACE pOutputSurface = nullptr;
-
- // Remove dependence on vphal surface later.
- VP_PUBLIC_CHK_NULL_RETURN(m_swFilterPipe);
- VP_SURFACE* inputSurf = m_swFilterPipe->GetSurface(true, 0);
- VP_SURFACE* outputSurf = m_swFilterPipe->GetSurface(false, 0);
- // previousSurf can be nullptr;
- VP_SURFACE* previousSurf = m_swFilterPipe->GetPastSurface(0);
- auto& surfSetting = m_swFilterPipe->GetSurfacesSetting();
- VP_PUBLIC_CHK_NULL_RETURN(inputSurf);
- VP_PUBLIC_CHK_NULL_RETURN(outputSurf);
- VP_PUBLIC_CHK_STATUS_RETURN(packet.PacketInit(inputSurf, outputSurf,
- previousSurf, surfSetting, m_vpExecuteCaps));
-
- for (auto handler : m_Params.Params)
- {
- if (handler)
- {
- bRet = handler->SetPacketParam(&packet) && bRet;
- }
- }
- return bRet ? MOS_STATUS_SUCCESS : MOS_STATUS_UNKNOWN;
+ return MOS_STATUS_SUCCESS;
}
diff --git a/media_driver/media_driver_next/agnostic/common/vp/hal/feature_manager/policy.cpp b/media_driver/media_driver_next/agnostic/common/vp/hal/feature_manager/policy.cpp
index a7df810..d75813b 100644
--- a/media_driver/media_driver_next/agnostic/common/vp/hal/feature_manager/policy.cpp
+++ b/media_driver/media_driver_next/agnostic/common/vp/hal/feature_manager/policy.cpp
@@ -1146,20 +1146,7 @@
auto it = m_RenderFeatureHandlers.begin();
for (; it != m_RenderFeatureHandlers.end(); ++it)
{
- if ((*(it->second)).IsFeatureEnabled(caps))
- {
- HwFilterParameter* pHwFilterParam = (*(it->second)).CreateHwFilterParam(caps, *params.executedFilters, m_vpInterface.GetHwInterface());
- if (pHwFilterParam)
- {
- params.Params.push_back(pHwFilterParam);
- }
- else
- {
- VP_PUBLIC_ASSERTMESSAGE("Create HW Filter Failed, Return Error");
- return MOS_STATUS_NO_SPACE;
- }
- }
}
}
@@ -1306,10 +1293,6 @@
VP_PUBLIC_CHK_STATUS_RETURN(params.executedFilters->AddSurface(surfOutput, false, 0));
}
}
- else if (featurePipe.GetSecureProcessFlag())
- {
- VP_PUBLIC_CHK_STATUS_RETURN(UpdateSecureExecuteResource(featurePipe, caps, params));
- }
else
{
VP_PUBLIC_ASSERTMESSAGE("Output is not empty, featurePipe.IsPrimaryEmpty() = %d", featurePipe.IsPrimaryEmpty());
@@ -1441,8 +1424,8 @@
return false;
}
- if (!m_vpInterface.GetHwInterface()->m_osInterface ||
- !m_vpInterface.GetHwInterface()->m_osInterface->osCpInterface)
+ if (!(m_vpInterface.GetHwInterface()->m_osInterface &&
+ m_vpInterface.GetHwInterface()->m_osInterface->osCpInterface))
{
VP_PUBLIC_ASSERTMESSAGE("No CP Interface Available");
return false;
@@ -1453,14 +1436,10 @@
// Place holder: DDI can also have conditions for Kernel resource using
if (!featurePipe.GetSecureProcessFlag() && caps.bVebox && cpInterface->IsHMEnabled())
{
+ featurePipe.SetSecureProcessFlag(true);
return true;
}
- if (featurePipe.GetSecureProcessFlag())
- {
- featurePipe.SetSecureProcessFlag(false);
- }
-
return false;
}
diff --git a/media_driver/media_driver_next/agnostic/common/vp/hal/feature_manager/policy.h b/media_driver/media_driver_next/agnostic/common/vp/hal/feature_manager/policy.h
index bdf5525..bcca409 100644
--- a/media_driver/media_driver_next/agnostic/common/vp/hal/feature_manager/policy.h
+++ b/media_driver/media_driver_next/agnostic/common/vp/hal/feature_manager/policy.h
@@ -115,10 +115,6 @@
MOS_STATUS AssignExecuteResource(VP_EXECUTE_CAPS& caps, HW_FILTER_PARAMS& params);
bool IsVeboxSecurePathEnabled(SwFilterPipe& subSwFilterPipe, VP_EXECUTE_CAPS& caps);
- virtual MOS_STATUS UpdateSecureExecuteResource(SwFilterPipe& featurePipe, VP_EXECUTE_CAPS& caps, HW_FILTER_PARAMS& params)
- {
- return MOS_STATUS_SUCCESS;
- }
std::map<FeatureType, PolicyFeatureHandler*> m_VeboxSfcFeatureHandlers;
std::map<FeatureType, PolicyFeatureHandler*> m_RenderFeatureHandlers;
diff --git a/media_driver/media_driver_next/agnostic/common/vp/hal/feature_manager/sw_filter.h b/media_driver/media_driver_next/agnostic/common/vp/hal/feature_manager/sw_filter.h
index e4a87f6..a615366 100644
--- a/media_driver/media_driver_next/agnostic/common/vp/hal/feature_manager/sw_filter.h
+++ b/media_driver/media_driver_next/agnostic/common/vp/hal/feature_manager/sw_filter.h
@@ -59,8 +59,7 @@
FeatureTypeSteOnVebox,
FeatureTypeAce = 0x700,
FeatureTypeAceOnVebox,
- FeatureTypeVeboxUpdate = 0x800,
- FeatureTypeVeboxUpdateOnRender,
+ FeatureTypeSecureVeboxUpdate = 0x800,
FeatureTypeTcc = 0x900,
FeatureTypeTccOnVebox,
FeatureTypeProcamp = 0xA00,
@@ -73,8 +72,6 @@
FeatureTypeFD = 0xD00,
FeatureTypeFLD = 0xE00,
FeatureTypeFB = 0xF00,
- FeatureTypeSecureCopy = 0x1000,
- FeatureTypeSecureCopyOnRender,
// ...
NumOfFeatureType
};
@@ -184,7 +181,7 @@
return MOS_STATUS_UNIMPLEMENTED;
}
- virtual MOS_STATUS Configure(SwFilter& swFilter, VP_EXECUTE_CAPS caps)
+ virtual MOS_STATUS Configure(SwFilter* swFilter, VP_EXECUTE_CAPS caps)
{
return MOS_STATUS_UNIMPLEMENTED;
}
diff --git a/media_driver/media_driver_next/agnostic/common/vp/hal/feature_manager/vp_kernelset.h b/media_driver/media_driver_next/agnostic/common/vp/hal/feature_manager/vp_kernelset.h
index 705715d..356df8e 100644
--- a/media_driver/media_driver_next/agnostic/common/vp/hal/feature_manager/vp_kernelset.h
+++ b/media_driver/media_driver_next/agnostic/common/vp/hal/feature_manager/vp_kernelset.h
@@ -44,14 +44,11 @@
struct RENDER_KERNEL_PARAMS
{
std::map<SurfaceType, VP_SURFACE*> *surfacesGroup;
- std::vector<uint32_t>* kernelId;
+ std::vector<KernelId>* kernelId;
};
typedef std::map<KernelId, VpRenderKernelObj*> KERNEL_OBJECTS;
-typedef std::map<KernelId, void*> KERNEL_CONFIGS;
-typedef std::map<KernelId, KERNEL_PACKET_RENDER_DATA> KERNEL_RENDER_DATA;
-
class VpKernelSet
{
public:
diff --git a/media_driver/media_driver_next/agnostic/common/vp/hal/features/vp_filter.h b/media_driver/media_driver_next/agnostic/common/vp/hal/features/vp_filter.h
index 815e560..a7c8fc0 100644
--- a/media_driver/media_driver_next/agnostic/common/vp/hal/features/vp_filter.h
+++ b/media_driver/media_driver_next/agnostic/common/vp/hal/features/vp_filter.h
@@ -245,6 +245,14 @@
uint32_t chromaDownSamplingHorizontalCoef; // Chroma DownSampling Horizontal Coeff
};
+struct _VEBOX_UPDATE_PARAMS
+{
+ bool bSecureCopyVeboxState;
+ bool bDnEnabled;
+ bool bAutoDetect;
+ VPHAL_NOISELEVEL NoiseLevel;
+};
+
struct _VEBOX_HDR_PARAMS
{
uint32_t uiMaxDisplayLum; //!< Maximum Display Luminance
@@ -277,14 +285,6 @@
using PVEBOX_PROCAMP_PARAMS = VEBOX_PROCAMP_PARAMS *;
using VEBOX_CSC_PARAMS = _VEBOX_CSC_PARAMS;
using PVEBOX_CSC_PARAMS = VEBOX_CSC_PARAMS *;
-
-struct _VEBOX_UPDATE_PARAMS
-{
- VEBOX_DN_PARAMS denoiseParams;
- VP_EXECUTE_CAPS veboxExecuteCaps;
- std::vector<uint32_t> kernelGroup;
-};
-
using VEBOX_UPDATE_PARAMS = _VEBOX_UPDATE_PARAMS;
using PVEBOX_UPDATE_PARAMS = VEBOX_UPDATE_PARAMS *;
using VEBOX_HDR_PARAMS = _VEBOX_HDR_PARAMS;
diff --git a/media_driver/media_driver_next/agnostic/common/vp/hal/packet/vp_cmd_packet.h b/media_driver/media_driver_next/agnostic/common/vp/hal/packet/vp_cmd_packet.h
index 3727c67..38ece2c 100644
--- a/media_driver/media_driver_next/agnostic/common/vp/hal/packet/vp_cmd_packet.h
+++ b/media_driver/media_driver_next/agnostic/common/vp/hal/packet/vp_cmd_packet.h
@@ -63,11 +63,6 @@
return MOS_STATUS_SUCCESS;
};
- virtual MOS_STATUS PrepareState()
- {
- return MOS_STATUS_SUCCESS;
- };
-
PacketType GetPacketId()
{
return m_PacketId;
@@ -101,10 +96,9 @@
PacketType m_PacketId = VP_PIPELINE_PACKET_UNINITIALIZED;
VP_PACKET_SHARED_CONTEXT* m_packetSharedContext = nullptr;
VP_SURFACE_SETTING m_surfSetting;
- bool m_packetResourcesdPrepared = false;
private:
- MediaScalability * m_scalability = nullptr;
+ MediaScalability *m_scalability = nullptr;
};
}
#endif // !__VP_CMD_PACKET_H__
diff --git a/media_driver/media_driver_next/agnostic/common/vp/hal/packet/vp_packet_pipe.cpp b/media_driver/media_driver_next/agnostic/common/vp/hal/packet/vp_packet_pipe.cpp
index 81cbdec..87286ce 100644
--- a/media_driver/media_driver_next/agnostic/common/vp/hal/packet/vp_packet_pipe.cpp
+++ b/media_driver/media_driver_next/agnostic/common/vp/hal/packet/vp_packet_pipe.cpp
@@ -220,13 +220,6 @@
MOS_STATUS PacketPipe::Execute(MediaStatusReport *statusReport, MediaScalability *&scalability, MediaContext *mediaContext, bool bEnableVirtualEngine, uint8_t numVebox)
{
- // PrePare Packet in case any packet resources shared
- for (std::vector<VpCmdPacket*>::reverse_iterator it = m_Pipe.rbegin(); it != m_Pipe.rend(); ++it)
- {
- VpCmdPacket* packet = *it;
- VP_PUBLIC_CHK_STATUS_RETURN(packet->PrepareState());
- }
-
for (std::vector<VpCmdPacket *>::iterator it = m_Pipe.begin(); it != m_Pipe.end(); ++it)
{
VpCmdPacket *pPacket = *it;
diff --git a/media_driver/media_driver_next/agnostic/common/vp/hal/packet/vp_render_cmd_packet.cpp b/media_driver/media_driver_next/agnostic/common/vp/hal/packet/vp_render_cmd_packet.cpp
index 7ac011a..3025a53 100644
--- a/media_driver/media_driver_next/agnostic/common/vp/hal/packet/vp_render_cmd_packet.cpp
+++ b/media_driver/media_driver_next/agnostic/common/vp/hal/packet/vp_render_cmd_packet.cpp
@@ -68,12 +68,6 @@
VP_RENDER_CHK_NULL_RETURN(m_hwInterface);
VP_RENDER_CHK_NULL_RETURN(m_hwInterface->m_vpPlatformInterface);
- if (m_packetResourcesdPrepared)
- {
- VP_RENDER_NORMALMESSAGE("Resource Prepared, skip this time");
- return MOS_STATUS_SUCCESS;
- }
-
m_PacketId = VP_PIPELINE_PACKET_RENDER;
//m_kernelCount = IDR_VP_TOTAL_NUM_KERNELS;
@@ -87,25 +81,16 @@
// for multi-kernel prepare together
for (auto it = m_kernelObjs.begin(); it != m_kernelObjs.end(); it++)
{
- void* kernelParams = nullptr;
- KernelId kernelExecuteID = it->first;
- m_kernel = it->second;
+ m_kernel = it->second;
VP_RENDER_CHK_NULL_RETURN(m_kernel);
- if (m_kernelConfigs.find(kernelExecuteID) != m_kernelConfigs.end())
- {
- kernelParams = m_kernelConfigs.find(kernelExecuteID)->second;
- }
-
- m_kernel->SetKernelConfigs(kernelParams);
-
// reset render Data for current kernel
MOS_ZeroMemory(&m_renderData, sizeof(m_renderData));
VP_RENDER_CHK_STATUS_RETURN(RenderEngineSetup());
- VP_RENDER_CHK_STATUS_RETURN(KernelStateSetup((KernelID)kernelExecuteID));
+ VP_RENDER_CHK_STATUS_RETURN(KernelStateSetup());
VP_RENDER_CHK_STATUS_RETURN(SetupSurfaceState()); // once Surface setup done, surface index should be created here
@@ -113,12 +98,8 @@
VP_RENDER_CHK_STATUS_RETURN(LoadKernel());
- m_kernelRenderData.insert(std::make_pair(kernelExecuteID, m_renderData));
-
}
- m_packetResourcesdPrepared = true;
-
return MOS_STATUS_SUCCESS;
}
@@ -132,17 +113,7 @@
// for multi-kernel submit in one BB for prepared kernels
for (auto it = m_kernelObjs.begin(); it != m_kernelObjs.end(); it++)
{
- KernelId kernelExecuteID = it->first;
- VpRenderKernelObj* kernel = it->second;
-
- VP_RENDER_CHK_NULL_RETURN(kernel);
-
- if (m_kernelRenderData.find(kernelExecuteID) != m_kernelRenderData.end())
- {
- m_renderData = m_kernelRenderData.find(kernelExecuteID)->second;
- }
-
- VP_RENDER_CHK_STATUS_RETURN(SetupMediaWalker(kernel));
+ VP_RENDER_CHK_STATUS_RETURN(SetupMediaWalker());
VP_RENDER_CHK_STATUS_RETURN(RenderCmdPacket::Submit(commandBuffer, packetPhase));
}
@@ -154,29 +125,9 @@
MOS_STATUS VpRenderCmdPacket::SetVeboxUpdateParams(PVEBOX_UPDATE_PARAMS params)
{
- VP_RENDER_CHK_NULL_RETURN(params);
-
- if (params->kernelGroup.empty())
- {
- VP_RENDER_ASSERTMESSAGE("No Kernel need to be processed");
- return MOS_STATUS_INVALID_PARAMETER;
- }
-
- for (auto it : params->kernelGroup)
- {
- uint32_t kernel = it;
- m_kernelId.push_back(kernel);
- m_kernelConfigs.insert(std::make_pair((KernelId)kernel, (void*)params));
- }
-
return MOS_STATUS_SUCCESS;
}
-MOS_STATUS VpRenderCmdPacket::SetSecureCopyParams(bool copyNeeded)
-{
- return MOS_STATUS();
-}
-
MOS_STATUS VpRenderCmdPacket::PacketInit(
VP_SURFACE* inputSurface,
VP_SURFACE* outputSurface,
@@ -190,15 +141,11 @@
VP_UNUSED(previousSurface);
m_PacketCaps = packetCaps;
-
- // Init packet surface params.
- m_surfSetting = surfSetting;
-
- m_packetResourcesdPrepared = false;
+ m_surfSetting = surfSetting;
return MOS_STATUS_SUCCESS;
}
-MOS_STATUS VpRenderCmdPacket::KernelStateSetup(KernelID kernelExecuteID)
+MOS_STATUS VpRenderCmdPacket::KernelStateSetup()
{
if (m_kernelId.empty())
{
@@ -218,7 +165,7 @@
MOS_ZeroMemory(&m_renderData.KernelEntry, sizeof(Kdll_CacheEntry));
// Store pointer to Kernel Parameter
- VP_RENDER_CHK_STATUS_RETURN(m_kernel->GetKernelSettings(m_renderData.KernelParam, kernelExecuteID));
+ VP_RENDER_CHK_STATUS_RETURN(m_kernel->GetKernelSettings(m_renderData.KernelParam));
VP_RENDER_CHK_STATUS_RETURN(m_kernel->GetKernelID(iKUID));
kernelSize = m_kernel->GetKernelSize();
kernelBinary = m_kernel->GetKernelBinary();
@@ -245,92 +192,52 @@
{
VP_RENDER_CHK_NULL_RETURN(m_kernel);
- VP_RENDER_CHK_STATUS_RETURN(m_kernel->SetProcessSurface(m_surfSetting.surfGroup));
-
- if (!m_kernel->GetKernelSurfaceConfig().empty())
+ for (auto it : m_kernel->GetProcessingSurfaces())
{
- for (auto surface = m_kernel->GetKernelSurfaceConfig().begin(); surface != m_kernel->GetKernelSurfaceConfig().end(); surface++)
+ auto surface = m_kernel->GetKernelSurfaceConfig().find(it);
+
+ if (surface != m_kernel->GetKernelSurfaceConfig().end())
{
- KERNEL_SURFACE2D_STATE_PARAM *kernelSurfaceParam = &surface->second;
- SurfaceType type = surface->first;
+ KERNEL_SURFACE2D_STATE_PARAM kernelSurfaceParam = surface->second;
RENDERHAL_SURFACE_NEXT renderHalSurface;
MOS_ZeroMemory(&renderHalSurface, sizeof(RENDERHAL_SURFACE_NEXT));
RENDERHAL_SURFACE_STATE_PARAMS renderSurfaceParams;
MOS_ZeroMemory(&renderSurfaceParams, sizeof(RENDERHAL_SURFACE_STATE_PARAMS));
- if (kernelSurfaceParam->surfaceOverwriteParams.updatedRenderSurfaces)
+ if (kernelSurfaceParam.surfaceOverwriteParams.updatedSurfaceParams)
{
- renderSurfaceParams = kernelSurfaceParam->surfaceOverwriteParams.renderSurfaceParams;
+ renderSurfaceParams = kernelSurfaceParam.surfaceOverwriteParams.renderSurfaceParams;
}
else
{
- renderSurfaceParams.bRenderTarget = (kernelSurfaceParam->renderTarget == true) ? 1 : 0;
+ renderSurfaceParams.bRenderTarget = (kernelSurfaceParam.renderTarget == true) ? 1 : 0;
renderSurfaceParams.Boundary = RENDERHAL_SS_BOUNDARY_ORIGINAL; // Add conditional in future for Surfaces out of range
renderSurfaceParams.bWidth16Align = false;
renderSurfaceParams.bWidthInDword_Y = true;
renderSurfaceParams.bWidthInDword_UV = true;
}
- VP_SURFACE* vpSurface = nullptr;
+ VP_SURFACE* vpSurface = m_surfSetting.surfGroup.find(it)->second;
- if (m_surfSetting.surfGroup.find(type) != m_surfSetting.surfGroup.end())
- {
- vpSurface = m_surfSetting.surfGroup.find(type)->second;
- }
- else
- {
- vpSurface = nullptr;
- }
+ VP_RENDER_CHK_NULL_RETURN(vpSurface);
- if (vpSurface)
- {
- // Prepare surfaces tracked in Resource manager
- VP_RENDER_CHK_STATUS_RETURN(InitRenderHalSurface(*vpSurface, renderHalSurface));
- }
- else
- {
- // State Heaps are not tracked in resource manager till now
- VP_RENDER_CHK_STATUS_RETURN(InitStateHeapSurface(type, renderHalSurface));
- }
+ VP_RENDER_CHK_STATUS_RETURN(InitRenderHalSurface(*vpSurface, renderHalSurface));
- VP_RENDER_CHK_STATUS_RETURN(UpdateRenderSurface(renderHalSurface, *kernelSurfaceParam));
+ VP_RENDER_CHK_STATUS_RETURN(UpdateRenderSurface(renderHalSurface, kernelSurfaceParam));
- uint32_t index = 0;
+ uint32_t index = SetSurfaceForHwAccess(
+ vpSurface->osSurface,
+ &renderHalSurface,
+ &renderSurfaceParams,
+ renderSurfaceParams.bRenderTarget);
- if (kernelSurfaceParam->surfaceOverwriteParams.bindedKernel)
- {
- index = SetSurfaceForHwAccess(
- &renderHalSurface.OsSurface,
- &renderHalSurface,
- &renderSurfaceParams,
- kernelSurfaceParam->surfaceOverwriteParams.bindIndex,
- renderSurfaceParams.bRenderTarget);
- }
- else
- {
- if ((kernelSurfaceParam->surfaceOverwriteParams.updatedSurfaceParams &&
- kernelSurfaceParam->surfaceOverwriteParams.bufferResource) ||
- (!kernelSurfaceParam->surfaceOverwriteParams.updatedSurfaceParams &&
- renderHalSurface.OsSurface.Type == MOS_GFXRES_BUFFER))
- {
- index = SetBufferForHwAccess(
- &renderHalSurface.OsSurface,
- &renderHalSurface,
- &renderSurfaceParams,
- renderSurfaceParams.bRenderTarget);
- }
- else
- {
- index = SetSurfaceForHwAccess(
- &renderHalSurface.OsSurface,
- &renderHalSurface,
- &renderSurfaceParams,
- renderSurfaceParams.bRenderTarget);
- }
- }
-
- VP_RENDER_CHK_STATUS_RETURN(m_kernel->UpdateCurbeBindingIndex(type, index));
+ VP_RENDER_CHK_STATUS_RETURN(m_kernel->UpdateCurbeBindingIndex(it, index));
+ }
+ else
+ {
+ VP_RENDER_ASSERTMESSAGE("Kernel Obj Issue: Didn't find correct kernel surface here, return error");
+ return MOS_STATUS_UNIMPLEMENTED;
}
}
@@ -363,23 +270,22 @@
return surf;
}
-MOS_STATUS VpRenderCmdPacket::SetupMediaWalker(VpRenderKernelObj* kernel)
+MOS_STATUS VpRenderCmdPacket::SetupMediaWalker()
{
- VP_RENDER_CHK_NULL_RETURN(kernel);
+ VP_RENDER_CHK_NULL_RETURN(m_kernel);
- VP_RENDER_CHK_STATUS_RETURN(kernel->GetWalkerSetting(m_renderData.walkerParam));
-
- MOS_ZeroMemory(&m_mediaWalkerParams, sizeof(MHW_WALKER_PARAMS));
- MOS_ZeroMemory(&m_gpgpuWalkerParams, sizeof(MHW_GPGPU_WALKER_PARAMS));
+ VP_RENDER_CHK_STATUS_RETURN(m_kernel->GetWalkerSetting(m_renderData.walkerParam));
switch (m_walkerType)
{
case WALKER_TYPE_MEDIA:
+ MOS_ZeroMemory(&m_mediaWalkerParams, sizeof(MHW_WALKER_PARAMS));
// Prepare Media Walker Params
VP_RENDER_CHK_STATUS_RETURN(PrepareMediaWalkerParams(m_renderData.walkerParam, m_mediaWalkerParams));
break;
case WALKER_TYPE_COMPUTE:
// Parepare Compute Walker Param
+ MOS_ZeroMemory(&m_gpgpuWalkerParams, sizeof(MHW_GPGPU_WALKER_PARAMS));
VP_RENDER_CHK_STATUS_RETURN(PrepareComputeWalkerParams(m_renderData.walkerParam, m_gpgpuWalkerParams));
break;
case WALKER_TYPE_DISABLED:
@@ -403,41 +309,6 @@
return MOS_STATUS_SUCCESS;
}
-MOS_STATUS VpRenderCmdPacket::InitStateHeapSurface(SurfaceType type, RENDERHAL_SURFACE& renderSurface)
-{
- MOS_STATUS eStatus = MOS_STATUS_SUCCESS;
-
- MOS_SURFACE mosSurface;
-
- MOS_ZeroMemory(&mosSurface, sizeof(MOS_SURFACE));
-
- // Check for Vebox Heap readiness
- const MHW_VEBOX_HEAP* pVeboxHeap = nullptr;
- VP_RENDER_CHK_NULL_RETURN(m_hwInterface);
- VP_RENDER_CHK_NULL_RETURN(m_hwInterface->m_veboxInterface);
-
- VP_RENDER_CHK_STATUS_RETURN(m_hwInterface->m_veboxInterface->GetVeboxHeapInfo(
- &pVeboxHeap));
- VP_RENDER_CHK_NULL_RETURN(pVeboxHeap);
-
- switch (type)
- {
- case SurfaceTypeVeboxStateHeap_Drv:
- mosSurface.OsResource = pVeboxHeap->DriverResource;
- break;
- case SurfaceTypeVeboxStateHeap_Knr:
- mosSurface.OsResource = pVeboxHeap->KernelResource;
- break;
- default:
- eStatus = MOS_STATUS_UNIMPLEMENTED;
- VP_RENDER_ASSERTMESSAGE("Not Inplenmented in driver now, return fail");
- break;
- }
-
- VP_RENDER_CHK_STATUS_RETURN(RenderCmdPacket::InitRenderHalSurface(mosSurface, &renderSurface));
-
- return eStatus;
-}
MOS_STATUS VpRenderCmdPacket::UpdateRenderSurface(RENDERHAL_SURFACE_NEXT& renderSurface, KERNEL_SURFACE2D_STATE_PARAM& kernelParams)
{
auto& overwriteParam = kernelParams.surfaceOverwriteParams;
@@ -445,9 +316,8 @@
{
if (overwriteParam.width && overwriteParam.height)
{
- renderSurface.OsSurface.dwWidth = overwriteParam.width;
+ renderSurface.OsSurface.dwWidth = overwriteParam.width;
renderSurface.OsSurface.dwHeight = overwriteParam.height;
- renderSurface.OsSurface.dwQPitch = overwriteParam.height;
}
renderSurface.OsSurface.dwPitch = overwriteParam.pitch != 0 ? overwriteParam.pitch : renderSurface.OsSurface.dwPitch;
diff --git a/media_driver/media_driver_next/agnostic/common/vp/hal/packet/vp_render_cmd_packet.h b/media_driver/media_driver_next/agnostic/common/vp/hal/packet/vp_render_cmd_packet.h
index 904f1c7..218f5bf 100644
--- a/media_driver/media_driver_next/agnostic/common/vp/hal/packet/vp_render_cmd_packet.h
+++ b/media_driver/media_driver_next/agnostic/common/vp/hal/packet/vp_render_cmd_packet.h
@@ -67,8 +67,6 @@
MOS_STATUS SetVeboxUpdateParams(PVEBOX_UPDATE_PARAMS params);
- MOS_STATUS SetSecureCopyParams(bool copyNeeded);
-
MOS_STATUS PacketInit(
VP_SURFACE* inputSurface,
VP_SURFACE* outputSurface,
@@ -77,7 +75,7 @@
VP_EXECUTE_CAPS packetCaps) override;
protected:
- MOS_STATUS KernelStateSetup(KernelID kernelExecuteID);
+ MOS_STATUS KernelStateSetup();
virtual MOS_STATUS SetupSurfaceState();
@@ -85,29 +83,23 @@
virtual VP_SURFACE* GetSurface(SurfaceType type);
- virtual MOS_STATUS SetupMediaWalker(VpRenderKernelObj * kernel);
+ virtual MOS_STATUS SetupMediaWalker() override;
MOS_STATUS InitRenderHalSurface(
VP_SURFACE &surface,
RENDERHAL_SURFACE &renderSurface);
- MOS_STATUS InitStateHeapSurface(
- SurfaceType type,
- RENDERHAL_SURFACE& renderSurface);
-
// comments here: Hight overwite params if needed
MOS_STATUS UpdateRenderSurface(RENDERHAL_SURFACE_NEXT &renderSurface, KERNEL_SURFACE2D_STATE_PARAM& kernelParams);
protected:
KERNEL_OBJECTS m_kernelObjs;
- KERNEL_CONFIGS m_kernelConfigs;
- KERNEL_RENDER_DATA m_kernelRenderData;
int32_t m_kernelIndex = 0;
Kdll_FilterEntry *m_filter = nullptr; // Kernel Filter (points to base of filter array)
bool m_firstFrame = true;
- std::vector<uint32_t> m_kernelId;
+ std::vector<KernelId> m_kernelId;
VpKernelSet *m_kernelSet = nullptr;
VpRenderKernelObj *m_kernel = nullptr; // processing kernel pointer
};
diff --git a/media_driver/media_driver_next/agnostic/common/vp/hal/packet/vp_render_kernel_obj.cpp b/media_driver/media_driver_next/agnostic/common/vp/hal/packet/vp_render_kernel_obj.cpp
index 8547a32..512096f 100644
--- a/media_driver/media_driver_next/agnostic/common/vp/hal/packet/vp_render_kernel_obj.cpp
+++ b/media_driver/media_driver_next/agnostic/common/vp/hal/packet/vp_render_kernel_obj.cpp
@@ -27,7 +27,7 @@
#include "vp_render_kernel_obj.h"
using namespace vp;
-const vp::MEDIA_OBJECT_KA2_INLINE_DATA g_cInit_MEDIA_VP_OBJECT_KA2_INLINE_DATA =
+extern const vp::MEDIA_OBJECT_KA2_INLINE_DATA g_cInit_MEDIA_VP_OBJECT_KA2_INLINE_DATA =
{
// DWORD 0
{
diff --git a/media_driver/media_driver_next/agnostic/common/vp/hal/packet/vp_render_kernel_obj.h b/media_driver/media_driver_next/agnostic/common/vp/hal/packet/vp_render_kernel_obj.h
index ba227c2..1c46967 100644
--- a/media_driver/media_driver_next/agnostic/common/vp/hal/packet/vp_render_kernel_obj.h
+++ b/media_driver/media_driver_next/agnostic/common/vp/hal/packet/vp_render_kernel_obj.h
@@ -283,21 +283,23 @@
} DW15;
};
+extern const MEDIA_OBJECT_KA2_INLINE_DATA g_cInit_MEDIA_VP_OBJECT_KA2_INLINE_DATA;
+
typedef struct _KERNEL_SURFACE2D_STATE_PARAM
{
struct {
- bool updatedSurfaceParams; // true if using included surface params
- MOS_FORMAT format; // MOS_FORMAT for processing surfaces
- uint32_t width;
- uint32_t height;
- uint32_t pitch;
- uint32_t surface_offset; // Offset to the origin of the surface, in bytes.
- MOS_TILE_TYPE tileType;
- bool bufferResource;
- bool bindedKernel;
- uint32_t bindIndex;
- bool updatedRenderSurfaces;
- RENDERHAL_SURFACE_STATE_PARAMS renderSurfaceParams; // default can be skip. for future usages, if surface configed by kernel, use it directlly
+ bool updatedSurfaceParams; // true if using included surface params
+ MOS_FORMAT format; //[IN] MOS_FORMAT
+ uint32_t width;
+ uint32_t height;
+ //uint32_t depth;
+ uint32_t pitch;
+ //uint16_t memory_object_control;
+ //uint32_t surface_x_offset; // Horizontal offset to the origin of the surface, in columns of pixels.
+ //uint32_t surface_y_offset; // Vertical offset to the origin of the surface, in rows of pixels.
+ uint32_t surface_offset; // Offset to the origin of the surface, in bytes.
+ MOS_TILE_TYPE tileType;
+ RENDERHAL_SURFACE_STATE_PARAMS renderSurfaceParams; // defaule can be skip. for future usages, if surface configed by kernel, use it directlly
} surfaceOverwriteParams;
bool renderTarget; // true for render target
uint32_t reserved[2]; // for future usage
@@ -309,6 +311,11 @@
VpRenderKernelObj(PVP_MHWINTERFACE hwInterface);
virtual ~VpRenderKernelObj() {};
+ virtual void SetKernelParams(RENDER_KERNEL_PARAMS& kernelParams)
+ {
+ m_kernelParams = &kernelParams;
+ }
+
// Kernel Specific, which will inplenment be each kernel
// GetCurbeState should be called after UpdateCurbeBindingIndex for all processed surfaces being called
virtual MOS_STATUS GetCurbeState(void*& curbe, uint32_t& curbeLength) = 0;
@@ -321,20 +328,14 @@
virtual MOS_STATUS GetWalkerSetting(KERNEL_WALKER_PARAMS& walkerParam) = 0;
- virtual MOS_STATUS SetKernelConfigs(void* params) = 0;
-
// Kernel Common configs
- virtual MOS_STATUS GetKernelSettings(RENDERHAL_KERNEL_PARAM &settsings, KernelID executeKernelID)
+ virtual MOS_STATUS GetKernelSettings(RENDERHAL_KERNEL_PARAM &settsings)
{
MOS_ZeroMemory(&settsings, sizeof(RENDERHAL_KERNEL_PARAM));
if (m_hwInterface && m_hwInterface->m_vpPlatformInterface)
{
- // adding when insert new kernels
- if (executeKernelID >= VeboxSecureBlockCopy && executeKernelID < VeboxKernelMax)
- {
- settsings = m_hwInterface->m_vpPlatformInterface->GetVeboxKernelSettings(executeKernelID - VeboxSecureBlockCopy);
- }
+ settsings = m_hwInterface->m_vpPlatformInterface->GetVeboxKernelSettings(m_kernelID);
return MOS_STATUS_SUCCESS;
}
else
@@ -404,10 +405,12 @@
m_kernelSize = size;
return MOS_STATUS_SUCCESS;
}
+protected:
virtual MOS_STATUS SetupSurfaceState() = 0;
protected:
+ RENDER_KERNEL_PARAMS *m_kernelParams = nullptr; // kernel input for processing params include kernel ID and process surface group
std::map<SurfaceType, VP_SURFACE*> *m_surfaceGroup = nullptr; // input surface process surface groups
PVP_MHWINTERFACE m_hwInterface = nullptr;
std::vector<SurfaceType> m_surfaces; // vector for processed surfaces, the order should match with Curbe surface order
@@ -421,6 +424,4 @@
//KERNEL_WALKER_PARAMS m_kernelWalkerParams = {}; // Kernel Walker Params
};
}
-
-extern const vp::MEDIA_OBJECT_KA2_INLINE_DATA g_cInit_MEDIA_VP_OBJECT_KA2_INLINE_DATA;
#endif // __VP_RENDER_KERNEL_OBJ_H__
diff --git a/media_driver/media_driver_next/agnostic/common/vp/hal/packet/vp_vebox_cmd_packet.cpp b/media_driver/media_driver_next/agnostic/common/vp/hal/packet/vp_vebox_cmd_packet.cpp
index 6f1594a..1553809 100644
--- a/media_driver/media_driver_next/agnostic/common/vp/hal/packet/vp_vebox_cmd_packet.cpp
+++ b/media_driver/media_driver_next/agnostic/common/vp/hal/packet/vp_vebox_cmd_packet.cpp
@@ -997,7 +997,7 @@
bool VpVeboxCmdPacket::UseKernelResource()
{
- return true;// false;
+ return false;
}
MOS_STATUS VpVeboxCmdPacket::InitVeboxSurfaceParams(
@@ -1616,36 +1616,6 @@
return eStatus;
}
-MOS_STATUS VpVeboxCmdPacket::Prepare()
-{
- VP_FUNC_CALL();
-
- MOS_STATUS eStatus = MOS_STATUS_SUCCESS;
-
- return eStatus;
-}
-
-MOS_STATUS VpVeboxCmdPacket::PrepareState()
-{
- VP_FUNC_CALL();
-
- MOS_STATUS eStatus = MOS_STATUS_SUCCESS;
-
- if (m_packetResourcesdPrepared)
- {
- VP_RENDER_NORMALMESSAGE("Resource Prepared, skip this time");
- return MOS_STATUS_SUCCESS;
- }
-
- VP_RENDER_CHK_STATUS_RETURN(SetupIndirectStates());
-
- VP_RENDER_CHK_STATUS_RETURN(UpdateVeboxStates());
-
- m_packetResourcesdPrepared = true;
-
- return eStatus;
-}
-
MOS_STATUS VpVeboxCmdPacket::PacketInit(
VP_SURFACE *inputSurface,
VP_SURFACE *outputSurface,
@@ -1656,7 +1626,6 @@
VP_FUNC_CALL();
VpVeboxRenderData *pRenderData = GetLastExecRenderData();
- m_packetResourcesdPrepared = false;
VP_RENDER_CHK_NULL_RETURN(pRenderData);
VP_RENDER_CHK_NULL_RETURN(inputSurface);
@@ -1727,6 +1696,9 @@
}
}
+ // Setup, Copy and Update VEBOX State
+ VP_RENDER_CHK_STATUS_RETURN(CopyAndUpdateVeboxState());
+
// Send vebox command
VP_RENDER_CHK_STATUS_RETURN(SendVeboxCmd(commandBuffer));
@@ -1767,6 +1739,34 @@
m_allocator->DestroyVpSurface(m_renderTarget);
}
+MOS_STATUS VpVeboxCmdPacket::CopyAndUpdateVeboxState()
+{
+ MOS_STATUS eStatus = MOS_STATUS_SUCCESS;
+
+ // Setup VEBOX State
+ VP_RENDER_CHK_STATUS_RETURN(SetupIndirectStates());
+
+ // Copy VEBOX State
+ VP_RENDER_CHK_STATUS_RETURN(CopyVeboxStates());
+
+ // Update VEBOX State
+ VP_RENDER_CHK_STATUS_RETURN(UpdateVeboxStates());
+
+ return eStatus;
+}
+
+
+//!
+//! \brief Vebox Copy Vebox state heap, intended for HM or IDM
+//! \details Copy Vebox state heap between different memory
+//! \return MOS_STATUS
+//! Return MOS_STATUS_SUCCESS if successful, otherwise failed
+//!
+MOS_STATUS VpVeboxCmdPacket::CopyVeboxStates()
+{
+ return MOS_STATUS_SUCCESS; // no need to copy, always use driver resource in clear memory
+}
+
//!
//! \brief Calculate offsets of statistics surface address based on the
//! functions which were enabled in the previous call,
@@ -1863,6 +1863,19 @@
return eStatus;
}
+//!
+//! \brief Vebox state heap update for auto mode features
+//! \details Update Vebox indirect states for auto mode features
+//! \param [in] pSrcSurface
+//! Pointer to input surface of Vebox
+//! \return MOS_STATUS
+//! Return MOS_STATUS_SUCCESS if successful, otherwise failed
+//!
+MOS_STATUS VpVeboxCmdPacket::UpdateVeboxStates()
+{
+ return MOS_STATUS_SUCCESS;
+}
+
MOS_STATUS VpVeboxCmdPacket::AddVeboxDndiState()
{
PMHW_VEBOX_INTERFACE pVeboxInterface = m_hwInterface->m_veboxInterface;;
@@ -2336,11 +2349,6 @@
return MOS_STATUS_SUCCESS;
}
-MOS_STATUS VpVeboxCmdPacket::UpdateVeboxStates()
-{
- return MOS_STATUS_SUCCESS;
-}
-
MOS_STATUS VpVeboxCmdPacket::InitSurfMemCacheControl(VP_EXECUTE_CAPS packetCaps)
{
MOS_HW_RESOURCE_DEF Usage = MOS_HW_RESOURCE_DEF_MAX;
diff --git a/media_driver/media_driver_next/agnostic/common/vp/hal/packet/vp_vebox_cmd_packet.h b/media_driver/media_driver_next/agnostic/common/vp/hal/packet/vp_vebox_cmd_packet.h
index 24e9f39..3e45603 100644
--- a/media_driver/media_driver_next/agnostic/common/vp/hal/packet/vp_vebox_cmd_packet.h
+++ b/media_driver/media_driver_next/agnostic/common/vp/hal/packet/vp_vebox_cmd_packet.h
@@ -321,9 +321,7 @@
virtual MOS_STATUS Destory() { return MOS_STATUS_SUCCESS; };
- virtual MOS_STATUS Prepare() override;
-
- virtual MOS_STATUS PrepareState() override;
+ virtual MOS_STATUS Prepare() override { return MOS_STATUS_SUCCESS; };
virtual MOS_STATUS AllocateExecRenderData()
{
@@ -736,6 +734,13 @@
VP_SURFACE_SETTING &surfSetting,
VP_EXECUTE_CAPS packetCaps) override;
+ //!
+ //! \brief Copy and update vebox state
+ //! \details Copy and update vebox state for input frame.
+ //! \return MOS_STATUS
+ //! Return MOS_STATUS_SUCCESS if successful, otherwise failed
+ //!
+ virtual MOS_STATUS CopyAndUpdateVeboxState();
//!
//! \brief Check whether the Vebox command parameters are correct
@@ -751,6 +756,24 @@
const MHW_VEBOX_DI_IECP_CMD_PARAMS &VeboxDiIecpCmdParams,
const VPHAL_VEBOX_SURFACE_STATE_CMD_PARAMS &VeboxSurfaceStateCmdParams);
+ //!
+ //! \brief Copy Vebox state heap
+ //! \details Call HW interface function,
+ //! use Secure_Block_Copy kernel,
+ //! copy Vebox state heap between different memory
+ //! \return MOS_STATUS
+ //! Return MOS_STATUS_SUCCESS if successful, otherwise failed
+ //!
+ virtual MOS_STATUS CopyVeboxStates();
+
+ //!
+ //! \brief Vebox state heap update for auto mode features
+ //! \details Update Vebox indirect states for auto mode features
+ //! \return MOS_STATUS
+ //! Return MOS_STATUS_SUCCESS if successful, otherwise failed
+ //!
+ virtual MOS_STATUS UpdateVeboxStates();
+
virtual MOS_STATUS QueryStatLayout(
VEBOX_STAT_QUERY_TYPE QueryType,
uint32_t* pQuery) {return MOS_STATUS_SUCCESS;};
@@ -790,15 +813,6 @@
//!
virtual MOS_STATUS VeboxSetPerfTagPaFormat();
- //!
- //! \brief Vebox state heap update for auto mode features
- //! \details Update Vebox indirect states for auto mode features
- //! \return MOS_STATUS
- //! Return MOS_STATUS_SUCCESS if successful, otherwise failed
- //!
- virtual MOS_STATUS UpdateVeboxStates();
-
-
protected:
//!
diff --git a/media_driver/media_driver_next/agnostic/gen12_tgllp/vp/hal/platform_interface/vp_platform_interface_g12_tgllp.cpp b/media_driver/media_driver_next/agnostic/gen12_tgllp/vp/hal/platform_interface/vp_platform_interface_g12_tgllp.cpp
index 83493be..a28ed7c 100644
--- a/media_driver/media_driver_next/agnostic/gen12_tgllp/vp/hal/platform_interface/vp_platform_interface_g12_tgllp.cpp
+++ b/media_driver/media_driver_next/agnostic/gen12_tgllp/vp/hal/platform_interface/vp_platform_interface_g12_tgllp.cpp
@@ -39,7 +39,7 @@
using namespace vp;
//Kernel Params ---------------------------------------------------------------
-extern const RENDERHAL_KERNEL_PARAM g_Vebox_KernelParam_m12[VEBOX_KERNEL_BASE_MAX_G12] =
+const RENDERHAL_KERNEL_PARAM g_Vebox_KernelParam_g12[VEBOX_KERNEL_BASE_MAX_G12] =
{
///* GRF_Count
// | BT_Count
@@ -136,11 +136,7 @@
MOS_ZeroMemory(&kernelParam, sizeof(RENDERHAL_KERNEL_PARAM));
if (iKDTIndex < VEBOX_KERNEL_BASE_MAX_G12)
{
- kernelParam = g_Vebox_KernelParam_m12[iKDTIndex];
- }
- else
- {
- VP_PUBLIC_ASSERTMESSAGE("not support in Vebox Kernels");
+ kernelParam = g_Vebox_KernelParam_g12[iKDTIndex];
}
return kernelParam;
}