Skip to content

Commit

Permalink
[CP] Only Local to Staging Copy Use CPSmallLocalBar MemCopyCallbackImpl
Browse files Browse the repository at this point in the history
Only Local to Staging Copy Use CPSmallLocalBar MemCopyCallbackImpl.
  • Loading branch information
sanjin24 authored and intel-mediadev committed Aug 20, 2024
1 parent 1e2abe2 commit ce6e9ac
Show file tree
Hide file tree
Showing 5 changed files with 19 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -230,17 +230,11 @@ MOS_STATUS MediaCopyState_Xe_Hpm::MediaRenderCopy(PMOS_RESOURCE src, PMOS_RESOUR
MOS_STATUS MediaCopyState_Xe_Hpm::PreCheckCpCopy(
MCPY_STATE_PARAMS src, MCPY_STATE_PARAMS dest, MCPY_METHOD preferMethod)
{
if ((preferMethod == MCPY_METHOD_POWERSAVING)
&& (src.CpMode == MCPY_CPMODE_CP)
&& (dest.CpMode == MCPY_CPMODE_CLEAR))
if (preferMethod == MCPY_METHOD_POWERSAVING &&
(src.CpMode == MCPY_CPMODE_CP || dest.CpMode == MCPY_CPMODE_CP))
{
//Allow blt engine to do copy when dst buffer is staging buffer and allocate in system mem, since protection off with blt engine.
//Current only used for small localbar cases.
m_allowCPBltCopy = true;
}
else
{
m_allowCPBltCopy = false;
MCPY_ASSERTMESSAGE("BLT Copy with CP is not supported");
return MOS_STATUS_PLATFORM_NOT_SUPPORTED;
}

return MOS_STATUS_SUCCESS;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,16 +71,11 @@ MOS_STATUS MediaCopyStateXe_Xpm_Base::Initialize( PMOS_INTERFACE osInterface,
MOS_STATUS MediaCopyStateXe_Xpm_Base::PreCheckCpCopy(
MCPY_STATE_PARAMS src, MCPY_STATE_PARAMS dest, MCPY_METHOD preferMethod)
{
if ((preferMethod == MCPY_METHOD_POWERSAVING)
&& (src.CpMode == MCPY_CPMODE_CP)
&& (dest.CpMode == MCPY_CPMODE_CLEAR))
if (preferMethod == MCPY_METHOD_POWERSAVING &&
(src.CpMode == MCPY_CPMODE_CP || dest.CpMode == MCPY_CPMODE_CP))
{
//Allow blt engine to do copy when dst buffer is staging buffer and allocate in system mem, since protection off with blt engine.
m_allowCPBltCopy = true;
}
else
{
m_allowCPBltCopy = false;
MCPY_ASSERTMESSAGE("BLT Copy with CP is not supported");
return MOS_STATUS_PLATFORM_NOT_SUPPORTED;
}

return MOS_STATUS_SUCCESS;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,8 @@ MOS_STATUS MediaCopyStateXe_Xpm_Plus::CapabilityCheck(
// common policy check
// legal check
// Blt engine does not support protection, allow the copy if dst is staging buffer in system mem
if (mcpySrc.CpMode == MCPY_CPMODE_CP && mcpyDst.CpMode == MCPY_CPMODE_CLEAR && !m_allowCPBltCopy)
if (preferMethod == MCPY_METHOD_POWERSAVING &&
(mcpySrc.CpMode == MCPY_CPMODE_CP || mcpyDst.CpMode == MCPY_CPMODE_CP))
{
MCPY_ASSERTMESSAGE("illegal usage");
return MOS_STATUS_INVALID_PARAMETER;
Expand Down
10 changes: 9 additions & 1 deletion media_softlet/agnostic/common/shared/mediacopy/media_copy.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,8 @@ MOS_STATUS MediaCopyBaseState::CapabilityCheck(
// common policy check
// legal check
// Blt engine does not support protection, allow the copy if dst is staging buffer in system mem
if (preferMethod == MCPY_METHOD_POWERSAVING && mcpySrc.CpMode == MCPY_CPMODE_CP && mcpyDst.CpMode == MCPY_CPMODE_CLEAR && !m_allowCPBltCopy)
if (preferMethod == MCPY_METHOD_POWERSAVING &&
(mcpySrc.CpMode == MCPY_CPMODE_CP || mcpyDst.CpMode == MCPY_CPMODE_CP))
{
MCPY_ASSERTMESSAGE("illegal usage");
return MOS_STATUS_INVALID_PARAMETER;
Expand Down Expand Up @@ -182,6 +183,13 @@ MOS_STATUS MediaCopyBaseState::CapabilityCheck(
MOS_STATUS MediaCopyBaseState::PreCheckCpCopy(
MCPY_STATE_PARAMS src, MCPY_STATE_PARAMS dest, MCPY_METHOD preferMethod)
{
if (preferMethod == MCPY_METHOD_POWERSAVING &&
(src.CpMode == MCPY_CPMODE_CP || dest.CpMode == MCPY_CPMODE_CP))
{
MCPY_ASSERTMESSAGE("BLT Copy with CP is not supported");
return MOS_STATUS_PLATFORM_NOT_SUPPORTED;
}

return MOS_STATUS_SUCCESS;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -295,7 +295,6 @@ class MediaCopyBaseState

public:
PMOS_INTERFACE m_osInterface = nullptr;
bool m_allowCPBltCopy = false; // allow cp call media copy only for output clear cases.

protected:
PMOS_MUTEX m_inUseGPUMutex = nullptr; // Mutex for in-use GPU context
Expand Down

0 comments on commit ce6e9ac

Please sign in to comment.