Compute

Bindless Descriptors

One global descriptor heap. 65,536 SSBO slots. UPDATE_AFTER_BIND. Every buffer gets a bindless index at creation time.

Architecture

  • One global descriptor pool + one global descriptor set
  • One pipeline layout shared by ALL compute pipelines
  • OaEngine::RegisterBuffer(buf) assigns the bindless index

Auto-Registration

Most buffers are auto-registered:

  • OaTensor::Empty() — auto via RegisterBuffer()
  • OaModule::Alloc() — auto via RegisterBuffer()
  • Low-level AllocHostVisible() — manual call required

Push Constant Layout

Max 128 bytes. Buffer index fields come FIRST, then shader parameters. The C++ dispatch code auto-packs OaBuffer::BindlessIndexvalues before the caller's push data.