Qualcomm Enhanced SDK (QESDK)API参考 (11)
5.3 增强型 QAPE API
5.3.1 QAPE 增强型管理器
主链路进入增强型 QAPE 子系统的构造函数。
QAPE_enhancedManager()
参数
Qesdk
经过验证的 IQesdk 接口
返回结果
QAPE_enhancedManager
子系统管理器对象
5.3.1 get_gpu_headroom
返回最近“持续时间”秒内可用的平均/最小 GPU 裕量百分比。应用程序使用 get_gpu_headroom() API 获取有关历史应用程序渲染工作负载的反馈,以知悉工作负载是否与 SoC 上的 GPU 绑定。此 API 旨在帮助提供应用程序内容的 GPU 性能信息和帮助驱动工作负载,以及提供其他 API 来确保平稳持续的 UX 性能(最大限度减少帧丢失,降低 UI 延迟)。应用程序可以监控温度。如果移动设备温度接近温控限值,则会进一步检查工作负载是否与 GPU 绑定,以此判断降低 GPU 负载是否有助于减轻温升状态 (<= LIGHT),从而改善持久性能。
注释:
当温升调节时,GPU 余量计算考虑了最大 GPU 频率调节。
注释:
此 API 只适用于游戏,因为游戏被视为 GPU 任务繁重的用例。对于常规应用程序,此 API 返回 -1。
5.4 示例代码
Java 示例
Java
需要导入
import com.qualcomm.qti.qesdk.Performance.*;
import com.qualcomm.qti.qesdk.QesdkStatusException;
import com.qualcomm.qti.qesdkIntf.IQesdk;
初始化
IQesdk qesdkManager = Iqesdk.createInstance(getApplicationContext());
int statusId = qesdkManager.init(eventCallbackHandler);
QAPEManager perfManager = new QAPEManager(qesdkManager);
QAPE_enhancedManager enhancedPerfManager = new QAPE_enhancedManager(qesdkManager);
int setPkgStatus = perfManager.set_pkg(getApplicationContext().getPackageName());
int ret = perfManager->set_pkg(pkg_name);
设置回调
IQesdkEventCallBack eventCallbackHandler = new IQesdkEventCallBack() {
@Override
public void onEvent(int opcode, int[] subsys) {
// Handle QESDK event
}
};
CPU 提速
int retStatus = perfManager.boost_cpu(cpuBoostPercentage);
GPU 提速
retStatus = perfManager.boost_gpu(gpuBoostPercentage);
提示高 CPU 利用率
retStatus = perfManager.hint_high_cpuutil(tid);
提示低 CPU 利用率
retStatus = perfManager.hint_low_cpuutil(tid);
提示低延迟
retStatus = perfManager.hint_low_latency(tid);
提示线程管道
retStatus = perfManager.hint_thread_pipeline(threadIds);
释放线程提示
retStatus = perfManager.release_thread_hints(0,tid);
获取 GPU 余量
retStatus = enhancedPerfManager.get_gpu_headroom(gpuDuration, gpuHeadroomType);
原生示例
原生
需要包括的内容
#include "qesdk_ndk.h"
#include "qesdk_Performance_QAPE.h"
#include "qesdk_Performance_QAPE_enhanced.h"
初始化
qesdk_handle_t qesdk_handle = qesdk_init(nativeLicense, len, event_callback_handler);
QAPEManager *perfManager = new QAPEManager();
QAPE_enhancedManager *perfEnhManager = new QAPE_enhancedManager();
int intRet = perfManager->init(nativeLicense, len, event_callback_handler);
intRet = perfEnhManager->init(nativeLicense, len, event_callback_handler);
设置回调
void event_callback_handler(uint32_t opcode, uint32_t subsys[]) {
// Callback to handle QESDK events
}
CPU 提速
int ret = perfManager->boost_cpu(nBoostVal);
GPU 提速
ret = perfManager->boost_gpu(nBoostVal);
提示高 CPU 利用率
ret = perfManager->hint_high_cpuutil(ntid);
提示低 CPU 利用率
ret = perfManager->hint_low_cpuutil(ntid);
提示低延迟
ret = perfManager->hint_low_latency(ntid);
提示线程管道
ret = perfManager->hint_thread_pipeline(ntids);
释放线程提示
ret = perfManager->release_thread_hints(n_hint_category, ntid);
获取 GPU 余量
ret = perfEnhManager->get_gpu_headroom(n_past_dur, avg);
6 位置 API(精确定位)
位置 QESDK 服务 (LocationQesdkService) 为应用程序提供跟踪和校正数据注入 API。应用程序可使用这些 API 从底层 GNSS 引擎获取米级或分米级位置。
- eDGNSS 子系统提供开始/停止跟踪 API 以及用于接收米级定位的回调。
- RTK 子系统提供开始/停止跟踪 API 以及用于接收分米级定位的回调。
注释
- OEM 应用程序也可以使用原生 NTRIP 客户端配置 API。
- 每个应用程序只能激活一个精确定位请求。多个请求将导致后续请求覆盖上一个请求。
- 应用程序需要在 Android manifest 文件中声明 android.permission.ACCESS_FINE_LOCATION 用户权限。
- 通用 API(例如配置 API 和校正数据注入 API)在 eDGNSS 子系统章节说明,且对 eDGNSS 和 RTK 子系统均适用。
- 当屏幕关闭或应用程序转入后台运行时,精确定位更新将停止。一旦屏幕打开,应用程序返回到前台运行,位置更新就会恢复。
6.1 eDGNSS 子系统
eDGNSS 子系统提供米级定位的定位 API。有关通用 API,可参见通用位置 API、回调、枚举和结构体。
PP_eDGNSSManager (creator)
主链路进入 eDGNSS 精确定位引擎的构造函数。要在 eDGNSS 子系统中调用 API,需如示例所示创建 PP_eDGNSSManager 类的实例。
IQesdk mQesdkManager = IQesdk.createInstance(this);
PP_eDGNSSManager mPpeEdgnssManager = new
PP_eDGNSSManager(mQesdkManager);
6.2 RTK 子系统
RTK 子系统提供分米级定位的 API。
此 API 与 NTRIP 配置和校正数据注入 API 结合使用。
Note
所有通用 API(例如配置 API、校正数据注入 API、枚举和回调)均在通用位置 API、回调、枚举和结构体章节中说明。在适用情况下,差异会显示出来,否则唯一的区别是 RTK 子系统提供分米级的位置数据。
PP_RTKManager
要在 RTK 子系统中调用 API,需如示例所示创建 PP_RTKManager 类的实例。
IQesdk mQesdkManager = IQesdk.createInstance(this);
PP_RTKManager mPpeRtkManager = new PP_RTKManager(mQesdkManager);