gpu-atlas 0.2.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +27 -2
- package/dist/gpu-atlas.js +222 -210
- package/dist/gpu-atlas.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -15,7 +15,7 @@ device description it is about.
|
|
|
15
15
|
| | desktop | tablet | phone |
|
|
16
16
|
|---|---|---|---|
|
|
17
17
|
| GPU | NVIDIA Lovelace | Apple | Adreno 7xx |
|
|
18
|
-
| browser | Chrome 151 | Safari 26.6 | Samsung Internet 30 |
|
|
18
|
+
| browser | Chrome 151, Edge 152 | Safari 26.6 | Samsung Internet 30 |
|
|
19
19
|
| OS | Windows | iPadOS | Android 16 |
|
|
20
20
|
|
|
21
21
|
The tablet is an iPad, and finding that out took longer than it should have.
|
|
@@ -72,6 +72,30 @@ phone reports `rgba8unorm` — an easy thing to build on and have fail on phones
|
|
|
72
72
|
`maxStorageBufferBindingSize` spans 16x (2.1GB / 716MB / 134MB) and
|
|
73
73
|
`maxBufferSize` 3x.
|
|
74
74
|
|
|
75
|
+
### The browser barely matters; the device does
|
|
76
|
+
|
|
77
|
+
Chrome and Edge on the same machine, same GPU, same driver:
|
|
78
|
+
|
|
79
|
+
| benchmark | Chrome 151 | Edge 152 | ratio |
|
|
80
|
+
|---|---:|---:|---:|
|
|
81
|
+
| triangle throughput | 4,246 MTri/s | 3,906 | 1.09x |
|
|
82
|
+
| texture sampling | 254 GSample/s | 241 | 1.06x |
|
|
83
|
+
| bind group switching | 4,067,797 /s | 4,353,742 | 1.07x |
|
|
84
|
+
| fill rate | 127,117 MPixel/s | 132,129 | 1.04x |
|
|
85
|
+
| fragment ALU | 3,122 MPixel/s | 2,994 | 1.04x |
|
|
86
|
+
| pipeline switching | 1,904,762 /s | 2,170,543 | 1.14x |
|
|
87
|
+
|
|
88
|
+
Everything lands within 1.14x, against the 65x that separates devices. Draw call
|
|
89
|
+
overhead appeared to differ by 1.63x — but the Chrome run of that benchmark came
|
|
90
|
+
back flagged `unreliable` at 21% variation, so the one axis that looked
|
|
91
|
+
interesting is the one the tool declines to stand behind. That is the flag
|
|
92
|
+
working, not a finding.
|
|
93
|
+
|
|
94
|
+
Two caveats worth stating: this is Chrome 151 against Edge on Chromium 152, so
|
|
95
|
+
it is not a clean same-version comparison, and Edge declares
|
|
96
|
+
`subgroup-size-control` where Chrome 151 does not — a feature that moved between
|
|
97
|
+
Chromium releases rather than anything Edge added. Declared limits are identical.
|
|
98
|
+
|
|
75
99
|
### Browsers quantize GPU timestamps, and by different amounts
|
|
76
100
|
|
|
77
101
|
`timestamp-query` results are rounded into buckets as a Spectre mitigation.
|
|
@@ -80,10 +104,11 @@ Measured rather than assumed:
|
|
|
80
104
|
| | GPU timer | `performance.now()` |
|
|
81
105
|
|---|---|---|
|
|
82
106
|
| Chrome 151 | 65,536 ns (2^16) | 0.1 ms |
|
|
107
|
+
| Edge 152 | 65,536 ns (2^16) | 0.1 ms |
|
|
83
108
|
| Samsung Internet 30 | 65,536 ns (2^16) | 0.1 ms |
|
|
84
109
|
| Safari 26.6 | no quantization detected | 1 ms |
|
|
85
110
|
|
|
86
|
-
|
|
111
|
+
All three Chromium browsers return exactly 2^16 across two GPU vendors and two
|
|
87
112
|
operating systems, while WebKit does not quantize the GPU timer at all — this is
|
|
88
113
|
browser policy, not hardware.
|
|
89
114
|
|