0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

为何说OpenGL ES上使用Vulkan不适合作为SDK

电子设计 来源:互联网 作者:佚名 2018-05-17 09:23 次阅读

我们非常高兴的告诉大家最新版本的PowerVR SDK框架5.0和相关工具第二版本正式推出,这次更新包括很多激动人心的变化同时承诺让每个PowerVR GPUs开发者的工作更加的简单方便。这个版本同时涉及多个重大的改进,本篇文章将详细向大家介绍。

之前4.x系列框架主要侧重于在OpenGL ES和Vulkan之间提供统一的接口,充当跨平台、跨API引擎解决方案的基础。在之前的版本中已经实现了这些功能并且这些版本会继续向开发者提供。然而我们已经看到了大家的反馈,因此我们需要作出一些重大改变为广大开发者提供更大的便利。

首先我们决定先回到最基础的方面,Vulkan API完全是为了让开发人员有更多的自主和控制权,而我们之前的版本包含了对开发人员更多的手把手指导,因此这很可能会阻碍Vulkan的开发。

第二我们感觉到在OpenGL ES上使用Vulkan不适合作为SDK,这也同时干扰了OpenGL ES SDK的功能定位——OpenGL ES API学习的辅助工具。

因此现在我们将一切交还到开发人员的手中,把所有的东西都去除掉只留下有用的实现和封装库。这也意味着它不会向后兼容,但是你会真正使用Vulkan在工作而不是在使用基于Vulkan的框架。

下面的介绍一下PowerVR SDK 5.0框架!

PowerVR SDK 5.0框架结构图PowerVR SDK 5.0框架结构图

新框架包括三大部分——通用库文件、Vulkan库和OpenGL ES库
• 通用库文件是PVRShell、PVRCore和PVRAssets
- PVRCore是很多模块的依赖,它提供很多底层支持代码,这包括通用类型、数据流、日志记录、引用计数等。
- PVRShell是一个独立的抽象平台,它是API的入口同时负责操作系统特定的窗口和输入,包括最新版本中对Wayland的支持。
- PVRAssets包括的代码用于处理资产比如纹理、模型等,它们会通过文件的方式加载。
• OpenGL ES库包括PVRUtilsGles(涉及OpenGL ES具体功能的实现实例)和PVRCamera库
• 全新的Vulkan库包括PVRVk,它主要是Vulkan的SDK和简单的封装,同时还提供PVRUtilsVk,它包含Vulkan的具体使用帮助。

后面我们会具体介绍这些库文件,但是首先我们需要了解一下之前PowerVR SDK框架4.x系列版本,这样我们可以对作出的改变进行对比。

PowerVR框架5.0有哪些变化?

首先我们了解一下之前框架版本是如何设计的:

探索全新推出的PowerVR 5.0精益求精框架

如上图所示4.x版本系列的框架结构与全新推出的5.0版本非常的不同,对于OpenGL和Vulkan并没有进行区分,而且依赖项也更加的复杂。4.x系列版本的一些库在5.0版本中进行了合并或者融合到5.0版本新的库中。
• PVRShell与5.0版本的类似,但是它与其他模块的耦合更加的紧密
• PVRCore和PVRAssets在4.x系列版本和5.0版本中基本是相同的,但是在5.0版本中从各方面进行了改进
• PVREnegineUtils根据PVRApi提供通用功能实现API抽象,在5.0版本中我们对OpenGL ES和Vulkan的实用工具分别进行了版本的调优和优化。
• PVRApi包括Vulkan和OpenGL ES API接口抽象资源,在5.0版本中这些抽象设置被取消了
• PVRNativeApi为底层API提供了实时绑定和实现的程序,在5.0版本中绑定只需要简单的头文件,所以不需要类似的工程文件。
• PVRCamera适用于OpenGL ES,并且提供iOS和安卓平台硬件摄像头驱动支持——在5.0版本中保持相同。

提升对Vulkan的支持

那么有哪些变化呢?现在这个框架更加专注于Vulkan并且变得更加的流畅,它提供了大量新的功能,帮助手册等并且变得简单。

PVRVk是一个独立的C++ Vulkan封装库(没有外部依赖),增加了智能指针支持、命名空间和强类型枚举等。这些特性让开发过程变得更加的容易,它是在4.x版本的PVRApi基础上对于Vulkan部分进行了精简和改进。

与4.x系列版本相比它具有更底层的功能抽象,并且已经接近于像Vulkan HPP这样的底层抽象,但是仍然也保留着PowerVR框架 让开发尽可能的简单的根本定位。现在大部分工作都是开发人员来负责实现,像Vulkan API的使用具有更多的自主权,但是在4.x系列版本中这些功能都是由框架来管理的。

谈到这里那么PVRUtilsVk是一个新的模块,它提供一些简单通用任务的帮助手册,不需要开发人员编写事例代码,包括的常用任务如下:
• 创建实例
• 创建设备
• 管理队列
• 创建转换链
• 以单行的形式管理接口
• 上传纹理

PVRUtilsVk依赖于PVRVk、PVRCore和PVRAssets。

我们同时也向开发人员提供vulkan_IMG.h头文件,它是对Khronos_vulkan.h文件的修改b版本,但是使用了强类型枚举。我们同时也移除了全局命名空间原型,这样做是为了尽可能减少全局命名空间的使用。

PVRVk具有自己的命名空间——pvrvk::而不是pvr::,它覆盖了该框架的其余部分。

简化后的框架设计

OpenGL ES框架已经回到了它的教育定位,跨平台的交叉API引用解决方案无疑会阻碍它的教育功能定位。这意味着PVRGles也不再存在,替代它的是OpenGL ES版本的PVRUtils(PVRUtilsGles)能提供所需要的一切,它提供的工具可以直接操作OpenGL ES而不是引用中间的抽象接口。

很多函数库是动态加载的,而且都采用gl命名空间,DynamicEGL.h和DynamicGles.h头文件是用于加载EGL和OpenGL ES函数指针的独立头文件,开发人员将学习并享受对功能的完全控制,在后面的开发过程中会使用原生的OpenGL ES代码,比如gl::BindTexture()。

模块简化设计总结

一些部分已经与其他模块进行的合并或者完全移除,现在的依赖项减少了很多。PVRCore保持不变,但是一些通用的接口API进行了重新整理,比如IGraphicsContext、IPlatformContext等等。

PVRShell目前只依赖于PVRCore,它是一个独立的平台抽象层,前面提到过目前已经支持Wayland。

PVRNativeAPI和EngineUtils已经合并到PVRUtilsGles和PVRUtilsVk中,每一项都负责相应的抽象接口,它们都依赖于PVRCore和PVRAssets。PVRUtilsVk,没有意外的,也依赖于PVRVk,两个库文件都提供了初始化的帮助手册,比如创建EGL/EAGL内容(contexts)、着色器(shaders)、Vulkan转换链等,此外还有一些功能比如纹理上传等等。

PVRCamera与之前保持不变,仅支持OpenGL ES。

总结

正如大家所见我们对SDK框架做出了很多重大的改变,我们只有提供非常好的功能改进才能够替换之前的4.x系列版本。如果你需要更多的信息,我们的框架参考文档已经更新。如果你需要进一步的帮助,不要忘记我们的技术支持论坛,我们的技术支持团队随时准备回答你的任何问题。我们希望大家喜欢这个全新推出的框架版本。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • SDK
    SDK
    +关注

    关注

    3

    文章

    1017

    浏览量

    45658
  • powervr
    +关注

    关注

    0

    文章

    98

    浏览量

    31042
