Skip to main content

GPUData

From: v10Status: Work-In-Progress

GPUData describes one GPU buffer plus typed row metadata. It is the lowest-level storage object in @luma.gl/tables: each GPUData owns or borrows its own Buffer or DynamicBuffer, and higher-level table objects refer to buffers through GPUData.

Usage

import {GPUData} from '@luma.gl/tables';

const gpuData = new GPUData({
buffer,
format: 'float32x3',
length,
byteStride: 12,
ownsBuffer: true
});

When the input starts as Apache Arrow, prefer makeGPUDataFromArrowData() from @luma.gl/arrow; it uploads Arrow values into GPU buffers and fills in the required format, layout, and readback metadata.

Constructor

new GPUData(props)

PropTypeDefaultMeaning
bufferBuffer | DynamicBufferRequiredGPU buffer containing this chunk's bytes.
formatGPUVectorFormatundefinedCanonical memory-layout descriptor, such as float32x3 or vertex-list<float32x3>.
lengthnumberRequiredNumber of logical rows in this chunk.
valueLengthnumberlengthNumber of fixed rows or flattened vertex-list element values.
stridenumberDerived from formatNumber of scalar values represented by one fixed row or flattened element.
byteOffsetnumber0Byte offset of the first logical row in this chunk's buffer. Most adapters use 0 because chunks own their uploaded buffers.
byteStridenumberDerived from formatBytes between adjacent fixed rows or flattened elements.
rowByteLengthnumberDerived from formatBytes occupied by one fixed row or flattened element payload.
ownsBufferbooleanfalseWhether destroy() releases the backing buffer.
readbackMetadataunknownundefinedProducer-owned metadata retained for adapter-level readback.
dataTypeunknownundefinedDeprecated adapter-owned logical metadata retained during migration.

Properties

PropertyTypeMeaning
bufferBuffer | DynamicBufferGPU buffer containing this chunk's bytes.
formatGPUVectorFormat | undefinedCanonical memory-layout descriptor when this chunk has one value view.
typeunknownDeprecated adapter-owned logical metadata.
dataTypeunknownDeprecated adapter-owned logical metadata.
lengthnumberNumber of logical rows in this chunk.
valueLengthnumberNumber of fixed rows or flattened vertex-list element values.
stridenumberNumber of scalar values represented by one fixed row or flattened element.
byteOffsetnumberByte offset of the first logical row.
byteStridenumberBytes between adjacent fixed rows or flattened elements.
rowByteLengthnumberBytes occupied by one fixed row or flattened element payload.
readbackMetadataunknownOptional producer-owned metadata.
ownsBufferbooleanWhether this data range currently owns its backing buffer.

Methods

destroy(): void

Destroys the backing buffer only when ownsBuffer is true. Borrowed buffers are left alive.

Ownership

GPUData is the storage-owning layer. GPUVector, GPURecordBatch, and GPUTable follow their ownership graph down to GPUData, but buffer destruction is controlled here.

GPUData should not be used as a cheap view into a larger aggregate table buffer. If a streaming adapter receives a new source batch, it should create new GPUData objects with their own buffers and append those chunks to a GPUVector.