Skip to content
Snippets Groups Projects
  1. Oct 15, 2019
  2. Sep 21, 2019
  3. Sep 17, 2019
  4. Sep 10, 2019
  5. Sep 06, 2019
  6. Sep 05, 2019
  7. Aug 21, 2019
    • ReinUsesLisp's avatar
      shader_ir: Implement VOTE · 4e35177e
      ReinUsesLisp authored
      Implement VOTE using Nvidia's intrinsics. Documentation about these can
      be found here
      https://developer.nvidia.com/reading-between-threads-shader-intrinsics
      
      Instead of using portable ARB instructions I opted to use Nvidia
      intrinsics because these are the closest we have to how Tegra X1
      hardware renders.
      
      To stub VOTE on non-Nvidia drivers (including nouveau) this commit
      simulates a GPU with a warp size of one, returning what is meaningful
      for the instruction being emulated:
      
      * anyThreadNV(value) -> value
      * allThreadsNV(value) -> value
      * allThreadsEqualNV(value) -> true
      
      ballotARB, also known as "uint64_t(activeThreadsNV())", emits
      
      VOTE.ANY Rd, PT, PT;
      
      on nouveau's compiler. This doesn't match exactly to Nvidia's code
      
      VOTE.ALL Rd, PT, PT;
      
      Which is emulated with activeThreadsNV() by this commit. In theory this
      shouldn't really matter since .ANY, .ALL and .EQ affect the predicates
      (set to PT on those cases) and not the registers.
      4e35177e
  8. Jul 20, 2019
  9. Jul 09, 2019
  10. Jun 21, 2019
  11. Jun 07, 2019
    • ReinUsesLisp's avatar
      shader: Split SSY and PBK stack · fe8e6618
      ReinUsesLisp authored
      Hardware testing revealed that SSY and PBK push to a different stack,
      allowing code like this:
      
              SSY label1;
              PBK label2;
              SYNC;
      label1: PBK;
      label2: EXIT;
      fe8e6618
  12. Jun 06, 2019
  13. Jun 05, 2019
  14. May 23, 2019
    • Lioncash's avatar
      shader/shader_ir: Make Comment() take a std::string by value · b6dcb1ae
      Lioncash authored
      This allows for forming comment nodes without making unnecessary copies
      of the std::string instance.
      
      e.g. previously:
      
      Comment(fmt::format("Base address is c[0x{:x}][0x{:x}]",
              cbuf->GetIndex(), cbuf_offset));
      
      Would result in a copy of the string being created, as CommentNode()
      takes a std::string by value (a const ref passed to a value parameter
      results in a copy).
      
      Now, only one instance of the string is ever moved around. (fmt::format
      returns a std::string, and since it's returned from a function by value,
      this is a prvalue (which can be treated like an rvalue), so it's moved
      into Comment's string parameter), we then move it into the CommentNode
      constructor, which then moves the string into its member variable).
      b6dcb1ae
  15. May 21, 2019
  16. May 20, 2019
  17. May 19, 2019
  18. May 03, 2019
  19. Apr 26, 2019
  20. Apr 16, 2019
  21. Apr 14, 2019
  22. Apr 08, 2019
Loading