* TODO: interactions with MSAA and gl_SampleMask writes
*/
agx_sample_mask(b, agx_immediate(1));
+ agx_signal_pix(b, 1);
b->shader->did_sample_mask = true;
assert(!(b->shader->nir->info.outputs_written &
b->shader->did_writeout = true;
b->shader->out->writes_sample_mask = true;
- return agx_sample_mask(b, agx_immediate(0));
+ agx_sample_mask(b, agx_immediate(0));
+ return agx_signal_pix(b, 1);
}
static agx_instr *
op("stop", (0x88, 0xFFFF, 2, _), dests = 0, can_eliminate = False)
op("trap", (0x08, 0xFFFF, 2, _), dests = 0, can_eliminate = False)
op("wait_pix", (0x48, 0xFF, 4, _), dests = 0, imms = [WRITEOUT], can_eliminate = False)
+op("signal_pix", (0x58, 0xFF, 4, _), dests = 0, imms = [WRITEOUT], can_eliminate = False)
# Sources are the image and the offset within shared memory
# TODO: Do we need the short encoding?
unsigned size = 4;
memcpy(util_dynarray_grow_bytes(emission, 1, size), &raw, size);
-
- {
- /* This is actually a separate instruction.
- *
- * signal_pix 1, 0
- *
- * We don't model this correctly yet, but we should.
- */
- uint32_t raw = 0x158;
- unsigned size = 4;
- memcpy(util_dynarray_grow_bytes(emission, 1, size), &raw, size);
- }
-
break;
}