From 47bae3c809c9f5b11793b76b5edfd7704adb4080 Mon Sep 17 00:00:00 2001 From: Chen_Ke Date: Fri, 12 Jul 2024 11:42:04 +0800 Subject: [PATCH] [VP] Refactor for build issue Refactor for build issue: Avoid storing the address of local variable --- media_common/agnostic/common/hw/mhw_render.h | 1 + media_common/agnostic/common/hw/mhw_state_heap.h | 2 -- .../agnostic/common/hw/mhw_render_cmdpar.h | 1 + .../shared/packet/media_render_cmd_packet.cpp | 4 ++-- .../shared/packet/media_render_cmd_packet.h | 4 ++-- .../common/vp/hal/packet/vp_render_kernel_obj.cpp | 15 +++++---------- .../common/vp/hal/packet/vp_render_kernel_obj.h | 3 ++- 7 files changed, 13 insertions(+), 17 deletions(-) diff --git a/media_common/agnostic/common/hw/mhw_render.h b/media_common/agnostic/common/hw/mhw_render.h index b551ab1337..36c895c299 100644 --- a/media_common/agnostic/common/hw/mhw_render.h +++ b/media_common/agnostic/common/hw/mhw_render.h @@ -312,6 +312,7 @@ typedef struct _MHW_GPGPU_WALKER_PARAMS bool hasBarrier; PMHW_INLINE_DATA_PARAMS inlineDataParamBase; + uint32_t inlineDataParamSize; } MHW_GPGPU_WALKER_PARAMS, *PMHW_GPGPU_WALKER_PARAMS; diff --git a/media_common/agnostic/common/hw/mhw_state_heap.h b/media_common/agnostic/common/hw/mhw_state_heap.h index 49add60823..2f9afff0af 100644 --- a/media_common/agnostic/common/hw/mhw_state_heap.h +++ b/media_common/agnostic/common/hw/mhw_state_heap.h @@ -83,8 +83,6 @@ typedef struct MHW_BLOCK_MANAGER *PMHW_BLOCK_MANAGER; #define MHW_INVALID_SYNC_TAG 0xFFFFFFFF -#define MAX_INLINE_DATA_PARAMS 32 - enum MW_RENDER_ENGINE_ADDRESS_SHIFT { MHW_STATE_HEAP_SURFACE_STATE_SHIFT = 0 diff --git a/media_softlet/agnostic/common/hw/mhw_render_cmdpar.h b/media_softlet/agnostic/common/hw/mhw_render_cmdpar.h index 4c01d351ce..a8004bbbb9 100644 --- a/media_softlet/agnostic/common/hw/mhw_render_cmdpar.h +++ b/media_softlet/agnostic/common/hw/mhw_render_cmdpar.h @@ -65,6 +65,7 @@ struct MHW_HEAPS_RESOURCE { PMOS_RESOURCE presInstructionBuffer = nullptr; PMHW_INLINE_DATA_PARAMS inlineDataParamsBase = nullptr; + uint32_t inlineDataParamSize = 0; }; enum MHW_VFE_SLICE_DISABLE diff --git a/media_softlet/agnostic/common/shared/packet/media_render_cmd_packet.cpp b/media_softlet/agnostic/common/shared/packet/media_render_cmd_packet.cpp index dc9d6896ba..c18cbf4b4f 100644 --- a/media_softlet/agnostic/common/shared/packet/media_render_cmd_packet.cpp +++ b/media_softlet/agnostic/common/shared/packet/media_render_cmd_packet.cpp @@ -1264,8 +1264,8 @@ MOS_STATUS RenderCmdPacket::PrepareComputeWalkerParams(KERNEL_WALKER_PARAMS para gpgpuWalker.SLMSize = params.slmSize; gpgpuWalker.hasBarrier = params.hasBarrier; - gpgpuWalker.inlineDataParamBase = params.inlineDataParams; - + gpgpuWalker.inlineDataParamBase = params.inlineDataParamBase; + gpgpuWalker.inlineDataParamSize = params.inlineDataParamSize; return MOS_STATUS_SUCCESS; } diff --git a/media_softlet/agnostic/common/shared/packet/media_render_cmd_packet.h b/media_softlet/agnostic/common/shared/packet/media_render_cmd_packet.h index 89ac89d9a5..7e6b0aa8a1 100644 --- a/media_softlet/agnostic/common/shared/packet/media_render_cmd_packet.h +++ b/media_softlet/agnostic/common/shared/packet/media_render_cmd_packet.h @@ -120,8 +120,8 @@ typedef struct _KERNEL_WALKER_PARAMS bool hasBarrier; uint32_t slmSize; - MHW_INLINE_DATA_PARAMS inlineDataParams[MAX_INLINE_DATA_PARAMS]; - uint32_t inlineDataParamNum; + PMHW_INLINE_DATA_PARAMS inlineDataParamBase; + uint32_t inlineDataParamSize; }KERNEL_WALKER_PARAMS, * PKERNEL_WALKER_PARAMS; typedef struct _KERNEL_PACKET_RENDER_DATA diff --git a/media_softlet/agnostic/common/vp/hal/packet/vp_render_kernel_obj.cpp b/media_softlet/agnostic/common/vp/hal/packet/vp_render_kernel_obj.cpp index d6630cbd5f..dbd5b12d1d 100644 --- a/media_softlet/agnostic/common/vp/hal/packet/vp_render_kernel_obj.cpp +++ b/media_softlet/agnostic/common/vp/hal/packet/vp_render_kernel_obj.cpp @@ -740,7 +740,7 @@ void VpRenderKernelObj::DumpSurface(VP_SURFACE* pSurface, PCCHAR fileName) #endif } -MOS_STATUS VpRenderKernelObj::SetInlineDataParameter(KERNEL_WALKER_PARAMS &walkerParam, KRN_ARG args, RENDERHAL_INTERFACE *renderhal) +MOS_STATUS VpRenderKernelObj::SetInlineDataParameter(KRN_ARG args, RENDERHAL_INTERFACE *renderhal) { VP_FUNC_CALL(); MHW_INLINE_DATA_PARAMS inlineDataPar = {}; @@ -762,15 +762,10 @@ MOS_STATUS VpRenderKernelObj::SetInlineDataParameter(KERNEL_WALKER_PARAMS &walke { inlineDataPar.isPtrType = false; } - if (walkerParam.inlineDataParamNum < MAX_INLINE_DATA_PARAMS) - { - walkerParam.inlineDataParams[walkerParam.inlineDataParamNum] = inlineDataPar; - walkerParam.inlineDataParamNum++; - } - else - { - VP_RENDER_ASSERTMESSAGE("Exceed max inline data params!"); - } + + // walkerParam.inlineDataParamBase will add m_inlineDataParams.data() in each kernel + // walkerParam.inlineDataParamSize will add m_inlineDataParams.size() in each kernel + m_inlineDataParams.push_back(inlineDataPar); return MOS_STATUS_SUCCESS; } \ No newline at end of file diff --git a/media_softlet/agnostic/common/vp/hal/packet/vp_render_kernel_obj.h b/media_softlet/agnostic/common/vp/hal/packet/vp_render_kernel_obj.h index 8b9abf9dca..8d095730cd 100644 --- a/media_softlet/agnostic/common/vp/hal/packet/vp_render_kernel_obj.h +++ b/media_softlet/agnostic/common/vp/hal/packet/vp_render_kernel_obj.h @@ -537,7 +537,7 @@ class VpRenderKernelObj virtual MOS_STATUS InitRenderHalSurfaceCMF(MOS_SURFACE* src, PRENDERHAL_SURFACE renderHalSurface); - virtual MOS_STATUS SetInlineDataParameter(KERNEL_WALKER_PARAMS &walkerParam, KRN_ARG args, RENDERHAL_INTERFACE *renderhal); + virtual MOS_STATUS SetInlineDataParameter(KRN_ARG args, RENDERHAL_INTERFACE *renderhal); virtual MOS_STATUS UpdateBindlessSurfaceResource(SurfaceType surf, std::set surfStateOffset) { @@ -617,6 +617,7 @@ class VpRenderKernelObj bool m_useIndependentSamplerGroup = false; //true means multi kernels has their own stand alone sampler states group. only can be true when m_isAdvKernel is true. std::shared_ptr m_veboxItf = nullptr; + std ::vector m_inlineDataParams = {}; MEDIA_CLASS_DEFINE_END(vp__VpRenderKernelObj) };