IMX8QM DPU

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

IMX8QM DPU

777 次查看
JoRadio
Contributor II

In the DPU driver, there is the following code in kernel/kernel-source/drivers/gpu/drm/imx/dpu/dpu-plane.c:944

static const struct drm_plane_helper_funcs dpu_plane_helper_funcs = {
	.prepare_fb = drm_gem_fb_prepare_fb,
	.atomic_check = dpu_plane_atomic_check,
	.atomic_update = dpu_plane_atomic_update,
	// no .atomic_async_check
	// no .atomic_async_update
};

Up to the latest imx-linux code repository, I found that .atomic_async_check and .atomic_async_update are still missing in the code, which causes all drm-plane commits to always be synchronous. As a result, in user space, after Weston starts, all drm-planes except the primary-plane cannot be used. Does NXP officially provide patches implementing .atomic_async_check and .atomic_async_update? If these two functions cannot be implemented due to hardware limitations, please let me know.

0 项奖励
回复
1 回复

696 次查看
Zhiming_Liu
NXP TechSupport
NXP TechSupport

Hi @JoRadio 

The DPU doesn't support such feature.

atomic_async_update
An async update will happen on legacy cursor updates. 

Drivers should set this function pointer to perform asynchronous updates of planes, that is, jump ahead of the currently queued state and update the plane. Here async means “not vblank synchronized”.



Best Regards,
Zhiming

0 项奖励
回复
%3CLINGO-SUB%20id%3D%22lingo-sub-2292980%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3EIMX8QM%20DPU%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2292980%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%3CSPAN%3E%E5%9C%A8%20DPU%20%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%E4%B8%AD%EF%BC%8Ckernel%2Fkernel-source%2Fdrivers%2Fgpu%2Fdrm%2Fimx%2Fdpu%2Fdpu-plane.c%3A944%20%E4%B8%AD%E6%9C%89%E4%BB%A5%E4%B8%8B%E4%BB%A3%E7%A0%81%3C%2FSPAN%3E%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-c%22%3E%3CCODE%20translate%3D%22no%22%3Estatic%20const%20struct%20drm_plane_helper_funcs%20dpu_plane_helper_funcs%20%3D%20%7B%0A%09.prepare_fb%20%3D%20drm_gem_fb_prepare_fb%2C%0A%09.atomic_check%20%3D%20dpu_plane_atomic_check%2C%0A%09.atomic_update%20%3D%20dpu_plane_atomic_update%2C%0A%09%2F%2F%20no%20.atomic_async_check%0A%09%2F%2F%20no%20.atomic_async_update%0A%7D%3B%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3E%3CSPAN%3E%E5%9C%A8%E6%9C%80%E6%96%B0%E7%9A%84%20imx-linux%20%E4%BB%A3%E7%A0%81%3CA%20href%3D%22https%3A%2F%2Fgithub.com%2Fnxp-imx%2Flinux-imx%22%20target%3D%22_self%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%3E%E5%BA%93%E4%B8%AD%3C%2FA%3E%EF%BC%8C%E6%88%91%E5%8F%91%E7%8E%B0%20.atomic_async_check%E5%92%8C%20.atomic_async_update%E7%9A%84%E4%BB%A3%E7%A0%81%E4%BB%8D%E7%84%B6%E7%BC%BA%E5%A4%B1%EF%BC%8C%E8%BF%99%E5%AF%BC%E8%87%B4%E6%89%80%E6%9C%89%20drm-plane%20%E6%8F%90%E4%BA%A4%E6%80%BB%E6%98%AF%E5%90%8C%E6%AD%A5%E7%9A%84%E3%80%82%E5%9B%A0%E6%AD%A4%EF%BC%8C%E5%9C%A8%E7%94%A8%E6%88%B7%E7%A9%BA%E9%97%B4%E4%B8%AD%EF%BC%8CWeston%20%E5%90%AF%E5%8A%A8%E5%90%8E%EF%BC%8C%E9%99%A4%E4%B8%BB%E5%B9%B3%E9%9D%A2%E5%A4%96%E7%9A%84%E6%89%80%E6%9C%89%20drm%20%E5%B9%B3%E9%9D%A2%E9%83%BD%E6%97%A0%E6%B3%95%E4%BD%BF%E7%94%A8%E3%80%82%E6%81%A9%E6%99%BA%E6%B5%A6%E6%98%AF%E5%90%A6%E6%AD%A3%E5%BC%8F%E6%8F%90%E4%BE%9B%E5%AE%9E%E7%8E%B0%20.atomic_async_check%20%E7%9A%84%E8%A1%A5%E4%B8%81%EF%BC%9F%E5%92%8C%20.atomic_async_update%20%E5%87%BD%E6%95%B0%EF%BC%9F%E5%A6%82%E6%9E%9C%E7%94%B1%E4%BA%8E%E7%A1%AC%E4%BB%B6%E9%99%90%E5%88%B6%E6%97%A0%E6%B3%95%E5%AE%9E%E7%8E%B0%E8%BF%99%E4%B8%A4%E4%B8%AA%E5%87%BD%E6%95%B0%EF%BC%8C%E8%AF%B7%E5%91%8A%E8%AF%89%E6%88%91%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2294773%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20IMX8QM%20DPU%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2294773%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E4%BD%A0%E5%A5%BD%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F242235%22%20target%3D%22_blank%22%3E%40%E4%B9%94-%E6%8B%89%E8%BF%AA%E5%A5%A5%3C%2FA%3E%20%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FP%3E%0A%3CP%3EDPU%20%E4%B8%8D%E6%94%AF%E6%8C%81%E8%AF%A5%E5%8A%9F%E8%83%BD%E3%80%82%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%20translate%3D%22no%22%3Eatomic_async_update%0AAn%20async%20update%20will%20happen%20on%20legacy%20cursor%20updates.%20%0A%0ADrivers%20should%20set%20this%20function%20pointer%20to%20perform%20asynchronous%20updates%20of%20planes%2C%20that%20is%2C%20jump%20ahead%20of%20the%20currently%20queued%20state%20and%20update%20the%20plane.%20Here%20async%20means%20%E2%80%9Cnot%20vblank%20synchronized%E2%80%9D.%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%E8%87%B4%E6%95%AC%EF%BC%8C%3CBR%20%2F%3EZhiming%3C%2FP%3E%3C%2FLINGO-BODY%3E