D931 - A multisampled draw is named by the register that asked for it

Status: decided Date: 2026-10-20

Every host target is drawn at one sample. A guest draw can ask for several, through PA_SC_AA_CONFIG.MSAA_NUM_SAMPLES, a bound colour target's CB_COLORn_ATTRIB.NUM_SAMPLES and NUM_FRAGMENTS, or the depth target's DB_Z_INFO.NUM_SAMPLES. orbistoun-gpu's msaa module reads these registers from the draw's state, together with DB_EQAA, CB_COLOR_CONTROL.MODE, PA_SC_AA_SAMPLE_LOCS_*, PA_SC_AA_MASK_* and PA_SC_MODE_CNTL_1.PS_ITER_SAMPLE. Fields and places come from Mesa's gfx103.json, and their use in a driver from radv. The module says how the host would draw the draw: at one sample, or at a count with the guest's positions, coverage mask and per-sample shading.

Every draw that is not at one sample is counted in its submission's report (multisampled_draws). The count keeps the first draw's reason, which names the register, the field and its value: for example PA_SC_AA_CONFIG.MSAA_NUM_SAMPLES asks for 4 samples, which are drawn at one, or CB_COLOR1_ATTRIB stores 2 fragments of 8 samples: EQAA is not modelled. Each distinct reason is logged once a run. The draw itself is still drawn at one sample.

Some shapes stay unmodelled even once targets are multisampled, because their console behaviour is unmeasured. These are:

Why: a draw at one sample into a target the guest laid out at several writes back memory in the wrong layout. Naming the register shows which titles draw multisampled, and with what, so the work is ranked by them. It is also what the request to obSCEne (REQ-20261020T1415Z-ms01) measures against.

Rejected: