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

    文章

    966

    浏览量

    44696
  • powervr
    +关注

    关注

    0

    文章

    98

    浏览量

    30946
收藏 人收藏

    评论

    相关推荐

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

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

    请问AD9928适合驱动KAI08051吗?

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

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

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

    Mali GPU OpenGL ES应用程序开发指南

    这是适用于马里GPU的OpenGL ES应用程序开发指南。 它提供了使用OpenGL ES 1.1和OpenGL
    发表于 08-30 07:57

    浅谈Docker不适合跑MySQL的原因

    容器的定义:容器是为了解决“在切换运行环境时,如何保证软件能够正常运行”这一问题。
    的头像 发表于 08-25 16:58 238次阅读

    Mali OpenGL ES 2.0 SDK for Android用户指南

    马里SDK是一个资源集合,帮助您为马里GPU平台构建OpenGL ES 2.0应用程序。 您可以使用它来创建新的应用程序、培训和探索实现的可能性。 马里SDK运行在以下平台上: ·Mi
    发表于 08-18 06:45

    Arm® Mali™脱机编译器用户指南

    Arm®马里™ Offline Compiler是一个命令行工具,用于对使用OpenGL ES Shading Language(ESSL)、Vulkan SPIR-V中间表示或OpenCL C编写
    发表于 08-10 07:00

    Arm OpenGL ES 3.0开发者指南

    OpenGL ES 3.0是对OpenGL ES 2.0标准的增强。 OpenGL ES 3.0
    发表于 08-08 06:03

    Imagination GPU 现支持 OpenGL® 4.6

    ES(用于嵌入式系统的 OpenGL 版本)、Vulkan(跨平台图形 API)和 OpenCL(用于并行编程的 API) )。随着我们的高端 GPU 性能不断提高,尤其是
    的头像 发表于 07-17 09:25 492次阅读
    Imagination GPU 现支持 <b class='flag-5'>OpenGL</b>® 4.6

    为什么面包板不适合高频电路?

    不适合?对于高频信号在面包板上的表现形式到底如何?下面,通过一些简单的测试来回答这个问题。 二、实验器材 实验器材包括有以下几个方面: 1、频谱仪 这里使用了一台DSA815频谱仪,它具有“Trace”功能,可以用于测量一些系统的
    的头像 发表于 07-08 07:35 721次阅读
    为什么面包板<b class='flag-5'>不适合</b>高频电路?

    lpspi从闪存读取jedecID,没有在MISO线上收到任何数据的原因?怎么处理?

    示例“nor_polling_transfer”,没有问题: 可能是什么问题? 也许这些示例 lpspi_btb_interrupt_master和 lpspi_btb_polling_master不适合这种任务?也许他们是 BTB 专用的?
    发表于 05-29 09:01

    Fastjson 很快,但不适合我....

    :等于88。记者:??fastjson:你就说快不快吧! ❞ 这个略显马丽苏的标题,各位看官将就着看吧。主要是怕被喷。fastjson真的很好,我用不用我喜不喜欢的,太不重要了,我只是觉得不适合我而已
    发表于 05-28 11:37 206次阅读
    Fastjson 很快,但<b class='flag-5'>不适合</b>我....

    NodeMCU板和ESP32开发板不适合面包板怎么解决?

    这真的太简单了,所以我想知道为什么我以前从未见过这个。 NodeMCU 板和 ESP32 开发板不适合面包板,因为它们太宽了。 两种解决方案: 1 将面包板切成两半并使用两半 2 切割面包板一侧的电源轨并使用两个面包板。
    发表于 05-25 07:26

    无线充电为何不适合功率竞赛

    目前常见的无线充电技术主要有电磁感应式、电磁共振式、电场耦合式。当前手机无线充电大部分采用电磁感应式无线电能传输技术,发射线圈安装在在充电座上,接收线圈安装在手机背面,当手机靠近充电座的发射线圈时,磁场会让接收线圈产生感应电流。在整个过程中能量由电能转化成磁场场能再通过感应线圈感应生电,最终完成充电的过程。
    的头像 发表于 05-19 09:48 497次阅读
    无线充电<b class='flag-5'>为何不适合</b>功率竞赛

    sram内存块不适合mcal_bss段怎么解决?

    对于我的项目,我使用带有 EBTresos 的 S32K342 进行配置和 Autosar OS。我面临如下 sram内存块不适合 mcal_bss 段问题。 链接 main.elf
    发表于 05-19 08:31