# Example code

**Parent Topic:** [Performance API](https://docs.qualcomm.com/doc/80-PK177-134/topic/performance_api_qape.html)

## Java 

Source: [https://docs.qualcomm.com/doc/80-PK177-134/topic/qape_example_code.html](https://docs.qualcomm.com/doc/80-PK177-134/topic/qape_example_code.html)

**Required imports**

    import com.qualcomm.qti.qesdk.Performance.*;
    import com.qualcomm.qti.qesdk.QesdkStatusException;
    import com.qualcomm.qti.qesdkIntf.IQesdk;Copy to clipboard

**Initialize**

    IQesdk qesdkManager = Iqesdk.createInstance(getApplicationContext());
    QAPEManager perfManager = new QAPEManager(qesdkManager);
    int status = perfManager.init([String license], (opcodes, subsystem) -> { 
    // Callback handle
    });Copy to clipboard

**Set package**

    int setPkgStatus = perfManager.set_pkg(getApplicationContext().getPackageName()); 
    int ret = perfManager->set_pkg(pkg_name);Copy to clipboard

**Setup callbacks**

    IQesdkEventCallBack eventCallbackHandler = new IQesdkEventCallBack() { @Override
    public void onEvent(int opcode, int[] subsys) {
    // Handle QESDK event }};Copy to clipboard

**Boost CPU**

    int retStatus = perfManager.boost_cpu(cpuBoostPercentage);Copy to clipboard

**Boost GPU**

    retStatus = perfManager.boost_gpu(gpuBoostPercentage);Copy to clipboard

**Hint high CPU util**

    retStatus = perfManager.hint_high_cpuutil(tid);Copy to clipboard

**Hint low CPU util**

    retStatus = perfManager.hint_low_cpuutil(tid);Copy to clipboard

**Hint low latency**

    retStatus = perfManager.hint_low_latency(tid);Copy to clipboard

**Hint thread pipeline**

    retStatus = perfManager.hint_thread_pipeline(threadIds);Copy to clipboard

**Release thread hints**

    retStatus = perfManager.release_thread_hints(0,tid);Copy to clipboard

**Get GPU headroom**

    retStatus = perfManager.get_gpu_headroom(gpuDuration, gpuHeadroomType);Copy to clipboard

**OEM boost CPU**

    int oem_boost_cpu (int orig_val) { // check any system parameters
           return new_val; }Copy to clipboard

**OEM boost CPU**

    int oem_boost_gpu (int orig_val) { // check any system parameters
          return new_val; }Copy to clipboard

**OEM scenario support**

    int oem_scenario_support (std::string appName, std::string scenario_id) {
          SLOGD("OEM extension plugin get scenario support: %s %s", appName.c_str(), scenario_id.c_str());
          return 1;
          }Copy to clipboard

**OEM start scenario**

    int oem_start_scenario(std::string appName, std::string scenario_id, int * &plock) {
          int args = 0;
          if (scenario_id.compare("launch") == 0) {
              int x[] = { 0x40C00000, 0x1, 0x40804000, 0xFFF, 0x40804100, 0xFFF, 0x40804200, 0xFFF,
                          0x40800000, 0xFFF, 0x40800100, 0xFFF, 0x40800200, 0xFFF, 0x41848000, 0x104410, 
                          0x41844000, 0x104410, 0x40400000, 0x1, 0x42C10000, 0x1, 0x43460000, 0x30D400, 
                          0x43458000, 0x193138, 0x4281C000, 2000 };
              args = sizeof(x)/sizeof(x[0]);
              plock = (int *) malloc(sizeof(int) * args);
              for (int i = 0; i < args; i++) {
                 plock[i] = x[i];
              }
          } 
          else if (scenario_id.compare("scroll") == 0) {
              int x[] = { 0x4303C000, 0xA6428, 0x40800000, 1000, 0x40800100, 1000, 0x40800200, 1000,
                          0x40C00000, 0x2, 0x43458000, 0xD2F00, 0x40C74000, 0xFF, 0x40408000, 0x63, 
                          0x41000000, 3 };
              args = sizeof(x)/sizeof(x[0]);
              plock = (int *) malloc(sizeof(int) * args);
              for (int i = 0; i < args; i++) {
                 plock[i] = x[i];
              }
           }
           SLOGD("OEM extension plugin start scenario: %s %s %d", appName.c_str(), scenario_id.c_str(), args);
               return args;
          }Copy to clipboard

**OEM stop scenario**

    int oem_stop_scenario(std::string appName, std::string scenario_id) {
         SLOGD("OEM extension plugin stop scenario: %s %s", appName.c_str(), scenario_id.c_str());
         return 0;
    }Copy to clipboard

## Native

Source: [https://docs.qualcomm.com/doc/80-PK177-134/topic/qape_example_code.html](https://docs.qualcomm.com/doc/80-PK177-134/topic/qape_example_code.html)

**Required includes**

    #include "qesdk_ndk.h"
    #include "qesdk_Performance_QAPE.h"Copy to clipboard

**Initialize**

    QAPEManager *perfManager = new QAPEManager(); 
    int ret = perfManager->init(licenseStr, license_length, (uint32_t opcodes, uint32_t *subsystems) {
    // Handle QESDK event
    });Copy to clipboard

**Setup callbacks**

    void event_callback_handler(uint32_t opcode, uint32_t subsys[]){
    // Callback to handle QESDK events 
    }Copy to clipboard

**Boost CPU**

    int8_t ret = -1;
    qesdk_transaction_status qesdk_ndk_response = perfManager->boost_cpu(nBoostVal, ret); 
    if(qesdk_ndk_response.is_ok()){
      // Use the ret value
    } else {
      // Can get error code by get_error_code() 
    }Copy to clipboard

**Boost GPU**

    qesdk_ndk_response = perfManager->boost_gpu(nBoostVal, ret);
    if(qesdk_ndk_response.is_ok()){
      // Use the ret value
    } else {
      // Can get error code by get_error_code() 
    }Copy to clipboard

**Hint High CPU Util**

    qesdk_ndk_response = perfManager->hint_high_cpuutil(ntid, ret);
    if(qesdk_ndk_response.is_ok()){
      // Use the ret value
    } else {
      // Can get error code by get_error_code() 
    }Copy to clipboard

**Hint Low CPU Util**

    qesdk_ndk_response = perfManager->hint_low_cpuutil(ntid, ret);
    if(qesdk_ndk_response.is_ok()){
      // Use the ret value
    } else {
      // Can get error code by get_error_code() 
    }Copy to clipboard

**Hint Low Latency**

    qesdk_ndk_response = perfManager->hint_low_latency(ntid, ret);
    if(qesdk_ndk_response.is_ok()){
      // Use the ret value
    } else {
      // Can get error code by get_error_code() 
    }Copy to clipboard

**Hint Thread Pipeline**

    qesdk_ndk_response = perfManager->hint_thread_pipeline(ntids, ret);
    if(qesdk_ndk_response.is_ok()){
      // Use the ret value
    } else {
      // Can get error code by get_error_code() 
    }Copy to clipboard

**Release Thread Hints**

    qesdk_ndk_response = perfManager->release_thread_hints(n_hint_category, ntid, ret);
    if(qesdk_ndk_response.is_ok()){
      // Use the ret value
    } else {
      // Can get error code by get_error_code() 
    }Copy to clipboard

**Get GPU Headroom**

    qesdk_ndk_response = perfManager->get_gpu_headroom(n_past_dur, avg, ret);
    if(qesdk_ndk_response.is_ok()){
      // Use the ret value
    } else {
      // Can get error code by get_error_code() 
    }Copy to clipboard

Last Published: Nov 14, 2024

[Previous Topic
Auto pipeline with other thread APIs](https://docs.qualcomm.com/bundle/publicresource/80-PK177-134/topics/auto_pipeline_with_other_threads.md) [Next Topic
Location API](https://docs.qualcomm.com/bundle/publicresource/80-PK177-134/topics/location.md)