Adreno平台编程

一、简介
Snapdragon是当今Android中功能最强大且使用最广泛的处理器之一,以及Windows智能手机和平板电脑。Snapdragon处理器将所有一流的移动组件集中在一块芯片上,确保基于Snapdragon的设备以极为节能的集成解决方案提供最新的移动用户体验。

二、Adreno平台编程
Direct3D 11.1功能级别9_3概述
Microsoft Direct3D 11.1 API引入了功能级别的概念。 功能级别定义了GPU必须最少支持的一组功能。 Direct3D 11.1可以通过不同的功能级别支持一系列不同的GPU。 Adreno超出了Direct3D 11.1功能级别9_3的要求。 应用程序开发人员应将其应用程序定位为支持9_3级功能,以确保与Adreno GPU完全兼容。 Microsoft在http://msdn.microsoft.com/en#us/library/windows/desktop/ff476876(v=vs.85).aspx中提供了Direct3D 11.1中每个功能级别支持的功能列表。
Direct3D功能级别的选择是在设备创建时通过使用D3D11CreateDevice()完成的。 创建设备时,应用程序会传递一系列功能级别以尝试创建。 为了与Adreno GPU兼容,应用程序应请求D3D_FEATURE_LEVEL_9_3设备(功能级别9_2和也支持9_1)。 以下代码块演示为Adreno GPU创建D3D11Device。
//指定Direct3D功能级别9_3
D3D_FEATURE_LEVEL featureLevels[] =
{
D3D_FEATURE_LEVEL_9_3
};
Microsoft::WRL::ComPtr d3dDevice;
Microsoft::WRL::ComPtr d3dDeviceContext;
UINT creationFlags = D3D11_CREATE_DEVICE_BGRA_SUPPORT;
#if defined(_DEBUG)
creationFlags |= D3D11_CREATE_DEVICE_DEBUG;
#endif
if (FAILED(
D3D11CreateDevice(
nullptr,
D3D_DRIVER_TYPE_HARDWARE,
nullptr,
creationFlags,
featureLevels,
ARRAYSIZE(featureLevels),
D3D11_SDK_VERSION,
&d3dDevice,
nullptr,
&d3dDeviceContext )
)
{
// error…
}

WinRT和C ++组件扩展(C ++ / CX)
必须针对WinRT API编写旨在使用Windows RT(适用于ARM的Windows 8)中具有Direct3D 11.1的Adreno GPU的Metro风格或Modern UI风格的应用程序。 WinRT是Windows RT和Windows 8中新的Windows运行时。WinRT替换了Windows早期版本中的Win32 API,并形成了
Windows RT(和Windows 8)Metro应用程序的基础。 WinRT是本机API,目前Microsoft不会将Direct3D公开给托管(例如C#/ VB)应用程序。 尽管有一些项目在Metro下为Direct3D提供托管包装,但Microsoft建议Direct3D Metro应用程序用C ++编写。
为了获得对C ++中WinRT API的访问,Microsoft引入了新的语言扩展,称为C ++组件扩展(C ++ / CX)。 审查新的语言功能超出了本文档的范围; 但是,可以在以下位置找到有关C ++ / CX和WinRT的出色介绍: http://www.codeproject.com/Articles/262151/Visual#Cplusplus-and-WinRT-Metro-Some-fundamentals.
除了本机C ++应用程序之外,Windows RT还允许开发人员使用各种编程语言和工具来构建应用程序。 人们可以使用C#,C ++或Visual Basic对应用程序进行编程,同时使用XAML声明性地描述用户界面。 或者,您可以使用HTML5,CSS3和JavaScript。 有关这些的更多信息,请参见: http://msdn.microsoft.com/en#US/windows/apps/br229512。
但是,在Windows 8上寻求最佳性能的开发人员应将Microsoft DirectX 11.1与C ++结合使用。

检查功能支持:
Direct3D 11功能级别定义了GPU必须支持的最少功能集以及几个可选功能。 应用程序可以在运行时使用ID3D11Device :: CheckFeatureSupport()方法检查可选功能。 例如,
应用程序可以确定驱动程序是否在基于图块的渲染GPU上运行。
以下代码段检查基于图块的渲染:
D3D11_FEATURE_DATA_ARCHITECTURE_INFO info;
d3dDevice->CheckFeatureSupport(D3D11_FEATURE_ARCHITECTURE_INFO,
&info, sizeof(info));
if ( info.TileBasedDeferredRenderer )
{
// TBR present
}
Adreno图形驱动程序会将TileBasedDeferredRenderer设置为TRUE。 可以在运行时使用ID3D11Device :: CheckFeatureSupport()查询许多其他功能。 有关可用查询的完整列表,请参阅: http://msdn.microsoft.com/en#us/library/windows/desktop/ff476497(v=vs.85).aspx

三、总结
本篇文章我们介绍了Adreno平台编程相关内容,以及一些资源的链接,大家对此感兴趣的话,不妨去高通开发者网站进行更为深入的了解。同时在接下来我们将介绍Adreno平台程序优化的内容,带大家去了解Adreno平台。

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

猜你喜欢

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