我的开源项目工作进展(3)

一、 本周主要工作与解决的问题

    1.上周写了个RGB图像旋转的代码,但老师说要用GPU来实现,本周狂补GPU的知识,简单说,GPU是并行运算、CPU是串行运算。所以对于图像旋转来说,采用GPU会更快。然而发现GPU编程不简单啊!Shader language目前主要有3种语言:基于OpenGL的GLSL,基于Direct3D的HLSL,还有NVIDIA公司的Cg 语言。英特尔的GPU编程相关可真没有啊!为什么呢?然后这是我的一些关于GPU工作原理与理解

     2.下了一些别人写的GPU相关的文章来看,特别是关于图像、视频处理方面,主要有GPU图像处理的基本流程。照我的理解来看,比如说,我们要进行GPU图像处理,那基本上就只要用到顶点着色器,像素着色器用不着。因为毕竟只是对原本图像的数据进行处理。

     3.了解了下NV12与YV12图像格式,NV12与YV12.主要是了解其它数据排列的格式;

    4.提出旋转变换 GPU 渲染主要思路,详见GPU图像处理的基本流程



二、同时存在的问题:
1.项目中的一个surface或image表示的是显存中的一帧是吧?也就是说整个项目基本上都是在GPU上来完成的,包括编解码、后处理等?
老师回复:是, 主要的对象是一个surface.
2.GPU编程方面英特尔是否有什么资料呢?网上完全搜不到关于英特尔GPU相关的。
老师回复:记得曾经给过, 下面链接是 Programmer's Reference Manuals (PRM)
https://01.org/linuxgraphics/documentation/driver-documentation-prms
我们的driver(2D/3D/video)就是根据这个文档写的。
3.我看资料说是GPU是按RGBA通道来排列的?
老师回复:GPU 可以处理的对象不仅限于RGBA, 特别是thread, 很多可以由用户控制。在
video中,处理的颜色空间主要是YUV
4.GPU图像处理编程中,我是这样认为:将图像数据从CPU传到GPU纹理中,然后根据grid--block---thread可以计算CPU中图像数组对应的GPU的纹理坐标,而根据此坐标可得到纹理元素,纹理元素就是对应的像素颜色值。不知我理解是否正确?项目中是如何体现的呢?
老师回复:就是这样的,如果没有scaling, 可以直接用data port读取pixel, 否则要用
sampler (牵涉到插值,HW可以帮助完成)
5.驱动里的rendering(i965_render.c 和 i965_output_dri.c)部分其实已经支持rotation,程序里是哪个函数呢?我看了好几次,发现都没找到接口函数?
老师回复:这里是用3D pipeline 去实现的,所以只要把texture坐标变换一下就可以了, 可以参考 i965_fill_vertex_buffer()。
6.旋转变换GPU渲染主要包括以下几个步骤:
    1) 设置 1 个输入纹理;
    2) 对输入纹理进行纹理采样;(这里是否就是surface?
老师回复:这个不需要考虑, 当你看到一个VA surface时,可以认为数据已经上传到
graphics memory里了。
    3) 设置变换矩阵;    4) 在顶点着色器中,将输入顶点与变换矩阵相乘;
老师回复:可以这样做,不过要和其他的部分整合在一起。

    5) 输出图像数据;(直接输出到帧缓冲区,还要输出到内存不?)

老师回复:输出也是一个VA surface. 你可以在测试例子中调用vaPutSurface()显示, 这样比
较直观。

这个思路是否是正确呢?

7.libva和libva-intel-driver都切换到staging 分支,关于rotation的接口在staging分支上。这话不太理解,之前确实对GIT没怎么用过。

老师回复:libva/libva-intel-driver都有两个主要的branch, 一个是master,另一个是

staging. Master上的都是稳定的接口,而staging上都是正在开发的接口

,我把switch切换到staging。然后把项目下下来,里头后处理的.C文件还是没有rotation的接口啊?不知是不是我理解错了?

老师回复:在va_vpp.h, 你可以查rotation. 


三、下一步安排:
 
     1.学习GPU编程
     2.争取完成GPU视频旋转或镜像


后记
     这个和工作无关了,就写写自己的心情了哈,看完老师的回复,突然发现自己好多都不懂啊!唉,还是得努力啊!不知自己问的问题会不会太低级了呢?这一礼拜自己发生了一些不好的事情,但是别灰心~。事情总会有转机的!我一定要把这项目完成~~~~~~~~~~~好好加油吧~~~~~~~~哈哈哈~~~得再去图书馆借几本相关的书来看看了!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值