Vulkan驱动层提供了简单高效的API。作为Vulkan API的使用者,我们要严格遵循Vulkan API的使用规则。如果我们违反了这些规则,Vulkan只会返回很少的反馈,它只会报告一部分严重和重要的错误,比如内存不够啦、指针越界啦等等。
如果我们想获取其他更多的错误提示信息怎么办?
这就需要启用Vulkan 的“调试验证层"。 调试验证层由多个层组成的,可以根据需要搭配,比如内存使用情况、输入参数验证、对象生命周期检查等等。开启越多的调试和验证功能,就意味着程序会越慢。这些功能在程序调试和查找bug的时候非常有用,但在程序正式发布的时候,最好默认还是禁用。

Vulkan的分层


  • 应用层 - 必选
    • 应用程序,或者基于Vulkan的显示引擎
  • 加载层 - 可配置
    • SDK会自带默认的loader实现,但用户也可以自己实现加载层。
  • 调试/验证层 - 可选
    • 输入参数验证
    • 引用对象计数
    • 性能跟踪
    • 调试
    • 线程安全
    • ……
  • 驱动层 - 必选
    • Vulkan核心实现

分层的优点

  • 简洁
    • 驱动层只专注核心功能的实现
  • 高效
    • 大量的调试和验证功能由应用层控制,驱动层执行效率高
  • 扩展强
    • 除了驱动层,其他的部分用户都可以自己扩展。比如实现个录制回放功能也变的很容易。

Vulkan的分层设计的更多相关文章

  1. Web自动化框架之五一套完整demo的点点滴滴(excel功能案例参数化+业务功能分层设计+mysql数据存储封装+截图+日志+测试报告+对接缺陷管理系统+自动编译部署环境+自动验证false、error案例)

    标题很大,想说的很多,不知道从那开始~~直接步入正题吧 个人也是由于公司的人员的现状和项目的特殊情况,今年年中后开始折腾web自动化这块:整这个原因很简单,就是想能让自己偷点懒.也让减轻一点同事的苦力 ...

  2. ABP分层设计

    ABP分层设计 一.为什么要分层 分层架构是所有架构的鼻祖,分层的作用就是隔离,不过,我们有时候有个误解,就是把层和程序集对应起来,就比如简单三层架构中,在你的解决方案中,一般会有三个程序集项目:XX ...

  3. robot framework 使用四:分层设计和截图以及注意事项

    再说一下眼下的主要环境信息和版本号: 操作系统:win7 64位 python版本号:2.7.6 RIDE版本号:1.2.3 selenium2library:1.5.0 selenium:2.40. ...

  4. RSF 分布式 RPC 服务框架的分层设计

    RSF 是个什么东西? 一个高可用.高性能.轻量级的分布式服务框架.支持容灾.负载均衡.集群.一个典型的应用场景是,将同一个服务部署在多个Server上提供 request.response 消息通知 ...

  5. robot自动化分层设计

    robot framework框架分层设计

  6. Thrift笔记(二)--Thrift框架分层设计

    thrift架构设计使用了分层设计,类似TCP/IP分层,上次使用下层提供的服务.分层设计在计算机中是一个常用的设计,上层和下层定义好接口或者说协议,下层实现可以随意更换,只要实现好定义的接口和协议就 ...

  7. linux设备驱动的分层设计思想--input子系统及RTC

    转自:linux设备驱动的分层设计思想 宋宝华 http://blog.csdn.net/21cnbao/article/details/5615493 1.1 设备驱动核心层和例化 在面向对象的程序 ...

  8. MVC分层设计

    MVC分层设计 什么是MVC? MVC 是一种软件架构模式,利用分层的思想来设计交互式应用程序,由以下3层组成: Model 业务模型层. View 展示层. Controller 控制层. MVC包 ...

  9. App自动化《元素定位方式、元素操作、混合应用、分层设计、代码方式执行Pytest 命令》

    坚持原创输出,点击蓝字关注我吧 作者:清菡 博客:oschina.云+社区.知乎等各大平台都有. 目录 一.App 元素定位方式 二.元素操作 三.测试混合应用 四.以代码的方式执行 Pytest 命 ...

随机推荐

  1. easygui控件介绍

    1.msgbox: 语法:msgbox(text,title, ok_button='OK',image=None,root=None) 实例:msgbox('内容内容','标题标题','确定')返回 ...

  2. CLR-基元类型以及溢出检查

    =========(CLR via C#阅读笔记)======== 基元类型(primitive type): 基元类型也不做过多的解释,举个例子即可清晰的辨别 在java里曾使用过Sting s=& ...

  3. JavaScript数据结构与算法(一) 栈的实现

    TypeScript版本源码 class Stack { items = []; public push(element) { this.items.push(element); } public p ...

  4. Angular CLI 安装

    安装Angular 官网的教程,因为国内网络环境原因,访问不了服务器,导致安装失败. 1.先安装NodeJs 安装教程:http://blog.csdn.net/zengmingen/article/ ...

  5. [LeetCode] Next Greater Element III 下一个较大的元素之三

    Given a positive 32-bit integer n, you need to find the smallest 32-bit integer which has exactly th ...

  6. JS获取URL传的值与解决获取URL中的中文参数出现乱码

    大家好,我是小C, 我们在项目开发中有时需要页面与页面之间的传值,那我们可能会选择用地址栏传递参数,那另外的那个页面就需要获取地址栏里的参数,今天分享下关于地址栏怎么传递参数与获取中文参数出现乱码的解 ...

  7. vba打开输入文件

    Sub fileCreate2() Dim folderPath, fileName, s As String Dim fs, fo, fc, f As Object folderPath = &qu ...

  8. [BZOJ 3329]Xorequ

    Description 题库链接 给出 \(n\) ,分别求 \(\leq n\) 和 \(\leq 2^n\) 的满足方程 \[x\oplus 3x=2x\] 的正整数解个数. \(1\leq n\ ...

  9. [HAOI 2011]Problem b

    Description 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. Input 第一行一个整数 ...

  10. 绝世好题bzoj4300

    Description 给定一个长度为n的数列ai,求ai的子序列bi的最长长度,满足bi&bi-1!=0(2<=i<=len). Input 输入文件共2行. 第一行包括一个整数 ...