IMX8QM DPU

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

IMX8QM DPU

767件の閲覧回数
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 返信

686件の閲覧回数
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%3EDPU%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90%E3%81%A7%E3%81%AF%E3%80%81kernel%2Fkernel-source%2Fdrivers%2Fgpu%2Fdrm%2Fimx%2Fdpu%2Fdpu-plane.c%3A944%E3%81%AB%E6%AC%A1%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%89%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%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%E6%9C%80%E6%96%B0%E3%81%AEimx-linux%E3%82%B3%E3%83%BC%E3%83%89%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%E3%83%AA%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA%3C%2FA%3E%E3%81%A7%E3%81%AF%E3%80%81.atomic_async_check%E3%81%8C%E8%A6%8B%E3%81%A4%E3%81%8B%E3%82%8A%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%E3%81%8A%E3%82%88%E3%81%B3.atomic_async_update%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AB%E3%81%AF%E3%81%BE%E3%81%A0%E6%AC%A0%E8%90%BD%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%81%9F%E3%82%81%E3%80%81%E3%81%99%E3%81%B9%E3%81%A6%E3%81%AE%20drm-plane%20%E3%82%B3%E3%83%9F%E3%83%83%E3%83%88%E3%81%8C%E5%B8%B8%E3%81%AB%E5%90%8C%E6%9C%9F%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82%E3%81%9D%E3%81%AE%E7%B5%90%E6%9E%9C%E3%80%81%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E7%A9%BA%E9%96%93%E3%81%A7%E3%81%AF%E3%80%81Weston%20%E3%81%AE%E8%B5%B7%E5%8B%95%E5%BE%8C%E3%80%81%E3%83%97%E3%83%A9%E3%82%A4%E3%83%9E%E3%83%AA%20%E3%83%97%E3%83%AC%E3%83%BC%E3%83%B3%E3%82%92%E9%99%A4%E3%81%8F%E3%81%99%E3%81%B9%E3%81%A6%E3%81%AE%20drm%20%E3%83%97%E3%83%AC%E3%83%BC%E3%83%B3%E3%81%8C%E4%BD%BF%E7%94%A8%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%8F%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82NXP%E3%81%AF.atomic_async_check%E3%82%92%E5%AE%9F%E8%A3%85%E3%81%99%E3%82%8B%E3%83%91%E3%83%83%E3%83%81%E3%82%92%E5%85%AC%E5%BC%8F%E3%81%AB%E6%8F%90%E4%BE%9B%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%81%8B%EF%BC%9F.atomic_async_update%20%E3%81%A8%20.atomic_async_update%20%E3%81%AF%E3%81%A9%E3%81%86%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%81%8B%EF%BC%9F%E3%83%8F%E3%83%BC%E3%83%89%E3%82%A6%E3%82%A7%E3%82%A2%E3%81%AE%E5%88%B6%E9%99%90%E3%81%AB%E3%82%88%E3%82%8A%E3%80%81%E3%81%93%E3%82%8C%E3%82%89%202%20%E3%81%A4%E3%81%AE%E6%A9%9F%E8%83%BD%E3%82%92%E5%AE%9F%E8%A3%85%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84%E5%A0%B4%E5%90%88%E3%81%AF%E3%80%81%E3%81%8A%E7%9F%A5%E3%82%89%E3%81%9B%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%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%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F242235%22%20target%3D%22_blank%22%3E%40JoRadio%3C%2FA%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FP%3E%0A%3CP%3EDPU%20%E3%81%AF%E3%81%9D%E3%81%AE%E3%82%88%E3%81%86%E3%81%AA%E6%A9%9F%E8%83%BD%E3%82%92%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%9B%E3%82%93%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%E3%82%88%E3%82%8D%E3%81%97%E3%81%8F%E3%81%8A%E9%A1%98%E3%81%84%E3%81%97%E3%81%BE%E3%81%99%E3%80%81%3CBR%20%2F%3E%E5%BF%97%E6%98%8E%3C%2FP%3E%3C%2FLINGO-BODY%3E