1. 19 May, 2020 2 commits
    • ReinUsesLisp's avatar
      renderer_opengl: Add assembly program code paths · 420cc132
      ReinUsesLisp authored
      Add code required to use OpenGL assembly programs based on
      NV_gpu_program5. Decompilation for ARB programs is intended to be added
      in a follow up commit. This does **not** include ARB decompilation and
      it's not in an usable state.
      
      The intention behind assembly programs is to reduce shader stutter
      significantly on drivers supporting NV_gpu_program5 (and other required
      extensions). Currently only Nvidia's proprietary driver supports these
      extensions.
      
      Add a UI option hidden for now to avoid people enabling this option
      accidentally.
      
      This code path has some limitations that OpenGL compatibility doesn't
      have:
      - NV_shader_storage_buffer_object is limited to 16 entries for a single
      OpenGL context state (I don't know if this is an intended limitation, an
      specification issue or I am missing something). Currently causes issues
      on The Legend of Zelda: Link's Awakening.
      - NV_parameter_buffer_object can't bind buffers using an offset
      different to zero. The used workaround is to copy to a temporary buffer
      (this doesn't happen often so it's not an issue).
      
      On the other hand, it has the following advantages:
      - Shaders build a lot faster.
      - We have control over how floating point rounding is done over
      individual instructions (SPIR-V on Vulkan can't do this).
      - Operations on shared memory can be unsigned and signed.
      - Transform feedbacks are dynamic state (not yet implemented).
      - Parameter buffers (uniform buffers) are per stage, matching NVN and
      hardware's behavior.
      - The API to bind and create assembly programs makes sense, unlike
      ARB_separate_shader_objects.
      420cc132
    • ReinUsesLisp's avatar
      yuzu: Add frontend settings for assembly shaders · 47a7c4f4
      ReinUsesLisp authored
      Add settings for assembly shaders. Currently hidden to avoid users from
      accidentally enabled them.
      47a7c4f4
  2. 16 May, 2020 6 commits
  3. 15 May, 2020 2 commits
  4. 14 May, 2020 3 commits
  5. 13 May, 2020 1 commit
  6. 12 May, 2020 2 commits
  7. 11 May, 2020 13 commits
  8. 10 May, 2020 2 commits
  9. 09 May, 2020 9 commits