• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

visgl / luma.gl / 28604446511

02 Jul 2026 04:08PM UTC coverage: 71.39% (+0.05%) from 71.34%
28604446511

Pull #2707

github

web-flow
Merge 1db417a05 into 7d9ec2318
Pull Request #2707: [codex] Add graph-native GPU sort

10193 of 16165 branches covered (63.06%)

Branch coverage included in aggregate %.

95 of 98 new or added lines in 1 file covered. (96.94%)

1 existing line in 1 file now uncovered.

20364 of 26638 relevant lines covered (76.45%)

5362.88 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

44.74
/modules/tables/src/table/gpu-vector-utils.ts
1
// luma.gl
2
// SPDX-License-Identifier: MIT
3
// Copyright (c) vis.gl contributors
4

5
import type {Buffer, BufferLayout} from '@luma.gl/core';
6
import type {DynamicBuffer} from '@luma.gl/engine';
7
import type {GPUData} from './gpu-data';
8
import type {GPUTable} from './gpu-table';
9
import type {GPUVector} from './gpu-vector';
10

11
/** Returns the single GPUData chunk for APIs that require contiguous GPU vector storage. */
12
export function getGPUVectorData(vector: GPUVector): GPUData {
13
  const [data, ...remainingData] = vector.data;
52✔
14
  if (!data || remainingData.length > 0) {
52!
UNCOV
15
    throw new Error(`GPUVector "${vector.name}" requires exactly one GPUData chunk`);
×
16
  }
17
  return data;
52✔
18
}
19

20
/** Returns the single backing buffer for APIs that bind contiguous GPU vector storage directly. */
21
export function getGPUVectorBuffer(vector: GPUVector): Buffer | DynamicBuffer {
22
  return getGPUVectorData(vector).buffer;
×
23
}
24

25
/** Derives model-ready attribute buffers from layout metadata and GPU vector storage. */
26
export function getGPUVectorBuffersForLayout(
27
  bufferLayout: BufferLayout[],
28
  gpuVectors: Record<string, GPUVector>
29
): Record<string, Buffer | DynamicBuffer> {
30
  const buffers: Record<string, Buffer | DynamicBuffer> = {};
×
31
  for (const layout of bufferLayout) {
×
32
    const vector = gpuVectors[layout.name];
×
33
    if (!vector) {
×
34
      throw new Error(`Buffer layout references missing GPU vector "${layout.name}"`);
×
35
    }
36
    if (vector.data.length === 0) {
×
37
      continue;
×
38
    }
39
    buffers[layout.name] = getGPUVectorBuffer(vector);
×
40
  }
41
  return buffers;
×
42
}
43

44
/** Derives model-ready attribute buffers from layout metadata and batch-local GPU data. */
45
export function getGPUDataBuffersForLayout(
46
  bufferLayout: BufferLayout[],
47
  gpuData: Record<string, GPUData>
48
): Record<string, Buffer | DynamicBuffer> {
49
  const buffers: Record<string, Buffer | DynamicBuffer> = {};
79✔
50
  for (const layout of bufferLayout) {
79✔
51
    const data = gpuData[layout.name];
103✔
52
    if (!data) {
103!
53
      throw new Error(`Buffer layout references missing GPUData "${layout.name}"`);
×
54
    }
55
    buffers[layout.name] = data.buffer;
103✔
56
  }
57
  return buffers;
79✔
58
}
59

60
/** Returns a required GPU vector from a table by column name. */
61
export function getRequiredGPUVector(
62
  table: GPUTable,
63
  columnName: string,
64
  ownerName = 'GPU table'
×
65
): GPUVector {
66
  const vector = table.gpuVectors[columnName];
6✔
67
  if (!vector) {
6!
68
    throw new Error(`${ownerName} is missing GPU vector "${columnName}"`);
×
69
  }
70
  return vector;
6✔
71
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc