Vulkan with Adreno

一、简介
应用程序通过创建Vulkan实例开始使用Vulkan。该实例逻辑上为您的应用程序提供Vulkan状态,这与其他可能使用Vulkan的Vulkan应用程序不同。Vulkan本身不包含任何运行应用程序的全局状态。
使用Adreno驱动程序,您可以创建任意多个Vulkan实例,尽管目前还没有一个已知的拥有多个Vulkan实例的用例。Adreno Vulkan驱动程序在调用vkCreateInstance时忽略VkApplicationInfo结构中传递的自由表单应用程序信息。第三方扩展层在调试或报告期间可能会使用这些信息,因此最好还是填写这些值。

二、Using Vulkan with Adreno
在基于Adreno的设备上运行时,在创建vkininstance之后,应用程序将在使用vkEnumeratePhysicalDevices枚举设备时检测单个VkPhysicalDevice,设备属性与vkGetPhysicalDeviceProperties一起返回。下面是使用最新Vulkan构建在Adreno 530 GPU设备上返回的典型值:
apiVersion: 1.0.31 (use VK_VERSION_MAJOR, VK_VERSION_MINOR,
VK_VERSION_PATCH macros)
driverVersion: 0.338.119431 (use VK_VERSION_MAJOR, VK_VERSION_MINOR,
VK_VERSION_PATCH macros)
vendorID: 0x5143
deviceType: VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU
deviceName: Adreno ™ 530
pipelineCacheUUID: [170][36][21][0][67][81][0][0][0][0][2][0][3][5][0][0]
limits: (see Appendix A)
sparse properties: (see Appendix B)

设备功能与vkGetPhysicalDeviceFeatures一起返回。这些是物理设备可能支持的选项功能,例如支持图像立方体阵列或ETC2纹理压缩。
检查API版本是一个重要的考虑因素,以确定驱动程序是否足够健壮,足以与您的商业游戏一起运行。您的测试应该显示运行游戏所需的最低可接受Vulkan api,并选择不使用Vulkan(即改用GL渲染路径)。

验证层:
由于性能问题,在图形API中执行错误检查是有问题的。Vulkan为错误检查提供了一个优雅的解决方案,该方案在检查的编码区域是全面的,但在创建生产版本时也很容易禁用。
验证层是如何在Vulkan中实现错误检查的。这些层是可选的二进制文件,在运行时加载并拦截Vulkan调用。如果层不支持当前的API入口点,则系统会将入口点传递到下一层。最终,入口点到达执行它的驱动程序。
这些层专门用于它们所检查的API的各个区域。它们在Android NDK中定义,并由Vulkan加载程序加载。

扩展名:
扩展名可以定义新的Vulkan命令、结构和枚举数,它们与核心API一起在Khronos提供的Vulkan.h文件中定义。由扩展定义的命令可能不可用于静态链接-在这种情况下,应在运行时查询指向这些命令的函数指针。
要启用所有特定于Android的扩展,请确保在包含Vulkan头文件之前定义了VK_USE_PLATFORM_ANDROID_KHR。
#define VK_USE_PLATFORM_ANDROID_KHR
#include <vulkan/vulkan.h>
扩展既可以用于创建的Vulkan实例,也可以用于Vulkan设备。
队列:
Vulkan队列是GPU的主要工作所在。设备有一个或多个属于队列系列的队列。队列系列是一组具有类似属性且可以并行运行的队列。
根据队列可以执行的工作,它有几个功能:
VK_QUEUE_GRAPHICS_BIT = 0x00000001 支持图形操作,如图形几何图形
VK_QUEUE_COMPUTE_BIT = 0x00000002 支持计算操作,如分派计算着色器
VK_QUEUE_TRANSFER_BIT = 0x00000004 支持传输操作,如复制图像和缓冲区
VK_QUEUE_SPARSE_BINDING_BIT = 0x00000008 支持稀疏内存绑定操作
队列还具有时间戳有效位的值,该值是从队列中获取时间戳时有效的位数。
队列还具有最小图像传输粒度值,该值是传输的最小图像大小(如果队列支持传输)。

想要了解更多更详尽的内容,大家可以都高通开发者官网下载Adreno GPU SDK的相关文档,包含有很多,如OpenGL、OpenCL,以及我们介绍到的Vulkan,同时还有视频教程,我也就不一一赘述了,有兴趣大家可以去看看。

发布了146 篇原创文章 · 获赞 28 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/weixin_38498942/article/details/103493135