Commit 5db6f22
[ET-VK][qconv] Use ivec4 reads in pack_q8_conv2d_weights to fix Adreno 740 bug
On Adreno 740 (Quest 3S), scalar int[] SSBO reads from host-visible staging
buffers in the pack_q8_conv2d_weights shader returned incorrect data —
specifically t_int8_weight[N] returned the value of t_int8_weight[N-1] for N>0.
This caused corrupted conv2d weights for all kernels with kx>0, resulting in
18/45 head-case failures on the SceneX V9 model.
Switching the input buffer declaration from scalar int[] to ivec4[] changes the
GPU load instruction from scalar loads to vec4 loads, which sidesteps the driver
bug. The indexing is updated accordingly: t_int8_weight[word_idx] becomes
t_int8_weight[word_idx >> 2][word_idx & 3].
Authored with Claude.
Differential Revision: [D96036513](https://our.internmc.facebook.com/intern/diff/D96036513/)
ghstack-source-id: 350221316
Pull Request resolved: #180771 parent 48690b1 commit 5db6f22
1 file changed
Lines changed: 3 additions & 2 deletions
Lines changed: 3 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
20 | | - | |
| 20 | + | |
21 | 21 | | |
22 | 22 | | |
23 | 23 | | |
| |||
65 | 65 | | |
66 | 66 | | |
67 | 67 | | |
68 | | - | |
| 68 | + | |
| 69 | + | |
69 | 70 | | |
70 | 71 | | |
71 | 72 | | |
| |||
0 commit comments