MCPcopy Create free account
hub / github.com/ColmapView/Colmapview.github.io / getHardwareWebGpuStatus

Function getHardwareWebGpuStatus

e2e/webgpu-bicycle.spec.ts:267–310  ·  view source on GitHub ↗
(page: Page)

Source from the content-addressed store, hash-verified

265}
266
267async function getHardwareWebGpuStatus(page: Page): Promise<{ ok: boolean; reason?: string }> {
268 return page.evaluate(async (requiredLimits) => {
269 const webGpuNavigator = navigator as Navigator & {
270 gpu?: {
271 requestAdapter(options?: { powerPreference?: 'high-performance' | 'low-power' }): Promise<{
272 limits: {
273 maxBufferSize: number;
274 maxStorageBufferBindingSize: number;
275 };
276 requestDevice(options?: { requiredLimits?: typeof requiredLimits }): Promise<{ destroy(): void }>;
277 } | null>;
278 };
279 };
280
281 if (!webGpuNavigator.gpu) {
282 return { ok: false, reason: 'navigator.gpu is unavailable' };
283 }
284
285 try {
286 const adapter = await webGpuNavigator.gpu.requestAdapter({ powerPreference: 'high-performance' });
287 if (!adapter) {
288 return { ok: false, reason: 'WebGPU adapter is unavailable' };
289 }
290 if (adapter.limits.maxBufferSize < requiredLimits.maxBufferSize) {
291 return {
292 ok: false,
293 reason: `WebGPU adapter maxBufferSize ${adapter.limits.maxBufferSize} is below bicycle requirement ${requiredLimits.maxBufferSize}`,
294 };
295 }
296 if (adapter.limits.maxStorageBufferBindingSize < requiredLimits.maxStorageBufferBindingSize) {
297 return {
298 ok: false,
299 reason: `WebGPU adapter maxStorageBufferBindingSize ${adapter.limits.maxStorageBufferBindingSize} is below bicycle requirement ${requiredLimits.maxStorageBufferBindingSize}`,
300 };
301 }
302
303 const device = await adapter.requestDevice({ requiredLimits });
304 device.destroy();
305 return { ok: true };
306 } catch (error) {
307 return { ok: false, reason: error instanceof Error ? error.message : String(error) };
308 }
309 }, BICYCLE_SPLAT_REQUIRED_LIMITS);
310}
311
312async function waitForWebGpuSplatCanvasVisible(page: Page): Promise<void> {
313 await expect(page.getByTestId('webgpu-splat-canvas')).toBeVisible({ timeout: bicycleTimeoutMs });

Callers 1

Calls 2

requestDeviceMethod · 0.65
destroyMethod · 0.65

Tested by

no test coverage detected