summaryrefslogtreecommitdiff
path: root/src (follow)
Commit message (Collapse)AuthorAgeFilesLines
...
* | | | | | | | | Merge pull request #5923 from ReinUsesLisp/vk-dirty-pipelineGravatar bunnei2021-02-157-56/+103
|\ \ \ \ \ \ \ \ \ | |_|_|_|/ / / / / |/| | | | | | | | fixed_pipeline_cache: Use dirty flags to lazily update key
| * | | | | | | | fixed_pipeline_cache: Use dirty flags to lazily update keyGravatar ReinUsesLisp2021-02-137-56/+103
| | |_|_|/ / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use dirty flags to avoid building pipeline key from scratch on each draw call. This saves a bit of unnecesary work on each draw call.
* | | | | | | | Merge pull request #5939 from Morph1984/web_typesGravatar LC2021-02-151-0/+1
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | core/CMakeLists: Add web_types.h
| * | | | | | | | core/CMakeLists: Add web_types.hGravatar Morph2021-02-151-0/+1
| | | | | | | | |
* | | | | | | | | Merge pull request #4940 from german77/nativeGCGravatar bunnei2021-02-158-6/+209
|\ \ \ \ \ \ \ \ \ | |/ / / / / / / / |/| | | | | | | | HID: Implement GC controller in game
| * | | | | | | | Use GC imageGravatar german2021-02-091-0/+3
| | | | | | | | |
| * | | | | | | | hid: Implement GC controllerGravatar german2021-02-077-6/+206
| | |_|_|_|_|/ / | |/| | | | | |
* | | | | | | | Merge pull request #5935 from lat9nq/controller_access_keysGravatar bunnei2021-02-141-1/+1
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | debugger: controller: Add access key
| * | | | | | | | debugger: controller: Add access keyGravatar lat9nq2021-02-141-1/+1
| | |_|_|_|_|/ / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Adds the access key to the Controller P1 selection at View -> Debugger -> Controller P1. Avoids using the windowTitle as that would add a literal & to the beginning of the window title.
* | | | | | | | Merge pull request #5909 from ogniK5377/I3dl2ReverbGravatar bunnei2021-02-148-18/+572
|\ \ \ \ \ \ \ \ | |/ / / / / / / |/| | | | | | | audren: Implement I3dl2Reverb
| * | | | | | | revert to std::sin and std::cosGravatar Chloe Marcec2021-02-123-6/+6
| | | | | | | |
| * | | | | | | address issuesGravatar Chloe Marcec2021-02-123-22/+25
| | | | | | | |
| * | | | | | | audren: Implement I3dl2ReverbGravatar Chloe Marcec2021-02-128-18/+569
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Most notable fix is the voices in Fire Emblem Three Houses
* | | | | | | | Merge pull request #5920 from bunnei/am-ldn-fixGravatar bunnei2021-02-144-11/+52
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | Fix LDN Initialization return code & resulting AM overflow
| * | | | | | | | hle: service: ldn: IUserLocalCommunicationService: Improve the stub.Gravatar bunnei2021-02-131-5/+29
| | | | | | | | |
| * | | | | | | | hle: service: ldn: IUserLocalCommunicationService: Indicate that LDN is ↵Gravatar bunnei2021-02-133-3/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | disabled. - Fixes crash on Pokemon Sword/Shield when pressing 'Y'.
| * | | | | | | | hle: service: am: IStorageAccessor: Fix out of bounds error handling.Gravatar bunnei2021-02-131-6/+7
| | | | | | | | |
* | | | | | | | | yuzu: Various frontend improvements to avoid crashes and improve experience ↵Gravatar bunnei2021-02-1410-10/+52
|/ / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | on Linux.
* | | / / / / / vk_resource_pool: Load GPU tick once and compare with itGravatar ReinUsesLisp2021-02-132-8/+8
| |_|/ / / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | Other minor style improvements. Rename free_iterator to hint_iterator, to describe better what it does.
* | | | | | | gl_texture_cache: Lazily create non-sRGB texture views for sRGB formatsGravatar ameerj2021-02-133-7/+41
| |_|_|_|/ / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | This creates non-sRGB texture views for sRGB texture formats to allow for interfacing with these views in compute shaders using imageLoad and imageStore. Co-Authored-By: Rodrigo Locatti <reinuseslisp@airmail.cc>
* | | | | | Merge pull request #5919 from ReinUsesLisp/stream-buffer-tragicGravatar Morph2021-02-133-6/+12
|\ \ \ \ \ \ | | | | | | | | | | | | | | gl_stream_buffer/vk_staging_buffer_pool: Fix size check
| * | | | | | vk_master_semaphore: Mark gpu_tick atomic operations with relaxed orderGravatar ReinUsesLisp2021-02-131-4/+4
| | | | | | |
| * | | | | | vk_staging_buffer_pool: Inline tick testsGravatar ReinUsesLisp2021-02-132-1/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Load the current tick to a local variable, moving it out of an atomic and allowing us to compare the value without going through a pointer each time. This should make the loop more optimizable.
| * | | | | | gl_stream_buffer/vk_staging_buffer_pool: Fix size checkGravatar ReinUsesLisp2021-02-132-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix a tragic off-by-one condition that causes Vulkan's stream buffer to think it's always full, using fallback memory. The OpenGL was also affected by this bug to a lesser extent.
* | | | | | | Merge pull request #5915 from lat9nq/screenshots-dir-fixGravatar LC2021-02-131-0/+5
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | yuzu: Create screenshot path before capture
| * | | | | | | yuzu: Create screenshot path before captureGravatar lat9nq2021-02-121-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Allows screenshots in cases where the screenshots path doesn't already exist.
* | | | | | | | Merge pull request #5916 from ameerj/maxwell-gl-unusedGravatar LC2021-02-132-36/+3
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | maxwell_to_gl: Remove unused code
| * | | | | | | | maxwell_to_gl: Remove unused codeGravatar ameerj2021-02-122-36/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Removes unused declarations in maxwell_to_gl.h
* | | | | | | | | vulkan_device: Require VK_EXT_robustness2Gravatar ReinUsesLisp2021-02-132-37/+14
| |_|/ / / / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We are already using robustness2 features without requiring it explicitly, causing potential crashes on drivers without the extension. Requiring this at boot allows better diagnostics for it and formalizes our usage on the extension.
* | | | | | | | config: Make high GPU accuracy the defaultGravatar ReinUsesLisp2021-02-132-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a better default for most games, yielding better performance and less graphical issues.
* | | | | | | | video_core: Fix clang build issuesGravatar ReinUsesLisp2021-02-132-8/+5
| | | | | | | |
* | | | | | | | vk_staging_buffer_pool: Fix softlock when stream buffer overflowsGravatar ReinUsesLisp2021-02-132-19/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There was still a code path that could wait on a timeline semaphore tick that would never be signalled. While we are at it, make use of more STL algorithms.
* | | | | | | | vk_buffer_cache: Add support for null index buffersGravatar ReinUsesLisp2021-02-132-4/+40
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Games can bind a null index buffer (size=0) where all indices are evaluated as zero. VK_EXT_robustness2 doesn't support this and all drivers segfault when a null index buffer is passed to vkCmdBindIndexBuffer. Workaround this by creating a 4 byte buffer and filling it with zeroes. If it's read out of bounds, robustness takes care of returning zeroes as indices.
* | | | | | | | buffer_cache: Add extra bytes to guest SSBOsGravatar ReinUsesLisp2021-02-131-1/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bind extra bytes beyond the guest API's bound range. This is due to some games like Astral Chain operating out of bounds. Binding the whole map range would be technically correct, but games have large maps that make this approach unaffordable for now.
* | | | | | | | Merge branch 'bytes-to-map-end' into new-bufcache-wipGravatar ReinUsesLisp2021-02-131-0/+2
| | | | | | | |
* | | | | | | | vk_staging_buffer_pool: Get a staging buffer instead of waitingGravatar ReinUsesLisp2021-02-132-9/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Avoids waiting idle while the GPU finishes to do work, and fixes an issue where we'd wait forever if a single command buffer (logic tick) all the data.
* | | | | | | | yuzu/config: Disable assembly shaders by defaultGravatar ReinUsesLisp2021-02-131-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Due to BindBufferRangeNV limitations and poor quality code emission from our side, assembly shaders are currently slower than GLSL. Their build time and feature advantages are still relevant, but they are outweighted by their runtime performance.
* | | | | | | | renderer_opengl: Remove interopGravatar ReinUsesLisp2021-02-138-122/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove unused interop code from the OpenGL backend.
* | | | | | | | gl_buffer_cache: Drop interop based parameter buffer workaroundsGravatar ReinUsesLisp2021-02-133-65/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Sacrify runtime performance to avoid generating kernel exceptions on Windows due to our abusive aliasing of interop buffer objects.
* | | | | | | | buffer_cache: Heuristically detect stream buffersGravatar ReinUsesLisp2021-02-132-6/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Detect when a memory region has been joined several times and increase the size of the created buffer on those instances. The buffer is assumed to be a "stream buffer", increasing its size should stop us from constantly recreating it and fragmenting memory.
* | | | | | | | buffer_cache: Split CreateBuffer in separate functionsGravatar ReinUsesLisp2021-02-131-29/+52
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Allow adding functionality to each function without making CreateBuffer more complex.
* | | | | | | | buffer_cache: Skip cache on small uploads on VulkanGravatar ReinUsesLisp2021-02-133-9/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Ports from OpenGL the optimization to skip small 3D uniform buffer uploads. This will take advantage of the previously introduced stream buffer. Fixes instances where the staging buffer offset was being ignored.
* | | | | | | | vk_staging_buffer_pool: Add stream buffer for small uploadsGravatar ReinUsesLisp2021-02-1315-127/+298
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This uses a ring buffer similar to OpenGL's stream buffer for small uploads. This stops us from allocating several small buffers, reducing memory fragmentation and cache locality. It uses dedicated allocations when possible.
* | | | | | | | vulkan_device: Enable robustBufferAccessGravatar ReinUsesLisp2021-02-131-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix regression on Pascal on Animal Crossing: New Horizons, fixing a validation error.
* | | | | | | | video_core: Reimplement the buffer cacheGravatar ReinUsesLisp2021-02-1367-2607/+2514
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Reimplement the buffer cache using cached bindings and page level granularity for modification tracking. This also drops the usage of shared pointers and virtual functions from the cache. - Bindings are cached, allowing to skip work when the game changes few bits between draws. - OpenGL Assembly shaders no longer copy when a region has been modified from the GPU to emulate constant buffers, instead GL_EXT_memory_object is used to alias sub-buffers within the same allocation. - OpenGL Assembly shaders stream constant buffer data using glProgramBufferParametersIuivNV, from NV_parameter_buffer_object. In theory this should save one hash table resolve inside the driver compared to glBufferSubData. - A new OpenGL stream buffer is implemented based on fences for drivers that are not Nvidia's proprietary, due to their low performance on partial glBufferSubData calls synchronized with 3D rendering (that some games use a lot). - Most optimizations are shared between APIs now, allowing Vulkan to cache more bindings than before, skipping unnecesarry work. This commit adds the necessary infrastructure to use Vulkan object from OpenGL. Overall, it improves performance and fixes some bugs present on the old cache. There are still some edge cases hit by some games that harm performance on some vendors, this are planned to be fixed in later commits.
* | | | | | | | vulkan_common: Expose interop and headless devicesGravatar ReinUsesLisp2021-02-134-21/+100
| | | | | | | |
* | | | | | | | vulkan_common: Make interop extensions mandatoryGravatar ReinUsesLisp2021-02-131-0/+6
| | | | | | | |
* | | | | | | | vulkan_device: Enable robust buffersGravatar ReinUsesLisp2021-02-131-2/+4
| | | | | | | |
* | | | | | | | vulkan_device: Use designated initializers for featuresGravatar ReinUsesLisp2021-02-131-60/+59
| | | | | | | |
* | | | | | | | vulkan_wrapper: Add memory barrier pipeline barrier helperGravatar ReinUsesLisp2021-02-131-0/+6
| | | | | | | |