D921 - A descriptor that names no image binds the null texture

Status: decided Date: 2026-10-20

A pixel shader may load an image descriptor from its table whose base address is in no guest memory. That slot binds the null texture, which reads zero, and does not leave the draw unbound. A sample through such a descriptor would fault on hardware. The title runs there, so the program does not reach that sample in this draw. This is assumed: no measurement shows which branch a draw takes, only that a working title cannot take the one that samples.

The rule covers table slots only. A slot read from user data, a compared slot and a volume slot are refused as before (D743, D817, D823). A descriptor whose image is in guest memory but cannot be read exactly also stays unbound, so the refusal still names a texture orbistoun reads wrong.

Why: Grand Theft Auto V's loading-screen lighting draws use one uber-shader that loads eleven image slots from its table. Each draw fills the table for the branches it takes, and the other offsets hold sampler or buffer descriptors. Read as images, those name addresses such as 0x9200 and 0x40c0bfe000. Twenty slots were refused, and the segment, with every submission behind it, never ran.

Rejected: