RPCS3 / rpcs3

PS3 emulator/debugger
https://rpcs3.net/
GNU General Public License v2.0
15.17k stars 1.89k forks source link

[Task] Multi-context support #15424

Open kd-11 opened 5 months ago

kd-11 commented 5 months ago

Task schedule for multi-context support in RSX. This work-plan may get modified over time, but it is important to keep my thoughts on the architecture in a tracker so I don't forget.

The new arch has 4 tiers:

  1. Hardware - These are the functional units (nv4097, nv308a, etc) and their methods.
  2. Firmware - This is everything that drives the hardware units. It includes most current "thread state" objects, caches including the texture cache, program caches, etc.
  3. Renderers - These are the actual host renderers and will be decoupled from the RSX thread. They can bind to firmware contexts and drive data to the host GPU writing to firmware context objects (e.g textures, buffers, etc).
  4. Pseudo-userland - This is what drives the FW to get work through the system. One good example of this right now is the capture playback thread and the VM guests. They should create and manage contexts to work with. VSH emulation will be migrated to this layer from it's current scattered implementation.
Megamouse commented 5 months ago

My estimate is 20 story points.