收藏 人收藏

    评论

    相关推荐

    OPA1612作为ADC的差分输入滤波器,电路无法正常工作的原因?

    芯片温度很高,两片1612电流在350mA左右, 我的供电是正负15V ,电源部分都是正常的, 我换成TL072电路可以正常。 但我觉得OPA1612性能会好一些,所以选择这个芯片,为何不适合这个电路呢?
    发表于 09-29 07:57

    OPA1641是否可做PA级跨阻放大器?

    的引脚,GUARDRING要做怎么样的处理?还是OPA1641虽然有很低的电流噪声,和较宽的增益,但由于某些性能限制,其不适合做跨阻放大器?
    发表于 08-09 07:16

    TLV9151是否适合作为跟随器(G=1)使用?

    新的设计会将TLV9151作为跟随器(G=1)使用,驱动大容性负载,请问TLV9151是否适合做为跟随器(G=1)使用? 其指标“开环输出阻抗Zo”为525Ω@1M, 当驱动容性负载时,引入的fp=1/2πRoCL会很小,是否会导致输出过冲较大,或输出振荡?
    发表于 08-01 06:24

    请问stm32是不是不适合控制有位置要求的交流伺服pmsm电机?

    stm32很适合控制无传感器pmsm电机,是否可以认为:stm32不适合控制有编码器的交流伺服电机
    发表于 05-16 07:31

    OpenGL+ES+2.0+编程指南

    电子发烧友网站提供《OpenGL+ES+2.0+编程指南.pdf》资料免费下载
    发表于 05-07 14:20 0次下载

    Radeon Vulkan RADV驱动新增支持H.264/H.265编码

    去年5月,David Airlie提出并实现了H.264 / H.265 Vulkan Video编码补丁集,现已融入Mesa 24.1版本之中。针对此次Git主线合并请求,Airlie简短评论道:“此补丁旨在拓展Vulkan,为RADV驱动增加对
    的头像 发表于 04-12 14:59 561次阅读

    零基础小白适不适合学鸿蒙开发?

    在互联网不断发展以及万物互联时代的开启过程中,鸿蒙操作系统的出现无疑是技术领域的一次重大突破。鸿蒙操作系统是一款“面向未来”的操作系统,它创造性地提出了三大技术理念:一次开发,多端部署;可分可合,自由流转;统一生态,原生智能。随着鸿蒙生态的壮大,投入鸿蒙开发的IT专业人才越来越多,对于从未接触过此方面零基础的学生而言,也是一次很不错的职业转向和技术提升的好机会。 什么是鸿蒙?   鸿蒙系统(HarmonyOS)是华为技
    的头像 发表于 03-04 17:50 1803次阅读
    零基础小白适<b class='flag-5'>不适合</b>学鸿蒙开发?

    电阻可以串联,为何二极管不适合串联?

    电阻可以串联,为何二极管不适合串联? 二极管是一种非线性电子元件,其工作原理与电阻截然不同。由于其独特的电学特性,二极管不适合串联使用。 首先,我们来了解一下二极管的基本原理。二极管由PN结构组成
    的头像 发表于 02-18 10:00 1638次阅读

    请问是否有用软件控制电阻值的电位器?

    请问是否有用软件控制电阻值的电位器?看资料数字电位器内部使用MOS链接,不适合做纯电阻元件?是否是这样的?我需求一个电位器,使用软件控制其阻值,阻值分布在小于1Ω到1KΩ之间,请问有没有合适的芯片?
    发表于 12-27 08:15

    AD7175-2适合做高精度数据采集吗?

    压,精度只有3位半左右,后几位抖动的非常厉害,这是为什么?是不是我使用的不恰当?如果AD7175-2不适合做高精度数据采集,可以给我推荐一款24bit的ADC做数采吗?
    发表于 12-18 08:29

    请问AD9928适合驱动KAI08051吗?

    您好,我们需要用AD9928驱动安森美的KAI08051的800万像素的CCD sensor,请问AD9928适合驱动KAI08051吗?若适合有没有推荐的配置寄存器列表?若不适合有没有推荐的驱动方式?
    发表于 12-12 08:30

    SaberRD示例设计:飞机厨房中烤箱的温控设计介绍

    由于飞机的特殊用途与密闭空间的特点,决定了飞机上不适合进复杂的烹饪。实际,我们吃到的飞机餐,一般都是在地面上已经加工过的半成品。
    的头像 发表于 12-05 15:25 806次阅读
    SaberRD示例设计:飞机厨房中烤箱的温控设计介绍

    哪种电阻更适合被用作为取样电阻?

    哪种电阻更适合被用作为取样电阻? 选择适合作为取样电阻的电阻器是电子电路设计中非常重要的一步。取样电阻被广泛应用于模拟电路中,用于测量电压、电流和功率等。一个合适的取样电阻对于电路的性能和精度
    的头像 发表于 11-29 16:29 763次阅读

    什么是隔直电容,它们为何重要?(

    什么是隔直电容,它们为何重要?(
    的头像 发表于 11-23 16:39 1252次阅读
    什么是隔直电容,它们<b class='flag-5'>为何</b>重要?(<b class='flag-5'>上</b>)

    如何判断适不适合学编程?

    做单片机项目陪跑营的这3年时间,我接触到各种各样的人群,有研究生、本科、大专、转行的、小企业老板等。 经手过很多案例,我发现研究生这个群体,整体成功概率最高。 倒不是,编程有多难,需要多好的数学、英语、学历基础、或者需要多高的智商和天赋。
    的头像 发表于 11-07 10:40 396次阅读