Skip to content
Snippets Groups Projects
  1. Dec 11, 2019
  2. Dec 10, 2019
  3. Nov 23, 2019
  4. Nov 08, 2019
  5. Oct 31, 2019
    • Fernando Sahmkow's avatar
      Shader_IR: Fix regression on TLD4 · 23cabc98
      Fernando Sahmkow authored
      Originally on the last commit I thought TLD4 acted the same as TLD4S and 
      didn't have a mask. It actually does have a component mask. This commit 
      corrects that.
      23cabc98
  6. Oct 30, 2019
  7. Oct 29, 2019
    • ReinUsesLisp's avatar
      shader/node: Unpack bindless texture encoding · a993df1e
      ReinUsesLisp authored
      Bindless textures were using u64 to pack the buffer and offset from
      where they come from. Drop this in favor of separated entries in the
      struct.
      
      Remove the usage of std::set in favor of std::list (it's not std::vector
      to avoid reference invalidations) for samplers and images.
      a993df1e
  8. Oct 25, 2019
  9. Oct 22, 2019
    • Fernando Sahmkow's avatar
      Shader_Ir: Fix TLD4S from using a component mask. · 1509d2ff
      Fernando Sahmkow authored
      TLD4S always outputs 4 values, the previous code checked a component 
      mask and omitted those values that weren't part of it. This commit 
      corrects that and makes sure all 4 values are set.
      1509d2ff
    • ReinUsesLisp's avatar
      shader_ir/memory: Ignore global memory when tracking fails · 1ea07954
      ReinUsesLisp authored
      Ignore global memory operations instead of invoking undefined behaviour
      when constant buffer tracking fails and we are blasting through asserts,
      ignore the operation.
      
      In the case of LDG this means filling the destination registers with
      zeroes; for STG this means ignore the instruction as a whole.
      
      The default behaviour is still to abort execution on failure.
      1ea07954
  10. Oct 04, 2019
  11. Sep 21, 2019
  12. Sep 19, 2019
  13. Sep 10, 2019
  14. Sep 06, 2019
  15. Sep 05, 2019
    • ReinUsesLisp's avatar
      shader_ir: Implement ST_S · f17415d4
      ReinUsesLisp authored
      This instruction writes to a memory buffer shared with threads within
      the same work group. It is known as "shared" memory in GLSL.
      f17415d4
  16. 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
  17. Jul 22, 2019
  18. Jul 16, 2019
  19. Jul 15, 2019
  20. Jul 09, 2019
  21. Jul 07, 2019
    • ReinUsesLisp's avatar
      gl_shader_decompiler: Implement gl_ViewportIndex and gl_Layer in vertex shaders · c9d886c8
      ReinUsesLisp authored
      This commit implements gl_ViewportIndex and gl_Layer in vertex and
      geometry shaders. In the case it's used in a vertex shader, it requires
      ARB_shader_viewport_layer_array. This extension is available on AMD and
      Nvidia devices (mesa and proprietary drivers), but not available on
      Intel on any platform. At the moment of writing this description I don't
      know if this is a hardware limitation or a driver limitation.
      
      In the case that ARB_shader_viewport_layer_array is not available,
      writes to these registers on a vertex shader are ignored, with the
      appropriate logging.
      c9d886c8
  22. Jun 21, 2019
  23. Jun 06, 2019
  24. Jun 05, 2019
  25. 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
  26. May 21, 2019
Loading