1. 07 Jan, 2020 6 commits
  2. 06 Jan, 2020 11 commits
    • bunnei's avatar
      Merge pull request #3276 from ReinUsesLisp/pipeline-reqs · 5be00cba
      bunnei authored
      vk_update_descriptor/vk_renderpass_cache: Add pipeline cache dependencies
      5be00cba
    • bunnei's avatar
      Merge pull request #3278 from ReinUsesLisp/vk-memory-manager · ee9b4a7f
      bunnei authored
      renderer_vulkan: Buffer cache, stream buffer and memory manager changes
      ee9b4a7f
    • ReinUsesLisp's avatar
      vk_renderpass_cache: Initial implementation · 5aeff9af
      ReinUsesLisp authored
      The renderpass cache is used to avoid creating renderpasses on each
      draw. The hashed structure is not currently optimized.
      5aeff9af
    • ReinUsesLisp's avatar
      vk_update_descriptor: Initial implementation · 322d6a03
      ReinUsesLisp authored
      The update descriptor is used to store in flat memory a large chunk of
      staging data used to update descriptor sets through templates. It
      provides a push interface to easily insert descriptors following the
      current pipeline. The order used in the descriptor update template has
      to be implicitly followed. We can catch bugs here using validation
      layers.
      322d6a03
    • ReinUsesLisp's avatar
      vk_stream_buffer/vk_buffer_cache: Avoid halting and use generic cache · 5b01f80a
      ReinUsesLisp authored
      The stream buffer before this commit once it was full (no more bytes to
      write before looping) waiting for all previous operations to finish.
      This was a temporary solution and had a noticeable performance penalty
      in performance (from what a profiler showed).
      
      To avoid this mark with fences usages of the stream buffer and once it
      loops wait for them to be signaled. On average this will never wait.
      Each fence knows where its usage finishes, resulting in a non-paged
      stream buffer.
      
      On the other side, the buffer cache is reimplemented using the generic
      buffer cache. It makes use of the staging buffer pool and the new
      stream buffer.
      5b01f80a
    • ReinUsesLisp's avatar
      vk_memory_manager: Misc changes · ceb851b5
      ReinUsesLisp authored
      * Allocate memory in discrete exponentially increasing chunks until the
      128 MiB threshold. Allocations larger thant that increase linearly by
      256 MiB (depending on the required size). This allows to use small
      allocations for small resources.
      
      * Move memory maps to a RAII abstraction. To optimize for debugging
      tools (like RenderDoc) users will map/unmap on usage. If this ever
      becomes a noticeable overhead (from my profiling it doesn't) we can
      transparently move to persistent memory maps without harming the API,
      getting optimal performance for both gameplay and debugging.
      
      * Improve messages on exceptional situations.
      
      * Fix typos "requeriments" -> "requirements".
      
      * Small style changes.
      ceb851b5
    • ReinUsesLisp's avatar
      vk_buffer_cache: Temporarily remove buffer cache · 85bb6a6f
      ReinUsesLisp authored
      This is intended for a follow up commit to avoid circular dependencies.
      85bb6a6f
    • bunnei's avatar
      Merge pull request #3277 from ReinUsesLisp/make-current · 984563b7
      bunnei authored
      yuzu/bootmanager: Remove {glx,wgl}MakeCurrent on SwapBuffers
      984563b7
    • ReinUsesLisp's avatar
      yuzu/bootmanager: Remove {glx,wgl}MakeCurrent on SwapBuffers · 8306703a
      ReinUsesLisp authored
      MakeCurrent is a costly (according to Nsight's profiler it takes a tenth
      of a millisecond to complete), and we don't have a reason to call it
      because:
      - Qt no longer signals a warning if it's not called
      - yuzu no longer supports macOS
      8306703a
    • bunnei's avatar
      Merge pull request #3261 from degasus/page_table · 09908207
      bunnei authored
      core/memory + arm/dynarmic: Use a global offset within our arm page table.
      09908207
    • bunnei's avatar
      Merge pull request #3257 from degasus/no_busy_loops · 89fc75d7
      bunnei authored
      video_core: Block in WaitFence.
      89fc75d7
  3. 05 Jan, 2020 2 commits
  4. 04 Jan, 2020 2 commits
  5. 03 Jan, 2020 4 commits
  6. 02 Jan, 2020 1 commit
  7. 01 Jan, 2020 3 commits
  8. 30 Dec, 2019 5 commits
  9. 29 Dec, 2019 1 commit
  10. 28 Dec, 2019 1 commit
  11. 27 Dec, 2019 1 commit
  12. 26 Dec, 2019 1 commit
  13. 25 Dec, 2019 2 commits
    • ReinUsesLisp's avatar
      vk_staging_buffer_pool: Add a staging pool for temporary operations · 3813af2f
      ReinUsesLisp authored
      The job of this abstraction is to provide staging buffers for temporary
      operations. Think of image uploads or buffer uploads to device memory.
      
      It automatically deletes unused buffers.
      3813af2f
    • ReinUsesLisp's avatar
      vk_image: Add an image object abstraction · c83bf7cd
      ReinUsesLisp authored
      This object's job is to contain an image and manage its transitions.
      Since Nvidia hardware doesn't know what a transition is but Vulkan
      requires them anyway, we have to state track image subresources
      individually.
      
      To avoid the overhead of tracking each subresource in images with many
      subresources (think of cubemap arrays with several mipmaps), this commit
      tracks when subresources have diverged. As long as this doesn't happen
      we can check the state of the first subresource (that will be shared
      with all subresources) and update accordingly.
      
      Image transitions are deferred to the scheduler command buffer.
      c83bf7cd