1108599_zh-CN

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

1108599_zh-CN

1108599_zh-CN

i.MX8QXP 伽玛调节 - GUI 测试代码<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

SW:Linux 4.14.98_2.2.0 bsp 版本,gpu sdk 5.3.0 和本文档中的补丁

硬件:i.MX8QXP MEK 板

受到 GIMP 调整色彩曲线工具的启发,我为 i.MX8QXP 伽马曲线调整编写了类似的 gui 测试代码。

即显示屏上先显示一条直线曲线,用鼠标改变这条曲线的任意一部分,然后计算出改变后的曲线上点的值,再将相关值传递给i.MX8QXP DPU gammcor单元,最后通过DPU改变显示效果。

当测试代码启动时,将在显示屏上绘制 Y=X 曲线,即从 (0,0) 到 (500, 500) 到 (1023,1023)。当你用鼠标拖动曲线的某些部分后,会生成一个不在原始Y=X曲线上的新点(x_new,y_new)。然后需要绘制一条经过(0,0),(500, 500),(x_new,y_new),(1023,1023)的新曲线。那条新曲线,我选择使用 Catmull-Rom 样条线来获得它。

使用Catmull-Rom样条线来近似一条经过n个点的曲线,则需要n+2个控制点。可以根据需要选择额外的 2 个点,它们将影响曲线的形状。

Catmull-Rom 样条函数可以穿过所有控制点,具有 C1 连续性,不具有凸包性质。

例如有四个控制点p0,p1,p2,p3,若要绘制经过这四个控制点的曲线,可以将其划分为线段p0到p1,线段p1到p2,线段p2到p3。

对于 p1 到 p2 段,选择四个控制点作为 p0,p1, p2, p3,使用 Catmull-Rom 样条线如下:

pastedImage_1.png

对于 p0 到 p1 段,需要使用四个控制点作为 p0、p0、p1、p2:

pastedImage_2.png

对于 p2 到 p3 段,需要使用四个控制点作为 p1、p2、p3、p3:

pastedImage_5.png

在这个测试代码中,我将使用 gpu 顶点着色器来计算曲线的每个段,然后使用变换反馈将每个段的点值读回 cpu 端,cpu 端将相关值传递给 DPU gammcor 单元进行伽马调整。

 

测试步骤:

在 linux-imx 上将 8qxp_dpu_gammacor_4.14.98_2.2.0.diff 应用于 i.MX8QXP DPU 设备驱动程序。

在 imx-gpu-sdk 上应用 dpu_gamma_curve_gpusdk5.3.0.diff 来构建此 gui 测试代码。

更新新的内核映像,并将测试代码复制到rootfs。

首先运行任何其他应用程序在屏幕上绘制一些东西,例如 /usr/share/cinematicexperience-1.0/Qt5_CinematicExperience。

然后在此代码 S01_SimpleTriangle_Wayland 中运行 gui 测试代码。

此时显示屏上会显示一条线性曲线,使用鼠标可以随意改变曲线,将鼠标光标靠近曲线,按下鼠标按钮,拖动它,然后释放鼠标按钮,您将看到显示屏上出现新的曲线,并且显示效果也会改变。

参考资料:

1> https://www.nxp.com/products/processors-and-microcontrollers/arm-processors/i-mx-applications-proces...

2> https://www.nxp.com/design/software/embedded-software/linux-software-and-development-tools/embedded-...

3> https://github.com/NXPmicro/gtec-demo-framework

4> https://en.wikipedia.org/wiki/Cubic_Hermite_spline

5> http://www.mvps.org/directx/articles/catmull

图形与显示i.MX 8 系列 | i.MX 8QuadMax (8QM) | 8QuadPlus
タグ(1)
評価なし
バージョン履歴
最終更新日:
‎01-06-2026 01:58 AM
更新者: