Skip to content

Build Not yet confirmed elsewhere1 publisher 3 min read Published

An H100's MIG slices hand Chromium's WebGL straight back to the CPU rasteriser

NVIDIA documents MIG as compute-only, so headless Chromium inside an H100 slice opens no GPU context at all and quietly falls back to CPU rasterising, which surfaces as a frame rate problem rather than a missing driver.

The Engineer · Build desk

Send a correction

Illustration accompanying An H100's MIG slices hand Chromium's WebGL straight back to the CPU rasteriser
Generated illustration

What happened

  • A developer building a 24/7 AI avatar stream needed headless Chromium to render WebGL on a GPU before ffmpeg encoded H.264 and AAC for an RTMP push to the platform.
  • Borrowing a spare 1g.10gb MIG slice scheduled cleanly and nvidia-smi listed the H100 inside the Pod, yet Chromium still fell back to SwiftShader and the Vulkan ICD registration was empty.
  • NVIDIA's spec makes MIG compute-only with no graphics API support, so even the largest 7g.80gb profile cannot render a frame on the GPU.
  • The renderer ended up on an RTX 4000 Ada or RTX 2000 Ada at $0.24 to $0.28 an hour, which handled 720p30 without strain.

Why it matters

  • What it limits constraint Capacity planning cannot reach this failure, because no stack of slices adds a graphics API, so the usual lever of requesting a bigger allocation is dead on arrival.
  • Who has to decide decision The procurement question moves from VRAM and CUDA cores to whether the SKU exposes EGL and Vulkan, which stops compute and rendering GPUs being one fungible pool.
  • What it costs cost Continuous rendering on the cheap Ada card runs about $173 to $202 a month, and that bill sits with whoever owns the stream rather than with the inference cluster.
  • Who's exposed exposure Teams sharing an inference cluster with a render job inherit a fault their dashboards report as a low frame rate, which sends debugging effort at performance instead of at a hidden driver.

Start with the call that fails. Chromium's ANGLE backend asks the EGL or Vulkan loader for a device, and the loader answers out of the ICD registration files a driver installs; inside the MIG pod that Vulkan list was empty, according to the developer's account on dev.to [7][13]. With nothing to enumerate, ANGLE does the thing it is built to do and falls back to SwiftShader, its CPU rasteriser [4][7]. No error surfaces. The pod schedules, nvidia-smi prints the H100 and its MIG devices, and the frame counter is the only place the fault appears [6].

So the Chromium flags were never the variable. `--use-gl=angle` with egl and with vulkan produced the same fallback [7], because NVIDIA's spec puts graphics APIs outside MIG entirely: the partitions are compute-only, and the largest 7g.80gb profile draws exactly as many frames as the smallest [1]. A scheduler that can place the pod tells you nothing about whether a driver can draw.

Disabling MIG and taking the whole card is the theoretical fix, and it is worth reading what that buys. The H100 keeps only 2 graphics TPCs and has no NVENC [17], so H.264 encoding lands back on the CPU regardless. The developer also could not drain the slices, which were carrying LLM and speech inference at the time [8].

The 4fps figure is a claim about one scene on one rented CPU allocation, and the writeup does not name the CPU [4]. What transfers is the invariance. Frame rate did not move across 720p, 540p and 360p [5]; on the usual reading of those labels that is roughly a fourfold cut in pixels for no gain [16], which locates the cost in per-frame scene work such as skinning and draw setup rather than in fill. Plain WebGL held 60fps on the same software path [4]. If your scene is a couple of textured quads, SwiftShader may well be adequate. If it is a skinned character under a toon shader, the fallback plan of 540p at 24fps is already six times faster than what you actually have [15].

The second way to lose is quieter, because it produces the same log line on hardware that is fine. NVIDIA's container capability variable excludes graphics libraries by default, so a rendering-capable GPU handed to a container without `NVIDIA_DRIVER_CAPABILITIES=all` presents an empty ICD too [11]. That makes the acceptance test identical in both cases: `eglinfo` listing NVIDIA EGL devices, a non-empty `icd.d`, libglvnd present [11]. That test belongs before the instance is signed for, since CUDA core counts and VRAM in the catalogue do not expose any of it [9], and the writeup's own conclusion is to keep compute and rendering GPUs on separate books [12].

What to watch

  • Whether cloud GPU catalogues start listing graphics API support beside CUDA cores and VRAM.
  • Whether a future NVIDIA driver or MIG profile exposes graphics APIs inside a slice.
  • Whether container runtimes warn when a GPU is allocated but no EGL or Vulkan ICD is visible inside the namespace.

Clarity's read

What the record supports and how the coverage leans. The claims behind it follow.

Reality

Evidence62
Adoption26
Hype gap−8
Incentives18
Confidence55
Why these scores

Claim ledger

Ranked by verification strength, evidence, and original report placement.

  1. [1]

    Per NVIDIA's official spec, MIG is compute-only and does not support graphics APIs; this is a functionality issue rather than a performance one, so no amount of stacked slices, even the largest 7g.80gb, will render a single frame on the GPU.

    Reported Supported Source: orca_forge, dev.to, citing NVIDIA spec2 sources— create a free account to open themView cited source
  2. [2]

    "You need a GPU" covers two distinct scenarios: compute (training and inference, where working CUDA is sufficient) and rendering (3D rendering, gaming, video production, which requires OpenGL, Vulkan or EGL). Some models within NVIDIA's lineup can only handle one of the two.

    Reported Supported Source: orca_forge, dev.toView cited source
  3. [3]

    The workload was an unmanned AI avatar streaming system: headless Chromium rendering a 3D avatar with WebGL, screen and audio capture, encoding to H.264 plus AAC with ffmpeg, then streaming to the platform over RTMP, running 24/7.

    Reported Supported Source: orca_forge, dev.toView cited source

Get this ledger inside ChatGPT. Ask about any of our stories and the answer brings its figure, each claim’s verdict and the sources. Free, no account.

Add to ChatGPTAdd to Claude

Sources

1 independent publisher whose own reporting we read for this story.

  1. dev.to

    1 article · August 28, 2026

    Borrowed an H100 but couldn't draw a single frame — Why compute GPUs and rendering GPUs are different beasts

Share your take

Let Clarity write the post for you.

Signed-in readers get a short post drafted on this story in the register they choose — narrative, analytical, or a direct position — editable to the last word before it goes anywhere. The share buttons at the top of this story work without an account.

Topics and entities

Follow any of these and your For You feed starts watching them — no settings page required.

Topics

Loading related stories