D893 - A compute dispatch stores to each image its descriptors name

Status: superseded by D963 (up to sixteen storage images, each named by the load reaching its store) Date: 2026-10-19

A compute module may store to up to four images. Each one is identified by the registers that hold its descriptor, as D690 identifies a sampled texture. A store through a descriptor no earlier store named is a new storage image: the first at binding three, the rest at 21, 22 and 23, after the last texture binding. A store through a descriptor an earlier store named is that image again.

The translation reports where each stored image's descriptor came from, in the order the program first stores to them. A dispatch resolves, uploads, reads back and writes back each one independently, through its own surface, channel order and compression keys. All of a module's storage images are declared as one numeric type. A dispatch whose stored images mix integer and float is refused by name.

A pixel shader still stores to one image, its harness's. Kept translations written when a dispatch stored to one image at most still load, as a list of that one image or of none.

Why: Grand Theft Auto V's scene compute program reads an image, writes it back, and stores to a second one. Each stored image's descriptor is resolved the same way a single one was, so binding more of them leaves nothing unknown. Vulkan guarantees four storage images per stage (maxPerStageDescriptorStorageImages). A device test copies one image into two through s[8:15] and s[16:23], and both come back equal to the source.

Rejected: