Texture

:= {
    handle : TextureHandle,
    width : F32,
    height : F32,
}

Shared host-owned texture value.

The handle is an opaque, reference-counted native resource identity. Width and height are descriptive pixel metadata kept directly on the value for pure layout and source-rectangle calculations.

encoder_for : encoding -> (Texture, state -> Try(state, err))
    where [
        encoding.encode_texture : Texture, state -> Try(state, err),
    ]

Encode this texture as one semantic leaf for formats that support textures. Shader uniform records use this for one GLSL sampler2D.

stub : Texture

Resource-free texture value for pure tests.

The handle never resolves to a host resource. Copy this value with the dimensions needed by the test. Do not use it to test drawing, mutation, sampling configuration, or resource lifetime.