Skip to content
Snippets Groups Projects
  1. Sep 23, 2017
  2. Sep 11, 2017
    • James Rowe's avatar
      GPU: Add draw for immediate and batch modes · ad0b57f4
      James Rowe authored
      PR #1461 introduced a regression where some games would change configuration
      even while in the poorly named "drawing" mode, which broke the heuristic
      citra was using to determine when to draw the batch. This change adds
      back in a draw call for batching, and also adds in a draw call in
      immediate mode each time it adds a triangle.
      ad0b57f4
  3. Aug 19, 2017
    • wwylele's avatar
      pica/command_processor: build geometry pipeline and run geometry shader · 0f357555
      wwylele authored
      The geometry pipeline manages data transfer between VS, GS and primitive assembler. It has known four modes:
       - no GS mode: sends VS output directly to the primitive assembler (what citra currently does)
       - GS mode 0: sends VS output to GS input registers, and sends GS output to primitive assembler
       - GS mode 1: sends VS output to GS uniform registers, and sends GS output to primitive assembler. It also takes an index from the index buffer at the beginning of each primitive for determine the primitive size.
       - GS mode 2: similar to mode 1, but doesn't take the index and uses a fixed primitive size.
      hwtest shows that immediate mode also supports GS (at least for mode 0), so the geometry pipeline gets refactored into its own class for supporting both drawing mode.
      In the immediate mode, some games don't set the pipeline registers to a valid value until the first attribute input, so a geometry pipeline reset flag is set in `pipeline.vs_default_attributes_setup.index` trigger, and the actual pipeline reconfigure is triggered in the first attribute input.
      In the normal drawing mode with index buffer, the vertex cache is a little bit modified to support the geometry pipeline. Instead of OutputVertex, it now holds AttributeBuffer, which is the input to the geometry pipeline. The AttributeBuffer->OutputVertex conversion is done inside the pipeline vertex handler. The actual hardware vertex cache is believed to be implemented in a similar way (because this is the only way that makes sense).
      Both geometry pipeline and GS unit rely on states preservation across drawing call, so they are put into the global state. In the future, the other three vertex shader units should be also placed in the global state, and a scheduler should be implemented on top of the four units. Note that the current gs_unit already allows running VS on it in the future.
      0f357555
  4. Aug 07, 2017
  5. May 20, 2017
  6. May 17, 2017
  7. May 12, 2017
    • Jannik Vogel's avatar
      Pica: Write GS registers · ba722be2
      Jannik Vogel authored
      This adds the handlers for the geometry shader register writes which will call the functions from the previous commit to update registers for the GS.
      ba722be2
    • Jannik Vogel's avatar
      Pica: Write shader registers in functions · 3fd3775d
      Jannik Vogel authored
      The commit after this one adds GS register writes, so this moves the VS handlers into functions so they can be re-used and extended more easily.
      3fd3775d
  8. Feb 09, 2017
  9. Feb 04, 2017
  10. Jan 30, 2017
  11. Jan 26, 2017
  12. Dec 16, 2016
  13. Dec 15, 2016
  14. Dec 11, 2016
  15. Nov 27, 2016
  16. Nov 24, 2016
  17. Nov 22, 2016
  18. Nov 20, 2016
  19. Oct 20, 2016
  20. Sep 21, 2016
  21. Sep 19, 2016
  22. Sep 18, 2016
  23. Jun 06, 2016
Loading