1## Overview
  2
  3The document covers procedures for installing the latest GPU and NPU drivers, and OpenCL and Hexagon SDKs.
  4
  5
  6In order to use Hexagon NPU on Snapdragon Windows devices the underlying HTP Ops libraries (e.g libggml-htp-v73.so)
  7must be included in the .cat file digitally signed with a trusted certificate.
  8
  9This document covers details on how to generate personal certificate files (.pfx) and how to configure the system
 10to allow for test signatures (aka test-signing).
 11
 12## Install the latest Adreno OpenCL SDK
 13
 14Either use the trimmed down version (optimized for CI) from
 15
 16    https://github.com/snapdragon-toolchain/opencl-sdk/releases/download/v2.3.2/adreno-opencl-sdk-v2.3.2-arm64-wos.tar.xz
 17
 18Or download the complete official version from
 19
 20    https://softwarecenter.qualcomm.com/catalog/item/Adreno_OpenCL_SDK?version=2.3.2
 21
 22Unzip/untar the archive into
 23```
 24c:\Qualcomm\OpenCL_SDK\2.3.2
 25```
 26
 27## Install the latest Hexagon SDK Community Edition
 28
 29Either use the trimmed down version (optimized for CI) from
 30
 31    https://github.com/snapdragon-toolchain/hexagon-sdk/releases/download/v6.4.0.2/hexagon-sdk-v6.4.0.2-arm64-wos.tar.xz
 32
 33Or download the complete official version from
 34
 35    https://softwarecenter.qualcomm.com/catalog/item/Hexagon_SDK?version=6.4.0.2
 36
 37Unzip/untar the archive into
 38```
 39c:\Qualcomm\Hexagon_SDK\6.4.0.2
 40```
 41
 42## Install the latest Adreno GPU driver
 43
 44Download the driver from
 45
 46    https://softwarecenter.qualcomm.com/catalog/item/Windows_Graphics_Driver
 47
 48After the automated installation and reboot please make sure that the GPU device shows up in the `Device Manager` (under 'Display Adapters`)
 49
 50## Install the latest Qualcomm NPU driver
 51
 52Download the driver from
 53
 54    https://softwarecenter.qualcomm.com/catalog/item/Qualcomm_HND
 55
 56After the automated installation and reboot please make sure that the Hexagon NPU device shows up in the `Device Manager` (under `Neural Processors`).
 57
 58If the device is not available you can try installing all components (`qcnspmcdm8380`, `qcnspmcdm8380_ext`) manually.
 59The components are extracted into
 60```
 61c:\QCDrivers\qcnspmcdm...
 62```
 63
 64## Enable NPU driver test signatures
 65
 66Please note that the following steps are required only for the Hexagon NPU.
 67Adreno GPU backend does not require test signatures.
 68
 69### Enable testsigning
 70
 71Use `bcdedit` to enable test-signing
 72```
 73> bcdedit /set TESTSIGNING ON
 74```
 75(Secure Boot may need to be disabled for this to work)
 76
 77Make sure test-signing is enabled after reboot
 78```
 79> bcdedit /enum
 80...
 81testsigning             Yes
 82...
 83```
 84For additional details see Microsoft guide at
 85
 86   https://learn.microsoft.com/en-us/windows-hardware/drivers/install/the-testsigning-boot-configuration-option
 87
 88### Create personal certificate
 89
 90The tools required for this procedure are available as part of Windows SDK and Windows Driver Kit which should be
 91installed as part of the MS Visual Studio.
 92They are typically located at
 93```
 94c:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0
 95```
 96(replace 10.0.26100.0 with correct version).
 97
 98To create personal self-signed certificate run the following commands (either from cmd or power-shell):
 99```
100> cd c:\Users\MyUser
101> mkdir Certs
102> cd Certs
103> makecert -r -pe -ss PrivateCertStore -n CN=GGML.HTP.v1 -eku 1.3.6.1.5.5.7.3.3 -sv ggml-htp-v1.pvk ggml-htp-v1.cer
104> pvk2pfx.exe -pvk ggml-htp-v1.pvk -spc ggml-htp-v1.cer -pfx ggml-htp-v1.pfx
105```
106(replace `MyUser` with your username).
107
108Add this certificate to `Trusted Root Certification Authorities` and `Trusted Publishers` stores.
109This can be done using `certlm` Certificate Manager tool.
110Right click on the certificate store, select `All Tasks -> Import` and follow the prompts to import the certificate from the
111PFX file you created above.
112
113For additional details see Microsoft guide at
114
115    https://learn.microsoft.com/en-us/windows-hardware/drivers/install/introduction-to-test-signing
116
117Make sure to save the PFX file, you will need it for the build procedures.
118Please note that the same certificate can be used for signing any number of builds.
119
120## Build Hexagon backend with signed HTP ops libraries
121
122The overall Hexagon backend build procedure for Windows on Snapdragon is the same as for other platforms.
123However, additional settings are required for generating and signing HTP Ops libraries.
124```
125> $env:OPENCL_SDK_ROOT="C:\Qualcomm\OpenCL_SDK\2.3.2"
126> $env:HEXAGON_SDK_ROOT="C:\Qualcomm\Hexagon_SDK\6.4.0.2"
127> $env:HEXAGON_TOOLS_ROOT="C:\Qualcomm\Hexagon_SDK\6.4.0.2\tools\HEXAGON_Tools\19.0.04"
128> $env:HEXAGON_HTP_CERT="c:\Users\MyUsers\Certs\ggml-htp-v1.pfx"
129> $env:WINDOWS_SDK_BIN="C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\arm64"
130
131> cmake --preset arm64-windows-snapdragon-release -B build-wos
132...
133> cmake --install build-wos --prefix pkg-snapdragon
134```
135
136Once the build is complete HTP ops libraries will be installed like this
137```
138> dir pkg-snapdragon/lib
139...
140-a----         1/22/2026   6:01 PM         187656 libggml-htp-v73.so
141-a----         1/22/2026   6:01 PM         191752 libggml-htp-v75.so
142-a----         1/22/2026   6:01 PM         187656 libggml-htp-v79.so
143-a----         1/22/2026   6:01 PM         187656 libggml-htp-v81.so
144-a----         1/22/2026   6:01 PM           4139 libggml-htp.cat
145```
146
147The .cat file, the signature and proper certicate installation can be verified with
148
149```
150> signtool.exe verify /v /pa .\pkg-snapdragon\lib\libggml-htp.cat
151Verifying: .\pkg-snapdragon\lib\libggml-htp.cat
152
153Signature Index: 0 (Primary Signature)
154Hash of file (sha256): 9820C664DA59D5EAE31DBB664127FCDAEF59CDC31502496BC567544EC2F401CF
155
156Signing Certificate Chain:
157        Issued to: GGML.HTP.v1
158...
159Successfully verified: .\pkg-snapdragon\lib\libggml-htp.cat
160...
161```