Heterogeneous Compute SDK Graphics

大家好,今天小白给大家简单分享下Hetcompute sdk中Graphics相关的基础知识,欢迎一起交流学习。

一、Textures

1)Texture API在HetCompute被用于处理图像的任务中。这些API允许用户从驻留在主内存区的数据创建图像数据目标,并且提供这些数据目标到一个内核处理线程。这些API显著地接话了并行图像处理线程的复杂度,例如滤镜算法。

2)往一个使用者处理一个2D或者3D图像数据的时候,Textures API提供一些有用的帮助,它将提供很多种图像格式、滤镜模式、地址访问模式和操纵像素数据在一个有效的GPU内核层。使用Textures的API需要包含texture.hh #include <hetcompute/texture.hh>

3)HetCompute初始化内部的上下文的时候,会根据依赖设备和平台的上下文数据初始化。因此工程师不需要去查询和单独创建这个上下文数据。初始化的时候,工程师可以使用如下代码:

        

4)这个hetcompute::graphics::create_texture API提供了一个图像格式,图像尺寸和一个指向内存原始输入像素数据的有效主指针。创建一个GPU滤镜例子,包含输入和输出Texture例子,如下:

         

5)这个mytextureptrtype和mysamplerptrtype在HetCompute中是相同的textures和samplers。定义如下:

        

6)source_string包含一个实际执行的OpenGL内核代码,使用textures作为内核功能参数,并且执行他们。另外末班参数必须于内核功能签名匹配。如下是内核源代码:source_string

          

7)kernel模式也能在一般的HetCompute任务模式下执行

           

8)可以使用hetcompute::graphics::map API读取线程的返回结果

            

9)HetCompute也可以处理OpenCL上下文和texture目标的释放。但是,程序员仍然应该调用hetcompute::graphics::unmap来释放CPU内存和GPU内存之间的映射,因此相同的HetCompute texture对象可以重用于后续的内核调用。

二、QCOM扩展图像格式

1)HetCompute支持以QCOM扩展图像格式(TP10,NV12,P010)创建texture。 支持这些格式的线性和UBWC变体。 这些图像格式基于YUV格式并限制直接写入父平面图像,但它们支持对衍生Y和UV平面的写入。

2)可以通过调用hetcompute::graphics::create_derivative_texture并传递父texture,宽度和高度来创建派生平面。 hetcompute::graphics::create_derivate_textures包含更新的OpenCL QCOM扩展,以支持QCOM扩展格式和向量操作。 下面的代码片段显示了使用HetCompute父纹理和衍生纹理将压缩TP10简单地用于压缩TP10副本。

                      

3)上面的示例分别创建源和目标ION内存。 源ION存储器填充有正在读取的图像数据。 创建GPU内核,采样器遵循前面的示例。 上面的代码片段创建了父UBWC TP10 texture。 由于我们将UBWC TP10数据写入output_tex,因此该示例创建了导数Y和UV平面。 这些衍生texture 后来都传递到GPU内核,实际上将数据复制到输出Y和UV texture。

三、总结

本篇主要简单介绍了Heterogeneous Compute SDK中Graphics的相关用法,欢迎一起交流学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值