Skip to content

turnip: A750 support (sysmem)

Danylo Piliaiev requested to merge Danil/mesa:feature/turnip/a750 into main

What does this MR do and why?

Adds a750 support (sysmem only).

Highlights:

  • Consts uploading via SS6_DIRECT is subtly broken now - it seems that consts are uploaded only for the first draw call after CP_LOAD_STATE6_FRAG, following draw calls would have undefined values.
    • This is fixed by using preamble for all consts uploads like driver params and inline uniforms.
      • Driver params are now lowered to UBOs.
      • Reworked a bit how driver params size is calculated.
    • VS doesn't seem to have this issue (and blob uses old path for driver params uploads) so driver params for VS use old path.
    • For blits/clears it is fixed by using SS6_INDIRECT.
    • Uploaded consts are emitted via CP_NOP since code that emits them is always inside sub_cs (we cannot emit nested sub_cs).
      • This is something that need to be changed, e.g. by emitting them via separate cs.
    • I disabled EXT_fragment_density_map on a750 because I haven't fixed its interaction with new way to upload consts.
  • VS attribute buffer in gmem - part of gmem is now carved out for VS attributes, this carve out is now considered in gmem calculations (search for PC_ATTR_BUF_).
  • There are some V2 new regs which duplicate some old regs values, they are emitted unconditional for all generations at the moment. Emitting them conditionally is seems like a pain and command stream is backward compatible as is.

Passes VK CTS but for a few (probably failing on other gens) tests. Tested rendering of D3D11 and D3D12 games.

Edited by Danylo Piliaiev

Merge request reports