docs / stdlib / gfx

Stdlib index
  1. Overview
  1. Captured-borrow migration worklist (3.3.3)
  2. Owned-bind migration worklist (8.2.7)
  3. Return-side title audit — the ride-through enumeration
  4. stdlib ownership audit
  5. stdlib ownership dispositions (plan 1.3.1 / 4.3.1)

aot

  1. Components
  2. Scope
  3. Scoped

codec

  1. Base32
  2. Base64

codec / csv

  1. Csv

codec / json

  1. Json

collection

  1. ArrayList
  2. BPlusTree
  3. Cache
  4. Collectors
  5. HashMap
  6. HashSet
  7. Heap
  8. ImmutableList
  9. ImmutableMap
  10. ImmutableSet
  11. LinkedList
  12. RedBlackTree
  13. Sort

collection / ltm

  1. LtmBPlusTree

concurrent

  1. AtomicInt32
  2. AtomicInt64
  3. Channel
  4. Fiber
  5. FiberLocal
  6. Lock
  7. Mutex
  8. RwLock
  9. Semaphore
  10. Tasks

error

  1. Exception
  2. NoOptionalValueException
  3. NotProvidedException
  4. RecoverableException
  5. ScopedBuildFailedException
  6. ScopeNotActiveException
  7. Throwable
  8. UnrecoverableException

gfx

  1. Sampler
  2. Texture2D

hash

  1. DefaultHasher
  2. Hash
  3. SipHash
  4. XXHash3

ifx

  1. BackendRegistry
  2. Window

io

  1. Buffer

io / file

  1. File
  2. FileInfo
  3. FileReader
  4. FileWriter
  5. Path
  6. Watcher

io / net

  1. BufferPool
  2. ByteBuffer
  3. IpAddress
  4. Server
  5. ServerBuilder
  6. SocketAddress
  7. TcpListener
  8. TcpStream
  9. UdpSocket

io / net / dns

  1. Dns

io / net / uri

  1. Uri
  2. UriBuilder

lang

  1. Guid
  2. Math
  3. Optional
  4. Pair
  5. Slice
  6. String
  7. StringBuilder

lang / stream

  1. ArrayStream
  2. Stream

math

  1. Camera
  2. Color
  3. DType
  4. Ray
  5. Rotation
  6. Tensor
  7. Transform

math / fft

  1. Fft

math / linalg

  1. LinAlg

math / npio

  1. Npy

math / poly

  1. Poly

math / random

  1. Generator

math / stats

  1. Stats

nucleo

  1. Columns — the Arrow-laid-out substrate
  2. Fused tensor expressions — Fuse
  3. Table — the lazy, typed dataframe
  4. Tape — define-by-run autograd
  5. Transform intrinsics — Grad, Vmap, Jit

process

  1. Command
  2. Process

reflect

  1. Class

search / distance

  1. Distance

search / fuzzy

  1. Matcher

search / ngram

  1. Index

session

  1. PackageInstallException
  2. Packages

time

  1. Clock
  2. DateTimeFormatter
  3. Duration
  4. Instant
  5. LocalDate
  6. LocalDateTime
  7. LocalTime
  8. Period
  9. ZonedDateTime
  10. ZoneId
  11. ZoneOffset

wire

  1. Compressor
  2. CompressStream
  3. DecompressionLimitException
  4. Decompressor
  5. Encoder
  6. Schema
  7. SchemaEncoder

xpu

  1. Device
  2. KernelBuffer
  3. KernelStream
  4. KernelTimer

xpu / mesh

  1. MeshSimplifier

Texture2D<T = float32>

cajeta.gfx.Texture2D — a read-only 2-D image of texels, sampled in a kernel through a Sampler with hardware filtering. Like KernelBuffer, it is a small host-side handle over a device image resource, with the same RAII memory model: the constructor acquires the device image, ~Texture2D() releases it at scope exit, and a launch borrows each Texture2D argument until the next KernelStream.sync(). The type parameter T defaults to float32, so every bare Texture2D spelling is exactly Texture2D<float32>; sample/fetch return Vector<T, 4>. The storage format is chosen at construction from TextureFormat (default R32F). sample is float-only; integer textures (T = int32/uint32) are fetch-only — the hardware cannot filter integer texels.

uint32 w = 16;
uint32 hgt = 16;
float32[] pixels = heap float32[w * hgt];
Texture2D tex = heap Texture2D(w, hgt);   // R32F, one float channel
tex.upload(pixels);
// in an @Kernel: tex.sample(samp, u, v) / tex.fetch(x, y)

Methods

Signature
Texture2D(uint32 width, uint32 height) ⚑RAII constructor: allocate a width x height float32 (R32F) device image
Texture2D(uint32 width, uint32 height, int32 format) ⚑RAII constructor with an explicit storage TextureFormat ordinal, e.g. TextureFormat.RGBA8_UNORM
Texture2D(uint32 width, uint32 height, int32 format, uint32 levels) ⚑RAII constructor with explicit mip levels — a mipmapped texture; upload each level with uploadLevel
uint32 textureWidth()Image width in texels
uint32 textureHeight()Image height in texels
void upload(T[] host)Host → device transfer of width*height row-major, channel-interleaved texels
void uploadLevel(uint32 level, T[] host)Host → device transfer of one mip level (dims max(1, width>>level) x max(1, height>>level))
Vector<T, 4> sample(Sampler s, float32 u, float32 v)Device-only intrinsic: filtered sample at normalized (u, v) in [0, 1] through s, returning the RGBA texel
Vector<T, 4> fetch(uint32 x, uint32 y)Device-only intrinsic: unfiltered, sampler-free read of the texel at exact integer (x, y), mip level 0
Vector<T, 4> fetchLod(uint32 x, uint32 y, uint32 lod)Device-only intrinsic: explicit-LOD texelFetch — the mip-aware twin of fetch
Vector<T, 4> sampleLod(Sampler s, float32 u, float32 v, float32 lod)Device-only intrinsic: explicit-LOD sample; fractional LODs blend two levels (trilinear); float-only

⚑ = @EntryPoint

sample, fetch, fetchLod, and sampleLod are lowered at the call site inside an @Kernel / @Device function to the backend’s image ops; calling them on the host is unsupported.

See also

Source: docs/stdlib/gfx/Texture2D.md · 2 min read · 400 words