Re: Non-conformant VK 1.1+ support on A702
Allan MacKinnon <[email protected]> Sat, 31 Jan 2026 13:10:26 -0500
| Newsgroups | gmane.comp.video.mesa3d.user |
|---|---|
| Message-ID | <CAAwCruwyqjRkCfWde4xwBb1ymAXkkKvM+S_guXb+2aYycjn5Zw@mail.gmail.com> |
--00000000000037bd280649b30357 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable False alarm... The A702 is a non-ideal Vulkan 1.0 conformant device but with effort you should be able to (validly) access all the interesting features. I dug a little more and it seems that all extensions that could be supported by the hardware are actually advertised so Vulkan 1.0 conformance is not a problem for applications that don't give up based on the 1.0.x `.apiVersion`. For example, all the A702 compatible SaschaWillems samples I tried worked fine including those that use relatively new post-1.0 extensions like timeline semaphores and buffer device addresses. But, unfortunately there are device properties like `.subgroupSupported[Operations|Stages]` that never existed as an extension (e.g. like VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR) so you would have to check for the instance extension VK_KHR_get_physical_device_properties2 (which is correctly advertised on the A702 -- good job) but there was never a VkPhysicalDeviceSubgroupProperties*KHR* structure so I don't know if the validator will bleat when you do this. It may be that VkPhysicalDeviceSubgroupProperties is one of the few structs without a typedef'd KHR struct. FWIW, here is the `vulkanCapsViewer` of the Arduino's Debian Mesa driver: Arduino Debian Mesa: https://vulkan.gpuinfo.org/displayreport.php?id=3D4597= 5 You can see the A702 configuration here and what features are added to later devices: https://gitlab.freedesktop.org/mesa/mesa/-/blob/main/src/freedreno/common/f= reedreno_devices.py?ref_type=3Dheads#L889 Nice to see the A702 working well! Thanks! On Fri, Jan 30, 2026 at 2:12=E2=80=AFPM Allan MacKinnon <[email protected].= edu> wrote: > Hi Turnip Team, > > You may have noticed that Arduino/Qualcomm released the Arduino Uno Q SBC > which has a QRB2210 SoC and an Adreno 702 GPU. I suspect they'll sell a > decent number of these devices. > > I skimmed the driver and noticed the A702 doesn't support multiview which > is mandatory in VK 1.1 and therefore `.apiVersion` is set to 1.0.x which > lops off a lot of interesting Vulkan features. > > It's too bad that the lack of multiview has gated so many features (I > understand why) but let's say I won't be using multiview and, for example= , > really want to use subgroup compute capabilities. > > How accurate are the rest of the physical device properties for A702 in > case I want to run a non-conformant driver that lifts the `.apiVersion` t= o > 1.3 or 1.4? > > I don't recall the Vulkan org describing a workaround for a situation lik= e > this (nor should they). > > Whatever the answer, it's interesting that a low-end board now has an > *almost* compliant Vulkan 1.4 GPU... > > Thanks for any suggestions. > > Allan > > ---- > > A702 checks in `tu_device.cc`: > > - > https://gitlab.freedesktop.org/mesa/mesa/-/blob/main/src/freedreno/vul= kan/tu_device.cc?ref_type=3Dheads#L1220 > - > https://gitlab.freedesktop.org/mesa/mesa/-/blob/main/src/freedreno/vul= kan/tu_device.cc?ref_type=3Dheads#L151 > > --00000000000037bd280649b30357 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div>False alarm...</div><div><br></div><div>The A702 is a= non-ideal Vulkan 1.0 conformant device but with effort you should be able = to (validly) access all the interesting features.</div><div><br></div><div>= I dug a little more and it seems that all extensions that could be supporte= d by the hardware are actually advertised so Vulkan 1.0 conformance is not = a problem for applications that don't give up based on the 1.0.x `.apiV= ersion`.</div><div><br></div><div>For example, all the A702 compatible Sasc= haWillems samples I tried worked fine including those that use relatively n= ew post-1.0 extensions like timeline semaphores and buffer device addresses= .</div><div><br></div><div>But, unfortunately there are device properties l= ike `.subgroupSupported[Operations|Stages]` that never existed as an extens= ion (e.g. like VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR) so you woul= d have to check for the instance extension=C2=A0VK_KHR_get_physical_device_= properties2 (which is correctly advertised on the A702 -- good job) but the= re was never a VkPhysicalDeviceSubgroupProperties*KHR* structure so I don&#= 39;t know if the validator will bleat when you do this.</div><div><br></div= ><div>It may be that VkPhysicalDeviceSubgroupProperties is one of the few s= tructs without a typedef'd KHR struct.</div><div><br></div><div>FWIW, h= ere is the `vulkanCapsViewer` of the Arduino's Debian Mesa driver:</div= ><div><div><div><br></div><blockquote style=3D"margin:0px 0px 0px 40px;bord= er:none;padding:0px"><div><div>Arduino Debian Mesa: <a href=3D"https://vulk= an.gpuinfo.org/displayreport.php?id=3D45975">https://vulkan.gpuinfo.org/dis= playreport.php?id=3D45975</a></div></div><div><br></div></blockquote>You ca= n see the A702 configuration here and what features are added to later devi= ces:=C2=A0<div><br></div><blockquote style=3D"margin:0px 0px 0px 40px;borde= r:none;padding:0px"><div><a href=3D"https://gitlab.freedesktop.org/mesa/mes= a/-/blob/main/src/freedreno/common/freedreno_devices.py?ref_type=3Dheads#L8= 89">https://gitlab.freedesktop.org/mesa/mesa/-/blob/main/src/freedreno/comm= on/freedreno_devices.py?ref_type=3Dheads#L889</a></div><div><br></div></blo= ckquote>Nice to see the A702 working well!</div><div><br></div><div>Thanks!= </div></div></div><br><div class=3D"gmail_quote gmail_quote_container"><div= dir=3D"ltr" class=3D"gmail_attr">On Fri, Jan 30, 2026 at 2:12=E2=80=AFPM A= llan MacKinnon <<a href=3D"mailto:[email protected]">[email protected]= it.edu</a>> wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"m= argin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left= :1ex"><div dir=3D"ltr"><div>Hi Turnip Team,</div><div><br></div><div>You ma= y have noticed that Arduino/Qualcomm released the Arduino Uno Q SBC which h= as a=C2=A0QRB2210 SoC and an Adreno 702 GPU.=C2=A0 =C2=A0I suspect they'= ;ll sell a decent number of these devices.</div><div><br></div><div>I skimm= ed the driver and noticed the A702 doesn't support multiview which is m= andatory in VK 1.1 and therefore `.apiVersion` is set to 1.0.x which lops o= ff a lot of interesting Vulkan features.</div><div><br></div><div>It's = too bad that the lack of multiview has gated so many features (I understand= why) but let's say I won't be using multiview and, for example, re= ally want to use subgroup compute capabilities.</div><div><br></div><div>Ho= w accurate are the rest of the physical device properties for A702 in case = I want to run a non-conformant driver that lifts the `.apiVersion` to 1.3 o= r 1.4?</div><div><br><div>I don't recall the Vulkan org describing a wo= rkaround for a situation like this (nor should they).</div><div></div></div= ><div><br>Whatever the answer, it's interesting that a low-end board no= w has an *almost* compliant Vulkan 1.4 GPU...</div><div><br></div><div>Than= ks for any suggestions.</div><div><br></div><div>Allan</div><div><br></div>= <div>----</div><div><br></div><div>A702 checks in `tu_device.cc`:</div><div= ><ul><li><a href=3D"https://gitlab.freedesktop.org/mesa/mesa/-/blob/main/sr= c/freedreno/vulkan/tu_device.cc?ref_type=3Dheads#L1220" target=3D"_blank">h= ttps://gitlab.freedesktop.org/mesa/mesa/-/blob/main/src/freedreno/vulkan/tu= _device.cc?ref_type=3Dheads#L1220</a></li><li><a href=3D"https://gitlab.fre= edesktop.org/mesa/mesa/-/blob/main/src/freedreno/vulkan/tu_device.cc?ref_ty= pe=3Dheads#L151" target=3D"_blank">https://gitlab.freedesktop.org/mesa/mesa= /-/blob/main/src/freedreno/vulkan/tu_device.cc?ref_type=3Dheads#L151</a></l= i></ul></div></div> </blockquote></div> --00000000000037bd280649b30357--