Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | general: workarounds for SMMU syncing issues (#12749) | liamwhite | 2024-02-27 | 1 | -6/+8 |
| | |||||
* | vk_rasterizer: flip scissor y on lower left origin mode (#13122) | liamwhite | 2024-02-27 | 3 | -17/+51 |
| | |||||
* | settings: remove global override for smash on amdvlk | Liam | 2024-02-26 | 1 | -26/+3 |
| | |||||
* | video_core: make gpu context aware of rendering program | Liam | 2024-02-26 | 1 | -1/+3 |
| | |||||
* | Merge pull request #13075 from liamwhite/mali-having-a-bad-time | Narr the Reg | 2024-02-22 | 1 | -0/+1 |
|\ | | | | | shader_recompiler: throw on missing geometry streams in geometry shaders | ||||
| * | shader_recompiler: throw on missing geometry streams in geometry shaders | Liam | 2024-02-19 | 1 | -0/+1 |
| | | |||||
* | | scope_exit: Make constexpr | FearlessTobi | 2024-02-19 | 3 | -4/+12 |
|/ | | | | | Allows the use of the macro in constexpr-contexts. Also avoids some potential problems when nesting braces inside it. | ||||
* | gpu: dependency-inject scaling/antialiasing filter state for capture layers | Liam | 2024-02-09 | 5 | -17/+29 |
| | |||||
* | nvnflinger/gpu: implement applet capture | Liam | 2024-02-09 | 2 | -27/+93 |
| | |||||
* | nvnflinger/gpu: implement blending | Liam | 2024-02-09 | 6 | -41/+102 |
| | |||||
* | video_core: defensively program around unmapped device pointers | Liam | 2024-02-09 | 1 | -3/+5 |
| | |||||
* | Buffer Cache: Refactor to use Range sets instead | Fernando Sahmkow | 2024-02-05 | 1 | -1/+0 |
| | |||||
* | VideoCore: Move Slot Vector to Common | Fernando Sahmkow | 2024-02-04 | 3 | -3/+3 |
| | |||||
* | Merge pull request #12885 from Moonlacer/eclipse-fix | liamwhite | 2024-02-02 | 1 | -2/+3 |
|\ | | | | | structured_control_flow: Add Samsung Proprietary Driver ID to Reorder Pass | ||||
| * | Clang Fix | Moonlacer | 2024-02-02 | 1 | -2/+3 |
| | | |||||
| * | Add Samsung Proprietary Driver ID to Reorder Pass | Moonlacer | 2024-02-02 | 1 | -1/+1 |
| | | | | | | | | For RDNA-based Samsung Xclipse GPUs | ||||
* | | nvnflinger/gpu: implement layer stack composition | Liam | 2024-01-31 | 6 | -145/+112 |
| | | |||||
* | | renderer_vulkan: implement layer stack composition | Liam | 2024-01-31 | 13 | -912/+624 |
| | | |||||
* | | renderer_opengl: split up blit screen resources into antialias and window adapt passes | Liam | 2024-01-31 | 2 | -2/+7 |
| | | |||||
* | | renderer_vulkan: convert FSR to graphics pipeline | Liam | 2024-01-31 | 10 | -426/+265 |
| | | |||||
* | | renderer_opengl: split out FXAA | Liam | 2024-01-31 | 1 | -1/+1 |
| | | |||||
* | | renderer_vulkan: split up blit screen resources into separate antialias and window adapt passes | Liam | 2024-01-31 | 10 | -913/+980 |
| | | |||||
* | | renderer_vulkan: isolate FXAA from blit screen | Liam | 2024-01-31 | 11 | -647/+582 |
| | | |||||
* | | video_core: consistently account for resolution scaling when rendering | Liam | 2024-01-31 | 3 | -3/+11 |
| | | |||||
* | | video_core: simplify accelerated surface fetch and crop handling between APIs | Liam | 2024-01-31 | 6 | -115/+61 |
|/ | |||||
* | Merge pull request #12439 from FireBurn/vkresult | liamwhite | 2024-01-29 | 1 | -2/+3 |
|\ | | | | | Simplify VkResult lookup | ||||
| * | Simplify VkResult lookup | Mike Lothian | 2024-01-22 | 1 | -2/+3 |
| | | |||||
* | | Merge pull request #12499 from Kelebek1/time | liamwhite | 2024-01-25 | 1 | -1/+1 |
|\ \ | | | | | | | Rework time services | ||||
| * | | Rework time service to fix time passing offline. | Kelebek1 | 2024-01-24 | 1 | -1/+1 |
| | | | |||||
* | | | Merge pull request #12579 from FernandoS27/smmu | liamwhite | 2024-01-22 | 14 | -113/+120 |
|\ \ \ | | | | | | | | | Core: Implement Device Mapping & GPU SMMU | ||||
| * | | | Core: Eliminate core/memory dependancies. | Fernando Sahmkow | 2024-01-19 | 4 | -6/+5 |
| | | | | |||||
| * | | | Core: Clang format and other small issues. | Fernando Sahmkow | 2024-01-19 | 8 | -21/+21 |
| | | | | |||||
| * | | | SMMU: Implement physical memory mirroring | Fernando Sahmkow | 2024-01-19 | 1 | -4/+2 |
| | | | | |||||
| * | | | SMMU: Initial adaptation to video_core. | Fernando Sahmkow | 2024-01-19 | 12 | -99/+109 |
| |/ / | |||||
* / / | renderer_vulkan: recreate swapchain when frame size changes | Liam | 2024-01-16 | 1 | -1/+1 |
|/ / | |||||
* | | Fix one more typo | Viktor Szépe | 2024-01-16 | 1 | -1/+1 |
| | | |||||
* | | Fix typos in video_core | Viktor Szépe | 2024-01-07 | 6 | -16/+16 |
|/ | |||||
* | Vulkan: Only recreate swapchain if the frame is bigger than the swap image. | Fernando Sahmkow | 2023-12-31 | 1 | -1/+1 |
| | |||||
* | Merge pull request #12412 from ameerj/gl-query-prims | liamwhite | 2023-12-22 | 1 | -0/+4 |
|\ | | | | | OpenGL: Add GL_PRIMITIVES_GENERATED and GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN queries | ||||
| * | OpenGL: Add GL_PRIMITIVES_GENERATED and GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN queries | Ameer J | 2023-12-19 | 1 | -0/+4 |
| | | |||||
* | | Merge pull request #12410 from liamwhite/more-mali-null | Fernando S | 2023-12-22 | 2 | -8/+26 |
|\ \ | | | | | | | renderer_vulkan: don't pass null view when nullDescriptor is not supported | ||||
| * | | renderer_vulkan: don't pass null view when nullDescriptor is not supported | Liam | 2023-12-19 | 2 | -8/+26 |
| |/ | |||||
* | | shader_recompiler: use float image operations on load/store when required | Liam | 2023-12-21 | 1 | -1/+1 |
| | | |||||
* | | Merge pull request #12400 from ameerj/vk-query-prefix-fix | liamwhite | 2023-12-20 | 1 | -3/+6 |
|\ \ | | | | | | | vk_query_cache: Fix prefix sum max_accumulation_limit logic | ||||
| * | | vk_query_cache: Fix prefix sum max_accumulation_limit logic | Ameer J | 2023-12-18 | 1 | -3/+6 |
| | | | |||||
* | | | Merge pull request #12403 from liamwhite/clipdistance | Fernando S | 2023-12-20 | 1 | -0/+1 |
|\ \ \ | | | | | | | | | shader_recompiler: use minimal clip distance array | ||||
| * | | | shader_recompiler: ignore clip distances beyond driver support level | Liam | 2023-12-19 | 1 | -0/+1 |
| | | | | |||||
* | | | | Merge pull request #12390 from liamwhite/binding-insanity | Fernando S | 2023-12-20 | 1 | -13/+18 |
|\ \ \ \ | |_|_|/ |/| | | | renderer_vulkan: work around turnip binding bug in a610 | ||||
| * | | | renderer_vulkan: work around turnip binding bug in a610 | Liam | 2023-12-17 | 1 | -13/+18 |
| |/ / | |||||
* / / | renderer_vulkan: allow up to 7 swapchain images | Liam | 2023-12-17 | 2 | -4/+4 |
|/ / | |||||
* / | renderer_vulkan: bound async presentation queue growth | Liam | 2023-12-14 | 2 | -3/+12 |
|/ | |||||
* | Merge pull request #12274 from liamwhite/srgb-nonsense | liamwhite | 2023-12-08 | 8 | -63/+41 |
|\ | | | | | renderer_vulkan: do not recreate swapchain for srgb | ||||
| * | renderer_vulkan: do not recreate swapchain for srgb | Liam | 2023-12-03 | 8 | -63/+41 |
| | | |||||
* | | Merge pull request #12235 from liamwhite/flip-clip | liamwhite | 2023-12-04 | 1 | -4/+10 |
|\ \ | |/ |/| | renderer_vulkan: adjust window origin and swizzle independently | ||||
| * | renderer_vulkan: adjust window origin and swizzle independently | Liam | 2023-11-30 | 1 | -4/+10 |
| | | |||||
* | | Merge pull request #12261 from liamwhite/fruit-company | liamwhite | 2023-12-02 | 2 | -5/+5 |
|\ \ | | | | | | | texture_cache: use pedantic type names | ||||
| * | | texture_cache: use pedantic type names | Liam | 2023-12-02 | 2 | -5/+5 |
| |/ | |||||
* / | vk_blit_screen: Use correct format for fxaa renderpass | GPUCode | 2023-12-01 | 1 | -1/+1 |
|/ | |||||
* | renderer_vulkan: exclude more qcom drivers from extensions | Liam | 2023-11-30 | 1 | -4/+3 |
| | |||||
* | Merge branch 'master' into ssbo-align | Ameer J | 2023-11-27 | 18 | -130/+282 |
|\ | |||||
| * | Merge pull request #11535 from GPUCode/upload_cmdbuf | Fernando S | 2023-11-26 | 8 | -33/+124 |
| |\ | | | | | | | renderer_vulkan: Introduce separate cmd buffer for uploads | ||||
| | * | Vulkan: Add a final barrier to the upload command buffer | Fernando Sahmkow | 2023-11-12 | 1 | -0/+8 |
| | | | |||||
| | * | renderer_vulkan: Introduce separate cmd buffer for uploads | GPUCode | 2023-11-12 | 8 | -33/+116 |
| | | | |||||
| * | | vk_texture_cache: add workaround for nullDescriptor on Mali | Liam | 2023-11-21 | 2 | -2/+17 |
| | | | |||||
| * | | renderer_vulkan: ignore viewport stores on non-supporting drivers | Liam | 2023-11-19 | 1 | -0/+1 |
| | | | |||||
| * | | Merge pull request #12081 from FernandoS27/check-out-on-your-broke-crypto-friends | liamwhite | 2023-11-19 | 1 | -5/+18 |
| |\ \ | | | | | | | | | Vulkan: Be more generous with pipeline workers for Android | ||||
| | * | | Vulkan: Be more generous with pipeline workers for Android | Fernando Sahmkow | 2023-11-19 | 1 | -5/+18 |
| | | | | |||||
| * | | | Merge pull request #12036 from FernandoS27/you-should-have-more-than-one-towel | liamwhite | 2023-11-19 | 1 | -0/+13 |
| |\ \ \ | | |/ / | |/| | | Query Cache: Disable write syncing on Android | ||||
| | * | | Query Cache: Disable write syncing on Android | Fernando Sahmkow | 2023-11-15 | 1 | -0/+13 |
| | |/ | |||||
| * | | Memory: Fix invalidation handling from the CPU/Services | Fernando Sahmkow | 2023-11-12 | 1 | -1/+1 |
| | | | |||||
| * | | Revert "renderer_vulkan: add locks to avoid scheduler flushes from CPU" | Fernando Sahmkow | 2023-11-10 | 3 | -19/+9 |
| |/ | | | | | | | This reverts commit d9dde7e6f3a90f58d642808900ddd558da21f762. | ||||
| * | Merge pull request #11896 from liamwhite/crop | liamwhite | 2023-11-06 | 3 | -68/+93 |
| |\ | | | | | | | renderer_vulkan: fix cropping for presentation | ||||
| | * | renderer_vulkan: fix FSR cropping | Liam | 2023-10-28 | 3 | -70/+86 |
| | | | |||||
| | * | renderer_vulkan: fix cropping for presentation | Liam | 2023-10-28 | 1 | -46/+55 |
| | | | |||||
| * | | renderer_vulkan: render on bottom of surface clip when flipped (#11894) | liamwhite | 2023-11-05 | 1 | -1/+1 |
| | | | |||||
| * | | renderer_vulkan: minimize transform feedback support log | Liam | 2023-11-02 | 1 | -1/+5 |
| | | | |||||
* | | | shader_recompiler: Align SSBO offsets in GlobalMemory functions | Ameer J | 2023-11-01 | 1 | -0/+1 |
| | | | |||||
* | | | shader_recompiler: Align SSBO offsets to meet host requirements | Ameer J | 2023-11-01 | 3 | -0/+7 |
|/ / | | | | | | | Co-Authored-By: Billy Laws <blaws05@gmail.com> | ||||
* | | Merge pull request #11910 from liamwhite/surface-lost-on-creation | liamwhite | 2023-10-30 | 1 | -0/+6 |
|\ \ | | | | | | | renderer_vulkan: ensure exception on surface loss | ||||
| * | | renderer_vulkan: ensure exception on surface loss | Liam | 2023-10-29 | 1 | -0/+6 |
| | | | |||||
* | | | Merge pull request #11893 from liamwhite/swizzle | liamwhite | 2023-10-30 | 1 | -1/+1 |
|\ \ \ | |/ / |/| | | renderer_vulkan: fix viewport swizzle dirty state tracking | ||||
| * | | renderer_vulkan: fix viewport swizzle dirty state tracking | Liam | 2023-10-27 | 1 | -1/+1 |
| |/ | |||||
* | | Merge pull request #11862 from liamwhite/pascal-robust | liamwhite | 2023-10-29 | 1 | -1/+1 |
|\ \ | | | | | | | Manually robust on Pascal and earlier | ||||
| * | | Manually robust on Pascal and earlier | Liam | 2023-10-23 | 1 | -1/+1 |
| |/ | |||||
* / | Add missing dowhile loops around FindBuffer calls | Kelebek1 | 2023-10-23 | 1 | -0/+2 |
|/ | |||||
* | Merge pull request #11789 from Kelebek1/spirv_shift_right | liamwhite | 2023-10-22 | 1 | -1/+5 |
|\ | | | | | Manually robust on Maxwell and earlier | ||||
| * | Manually robust on Maxwell and earlier | Kelebek1 | 2023-10-19 | 1 | -1/+5 |
| | | |||||
* | | Merge pull request #11806 from liamwhite/needs-more-locking | liamwhite | 2023-10-20 | 3 | -9/+19 |
|\ \ | |/ |/| | renderer_vulkan: add locks to avoid scheduler flushes from CPU | ||||
| * | renderer_vulkan: add locks to avoid scheduler flushes from CPU | Liam | 2023-10-17 | 3 | -9/+19 |
| | | |||||
* | | Merge pull request #11810 from liamwhite/clang-17 | liamwhite | 2023-10-19 | 1 | -1/+1 |
|\ \ | | | | | | | general: fix build failure on clang 17 | ||||
| * | | general: fix build failure on clang 17 | Liam | 2023-10-18 | 1 | -1/+1 |
| | | | |||||
* | | | Merge pull request #11795 from Squall-Leonhart/D32FToOther | liamwhite | 2023-10-18 | 3 | -0/+34 |
|\ \ \ | |/ / |/| | | [Vulkan]Implement missing copy formats for D32, ARGB8_SRGB and BGRA8_Unorm/SRGB | ||||
| * | | Changes based on hardware tests | Squall-Leonhart | 2023-10-16 | 3 | -15/+2 |
| | | | | | | | | | | | | | | | | | | Removes unnecessary d32f to bgra shader and blit functions, update vk_texture_cache to use abgr shader for d32f to BGRA formats updates abgr to d32f shader to comply with hardware tests | ||||
| * | | Make Clang happy. | Squall Leonhart | 2023-10-16 | 1 | -1/+1 |
| | | | |||||
| * | | Added missing BuildShader line | Squall Leonhart | 2023-10-16 | 1 | -0/+1 |
| | | | | | | | | | Adds `convert_abgr8_to_d32f_frag(BuildShader(device, CONVERT_ABGR8_TO_D32F_FRAG_SPV)),` | ||||
| * | | meant to add the unorms as well | Squall Leonhart | 2023-10-15 | 1 | -1/+3 |
| | | | |||||
| * | | appease the format gods | Squall Leonhart | 2023-10-15 | 1 | -1/+1 |
| | | | |||||
| * | | Another missing copy connected to Bravely Default II | Squall-Leonhart | 2023-10-15 | 3 | -0/+16 |
| | | | | | | | | | | | | adds blit_image_helper.ConvertABGR8ToD32F and fragment shader for performing ABGR and BGRA to D32F copies | ||||
| * | | missed this line when editing the copypasta | Squall-Leonhart | 2023-10-15 | 1 | -1/+1 |
| | | | |||||
| * | | moved line to appease the format gods | Squall-Leonhart | 2023-10-15 | 1 | -1/+1 |
| | | | |||||
| * | | Implement missing formats for Bravely Default 2 | Squall-Leonhart | 2023-10-15 | 3 | -0/+28 |
| | | | |||||
* | | | Merge pull request #11747 from Kelebek1/image_alias_sample_names | liamwhite | 2023-10-17 | 2 | -1/+2 |
|\ \ \ | | | | | | | | | Small things | ||||
| * | | | Get out of render pass before query barriers, fix image names with samples > 1, remove image alias bit | Kelebek1 | 2023-10-11 | 2 | -1/+2 |
| | | | | |||||
* | | | | Merge pull request #11349 from vonchenplus/buffer_cache_crash | liamwhite | 2023-10-17 | 1 | -0/+13 |
|\ \ \ \ | |_|_|/ |/| | | | video_core: Fix moltenvk crash on macos | ||||
| * | | | video_core: Add missing scissor update when viewport scale offset disable | Feng Chen | 2023-09-07 | 1 | -0/+13 |
| | | | | |||||
* | | | | Merge pull request #11751 from Kelebek1/transition_msaa_image | liamwhite | 2023-10-12 | 2 | -0/+30 |
|\ \ \ \ | | | | | | | | | | | Transition MSAA images to general layout without uploading data | ||||
| * | | | | Transition MSAA images to general layout without uploading data | Kelebek1 | 2023-10-12 | 2 | -0/+30 |
| | |/ / | |/| | | |||||
* / | | | Do not set rescaled flag when rescaling is disabled | Kelebek1 | 2023-10-11 | 1 | -8/+8 |
|/ / / | |||||
* | | | Merge pull request #11656 from liamwhite/recreate-surface-automatically | liamwhite | 2023-10-07 | 3 | -48/+33 |
|\ \ \ | | | | | | | | | vk_present_manager: recreate surface on any surface loss | ||||
| * | | | vk_present_manager: recreate surface on any surface loss | Liam | 2023-10-03 | 3 | -48/+33 |
| | | | | |||||
* | | | | Merge pull request #11677 from Squall-Leonhart/D32FTOABGR8 | liamwhite | 2023-10-07 | 3 | -0/+16 |
|\ \ \ \ | | |_|/ | |/| | | Implements D32_Float to A8B8G8R8_UNORM format copy | ||||
| * | | | Fix CI Formatting check | Squall-Leonhart | 2023-10-04 | 1 | -2/+2 |
| | | | | |||||
| * | | | Implements D32_Float to A8B8G8R8_UNORM format copy | Squall-Leonhart | 2023-10-04 | 3 | -0/+16 |
| |/ / | | | | | | | | | | Corrects some visual issues in games such as Disney SpeedStorm | ||||
* | | | Merge pull request #11630 from Kelebek1/clear_stencil_requires_depth_test | liamwhite | 2023-10-07 | 2 | -2/+5 |
|\ \ \ | | | | | | | | | Enable depth test on depthstencil clear path | ||||
| * | | | Enable depth test on stencil clear path | Kelebek1 | 2023-09-28 | 2 | -2/+5 |
| | | | | |||||
* | | | | Merge pull request #11544 from Kelebek1/reduce_stream_buffer_renderdoc | liamwhite | 2023-10-07 | 2 | -10/+28 |
|\ \ \ \ | | | | | | | | | | | Allow GPUs without rebar to open multiple RenderDoc captures | ||||
| * | | | | Allow GPUs without rebar to open multiple RenderDoc captures | Kelebek1 | 2023-10-06 | 2 | -10/+28 |
| |/ / / | |||||
* | / / | Implement X8_D24 format | Kelebek1 | 2023-10-06 | 3 | -2/+5 |
| |/ / |/| | | |||||
* | | | Query Cache: Fix memory leak. | Fernando Sahmkow | 2023-10-01 | 1 | -0/+1 |
| | | | |||||
* | | | Merge pull request #11622 from liamwhite/qcr-reg1 | Fernando S | 2023-09-29 | 1 | -2/+4 |
|\ \ \ | | | | | | | | | renderer_vulkan: fix query cache for homebrew | ||||
| * | | | renderer_vulkan: fix query cache for homebrew | Liam | 2023-09-28 | 1 | -2/+4 |
| | | | | |||||
* | | | | Merge pull request #11402 from FernandoS27/depth-bias-control | liamwhite | 2023-09-28 | 1 | -3/+25 |
|\ \ \ \ | | | | | | | | | | | Vulkan: Implement Depth Bias Control | ||||
| * | | | | Vulkan: add temporary workaround for AMDVLK | Fernando Sahmkow | 2023-09-16 | 1 | -0/+3 |
| | | | | | |||||
| * | | | | Vulkan: Implement Depth Bias Control | Fernando Sahmkow | 2023-09-16 | 1 | -3/+22 |
| | | | | | |||||
* | | | | | renderer_vulkan: Implement MSAA copies | GPUCode | 2023-09-25 | 4 | -32/+214 |
| |/ / / |/| | | | |||||
* | | | | Merge pull request #11225 from FernandoS27/no-laxatives-in-santas-cookies | liamwhite | 2023-09-25 | 10 | -242/+1816 |
|\ \ \ \ | | | | | | | | | | | Y.F.C: Rework the Query Cache. | ||||
| * | | | | Query Cache: Fix Prefix Sums | Fernando Sahmkow | 2023-09-23 | 3 | -50/+66 |
| | | | | | |||||
| * | | | | Query Cache: Fix behavior in Normal Accuracy | Fernando Sahmkow | 2023-09-23 | 1 | -0/+10 |
| | | | | | |||||
| * | | | | Query Cache: Simplify Prefix Sum compute shader | Fernando Sahmkow | 2023-09-23 | 3 | -9/+26 |
| | | | | | |||||
| * | | | | Query Cache: Implement host side sample counting. | Fernando Sahmkow | 2023-09-23 | 3 | -48/+223 |
| | | | | | |||||
| * | | | | Query Cache: Fix guest side sample counting | Fernando Sahmkow | 2023-09-23 | 1 | -8/+54 |
| | | | | | |||||
| * | | | | Query Cache: address issues | Fernando Sahmkow | 2023-09-23 | 7 | -111/+147 |
| | | | | | |||||
| * | | | | QueryCache: Implement dependant queries. | Fernando Sahmkow | 2023-09-23 | 1 | -2/+158 |
| | | | | | |||||
| * | | | | Query Cachge: Fully rework Vulkan's query cache | Fernando Sahmkow | 2023-09-23 | 10 | -219/+1337 |
| | | | | | |||||
* | | | | | Merge pull request #11562 from GPUCode/srgb-madness | liamwhite | 2023-09-24 | 1 | -15/+5 |
|\ \ \ \ \ | | | | | | | | | | | | | vk_texture_cache: Limit srgb block to transcoding only | ||||
| * | | | | | vk_texture_cache: Limit srgb block to transcoding only | GPUCode | 2023-09-21 | 1 | -15/+5 |
| | |_|/ / | |/| | | | |||||
* | | | | | Merge pull request #11165 from Morph1984/ds_blit | liamwhite | 2023-09-24 | 1 | -2/+14 |
|\ \ \ \ \ | |_|/ / / |/| | | | | vulkan_device: Return true if either depth/stencil format supports blit | ||||
| * | | | | vulkan_device: Test depth stencil blit support by format | Morph | 2023-08-01 | 1 | -2/+14 |
| | | | | | |||||
* | | | | | renderer_vulkan: Correct component order for A4B4G4R4_UNORM | GPUCode | 2023-09-21 | 2 | -3/+9 |
| |/ / / |/| | | | |||||
* | | | | android: Use 1 worker for shader compilation for all devices | Charles Lombardo | 2023-09-17 | 1 | -4/+5 |
| |/ / |/| | | |||||
* | | | Merge pull request #11470 from GPUCode/bundle-vvl | liamwhite | 2023-09-10 | 2 | -19/+3 |
|\ \ \ | | | | | | | | | android: Add option to bundle validation layer | ||||
| * | | | renderer_vulkan: Remove debug report | GPUCode | 2023-09-08 | 2 | -19/+3 |
| | | | | | | | | | | | | | | | | * VVL has implemented the more modern alternative, thus we don't need to support it anymore | ||||
* | | | | vk_buffer_cache: Respect max vertex bindings in BindVertexBuffers (#11471) | GPUCode | 2023-09-10 | 1 | -4/+7 |
| | | | | |||||
* | | | | Merge pull request #11383 from FernandoS27/are-you-a-wabbit | liamwhite | 2023-09-02 | 2 | -0/+27 |
|\ \ \ \ | |/ / / |/| | | | Fix regressions that damaged compute indirect & use reinterpret for copies with different byteblocksizes | ||||
| * | | | VideoCore: Implement DispatchIndirect | Fernando Sahmkow | 2023-08-27 | 1 | -0/+14 |
| | | | | |||||
| * | | | Shader Recompiler: Auto stub special registers and dump pipelines on exception. | Fernando Sahmkow | 2023-08-27 | 1 | -0/+13 |
| | |/ | |/| | |||||
* | | | Merge pull request #11317 from Kelebek1/macro_dumps | liamwhite | 2023-08-27 | 1 | -3/+4 |
|\ \ \ | |/ / |/| | | Mark decompiled macros on dump, dump shaders after translation | ||||
| * | | Mark decompiled macros as decompiled on dump, dump shaders after translation | Kelebek1 | 2023-08-26 | 1 | -3/+4 |
| | | | |||||
* | | | Masked depthstencil clears | Kelebek1 | 2023-08-19 | 3 | -9/+119 |
|/ / | |||||
* | | Merge pull request #11278 from Kelebek1/dma_sync | liamwhite | 2023-08-18 | 1 | -1/+6 |
|\ \ | | | | | | | Mark accelerated DMA destination buffers and images as GPU-modified | ||||
| * | | Mark accelerted DMA destination buffers and images as GPU-modified | Kelebek1 | 2023-08-13 | 1 | -1/+6 |
| | | | |||||
* | | | video_core: Fix vulkan assert error | Feng Chen | 2023-08-18 | 1 | -1/+1 |
|/ / | |||||
* | | Fix shader dumps with nvdisasm | Kelebek1 | 2023-08-03 | 1 | -5/+7 |
| | | | | | | | | | | skip fragment shaders when rasterizer is disabled initialize env_ptrs | ||||
* | | Merge pull request #11202 from abouvier/vulkan-config | liamwhite | 2023-08-02 | 10 | -10/+20 |
|\ \ | | | | | | | vulkan: centralize config | ||||
| * | | vulkan: centralize config | Alexandre Bouvier | 2023-08-02 | 10 | -10/+20 |
| | | | |||||
* | | | Merge pull request #10839 from lat9nq/pgc-plus | liamwhite | 2023-08-02 | 2 | -12/+19 |
|\ \ \ | |/ / |/| | | general: Reimplement per-game configurations | ||||
| * | | settings,general: Rename non-confirming enums | lat9nq | 2023-07-21 | 2 | -9/+9 |
| | | | |||||
| * | | settings,video_core: Consolidate ASTC decoding options | lat9nq | 2023-07-21 | 1 | -6/+13 |
| |/ | | | | | | | Just puts them all neatly into one place. | ||||
* / | vk_descriptor_pool: Disallow descriptor set free | GPUCode | 2023-07-27 | 4 | -5/+5 |
|/ | |||||
* | vk_buffer_cache: Format | lat9nq | 2023-07-19 | 1 | -2/+2 |
| | |||||
* | general: Silence -Wshadow{,-uncaptured-local} warnings | lat9nq | 2023-07-19 | 4 | -32/+34 |
| | | | | These occur in the latest commits in LLVM Clang. | ||||
* | Merge pull request #10479 from GPUCode/format-list | liamwhite | 2023-07-02 | 2 | -6/+44 |
|\ | | | | | Add support for VK_KHR_image_format_list | ||||
| * | renderer_vulkan: Fix some missing view formats | GPUCode | 2023-07-01 | 1 | -3/+2 |
| | | | | | | | | | | | | * Many times the format itself wouldn't have been added to the list causing device losses for nvidia GPUs * Also account for ASTC acceleration storage views | ||||
| * | renderer_vulkan: Add support for VK_KHR_image_format_list | GPUCode | 2023-07-01 | 2 | -6/+45 |
| | | |||||
* | | Merge pull request #10942 from FernandoS27/android-is-a-pain-in-the-a-- | liamwhite | 2023-07-02 | 2 | -9/+28 |
|\ \ | | | | | | | Memory Tracking: Add mechanism to register small writes when gpu page is contested by GPU | ||||
| * | | Memory Tracking: Optimize tracking to only use atomic writes when contested with the host GPU | Fernando Sahmkow | 2023-06-28 | 2 | -3/+25 |
| | | | |||||
| * | | MemoryTracking: Initial setup of atomic writes. | Fernando Sahmkow | 2023-06-28 | 1 | -6/+3 |
| |/ | |||||
* / | Minor cleanup in BufferCacheRuntime::ReserveNullBuffer | comex | 2023-07-01 | 1 | -2/+1 |
|/ | | | | As far as I can tell, there is no reason to OR this bit in separately. | ||||
* | renderer_vulkan: Prevent crashes when blitting depth stencil | GPUCode | 2023-06-28 | 1 | -0/+3 |
| | |||||
* | video_core: Add BCn decoding support | GPUCode | 2023-06-28 | 3 | -0/+31 |
| | |||||
* | renderer_vulkan: Add more feature checking | GPUCode | 2023-06-28 | 1 | -3/+4 |
| | |||||
* | renderer_vulkan: Respect viewport limit | GPUCode | 2023-06-28 | 2 | -6/+15 |
| | |||||
* | renderer_vulkan: Don't add transform feedback flag if unsupported | GPUCode | 2023-06-28 | 2 | -7/+12 |
| | |||||
* | renderer_vulkan: Add suport for debug report callback | GPUCode | 2023-06-28 | 2 | -2/+21 |
| | |||||
* | Merge pull request #10473 from GPUCode/vma | liamwhite | 2023-06-27 | 16 | -218/+98 |
|\ | | | | | Use vulkan memory allocator | ||||
| * | renderer_vulkan: Use VMA for buffers | GPUCode | 2023-06-18 | 11 | -162/+76 |
| | | |||||
| * | renderer_vulkan: Use VMA for images | GPUCode | 2023-06-18 | 11 | -53/+19 |
| | | |||||
| * | memory_allocator: Remove OpenGL interop | GPUCode | 2023-06-18 | 2 | -3/+3 |
| | | | | | | | | * Appears to be unused atm | ||||
* | | Merge pull request #10859 from liamwhite/no-more-atomic-wait | liamwhite | 2023-06-23 | 2 | -13/+10 |
|\ \ | | | | | | | general: remove atomic signal and wait | ||||
| * | | general: remove atomic signal and wait | Liam | 2023-06-22 | 2 | -13/+10 |
| | | | |||||
* | | | Remove memory allocations in some hot paths | Kelebek1 | 2023-06-22 | 3 | -16/+23 |
|/ / | |||||
* | | video_core: Check broken compute earlier | lat9nq | 2023-06-19 | 1 | -1/+1 |
| | | | | | | | | | | Checks it as the system is determining what settings to enable. Reduces the need to check settings while the system is running. | ||||
* | | video_core: Formalize HasBrokenCompute | lat9nq | 2023-06-18 | 1 | -4/+1 |
| | | | | | | | | | | | | | | | | Also limits it to only affected Intel proprietrary driver versions. vulkan_device: Move broken compute determination vk_device: Remove errant back quote | ||||
* | | Merge pull request #10809 from Kelebek1/reduce_vertex_bindings | liamwhite | 2023-06-18 | 1 | -10/+10 |
|\ \ | |/ |/| | Synchronize vertex buffer even when it doesn't require binding | ||||
| * | Synchronize vertex buffer even when it doesn't require binding | Kelebek1 | 2023-06-17 | 1 | -10/+10 |
| | | |||||
* | | renderer_vulkan: add missing include | Liam | 2023-06-18 | 1 | -0/+1 |
| | | |||||
* | | Merge pull request #10744 from Wollnashorn/af-for-all | Fernando S | 2023-06-18 | 5 | -32/+55 |
|\ \ | | | | | | | video_core: Improved anisotropic filtering heuristics | ||||
| * | | video_core: Use sampler IDs instead pointers in the pipeline config | Wollnashorn | 2023-06-16 | 3 | -8/+9 |
| | | | | | | | | | | | | The previous approach of storing pointers returned by `GetGraphicsSampler`/`GetComputeSampler` caused UB, as these functions can cause reallocation of the sampler slot vector and therefore invalidate the pointers | ||||
| * | | video_core: Fallback to default anisotropy instead to 1x anisotropy | Wollnashorn | 2023-06-15 | 3 | -7/+9 |
| | | | |||||
| * | | video_core: Fixed compilation errors because of name shadowing | Wollnashorn | 2023-06-15 | 1 | -3/+3 |
| | | | |||||
| * | | video_core: Add per-image anisotropy heuristics (format & mip count) | Wollnashorn | 2023-06-15 | 5 | -30/+50 |
| | | | |||||
* | | | Merge pull request #10783 from liamwhite/memory | bunnei | 2023-06-17 | 1 | -3/+3 |
|\ \ \ | |_|/ |/| | | video_core: preallocate fewer IR blocks | ||||
| * | | video_core: preallocate fewer IR blocks | Liam | 2023-06-15 | 1 | -3/+3 |
| | | | |||||
* | | | Merge pull request #10775 from liamwhite/cb2 | bunnei | 2023-06-16 | 1 | -0/+1 |
|\ \ \ | |/ / |/| | | renderer_vulkan: propagate conditional barrier support | ||||
| * | | renderer_vulkan: propagate conditional barrier support | Liam | 2023-06-14 | 1 | -0/+1 |
| | | | |||||
* | | | buffer_cache_base: Specify buffer type in HostBindings | Morph | 2023-06-13 | 2 | -20/+16 |
|/ / | | | | | | | Avoid reinterpret-casting from void pointer since the type is already known at compile time. | ||||
* | | Merge pull request #10693 from liamwhite/f64-to-f32 | bunnei | 2023-06-12 | 1 | -0/+1 |
|\ \ | |/ |/| | shader_recompiler: translate f64 to f32 when unsupported on host | ||||
| * | shader_recompiler: translate f64 to f32 when unsupported on host | Liam | 2023-06-10 | 1 | -0/+1 |
| | | |||||
* | | Merge pull request #10668 from Kelebek1/reduce_vertex_bindings | bunnei | 2023-06-11 | 2 | -1/+56 |
|\ \ | | | | | | | Combine vertex/transform feedback buffer binding into a single call | ||||
| * | | Combine vertex/transform feedback buffer binding into a single call | Kelebek1 | 2023-06-08 | 2 | -1/+56 |
| |/ | |||||
* | | android: Fix screen orientation & blurriness. | bunnei | 2023-06-11 | 2 | -47/+5 |
| | | |||||
* | | vk_blit_screen: use higher bit depth for fxaa | Liam | 2023-06-08 | 1 | -4/+4 |
|/ | |||||
* | Merge pull request #10476 from ameerj/gl-memory-maps | liamwhite | 2023-06-07 | 1 | -0/+1 |
|\ | | | | | OpenGL: Make use of persistent buffer maps in buffer cache | ||||
| * | OpenGL: Make use of persistent buffer maps in buffer cache downloads | ameerj | 2023-05-28 | 1 | -0/+1 |
| | | | | | | | | | | | | Persistent buffer maps were already used by the texture cache, this extends their usage for the buffer cache. In my testing, using the memory maps for uploads was slower than the existing "ImmediateUpload" path, so the memory map usage is limited to downloads for the time being. | ||||
* | | android: vk_presentation_manager: Fix unusued needs_recreation. | bunnei | 2023-06-03 | 1 | -3/+3 |
| | | |||||
* | | android: vk_turbo_mode: Remove unnecessary device recreation. | bunnei | 2023-06-03 | 2 | -2/+11 |
| | | | | | | | | - Fixes a rare crash. | ||||
* | | android: renderer_vulkan: Fix crash with surface recreation. | bunnei | 2023-06-03 | 3 | -1/+32 |
| | | |||||
* | | android: Fix presentation layout on foldable and tablet devices. | bunnei | 2023-06-03 | 1 | -8/+47 |
| | | |||||
* | | video_core: vk_rasterizer: Decrease draw dispatch count for Android. | bunnei | 2023-06-03 | 1 | -0/+4 |
| | | |||||
* | | android: GPU: Enable async presentation, increase frames in flight. | bunnei | 2023-06-03 | 1 | -1/+1 |
| | | |||||
* | | android: video_core: Disable some problematic things on GPU Normal. | bunnei | 2023-06-03 | 2 | -0/+28 |
| | | |||||
* | | android: video_core: Disable problematic compute shaders. | bunnei | 2023-06-03 | 2 | -3/+9 |
| | | | | | | | | - Fixes #104. | ||||
* | | android: vulkan: Recreate surface after suspension & adapt to async. presentation. | bunnei | 2023-06-03 | 5 | -15/+35 |
| | | |||||
* | | video_core: Enable support_descriptor_aliasing on Turnip, disable storage atomic otherwise. | bunnei | 2023-06-03 | 1 | -5/+1 |
| | | |||||
* | | build: only enable adrenotools on arm64 | Liam | 2023-06-03 | 1 | -3/+3 |
| | | |||||
* | | video_core: fix clang-format errors | liushuyu | 2023-06-03 | 1 | -2/+2 |
| | | |||||
* | | android: vulkan: Implement adrenotools turbo mode. | bunnei | 2023-06-03 | 1 | -1/+11 |
| | | |||||
* | | android: native: Add support for custom Vulkan driver loading. | bunnei | 2023-06-03 | 2 | -3/+3 |
| | | |||||
* | | core: frontend: Refactor GraphicsContext to its own module. | bunnei | 2023-06-03 | 1 | -1/+1 |
| | | |||||
* | | Avoid using VectorExtractDynamic for subgroup mask on Adreno GPUs | Billy Laws | 2023-06-03 | 1 | -0/+1 |
| | | | | | | | | This crashes their shader compiler for some reason. | ||||
* | | Implement scaled vertex buffer format emulation | Billy Laws | 2023-06-03 | 2 | -2/+13 |
| | | | | | | | | These formats are unsupported by mobile GPUs so they need to be emulated in shaders instead. | ||||
* | | Disable multithreaded pipeline compilation on Qualcomm drivers | Billy Laws | 2023-06-03 | 1 | -1/+4 |
| | | | | | | | | This causes crashes during compilation on several 6xx and 5xx driver versions. | ||||
* | | video_core: vk_pipeline_cache: Disable support_descriptor_aliasing on Android. | bunnei | 2023-06-03 | 1 | -0/+4 |
| | | |||||
* | | video_core: vk_swapchain: Fix image format for Android. | bunnei | 2023-06-03 | 2 | -0/+10 |
| | | |||||
* | | video_core: vk_blit_screen: Rotate viewport for Android landscape. | bunnei | 2023-06-03 | 1 | -0/+8 |
| | | |||||
* | | renderer_vulkan: Remove timeline semaphore wait | GPUCode | 2023-05-28 | 1 | -7/+4 |
|/ | |||||
* | Merge pull request #10398 from liamwhite/bcn | Fernando S | 2023-05-24 | 2 | -8/+24 |
|\ | | | | | video_core: add ASTC recompression | ||||
| * | textures: add BC1 and BC3 compressors and recompression setting | Liam | 2023-05-23 | 2 | -8/+24 |
| | | |||||
* | | Merge pull request #10388 from GPUCode/fence-wait | liamwhite | 2023-05-23 | 2 | -3/+58 |
|\ \ | | | | | | | vk_master_semaphore: Move fence wait on separate thread | ||||
| * | | vk_master_semaphore: Move fence wait on separate thread | GPUCode | 2023-05-20 | 2 | -3/+58 |
| |/ | |||||
* / | renderer_vulkan: barrier attachment feedback loops | Liam | 2023-05-23 | 3 | -1/+8 |
|/ | |||||
* | renderer_vulkan: remove wrong constexpr | Liam | 2023-05-19 | 1 | -2/+2 |
| | |||||
* | Merge pull request #10217 from Kelebek1/clear_value | liamwhite | 2023-05-16 | 1 | -19/+6 |
|\ | | | | | Use the rendertarget format of the correct RT rather than the first valid | ||||
| * | Use the rendertarget format of the correct RT rather than the first valid | Kelebek1 | 2023-05-09 | 1 | -19/+6 |
| | | |||||
* | | Merge pull request #10181 from lat9nq/intel-compute-toggle | liamwhite | 2023-05-15 | 1 | -1/+2 |
|\ \ | | | | | | | configure_graphics: Add option to enable compute pipelines for Intel proprietary | ||||
| * | | vk_pipeline_cache: Use setting to disable intel compute | lat9nq | 2023-05-07 | 1 | -1/+2 |
| | | | |||||
* | | | Correctly track RT indexes for image aspect lookup during clears | Kelebek1 | 2023-05-12 | 2 | -1/+3 |
| | | | |||||
* | | | renderer_vulkan: separate guest and host compute descriptor queues | Liam | 2023-05-10 | 16 | -75/+81 |
| |/ |/| | |||||
* | | Texture Cache: Fix ASTC textures | Fernando Sahmkow | 2023-05-09 | 1 | -1/+1 |
| | | |||||
* | | Texture cache: Only force flush the dma downloads | Fernando Sahmkow | 2023-05-07 | 1 | -1/+1 |
| | | |||||
* | | Buffer Cache: disable reactive flushing in it. | Fernando Sahmkow | 2023-05-07 | 1 | -7/+0 |
| | | |||||
* | | Address feedback, add CR notice, etc | Fernando Sahmkow | 2023-05-07 | 1 | -2/+2 |
| | | |||||
* | | GPU: Add Reactive flushing | Fernando Sahmkow | 2023-05-07 | 2 | -0/+24 |
| | | |||||
* | | Merge pull request #10172 from Kelebek1/debug_validation_names | liamwhite | 2023-05-07 | 2 | -5/+5 |
|\ \ | |/ |/| | Log object names with debug renderer, add a GPU address to ImageViews | ||||
| * | Log object names with debug renderer, add a GPU address to ImageViews | Kelebek1 | 2023-05-06 | 2 | -5/+5 |
| | | |||||
* | | Merge pull request #10125 from lat9nq/vsync-select | bunnei | 2023-05-07 | 3 | -29/+54 |
|\ \ | |/ |/| | configuration: Expose separate swap present modes | ||||
| * | vk_swapchain: Use certain modes for unlocked | lat9nq | 2023-05-03 | 2 | -26/+50 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Uses mailbox, then immediate for unlocked framerate depending on support for either. Also adds support for FIFO_RELAXED. This function now assumes vsync_mode was originially configured to a value that the driver supports. vk_swapchain: ChooseSwapPresentMode determines updates Simplifies swapchain a bit and allows us to change the present mode during guest runtime. vk_swapchain: Fix MSVC error vk_swapchain: Enforce available present modes Some frontends don't check the value of vsync_mode before comitting it. Just as well, since a driver update or misconfiguration could problems in the swap chain. vk_swapchain: Silence warnings Silences GCC warnings implicit-fallthrough and shadow, which apparently are not enabled on clang. | ||||
| * | vulkan_surface: Pass only window info for surface creation | lat9nq | 2023-05-03 | 1 | -1/+1 |
| | | | | | | | | | | | | We don't need the whole EmuWindow when creating a surface, and it creates onerous requirements outside of typical usage for creating a surface elsewhere. | ||||
| * | configuration: Expose separate swap present modes | lat9nq | 2023-05-03 | 1 | -13/+14 |
| | | | | | | | | | | | | | | | | Previously, yuzu would try and guess which vsync mode to use given different scenarios, but apparently we didn't always get it right. This exposes the separate modes in a drop-down the user can select. If a mode isn't available in Vulkan, it defaults to FIFO. | ||||
* | | Merge pull request #10142 from FernandoS27/missing-astc | bunnei | 2023-05-04 | 1 | -0/+3 |
|\ \ | | | | | | | GPU: implement missing ASTC | ||||
| * | | GPU: implement missing ASTC | Fernando Sahmkow | 2023-05-03 | 1 | -0/+3 |
| | | | |||||
* | | | Merge pull request #10088 from FernandoS27/100-gelato-flavor-test-builds-later | bunnei | 2023-05-04 | 5 | -10/+28 |
|\ \ \ | |/ / |/| | | Y.F.C Implement Asynchronous Fence manager and Rework Query async downloads | ||||
| * | | Clang format and ddress feedback | Fernando Sahmkow | 2023-04-24 | 2 | -3/+4 |
| | | | |||||
| * | | QueryCache: rework async downloads. | Fernando Sahmkow | 2023-04-23 | 3 | -8/+13 |
| | | | |||||
| * | | Accuracy Normal: reduce accuracy further for perf improvements in Project Lime | Fernando Sahmkow | 2023-04-23 | 2 | -2/+3 |
| | | | |||||
| * | | Fence Manager: implement async fence management in a sepparate thread. | Fernando Sahmkow | 2023-04-23 | 2 | -1/+12 |
| | | | |||||
* | | | vk_present_manager: Fix softlocks when disabling async present | GPUCode | 2023-05-03 | 3 | -6/+9 |
| |/ |/| | |||||
* | | vk_present_manager: Add toggle for async presentation | GPUCode | 2023-05-01 | 2 | -2/+17 |
| | | |||||
* | | vk_blit_screen: Recreate FSR when frame is recreated | GPUCode | 2023-05-01 | 1 | -1/+1 |
| | | | | | | | | * Depends on the layout dimentions and thus should be recreated as well | ||||
* | | renderer_vulkan: Fix crashing when updating descriptors | GPUCode | 2023-05-01 | 2 | -4/+17 |
| | | | | | | | | | | | | | | | | | | | | | | * During pipeline configure the function would acquire some payload space from the descriptor update queue, write the descriptor data on the GPU thread and give the scheduler a pointer to the beginning of said space to update it later. TickFrame resets the payload cursor, used to track acquires, back to the beginning of the buffer. This wasn't a problem before since WaitWorker was called at the end of the frame but now it is. If a frame writes to a cursor before the scheduler catches up, it will crash * To fix this the payload buffer has been increased to account for the in flight frames that are allowed to exist now. TickFrame will switch between the payload spaces instead of resetting | ||||
* | | renderer_vulkan: Async presentation | GPUCode | 2023-05-01 | 10 | -218/+710 |
| | | |||||
* | | Merge pull request #10084 from FernandoS27/yuzu-goes-broom-broom | Morph | 2023-05-01 | 3 | -4/+23 |
|\ \ | | | | | | | Y.F.C Buffer Cache Revamp | ||||
| * | | Clang: format and ficx compile errors. | Fernando Sahmkow | 2023-04-29 | 1 | -1/+1 |
| | | | |||||
| * | | Buffer Cache: Fully rework the buffer cache. | Fernando Sahmkow | 2023-04-29 | 3 | -3/+22 |
| | | | |||||
* | | | Merge pull request #10110 from Morph1984/intel-disable-compute | bunnei | 2023-04-30 | 1 | -0/+7 |
|\ \ \ | | | | | | | | | vk_pipeline_cache: Skip compute pipelines on Intel proprietary drivers | ||||
| * | | | vk_pipeline_cache: Skip compute pipelines on Intel proprietary drivers | Morph | 2023-04-28 | 1 | -0/+7 |
| |/ / | | | | | | | | | | | | | | | | | | | Intel's SPIR-V shader compiler is broken. For now, skip compiling any compute pipelines until they fix this issue. This is not a perfect workaround, as there are a small subset of non-compute pipelines that still cause it to crash, but this should cover the majority of crashes. It is unfortunate that even with a test case reported 6 months ago the issue has not been fixed in favor of fixing "the most popular games and apps". Intel, you can do better than this. | ||||
* | | | Texture Cache: Release stagging buffers on tick frame | Fernando Sahmkow | 2023-04-29 | 2 | -2/+16 |
| | | | |||||
* | | | Accelerate DMA: Use texture cache async downloads to perform the copies | Fernando Sahmkow | 2023-04-29 | 3 | -12/+17 |
| | | | | | | | | | | | | | | | | | | to host. WIP | ||||
* | | | TextureCache: refactor DMA downloads to allow multiple buffers. | Fernando Sahmkow | 2023-04-29 | 3 | -19/+33 |
|/ / | |||||
* | | Merge pull request #10051 from liamwhite/surface-capabilities | Fernando S | 2023-04-24 | 1 | -1/+14 |
|\ \ | |/ |/| | vulkan: pick alpha composite flags based on available values | ||||
| * | vulkan: pick alpha composite flags based on available values | Liam | 2023-04-13 | 1 | -1/+14 |
| | | |||||
* | | vulkan: use plain fences when timeline semaphores are not available | Liam | 2023-04-15 | 3 | -67/+156 |
| | | |||||
* | | video_core: Enable ImageGather rounding fix on AMD open source drivers | Wollnashorn | 2023-04-12 | 1 | -0/+2 |
| | | |||||
* | | video_core: Enable ImageGather with subpixel offset on Intel | Wollnashorn | 2023-04-08 | 1 | -1/+3 |
| | | |||||
* | | shader_recompiler: Add subpixel offset for correct rounding at `ImageGather` | Wollnashorn | 2023-04-08 | 1 | -0/+1 |
|/ | | | | | | | On AMD a subpixel offset of 1/512 of the texel size is applied to the texture coordinates at a ImageGather call to ensure the rounding at the texel centers is done the same way as in Maxwell or other Nvidia architectures. See https://www.reedbeta.com/blog/texture-gathers-and-coordinate-precision/ for more details why this might be necessary. This should fix shadow artifacts at object edges in Zelda: Breath of the Wild (#9957, #6956). | ||||
* | vulkan: fix scheduler chunk reserve | Liam | 2023-03-24 | 1 | -1/+1 |
| | |||||
* | vulkan: fix more excessive waiting in scheduler | Liam | 2023-03-19 | 1 | -4/+5 |
| | |||||
* | Merge pull request #9931 from liamwhite/sched | liamwhite | 2023-03-16 | 2 | -28/+62 |
|\ | | | | | vk_scheduler: split work queue waits and execution waits | ||||
| * | vk_scheduler: split work queue waits and execution waits | Liam | 2023-03-12 | 2 | -28/+62 |
| | | |||||
* | | Merge pull request #9933 from vonchenplus/texture_format | liamwhite | 2023-03-14 | 1 | -6/+1 |
|\ \ | | | | | | | video_core: Update texture format | ||||
| * | | video_core: Update texture format | Feng Chen | 2023-03-10 | 1 | -6/+1 |
| |/ | |||||
* | | general: fix spelling mistakes | Liam | 2023-03-12 | 6 | -10/+10 |
| | | |||||
* | | Merge pull request #9913 from ameerj/acc-dma-refactor | Fernando S | 2023-03-11 | 4 | -224/+57 |
|\ \ | |/ |/| | AccelerateDMA: Refactor Buffer/Image copy code and implement for OGL | ||||
| * | Refactor AccelerateDMA code | ameerj | 2023-03-07 | 4 | -224/+57 |
| | | |||||
* | | Merge pull request #9896 from Kelebek1/d24s8 | liamwhite | 2023-03-08 | 2 | -5/+8 |
|\ \ | | | | | | | Check all swizzle components for red, not just [0] | ||||
| * | | Check all swizzle components for red, not just [0], pass float border color rather than int | Kelebek1 | 2023-03-04 | 2 | -5/+8 |
| | | | |||||
* | | | general: fix type inconsistencies | Liam | 2023-03-08 | 1 | -2/+2 |
| |/ |/| | |||||
* | | Engines: Implement Accelerate DMA Texture. | Fernando Sahmkow | 2023-03-05 | 3 | -7/+252 |
|/ | |||||
* | configuration: Add async ASTC decode setting | ameerj | 2023-02-23 | 1 | -3/+4 |
| | |||||
* | Merge pull request #9588 from liamwhite/bylaws-reverts | liamwhite | 2023-02-19 | 3 | -7/+0 |
|\ | | | | | Revert "shader_recompiler: Align SSBO offsets to meet host requirements" | ||||
| * | Revert "Vulkan, OpenGL: Hook up storage buffer alignment code" | Liam | 2023-01-07 | 3 | -7/+0 |
| | | | | | | | | This reverts commit 9e2997c4b6456031622602002924617690e32a13. | ||||
* | | remove static from pointer sized or smaller types for aesthetics, change constexpr static to static constexpr for consistency | arades79 | 2023-02-14 | 10 | -36/+32 |
| | | | | | | | | Signed-off-by: arades79 <scravers@protonmail.com> | ||||
* | | add static lifetime to constexpr values to force compile time evaluation where possible | arades79 | 2023-02-14 | 9 | -31/+35 |
| | | | | | | | | Signed-off-by: arades79 <scravers@protonmail.com> | ||||
* | | Merge pull request #9746 from ameerj/ogl-msaa-texcache | bunnei | 2023-02-12 | 2 | -0/+12 |
|\ \ | | | | | | | texture_cache: OpenGL: Implement MSAA uploads and copies | ||||
| * | | texture_cache: OpenGL: Implement MSAA uploads and copies | ameerj | 2023-02-11 | 2 | -0/+12 |
| | | | |||||
* | | | Remove fake vertex bindings when dynamic state is enabled | Kelebek1 | 2023-02-05 | 1 | -25/+1 |
|/ / | |||||
* | | video_core: Implement vulkan clear specified channel | FengChen | 2023-01-28 | 3 | -20/+126 |
| | | |||||
* | | video_core/opengl: Add FSR upscaling filter to the OpenGL renderer | Wollnashorn | 2023-01-26 | 1 | -142/+2 |
| | | |||||
* | | Merge pull request #9556 from vonchenplus/draw_texture | liamwhite | 2023-01-19 | 4 | -7/+117 |
|\ \ | | | | | | | video_core: Implement maxwell3d draw texture method | ||||
| * | | Address feedback | Feng Chen | 2023-01-16 | 3 | -11/+59 |
| | | | |||||
| * | | video_core: Implement opengl/vulkan draw_texture | Feng Chen | 2023-01-05 | 4 | -7/+69 |
| | | | |||||
* | | | Merge pull request #9581 from liamwhite/turbo2 | Morph | 2023-01-09 | 5 | -0/+40 |
|\ \ \ | | | | | | | | | renderer_vulkan: pause turbo submissions on inactive queue | ||||
| * | | | renderer_vulkan: pause turbo submissions on inactive queue | Liam | 2023-01-07 | 5 | -0/+40 |
| | |/ | |/| | |||||
* | | | vulkan_device: refactor feature testing | Liam | 2023-01-09 | 1 | -16/+3 |
| | | | |||||
* | | | VideoCore: Fix OGL cache invalidation. | Fernando Sahmkow | 2023-01-08 | 1 | -0/+2 |
|/ / | |||||
* | | renderer_vulkan: disable clock boost on unvalidated devices | Liam | 2023-01-07 | 1 | -1/+1 |
| | | |||||
* | | video_core/vulkan: Fixed loading of Vulkan driver pipeline cache | Wollnashorn | 2023-01-06 | 1 | -1/+2 |
| | | | | | | | | The header size of the Vulkan driver pipeline cache files was incorrectly in PipelineCache::LoadVulkanPipelineCache, for which the pipeline cache wasn't read correctly and got invalidated on each load. | ||||
* | | Merge pull request #9535 from bylaws/master | Fernando S | 2023-01-06 | 3 | -0/+9 |
|\ \ | | | | | | | Port over several shader-compiler fixes from skyline | ||||
| * | | Vulkan, OpenGL: Hook up geometry shader passthrough emulation | Billy Laws | 2023-01-05 | 1 | -0/+1 |
| | | | |||||
| * | | Vulkan, OpenGL: Hook up storage buffer alignment code | Billy Laws | 2023-01-05 | 3 | -0/+7 |
| | | | |||||
| * | | Vulkan: Add a workaround for input_position on Adreno drivers | Billy Laws | 2023-01-05 | 1 | -0/+1 |
| | | | | | | | | | | | | Adreno drivers will crash compiling geometry shaders if the input position is not wrapped in a gl_in struct. | ||||
* | | | Merge pull request #9552 from liamwhite/turbo | liamwhite | 2023-01-06 | 4 | -1/+241 |
|\ \ \ | | | | | | | | | vulkan: implement 'turbo mode' clock booster | ||||
| * | | | common: add setting for renderer clock workaround | Liam | 2023-01-05 | 1 | -1/+3 |
| | | | | |||||
| * | | | vulkan: implement 'turbo mode' clock booster | Liam | 2023-01-05 | 4 | -1/+239 |
| | |/ | |/| | |||||
* | | | Merge pull request #9559 from FernandoS27/cached-writes | Fernando S | 2023-01-06 | 2 | -0/+24 |
|\ \ \ | | | | | | | | | VideoCore: Implement Cached Writes, use fastmem for reading GPU memory and eliminate old stuffs | ||||
| * | | | BufferBase: Don't ignore GPU pages. | Fernando Sahmkow | 2023-01-05 | 1 | -3/+3 |
| | | | | |||||
| * | | | video_core: Cache GPU internal writes. | Fernando Sahmkow | 2023-01-05 | 2 | -0/+24 |
| |/ / | |||||
* | | | Merge pull request #9528 from liamwhite/mvk-nulldesc | liamwhite | 2023-01-06 | 1 | -0/+11 |
|\ \ \ | | | | | | | | | renderer_vulkan: implement fallback path for null buffer descriptors | ||||
| * | | | renderer_vulkan: implement fallback path for null descriptors | Liam | 2023-01-05 | 1 | -0/+11 |
| |/ / | |||||
* | | | Merge pull request #9536 from liamwhite/debug-utils | liamwhite | 2023-01-06 | 1 | -1/+1 |
|\ \ \ | |_|/ |/| | | vulkan_common: unify VK_EXT_debug_utils and selection of validation layer | ||||
| * | | vulkan_common: unify VK_EXT_debug_utils and selection of validation layer | Liam | 2023-01-01 | 1 | -1/+1 |
| | | | |||||
* | | | video_core/vulkan: Vulkan driver pipelines now contain cache version | Wollnashorn | 2023-01-05 | 2 | -16/+28 |
| | | | | | | | | | | | | So that old cache can get deleted when the cache version changes and does not grow infinitely | ||||
* | | | video_core/vulkan: Added check if Vulkan pipeline path has been set | Wollnashorn | 2023-01-05 | 1 | -1/+1 |
| | | | |||||
* | | | video_core/vulkan: Added `VkPipelineCache` to store Vulkan pipelines | Wollnashorn | 2023-01-05 | 6 | -61/+181 |
| | | | | | | | | | | | | | | | | | | As an optional feature which can be enabled in the advanced graphics configuration, all pipelines that get built at the initial shader loading are stored in a VkPipelineCache object and are dumped to the disk. These vendor specific pipeline cache files are located at `/shader/GAME_ID/vulkan_pipelines.bin`. This feature was mainly added because of an issue with the AMD driver (see yuzu-emu#8507) causing invalidation of the cache files the driver builds automatically. | ||||
* | | | Vulkan: Fix drivers that don't support dynamic_state_2 up | Fernando Sahmkow | 2023-01-05 | 2 | -8/+11 |
| |/ |/| | |||||
* | | Video_core: Address feedback | Fernando Sahmkow | 2023-01-04 | 2 | -15/+14 |
| | | |||||
* | | Texture Cache: Implement async texture downloads. | Fernando Sahmkow | 2023-01-04 | 2 | -3/+11 |
| | | |||||
* | | ShaderCompiler: Inline driver specific constants. | Fernando Sahmkow | 2023-01-03 | 1 | -1/+1 |
| | | |||||
* | | Vulkan: rework stencil tracking. | Fernando Sahmkow | 2023-01-03 | 3 | -32/+165 |
| | | |||||
* | | vulkan_common: blacklist radv from extended_dynamic_state2 on drivers before 22.3.1 | Liam | 2023-01-01 | 1 | -2/+4 |
| | | |||||
* | | video_core: fix build | Liam | 2023-01-01 | 2 | -2/+9 |
| | | |||||
* | | MacroHLE: Final cleanup and fixes. | Fernando Sahmkow | 2023-01-01 | 4 | -12/+10 |
| | | |||||
* | | Rasterizer: Setup skeleton for Host Conditional rendering | Fernando Sahmkow | 2023-01-01 | 2 | -6/+23 |
| | | |||||
* | | RasterizerMemory: Add filtering for flushing/invalidation operations. | Fernando Sahmkow | 2023-01-01 | 2 | -21/+44 |
| | | |||||
* | | Vulkan: Allow stagging buffer deferrals. | Fernando Sahmkow | 2023-01-01 | 2 | -21/+56 |
| | | |||||
* | | Vulkan: Add other additional pipeline specs | Fernando Sahmkow | 2023-01-01 | 1 | -1/+17 |
| | | |||||
* | | Vulkan: Implement Dynamic State 3 | Fernando Sahmkow | 2023-01-01 | 8 | -66/+224 |
| | | |||||
* | | Vulkan Implement Dynamic State 2 LogicOp and PatchVertices | Fernando Sahmkow | 2023-01-01 | 8 | -23/+61 |
| | | |||||
* | | Vulkan: Implement Dynamic States 2 | Fernando Sahmkow | 2023-01-01 | 9 | -66/+216 |
| | | |||||
* | | MacroHLE: Add HLE replacement for base vertex and base instance. | Fernando Sahmkow | 2023-01-01 | 3 | -1/+3 |
| | | |||||
* | | MacroHLE: Implement DrawIndexedIndirect & DrawArraysIndirect. | Fernando Sahmkow | 2023-01-01 | 3 | -20/+34 |
| | | |||||
* | | MacroHLE: Add MultidrawIndirect HLE Macro. | Fernando Sahmkow | 2023-01-01 | 2 | -14/+47 |
|/ | |||||
* | Merge pull request #9423 from vonchenplus/vulkan_quad_strip | liamwhite | 2022-12-29 | 6 | -120/+237 |
|\ | | | | | video_core: Implement all vulkan topology | ||||
| * | video_core: Implement other missing vulkan topology | FengChen | 2022-12-26 | 1 | -3/+16 |
| | | |||||
| * | video_core: Implement vulkan QuadStrip topology | FengChen | 2022-12-26 | 6 | -117/+221 |
| | | |||||
* | | Merge pull request #7450 from FernandoS27/ndc-vulkan | liamwhite | 2022-12-17 | 2 | -4/+15 |
|\ \ | | | | | | | Vulkan: Add support for VK_EXT_depth_clip_control. | ||||
| * | | Vulkan: Add support for VK_EXT_depth_clip_control. | FernandoS27 | 2022-12-14 | 2 | -4/+15 |
| | | | |||||
* | | | Remove unimplemented transform feedback geometry spam, it should be implemented | Kelebek1 | 2022-12-16 | 1 | -2/+1 |
| | | | |||||
* | | | Merge pull request #7410 from Nefsen402/wayland-fixes | liamwhite | 2022-12-15 | 3 | -15/+28 |
|\ \ \ | | | | | | | | | Wayland fixes | ||||
| * | | | video_core/vulkan: Explicity check swapchain size when deciding to recreate | Alexander Orzechowski | 2022-12-13 | 3 | -15/+28 |
| |/ / | | | | | | | | | | | | | | | | Vulkan for whatever reason does not return VK_ERROR_OUT_OF_DATE_KHR when the swapchain is the wrong size. Explicity make sure the size is indeed up to date to workaround this. | ||||
* / / | Fix validation errors on less compatible Intel GPU | yzct12345 | 2022-12-13 | 3 | -2/+20 |
|/ / | |||||
* | | Merge pull request #9406 from vonchenplus/topology | bunnei | 2022-12-12 | 1 | -3/+0 |
|\ \ | |/ |/| | video_core: Adjust topology update logic and Adjust Clear Manage | ||||
| * | video_core: The draw manager manages whether Clear is required. | FengChen | 2022-12-08 | 1 | -3/+0 |
| | | |||||
* | | video_core: Integrate SMAA | Liam | 2022-12-08 | 5 | -2/+873 |
|/ | | | | | Co-authored-by: goldenx86 <goldenx86@users.noreply.github.com> Co-authored-by: BreadFish64 <breadfish64@users.noreply.github.com> | ||||
* | Merge pull request #9401 from vonchenplus/draw_manager | Fernando S | 2022-12-08 | 3 | -11/+16 |
|\ | | | | | video_core: Implement maxwell3d draw manager and split draw logic | ||||
| * | video_core: Implement maxwell3d draw manager and split draw logic | Feng Chen | 2022-12-08 | 3 | -11/+16 |
| | | |||||
* | | Vulkan: Implement Alpha coverage | Fernando Sahmkow | 2022-12-05 | 3 | -2/+6 |
|/ | |||||
* | vulkan_common: clean up extension usage | Liam | 2022-12-04 | 8 | -21/+21 |
| | |||||
* | vulkan_common: promote host query reset usage to core | Liam | 2022-12-04 | 1 | -1/+1 |
| | |||||
* | vulkan_common: promote descriptor update template usage to core | Liam | 2022-12-04 | 5 | -16/+16 |
| | |||||
* | Merge pull request #9289 from liamwhite/fruit-company | liamwhite | 2022-12-03 | 8 | -2/+8 |
|\ | | | | | general: fix compile for Apple Clang | ||||
| * | general: fix compile for Apple Clang | Liam | 2022-11-23 | 8 | -2/+8 |
| | | |||||
* | | Merge pull request #9303 from liamwhite/new-vulkan-init | Matías Locatti | 2022-12-02 | 1 | -2/+2 |
|\ \ | | | | | | | Vulkan: update initialization | ||||
| * | | Vulkan: update initialization | Liam | 2022-11-27 | 1 | -2/+2 |
| |/ | | | | | | | Co-authored-by: bylaws <bylaws@users.noreply.github.com> | ||||
* | | shader_recompiler: add gl_Layer translation GS for older hardware | Liam | 2022-12-01 | 1 | -1/+32 |
| | | |||||
* | | Merge pull request #9276 from goldenx86/fsrSlider | bunnei | 2022-11-27 | 1 | -1/+5 |
|\ \ | | | | | | | FSR Sharpening Slider | ||||
| * | | FSR Sharpening Slider part 1 - only a global slider | Matías Locatti | 2022-11-24 | 1 | -1/+5 |
| |/ | |||||
* | | Merge pull request #9307 from Morph1984/not-used-correctly | liamwhite | 2022-11-26 | 1 | -3/+3 |
|\ \ | | | | | | | maxwell_to_vk: Fix format usage bits and add R16_SINT | ||||
| * | | maxwell_to_vk: Add R16_SINT | Morph | 2022-11-24 | 1 | -1/+1 |
| | | | | | | | | | | | | This was somehow missed when the format was added to GL | ||||
| * | | maxwell_to_vk: Fix format usage bits | Morph | 2022-11-24 | 1 | -2/+2 |
| |/ | | | | | | | | | - VK_FORMAT_B8G8R8A8_UNORM supports the STORAGE_IMAGE_BIT - VK_FORMAT_R4G4B4A4_UNORM_PACK16 does not support the COLOR_ATTACHMENT_BIT | ||||
* | | GPU: Implement additional render target formats. | Fernando Sahmkow | 2022-11-24 | 1 | -0/+1 |
| | | |||||
* | | Fermi2D: Rework blit engine and add a software blitter. | Fernando Sahmkow | 2022-11-24 | 1 | -2/+1 |
|/ | |||||
* | Merge pull request #9216 from vonchenplus/reimp_inline_index_buffer | liamwhite | 2022-11-20 | 2 | -17/+0 |
|\ | | | | | video_core: Reimplement inline index buffer binding | ||||
| * | video_core: Reimplement inline index buffer binding | Feng Chen | 2022-11-15 | 2 | -17/+0 |
| | | |||||
* | | Merge pull request #9249 from goldenx86/available-vram | Morph | 2022-11-20 | 1 | -0/+4 |
|\ \ | | | | | | | Add available Vulkan VRAM to log files | ||||
| * | | Update renderer_vulkan.cpp | Matías Locatti | 2022-11-16 | 1 | -0/+4 |
| | | | |||||
* | | | Merge pull request #9252 from liamwhite/radv-superiority | bunnei | 2022-11-19 | 2 | -3/+3 |
|\ \ \ | | | | | | | | | maxwell3d: HLE multi-layer clear macro | ||||
| * | | | maxwell3d: full HLE for multi-layer clears | Liam | 2022-11-17 | 2 | -3/+3 |
| |/ / | |||||
* | | | Merge pull request #9229 from Docteh/achy_breaky_heart | Morph | 2022-11-18 | 2 | -0/+2 |
|\ \ \ | |/ / |/| | | Add break for default cases | ||||
| * | | Add break for default cases | Kyle Kienapfel | 2022-11-14 | 2 | -0/+2 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Visual Studio has an option to search all files in a solution, so I did a search in there for "default:" looking for any missing break statements. I've left out default statements that return something, and that throw something, even if via ThrowInvalidType. UNREACHABLE leads towards throw R_THROW macro leads towards a return | ||||
* | | | Merge pull request #9226 from Kelebek1/regs_regression | bunnei | 2022-11-12 | 3 | -0/+14 |
|\ \ \ | | | | | | | | | [video_core] Fix a couple regs regressions | ||||
| * | | | Fix regs regression with OpenGL two-sided stencil, and re-add data invalidation reg | Kelebek1 | 2022-11-11 | 3 | -0/+14 |
| |/ / | |||||
* | | | Merge pull request #9167 from vonchenplus/tess | liamwhite | 2022-11-11 | 1 | -0/+1 |
|\ \ \ | |/ / |/| | | video_core: Fix few issues in Tess stage | ||||
| * | | video_core: Fix few issues in Tess stage | FengChen | 2022-11-07 | 1 | -0/+1 |
| |/ | |||||
* / | ir/texture_pass: Use host_info instead of querying Settings::values (#9176) | Morph | 2022-11-11 | 3 | -2/+3 |
|/ | |||||
* | Merge pull request #9189 from vonchenplus/stupid | Morph | 2022-11-05 | 1 | -4/+4 |
|\ | | | | | video_core: Fix scaling graphical regressions for multiple games | ||||
| * | video_core: Fix scaling graphical regressions for multiple games | FengChen | 2022-11-05 | 1 | -4/+4 |
| | | |||||
* | | Update shader cache version. (#9175) | gidoly | 2022-11-04 | 1 | -1/+1 |
|/ | |||||
* | video_core: Fix SNORM texture buffer emulating error (#9001) | Feng Chen | 2022-11-04 | 2 | -7/+7 |
| | |||||
* | Merge pull request #8858 from vonchenplus/mipmap | bunnei | 2022-11-04 | 4 | -6/+48 |
|\ | | | | | video_core: Generate mipmap texture by drawing | ||||
| * | Merge branch 'master' into mipmap | Feng Chen | 2022-09-20 | 1 | -1/+1 |
| |\ | |||||
| * | | video_core: Generate mipmap texture by drawing | FengChen | 2022-09-20 | 4 | -6/+48 |
| | | | |||||
* | | | Merge pull request #9154 from liamwhite/new-fb | Fernando S | 2022-11-04 | 2 | -1/+10 |
|\ \ \ | | | | | | | | | vk_blit_screen: recreate swapchain images on guest format change | ||||
| * | | | vk_blit_screen: recreate swapchain images on guest format change | Liam | 2022-10-30 | 2 | -1/+10 |
| | | | | |||||
* | | | | Merge pull request #9097 from liamwhite/intel-spv-compiler | Morph | 2022-11-04 | 4 | -14/+19 |
|\ \ \ \ | | | | | | | | | | | video_core: don't build ASTC decoder shader unless requested | ||||
| * | | | | video_core: don't build ASTC decoder shader unless requested | Liam | 2022-10-20 | 4 | -14/+19 |
| | | | | | |||||
* | | | | | Merge pull request #9143 from K0bin/scheduler-empty | liamwhite | 2022-11-01 | 1 | -3/+1 |
|\ \ \ \ \ | | | | | | | | | | | | | vk_scheduler: Remove recorded_counts | ||||
| * | | | | | vk_scheduler: Remove recorded_counts | Robin Kertels | 2022-10-28 | 1 | -3/+1 |
| | | | | | | |||||
* | | | | | | Vulkan: Fix regression caused by limiting render area to width/height of rendef targets. | Fernando Sahmkow | 2022-10-30 | 1 | -6/+6 |
| |_|/ / / |/| | | | | |||||
* | | | | | video_core: Catch vulkan clear op not all channel need clear | FengChen | 2022-10-25 | 1 | -8/+13 |
|/ / / / | |||||
* | | | | Merge pull request #9112 from vonchenplus/deferred_draw | liamwhite | 2022-10-25 | 2 | -7/+23 |
|\ \ \ \ | | | | | | | | | | | video_core: Reimplementing the maxwell drawing trigger mechanism | ||||
| * | | | | video_core: Implement maxwell inline_index method | FengChen | 2022-10-22 | 2 | -0/+17 |
| | | | | | |||||
| * | | | | video_coare: Reimplementing the maxwell drawing trigger mechanism | FengChen | 2022-10-21 | 2 | -7/+6 |
| |/ / / | |||||
* | | | | Merge pull request #8873 from vonchenplus/fix_legacy_location_error | bunnei | 2022-10-24 | 1 | -0/+1 |
|\ \ \ \ | |/ / / |/| | | | video_core: Fix legacy to generic location unpaired | ||||
| * | | | video_core: Fix legacy to generic location unpaired | FengChen | 2022-09-20 | 1 | -0/+1 |
| | |/ | |/| | |||||
* | | | video_core: renderer_vulkan: vk_query_cache: Avoid shutdown crash in QueryPool::Reserve. | bunnei | 2022-10-19 | 1 | -3/+4 |
| | | | |||||
* | | | renderer_(opengl/vulkan): Fix tessellation clockwise parameter | Morph | 2022-10-13 | 1 | -2/+2 |
| | | | | | | | | | | | | This should be assigned CW only on Triangles_CW rather than not Triangles_CCW, making CCW the default winding order rather than CW. | ||||
* | | | Merge pull request #9027 from yuzu-emu/revert-8987-another-name-for-reinforcement-steel | bunnei | 2022-10-13 | 2 | -60/+27 |
|\ \ \ | | | | | | | | | Revert "vulkan: automatically use larger staging buffer sizes when possible" | ||||
| * | | | Revert "vulkan: automatically use larger staging buffer sizes when possible" | liamwhite | 2022-10-07 | 2 | -60/+27 |
| | | | | |||||
* | | | | Fix stencil func registers, make clip control equivalent to how it was before, but surely wrong. | Kelebek1 | 2022-10-10 | 3 | -15/+17 |
| | | | | |||||
* | | | | Merge pull request #8766 from Kelebek1/regs | Fernando S | 2022-10-09 | 8 | -439/+457 |
|\ \ \ \ | | | | | | | | | | | [video_core] Update 3D registers | ||||
| * | | | | Update 3D regs | Kelebek1 | 2022-10-07 | 8 | -439/+457 |
| |/ / / | |||||
* | | | | Merge pull request #9016 from liamwhite/drunken-schedule | Mai | 2022-10-08 | 1 | -2/+4 |
|\ \ \ \ | |/ / / |/| | | | vk_scheduler: wait for command processing to complete | ||||
| * | | | vk_scheduler: wait for command processing to complete | Liam | 2022-10-04 | 1 | -2/+4 |
| |/ / | |||||
* | | | vulkan_blitter: Fix pool allocation double free. | Byte | 2022-10-06 | 2 | -5/+10 |
| | | | |||||
* | | | state_tracker: workaround channel setup for homebrew | Liam | 2022-10-06 | 2 | -1/+3 |
| | | | |||||
* | | | Address Feedback from bylaws. | Fernando Sahmkow | 2022-10-06 | 1 | -1/+1 |
| | | | |||||
* | | | General: Fix clang format. | Fernando Sahmkow | 2022-10-06 | 1 | -9/+4 |
| | | | |||||
* | | | Vulkan Swapchain: Overall improvements. | Fernando Sahmkow | 2022-10-06 | 2 | -4/+13 |
| | | | |||||
* | | | Vulkan Texture Cache: Limit render area to the max width/height of the targets. | Fernando Sahmkow | 2022-10-06 | 2 | -9/+26 |
| | | | |||||
* | | | VideoCore: Implement formats needed for N64 emulation. | Fernando Sahmkow | 2022-10-06 | 2 | -2/+2 |
| | | | |||||
* | | | DMA & InlineToMemory Engines Rework. | bunnei | 2022-10-06 | 3 | -4/+2 |
| | | | |||||
* | | | Shader Decompiler: Check for shift when deriving composite samplers. | Fernando Sahmkow | 2022-10-06 | 2 | -4/+5 |
| | | | |||||
* | | | VideoCore: Refactor fencing system. | Fernando Sahmkow | 2022-10-06 | 4 | -31/+16 |
| | | | |||||
* | | | Vulkan: Fix Scissor on Clears | Fernando Sahmkow | 2022-10-06 | 1 | -1/+8 |
| | | | |||||
* | | | NVDRV: Further refactors and eliminate old code. | Fernando Sahmkow | 2022-10-06 | 1 | -4/+0 |
| | | | |||||
* | | | Texture cache: Fix the remaining issues with memory mnagement and unmapping. | Fernando Sahmkow | 2022-10-06 | 2 | -3/+3 |
| | | | |||||
* | | | VideoCore: Fix channels with disk pipeline/shader cache. | Fernando Sahmkow | 2022-10-06 | 4 | -24/+31 |
| | | | |||||
* | | | OpenGl: Implement Channels. | Fernando Sahmkow | 2022-10-06 | 4 | -6/+10 |
| | | | |||||
* | | | VideoCore: implement channels on gpu caches. | Fernando Sahmkow | 2022-10-06 | 11 | -79/+134 |
| | | | |||||
* | | | Texture Cache: Add ASTC 10x5 Format. | Fernando Sahmkow | 2022-10-06 | 1 | -0/+2 |
| | | | |||||
* | | | Merge pull request #9013 from liamwhite/spinning-a-yarn | bunnei | 2022-10-06 | 2 | -3/+3 |
|\ \ \ | | | | | | | | | common: remove "yuzu:" prefix from thread names | ||||
| * | | | common: remove "yuzu:" prefix from thread names | Liam | 2022-10-04 | 2 | -3/+3 |
| |/ / | |||||
* / / | vulkan: automatically use larger staging buffer sizes when possible | Liam | 2022-09-25 | 2 | -27/+60 |
|/ / | |||||
* / | (shader/pipeline)_cache: Raise shader/pipeline cache version | Morph | 2022-08-31 | 1 | -1/+1 |
|/ | | | | Since the following commit: https://github.com/yuzu-emu/yuzu/commit/a83a5d2e4c8932df864dd4cea2b04d87a12c8760 , many games will refuse to boot unless the shader/pipeline cache has been invalidated. | ||||
* | Merge pull request #8752 from vonchenplus/rectangle_texture | Fernando S | 2022-08-31 | 2 | -7/+6 |
|\ | | | | | video_code: support rectangle texture | ||||
| * | video_code: support rectangle texture | FengChen | 2022-08-25 | 2 | -7/+6 |
| | | |||||
* | | video_core: vulkan: rasterizer: Workaround on viewport swizzle on AMD | Narr the Reg | 2022-08-24 | 1 | -1/+8 |
| | | |||||
* | | video_core: support framebuffer crop rect top not zero | vonchenplus | 2022-08-20 | 1 | -6/+12 |
| | | |||||
* | | video_core: implement R16G16B16X16 texture format | Liam | 2022-08-19 | 1 | -1/+1 |
| | | |||||
* | | Make vsync setting work for Vulkan | DJRobX | 2022-08-08 | 1 | -2/+3 |
|/ | |||||
* | Merge pull request #8658 from liamwhite/plgp | bunnei | 2022-08-07 | 1 | -9/+7 |
|\ | | | | | video_core: differentiate between tiled and untiled framebuffer sizes for unaccelerated blits | ||||
| * | video_core: differentiate between tiled and untiled framebuffer sizes for unaccelerated copies | Liam | 2022-07-28 | 1 | -9/+7 |
| | | |||||
* | | Merge pull request #8700 from liamwhite/xc3-vk-crash | bunnei | 2022-08-06 | 1 | -0/+12 |
|\ \ | | | | | | | vk_texture_cache: return VK_NULL_HANDLE for views of null images | ||||
| * | | vk_texture_cache: return VK_NULL_HANDLE for views of null images | Liam | 2022-08-02 | 1 | -0/+12 |
| | | | |||||
* | | | renderer_vulkan: add format fallbacks for R16G16B16_SFLOAT, R16G16B16_SSCALED, R8G8B8_SSCALED | Liam | 2022-08-03 | 4 | -183/+193 |
|/ / | |||||
* / | video_core: stop waiting for shader compilation on user cancel | Liam | 2022-07-30 | 1 | -1/+1 |
|/ | |||||
* | video_core: use correct byte size for framebuffer | Liam | 2022-07-19 | 1 | -5/+8 |
| | |||||
* | yuzu: settings: Remove framerate cap and merge unlocked framerate setting. | bunnei | 2022-07-17 | 1 | -3/+3 |
| | | | | - These were all somewhat redundant. | ||||
* | renderer_(gl/vk): Implement ASTC_10x6_UNORM | Morph | 2022-07-06 | 1 | -0/+1 |
| | | | | - Used by Monster Hunter Rise Update 10.0.2 | ||||
* | video_core: Replace VKUpdateDescriptorQueue with UpdateDescriptorQueue | german77 | 2022-06-27 | 14 | -33/+33 |
| | |||||
* | video_core: Replace VKSwapchain with Swapchain | german77 | 2022-06-27 | 5 | -25/+23 |
| | |||||
* | video_core: Replace VKQueryCache with QueryCache | german77 | 2022-06-27 | 6 | -28/+27 |
| | |||||
* | video_core: Replace VKScheduler with Scheduler | german77 | 2022-06-27 | 35 | -111/+110 |
| | |||||
* | video_core: Replace VKBlitScreen with BlitScreen | german77 | 2022-06-27 | 3 | -51/+51 |
| | |||||
* | video_core: Replace VKFenceManager with FenceManager | german77 | 2022-06-27 | 3 | -15/+14 |
| | |||||
* | vk_compute_pass: Explicitly cast to VkAccessFlags | Morph | 2022-06-15 | 1 | -25/+26 |
| | | | | | | According to the standard, a narrowing conversion is an implicit conversion from an integer or unscoped enumeration type to an integer type that cannot represent all the values of the original type, except when the value is a literal or constant expression. MSVC, unlike GCC or Clang, determines this to be a narrowing conversion despite the enumeration exclusively containing values that fit within the range of a 32 bit integer, emitting a warning since designated initializers prohibit narrowing conversions. To solve this, explicitly cast to the type we are initializing. | ||||
* | vk_compute_pass: Use VK_ACCESS_NONE | Morph | 2022-06-14 | 1 | -1/+1 |
| | | | | | | This enumeration was introduced in Vulkan 1.3, prefer using this instead of defaulting the enum. Also resolves a narrowing conversion warning on MSVC. | ||||
* | Merge pull request #8439 from liamwhite/monkey-compiler | Mai | 2022-06-14 | 6 | -24/+24 |
|\ | | | | | general: fix compilation on GCC 12 | ||||
| * | common: Change semantics of UNREACHABLE to unconditionally crash | Liam | 2022-06-14 | 6 | -24/+24 |
| | | |||||
* | | vk_compute_pass: Silence Wextra warning | Morph | 2022-06-14 | 1 | -1/+1 |
|/ | | | | Silences a warning about using enumerated and non-enumerated types in a conditional expression. | ||||
* | vk_rasterizer: fix stencil test when two faces are disabled | Lody | 2022-05-06 | 1 | -2/+2 |
| | |||||
* | renderer_vulkan: Update screen info if the framebuffer size has changed | Morph | 2022-04-26 | 1 | -0/+5 |
| | |||||
* | general: Convert source file copyright comments over to SPDX | Morph | 2022-04-23 | 56 | -168/+112 |
| | | | | | This formats all copyright comments according to SPDX formatting guidelines. Additionally, this resolves the remaining GPLv2 only licensed files by relicensing them to GPLv2.0-or-later. | ||||
* | video_core: implement formats for N64 emulation | Fernando Sahmkow | 2022-04-14 | 2 | -7/+44 |
| | |||||
* | video_core: Replace lock_guard with scoped_lock | Merry | 2022-04-07 | 6 | -10/+10 |
| | |||||
* | Vulkan: crop to screen dimensions if crop not explicitly requested | Liam | 2022-04-04 | 1 | -2/+3 |
| | |||||
* | Merge pull request #8076 from ameerj/nv-vk-msaa-scale | bunnei | 2022-03-31 | 2 | -7/+3 |
|\ | | | | | Vulkan: Use 3D helpers for MSAA scaling on NV drivers 510+ | ||||
| * | Vulkan: Use 3D helpers for MSAA scaling on NV drivers 510+ | ameerj | 2022-03-24 | 2 | -7/+3 |
| | | | | | | | | Nvidia Vulkan drivers 510+ crash when blitting MSAA images. Fall-back to 3D scale helpers for MSAA image scaling. | ||||
* | | Revert "Memory GPU <-> CPU: reduce infighting in the texture cache by adding CPU Cached memory." | bunnei | 2022-03-26 | 1 | -5/+1 |
| | | |||||
* | | Texture Cache: Add Cached CPU system. | Fernando Sahmkow | 2022-03-25 | 1 | -1/+5 |
| | | |||||
* | | Merge pull request #7720 from FernandoS27/yfc-gc | bunnei | 2022-03-25 | 5 | -1/+32 |
|\ \ | | | | | | | First Nugget: Reworked Garbage Collection to be smarter [originally from Project YFC] | ||||
| * | | Garbage Collection: Final tuning. | Fernando Sahmkow | 2022-03-25 | 1 | -1/+1 |
| | | | |||||
| * | | Buffer Cache: Tune to the levels of the new GC. | Fernando Sahmkow | 2022-03-25 | 2 | -0/+18 |
| | | | |||||
| * | | Garbage Collection: Redesign the algorithm to do a better use of memory. | Fernando Sahmkow | 2022-03-25 | 3 | -1/+14 |
| |/ | |||||
* | | hle: nvflinger: Migrate android namespace -> Service::android. | bunnei | 2022-03-25 | 1 | -5/+5 |
| | | |||||
* | | hle: nvflinger: Move PixelFormat to its own header. | bunnei | 2022-03-25 | 1 | -5/+5 |
|/ | |||||
* | Merge pull request #8048 from ameerj/include-purge | bunnei | 2022-03-22 | 22 | -42/+1 |
|\ | | | | | general: Reduce unused includes across the project | ||||
| * | general: Fix clang/gcc build errors | ameerj | 2022-03-20 | 1 | -0/+1 |
| | | |||||
| * | video_core: Reduce unused includes | ameerj | 2022-03-19 | 23 | -43/+1 |
| | | |||||
* | | Merge pull request #8036 from ameerj/starbit-nv | Fernando S | 2022-03-20 | 1 | -5/+0 |
|\ \ | |/ |/| | vk_texture_cache: Do not reinterpret DepthStencil source images | ||||
| * | vk_texture_cache: Do not reinterpret DepthStencil source images | ameerj | 2022-03-18 | 1 | -5/+0 |
| | | | | | | | | | | | | Fixes star pointer interactions in Super Mario Galaxy on some drivers, notably Nvidia. Co-Authored-By: Fernando S. <1731197+fernandos27@users.noreply.github.com> | ||||
* | | general: Reduce core.h includes | ameerj | 2022-03-18 | 1 | -1/+0 |
|/ | |||||
* | Vulkan: convert S8D24 <-> ABGR8 | Liam | 2022-03-16 | 3 | -2/+17 |
| | |||||
* | Merge pull request #8000 from liamwhite/hagi | Fernando S | 2022-03-15 | 1 | -1/+2 |
|\ | | | | | Initial support for Wii Hagi emulator | ||||
| * | TextureCacheRuntime: allow converting D24S8 to ABGR8 | Liam | 2022-03-11 | 1 | -1/+2 |
| | | | | | | | | I can't see how this would be useful, but Galaxy uses it. | ||||
* | | emit_spirv, vk_compute_pass: Resolve VS2022 compiler errors | ameerj | 2022-03-12 | 1 | -1/+2 |
|/ | |||||
* | Merge pull request #7948 from Morph1984/11-11-10-float | Mai M | 2022-02-26 | 1 | -0/+2 |
|\ | | | | | maxwell_to_(gl/vk): Add 11_11_10 float vertex format | ||||
| * | maxwell_to_(gl/vk): Add 11_11_10 float vertex format | Morph | 2022-02-25 | 1 | -0/+2 |
| | | | | | | | | - Used by パワプロクンポケットR | ||||
* | | vk_blit_screen: Add missing format bgra8 | Lody | 2022-02-24 | 1 | -0/+2 |
|/ | |||||
* | vulkan_device: fix missing format in ANV | voidanix | 2022-02-21 | 1 | -2/+4 |
| | | | | | Currently Mesa's ANV driver does not support VK_FORMAT_B5G6R5_UNORM_PACK16, implement an alternative for it. | ||||
* | Merge pull request #7814 from FernandoS27/another-bug-in-my-schedule | bunnei | 2022-02-03 | 2 | -4/+6 |
|\ | | | | | Vulkan: Fix Scheduler Chunks when their FuncType is 0. | ||||
| * | Vulkan: Fix Scheduler Chunks when their FuncType is 0. | Fernando Sahmkow | 2022-01-31 | 2 | -4/+6 |
| | | |||||
* | | Rasterizer: Refactor inlineToMemory. | Fernando Sahmkow | 2022-02-01 | 2 | -3/+4 |
| | | |||||
* | | Rasterizer: Implement Inline2Memory Acceleration. | Fernando Sahmkow | 2022-01-29 | 2 | -0/+23 |
|/ | |||||
* | vk_fsr: Replace comma operator with semicolon | Lioncash | 2022-01-25 | 1 | -1/+1 |
| | | | | | | Generally, we should be ending statements with a semicolon not a comma Resolves a clang diagnostic. | ||||
* | ShaderDecompiler: Add a debug option to dump the game's shaders. | Fernando Sahmkow | 2022-01-04 | 1 | -0/+9 |
| | |||||
* | Merge pull request #7624 from ameerj/intel-msaa-scale | Fernando S | 2022-01-03 | 2 | -18/+23 |
|\ | | | | | vk_texture_cache: Use 3D scale helpers for MSAA texture scaling on Intel Windows drivers | ||||
| * | vk_texture_cache: Use 3D scale helpers for MSAA texture scaling on Intel Windows drivers | ameerj | 2021-12-24 | 2 | -18/+23 |
| | | | | | | | | Fixes a crash when scaling MSAA textures in titles such as Sonic Colors Ultimate. | ||||
* | | Merge pull request #7622 from ameerj/vk-rescale-invalid-ptr | bunnei | 2021-12-28 | 2 | -5/+15 |
|\ \ | | | | | | | vk_texture_cache: Fix invalidated pointer access | ||||
| * | | vk_texture_cache: Fix invalidated pointer access | ameerj | 2021-12-24 | 2 | -5/+15 |
| |/ | | | | | | | | | The vulkan ImageView held a reference to its source image for rescale status checking. This pointer is sometimes invalidated when the texture cache slot_images container is resized. To avoid an invalid pointer dereference, the ImageView now holds a reference to the container itself. | ||||
* / | blit_image: Remove unused function | ameerj | 2021-12-24 | 2 | -50/+0 |
|/ | |||||
* | Merge pull request #7375 from vonchenplus/convert_legacy | Fernando S | 2021-12-22 | 1 | -0/+2 |
|\ | | | | | Convert all legacy attributes to generic attributes | ||||
| * | Address format clang | vonchenplus | 2021-12-18 | 1 | -1/+1 |
| | | |||||
| * | Merge branch 'yuzu-emu:master' into convert_legacy | Feng Chen | 2021-12-18 | 5 | -4/+401 |
| |\ | |||||
| * | | Implement convert legacy to generic | Feng Chen | 2021-11-19 | 1 | -0/+2 |
| | | | |||||
* | | | Merge pull request #7599 from FernandoS27/primrestart-vulkan | bunnei | 2021-12-22 | 1 | -4/+7 |
|\ \ \ | | | | | | | | | Vulkan: Fix Primitive Restart and implement Logical Operations | ||||
| * | | | Vulkan: Fix the checks for primitive restart extension. | Fernando Sahmkow | 2021-12-18 | 1 | -2/+5 |
| | | | | |||||
| * | | | Vulkan: implement Logical Operations. | Fernando Sahmkow | 2021-12-18 | 1 | -2/+2 |
| | | | | |||||
| * | | | Vulkan: Implement VK_EXT_primitive_topology_list_restart | Fernando Sahmkow | 2021-12-18 | 1 | -2/+2 |
| | |/ | |/| | |||||
* | | | Merge pull request #7399 from ameerj/art-refactor | Fernando S | 2021-12-18 | 5 | -119/+113 |
|\ \ \ | |/ / |/| | | video_core: Refactoring post A.R.T. merge | ||||
| * | | vk_texture_cache: Add ABGR src format check for D24S8 conversions | ameerj | 2021-12-05 | 1 | -1/+5 |
| | | | |||||
| * | | blit_image: Refactor upscale factors usage | ameerj | 2021-12-05 | 4 | -60/+51 |
| | | | | | | | | | | | | The image view itself can be queried to see if it is being rescaled or not, removing the need to pass the upscale/down shift factors from the texture cache. | ||||
| * | | vk_texture_cache: Add a function to ImageView to check if src image is rescaled | ameerj | 2021-12-05 | 2 | -4/+22 |
| | | | |||||
| * | | blit_image: Refactor ConvertPipeline functions | ameerj | 2021-12-05 | 2 | -29/+15 |
| | | | |||||
| * | | blit_image: Refactor ConvertPipelineEx functions | ameerj | 2021-12-05 | 2 | -33/+18 |
| | | | | | | | | | | | | reduces much of the duplication between the color/depth variants | ||||
| * | | vk_blit_screen: Minor refactor of filter pipeline selection | ameerj | 2021-12-05 | 1 | -21/+16 |
| | | | |||||
| * | | Revert "Merge pull request #7395 from Morph1984/resolve-comments" | ameerj | 2021-12-05 | 3 | -16/+31 |
| | | | | | | | | | | | | | | | This reverts commit d20f91da11fe7c5d5f1bd4f63cc3b4d221be67a4, reversing changes made to 5082712b4e44ebfe48bd587ea2fa38767b7339cb. | ||||
* | | | maxwell_to_vk: Add ASTC_2D_5X4_UNORM | Morph | 2021-12-11 | 1 | -1/+1 |
| | | | |||||
* | | | maxwell_to_vk: Add ASTC_2D_8X5_UNORM | Morph | 2021-12-09 | 1 | -1/+1 |
| | | | | | | | | | | | | - Used by Lego City Undercover | ||||
* | | | renderer_vulkan: Add R16G16_UINT | Morph | 2021-12-08 | 1 | -1/+1 |
|/ / | | | | | | | - Used by Immortals Fenyx Rising | ||||
* | | Merge pull request #7396 from FernandoS27/blit-this-mf | Fernando S | 2021-11-28 | 4 | -92/+78 |
|\ \ | | | | | | | TextureCache: Eliminate format deduction as full depth conversion has been supported. | ||||
| * | | Texture Cache: Always copy on NVIDIA. | Fernando Sahmkow | 2021-11-22 | 1 | -0/+5 |
| | | | |||||
| * | | TextureCache: Simplify blitting of D24S8 formats and fix bugs. | Fernando Sahmkow | 2021-11-22 | 4 | -90/+66 |
| | | | |||||
| * | | VulkanTexturECache: Use reinterpret on D32_S8 formats. | Fernando Sahmkow | 2021-11-21 | 1 | -2/+7 |
| | | | |||||
* | | | vk_texture_cache: Mark VkBufferUsageFlags as static constexpr | Morph | 2021-11-21 | 1 | -3/+3 |
| | | | |||||
* | | | vk_blit_image: Consolidate CreatePipelineTargetEx functions | Morph | 2021-11-21 | 2 | -28/+13 |
|/ / | |||||
* | | Merge pull request #7368 from FernandoS27/vulkan-conv | bunnei | 2021-11-21 | 4 | -1/+419 |
|\ \ | | | | | | | Fix ART Blit detection regression and add D24S8 <-> RGBA8 conv to Vulkan | ||||
| * | | TextureCache: Refactor and fix linux compiling. | Fernando Sahmkow | 2021-11-20 | 1 | -5/+2 |
| | | | |||||
| * | | TextureCache: Implement buffer copies on Vulkan. | Fernando Sahmkow | 2021-11-20 | 2 | -1/+184 |
| | | | |||||
| * | | TextureCache: Add R16G16 to D24S8 converter. | Fernando Sahmkow | 2021-11-20 | 3 | -0/+19 |
| | | | |||||
| * | | TextureCache: Add B10G11R11 to D24S8 converter. | Fernando Sahmkow | 2021-11-19 | 3 | -13/+64 |
| | | | |||||
| * | | TextureCache: Implement additional D24S8 convertions. | Fernando Sahmkow | 2021-11-19 | 3 | -0/+42 |
| | | | |||||
| * | | Vulkan: implement D24S8 <-> RGBA8 convertions. | Fernando Sahmkow | 2021-11-19 | 3 | -0/+126 |
| |/ | |||||
* | | Merge pull request #7357 from Morph1984/s8_uint | bunnei | 2021-11-19 | 2 | -0/+8 |
|\ \ | |/ |/| | video_core: Implement S8_UINT format | ||||
| * | renderer_vulkan: Implement S8_UINT stencil format | Morph | 2021-11-18 | 2 | -0/+8 |
| | | | | | | | | It should be noted that on Windows, only nvidia gpus support this format natively as of this commit. | ||||
* | | texture_cache: Use pixel format conversion when supported by the runtime | ameerj | 2021-11-17 | 1 | -0/+1 |
|/ | |||||
* | TextureCache: Fix OGL cleaning | Fernando Sahmkow | 2021-11-17 | 2 | -0/+20 |
| | |||||
* | TextureCache: Add automatic anisotropic filtering and refactor code. | Fernando Sahmkow | 2021-11-16 | 1 | -7/+1 |
| | |||||
* | TextureCache: Make a better Anisotropic setter. | Fernando Sahmkow | 2021-11-16 | 1 | -1/+8 |
| | |||||
* | Vulkan: fix regression. | FernandoS27 | 2021-11-16 | 1 | -14/+17 |
| | |||||
* | FSR: Fix GCC build errors | ameerj | 2021-11-16 | 3 | -43/+50 |
| | |||||
* | Vulkan: Reimplement FSR constant generation functions to avoid GCC warnings | Marshall Mohror | 2021-11-16 | 1 | -8/+145 |
| | |||||
* | vk_blit_screen: Fix AA destruction order | ameerj | 2021-11-16 | 1 | -9/+10 |
| | |||||
* | Presentation: Only use FP16 in scaling shaders on supported devices in Vulkan | Marshall Mohror | 2021-11-16 | 3 | -19/+46 |
| | |||||
* | renderer_vulkan/blit_image: Use generic color state on Depth to Color blits | ameerj | 2021-11-16 | 1 | -1/+1 |
| | | | | Fixes Bayonetta 2 on AMD | ||||
* | vk_texture_cache: Refactor 3D scaling helpers | ameerj | 2021-11-16 | 2 | -113/+74 |
| | |||||
* | VulkanBufferCache: Avoid adding barriers between multiple copies. | Fernando Sahmkow | 2021-11-16 | 2 | -4/+40 |
| | |||||
* | Vulkan: Fix FXAA in AMD. | Fernando Sahmkow | 2021-11-16 | 1 | -2/+40 |
| | |||||
* | Vulkan: Implement FXAA | FernandoS27 | 2021-11-16 | 2 | -21/+386 |
| | |||||
* | VideoCore: Add gaussian filtering. | FernandoS27 | 2021-11-16 | 2 | -0/+51 |
| | |||||
* | Vulkan: fix waiting on semaphore. | FernandoS27 | 2021-11-16 | 1 | -1/+3 |
| | |||||
* | TextureCache: fix rescaling in aliases and overlap joins. | FernandoS27 | 2021-11-16 | 1 | -9/+10 |
| | |||||
* | Presentation: Fix turning FSR on and off in settings | Marshall Mohror | 2021-11-16 | 1 | -0/+11 |
| | |||||
* | Video Core: fix building for GCC. | Fernando Sahmkow | 2021-11-16 | 4 | -22/+40 |
| | |||||
* | Vulkan Rasterizer: Fix clears on integer textures. | FernandoS27 | 2021-11-16 | 1 | -1/+33 |
| | |||||
* | Texture cache: fix Intel with rescaler. | FernandoS27 | 2021-11-16 | 1 | -2/+2 |
| | |||||
* | TextureCache: Fix blitting filter in Vulkan and correct viewport/scissor calculation when downscaling. | FernandoS27 | 2021-11-16 | 2 | -20/+44 |
| | |||||
* | Texture Cache: fix memory managment and optimize scaled downloads, uploads. | Fernando Sahmkow | 2021-11-16 | 2 | -6/+21 |
| | |||||
* | Vulkan: Fix Blit Depth Stencil | Fernando Sahmkow | 2021-11-16 | 2 | -14/+20 |
| | |||||
* | Texture Cache: Fix downscaling and correct memory comsumption. | Fernando Sahmkow | 2021-11-16 | 2 | -10/+86 |
| | |||||
* | Presentation: add Nearest Neighbor filter. | Fernando Sahmkow | 2021-11-16 | 2 | -8/+37 |
| | |||||
* | vulkan: Implement FidelityFX Super Resolution | Marshall Mohror | 2021-11-16 | 4 | -15/+480 |
| | |||||
* | Texture Cache: Rescale conversions between depth and color | FernandoS27 | 2021-11-16 | 4 | -23/+35 |
| | |||||
* | Texture cache: Fix memory consumption and ignore rating when a depth texture is rendered. | Fernando Sahmkow | 2021-11-16 | 1 | -2/+7 |
| | |||||
* | vulkan: Fix rescaling push constant usage | ameerj | 2021-11-16 | 4 | -35/+42 |
| | |||||
* | vk_texture_cache: Use 3D to scale images when blit is unsupported | ameerj | 2021-11-16 | 4 | -29/+87 |
| | |||||
* | vk_texture_cache: Fix BlitScale of non-2D images | ameerj | 2021-11-16 | 1 | -10/+9 |
| | |||||
* | video_core: Refactor resolution scale function | ameerj | 2021-11-16 | 1 | -13/+6 |
| | |||||
* | vk_texture_cache: Fix unsupported blit format error checking | ameerj | 2021-11-16 | 1 | -5/+5 |
| | |||||
* | vk_texture_cache: Fix early returns on unsupported scales | ameerj | 2021-11-16 | 1 | -18/+10 |
| | |||||
* | video_core: Misc resolution scaling related refactoring | ameerj | 2021-11-16 | 3 | -19/+29 |
| | |||||
* | Texture Cache: Fix Rescaling on Multisample | Fernando Sahmkow | 2021-11-16 | 1 | -2/+6 |
| | |||||
* | TextureCache: Base fixes on rescaling. | Fernando Sahmkow | 2021-11-16 | 1 | -1/+2 |
| | |||||
* | vk_texture_cache: Simplify scaled image management | ameerj | 2021-11-16 | 2 | -107/+34 |
| | |||||
* | vk_rasterizer: Fix scaling on Y_NEGATE | ameerj | 2021-11-16 | 1 | -3/+9 |
| | |||||
* | vk_texture_cache: Use nearest neighbor scaling when available | ameerj | 2021-11-16 | 1 | -2/+7 |
| | |||||
* | vk_texture_cache: Minor cleanup | ameerj | 2021-11-16 | 2 | -11/+8 |
| | |||||
* | Renderers: Unify post processing filter shaders | ameerj | 2021-11-16 | 1 | -4/+4 |
| | |||||
* | Renderer: Implement Bicubic and ScaleForce filters. | Fernando Sahmkow | 2021-11-16 | 2 | -10/+121 |
| | |||||
* | Texture Cache: fix scaling on upload and stop scaling on base resolution. | Fernando Sahmkow | 2021-11-16 | 1 | -14/+32 |
| | |||||
* | emit_spirv: Fix RescalingLayout alignment | ameerj | 2021-11-16 | 2 | -4/+7 |
| | |||||
* | emit_spirv: Fix RescalingLayout alignment | ameerj | 2021-11-16 | 1 | -1/+1 |
| | |||||
* | shader: Properly scale image reads and add GL SPIR-V support | ReinUsesLisp | 2021-11-16 | 2 | -7/+18 |
| | | | | Thanks for everything! | ||||
* | shader: Properly blacklist and scale image loads | ReinUsesLisp | 2021-11-16 | 2 | -6/+10 |
| | |||||
* | texture_cache: Add getter to query if image view is rescaled | ReinUsesLisp | 2021-11-16 | 1 | -2/+1 |
| | |||||
* | vk_rasterizer: Minor style change | ReinUsesLisp | 2021-11-16 | 1 | -2/+2 |
| | |||||
* | texture_cache: Simplify image view queries and blacklisting | ReinUsesLisp | 2021-11-16 | 5 | -114/+82 |
| | |||||
* | Vulkan: Fix downscaling Blit. | Fernando Sahmkow | 2021-11-16 | 1 | -14/+18 |
| | |||||
* | Vulkan: Fix AA when rescaling. | Fernando Sahmkow | 2021-11-16 | 1 | -1/+1 |
| | |||||
* | Texture Cache: Implement Blacklisting. | Fernando Sahmkow | 2021-11-16 | 2 | -3/+54 |
| | |||||
* | vulkan: Implement rescaling shader patching | ReinUsesLisp | 2021-11-16 | 8 | -27/+103 |
| | |||||
* | vk_texture_cache: Properly scale blit source images | ReinUsesLisp | 2021-11-16 | 1 | -2/+2 |
| | |||||
* | vk_graphics_pipeline: Use Shader::NumDescriptors when possible | ReinUsesLisp | 2021-11-16 | 1 | -18/+6 |
| | |||||
* | vk_texture_cache: Simplify and optimize scaling blits | ReinUsesLisp | 2021-11-16 | 1 | -106/+62 |
| | |||||
* | vk_texture_cache: Fix scaling blit validation errors | ReinUsesLisp | 2021-11-16 | 1 | -81/+78 |
| | |||||
* | Fix blits with mips | ReinUsesLisp | 2021-11-16 | 1 | -12/+16 |
| | |||||
* | Fix blits | ReinUsesLisp | 2021-11-16 | 1 | -10/+10 |
| | |||||
* | TextureCache: Fix rescaling of ImageCopies | Fernando Sahmkow | 2021-11-16 | 1 | -13/+27 |
| | |||||
* | TextureCache: Modify Viewports/Scissors according to Rescale. | Fernando Sahmkow | 2021-11-16 | 2 | -32/+61 |
| | |||||
* | Texture Cache: More rescaling fixes. | Fernando Sahmkow | 2021-11-16 | 1 | -0/+8 |
| | |||||
* | Texture Cache: Implement Vulkan UpScaling & DownScaling | Fernando Sahmkow | 2021-11-16 | 2 | -25/+244 |
| | |||||
* | VideoCore: Initial Setup for the Resolution Scaler. | Fernando Sahmkow | 2021-11-16 | 2 | -15/+85 |
| | |||||
* | Merge pull request #7206 from vonchenplus/fix_vulkan_viewport_issue | Fernando S | 2021-10-24 | 1 | -0/+1 |
|\ | | | | | Vulkan Rasterizer: Fix viewport issue | ||||
| * | Fix vulkan viewport issue | Feng Chen | 2021-10-22 | 1 | -0/+1 |
| | | |||||
* | | Merge pull request #7070 from FernandoS27/want-you-bad | Ameer J | 2021-10-24 | 2 | -3/+16 |
|\ \ | |/ |/| | Vulkan Rasterizer: Correct DepthBias/PolygonOffset on Vulkan. | ||||
| * | Vulran Rasterizer: address feedback. | Fernando Sahmkow | 2021-10-23 | 1 | -3/+5 |
| | | |||||
| * | Vulkan Rasterizer: Correct DepthBias/PolygonOffset on Vulkan. | Fernando Sahmkow | 2021-09-23 | 2 | -3/+14 |
| | | |||||
* | | Merge pull request #7077 from FernandoS27/face-down | Ameer J | 2021-10-17 | 1 | -1/+2 |
|\ \ | | | | | | | A series of fixes to queries and indexed samplers. | ||||
| * | | Vulkan Query Cache: make sure to wait for the query result. | Fernando Sahmkow | 2021-09-24 | 1 | -1/+2 |
| |/ | |||||
* | | Merge pull request #7127 from FernandoS27/i-saw-a-wabbit | Ameer J | 2021-10-17 | 1 | -4/+13 |
|\ \ | | | | | | | A few fixes on Vulkan and Rasterizer Caching | ||||
| * | | Vulkan: Fix failing barrier on refresh. | Fernando Sahmkow | 2021-10-04 | 1 | -1/+2 |
| | | | |||||
| * | | Vulkan: Fix the master Semaphore | FernandoS27 | 2021-10-04 | 1 | -4/+12 |
| | | | |||||
* | | | Merge pull request #7118 from ameerj/vc-gpu-impl | Fernando S | 2021-10-06 | 2 | -1/+2 |
|\ \ \ | | | | | | | | | gpu: Migrate implementation to the cpp file | ||||
| * | | | gpu: Migrate implementation to the cpp file | ameerj | 2021-10-03 | 2 | -1/+2 |
| | | | | |||||
* | | | | vk_graphics_pipeline: Force patch list topology when tessellation is used | ameerj | 2021-09-28 | 1 | -1/+10 |
|/ / / | | | | | | | | | | Fixes a crash on some drivers when tessellation is used but the IA topology is not patch list. | ||||
* | | | Merge pull request #7076 from ameerj/amd-botw | bunnei | 2021-09-28 | 1 | -1/+1 |
|\ \ \ | | | | | | | | | vk_texture_cache: Disable cube compatibility flag on non-mesa AMD GCN4 and earlier | ||||
| * | | | vk_texture_cache: Disable cube compatibility flag on non-mesa AMD GCN4 and earlier | ameerj | 2021-09-24 | 1 | -1/+1 |
| | |/ | |/| | | | | | | | Fixes rainbow textures on BOTW. | ||||
* | | | Merge pull request #7078 from ameerj/vc-jthread-fixes | Morph | 2021-09-26 | 1 | -1/+1 |
|\ \ \ | | | | | | | | | video_core: Fix jthread related hangs when stopping emulation | ||||
| * | | | video_core: Fix jthread related hangs when stopping emulation | ameerj | 2021-09-24 | 1 | -1/+1 |
| |/ / | | | | | | | | | | jthread on some compilers is more picky when it comes to the order in which objects are destroyed. | ||||
* / / | general: Update style to clang-format-12 | ameerj | 2021-09-24 | 2 | -11/+7 |
|/ / | |||||
* | | Merge pull request #7003 from ameerj/unlocked-present-mode | bunnei | 2021-09-20 | 3 | -4/+38 |
|\ \ | | | | | | | vk_swapchain: Use immediate present mode when mailbox is unavailable and FPS is unlocked | ||||
| * | | vk_swapchain: Use immediate present mode when mailbox is unavailable and FPS is unlocked | ameerj | 2021-09-13 | 3 | -4/+38 |
| | | | | | | | | | | | | Allows drivers that do not support VK_PRESENT_MODE_MAILBOX_KHR the ability to present at a framerate higher than the monitor's refresh rate when the FPS is unlocked. | ||||
* | | | Merge pull request #7019 from ameerj/videocore-jthread | bunnei | 2021-09-19 | 2 | -17/+9 |
|\ \ \ | |_|/ |/| | | videocore: Use std::jthread for worker threads | ||||
| * | | vk_scheduler: Use std::jthread | ameerj | 2021-09-16 | 2 | -17/+9 |
| | | | |||||
* | | | renderers: Log total pipeline count | Morph | 2021-09-14 | 1 | -0/+2 |
|/ / | |||||
* | | Merge pull request #6944 from FernandoS27/dear-drunk-me | Morph | 2021-09-13 | 1 | -3/+3 |
|\ \ | | | | | | | Vulkan/Descriptors: Increase sets per pool on AMD propietary driver. | ||||
| * | | Vulkan/Descriptors: Increase sets per pool on AMFD propietary driver. | Fernando Sahmkow | 2021-09-13 | 1 | -3/+3 |
| | | | |||||
* | | | Merge pull request #7001 from ameerj/wario-fix | Fernando S | 2021-09-13 | 1 | -6/+8 |
|\ \ \ | |_|/ |/| | | vk_rasterizer: Fix dynamic StencilOp updating when two faces are enabled | ||||
| * | | vk_rasterizer: Fix dynamic StencilOp updating when two faces are enabled | ameerj | 2021-09-12 | 1 | -6/+8 |
| | | | | | | | | | | | | This function was incorrectly using the stencil_two_side_enable register when dynamically updating the StencilOp. | ||||
* | | | Merge pull request #7002 from ameerj/vk-state-unused | Mai M | 2021-09-12 | 1 | -4/+0 |
|\ \ \ | | | | | | | | | vk_state_tracker: Remove unused function | ||||
| * | | | vk_state_tracker: Remove unused function | ameerj | 2021-09-12 | 1 | -4/+0 |
| |/ / | |||||
* / / | vk_descriptor_pool: Add missing <algorithm> include | Morph | 2021-09-11 | 1 | -0/+1 |
|/ / | |||||
* | | Merge pull request #6901 from ameerj/vk-clear-bits | Fernando S | 2021-09-11 | 3 | -6/+24 |
|\ \ | | | | | | | vk_rasterizer: Only clear depth/stencil buffers when specified in attachment aspect mask | ||||
| * | | vk_rasterizer: Only clear depth and stencil buffers when set in attachment aspect mask | ameerj | 2021-08-21 | 3 | -6/+24 |
| | | | | | | | | | | | | Silences validation errors for clearing the depth/stencil buffers of framebuffer attachments that were not specified to have depth/stencil usage. | ||||
* | | | Merge pull request #6941 from ameerj/swapchain-srgb | Fernando S | 2021-09-11 | 3 | -11/+21 |
|\ \ \ | | | | | | | | | vk_swapchain: Prefer linear swapchain format when presenting sRGB images | ||||
| * | | | vulkan_device: Enable VK_KHR_swapchain_mutable_format if available | ameerj | 2021-08-29 | 1 | -0/+11 |
| | | | | | | | | | | | | | | | | Silences validation errors when creating sRGB image views of linear swapchain images | ||||
| * | | | vk_swapchain: Prefer linear swapchain format when presenting sRGB images | ameerj | 2021-08-29 | 3 | -11/+10 |
| | |/ | |/| | | | | | | | Fixes broken sRGB when presenting from a secondary GPU. | ||||
* | | | renderer_vulkan: Wait on present semaphore at queue submit | ameerj | 2021-09-02 | 5 | -26/+33 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The present semaphore is being signalled by the call to acquire the swapchain image. This semaphore is meant to be waited on when rendering to the swapchain image. Currently it is waited on when presenting, but moving its usage to be waited on in the command buffer submission allows for proper usage of this semaphore. Fixes the device lost when launching titles on the Intel Linux Mesa driver. | ||||
* | | | Merge pull request #6900 from ameerj/attr-reorder | bunnei | 2021-09-02 | 1 | -0/+2 |
|\ \ \ | | | | | | | | | structured_control_flow: Add DemoteCombinationPass | ||||
| * | | | structured_control_flow: Conditionally invoke demote reorder pass | ameerj | 2021-08-30 | 1 | -0/+2 |
| |/ / | | | | | | | | | | This is only needed on select drivers when a fragment shader discards/demotes. | ||||
* | | | Merge pull request #6879 from ameerj/decoder-assert | bunnei | 2021-08-31 | 1 | -1/+3 |
|\ \ \ | |/ / |/| | | vk_blit_screen: Fix non-accelerated texture size calculation | ||||
| * | | vk_blit_screen: Fix non-accelerated texture size calculation | ameerj | 2021-08-16 | 1 | -1/+3 |
| |/ | | | | | | | Addresses the potential OOB access in UnswizzleTexture. | ||||
* / | vulkan_device: Add a check for int8 support | ameerj | 2021-08-25 | 1 | -1/+1 |
|/ | | | | Silences validation errors when shaders use int8 without specifying its support to the API | ||||
* | Merge pull request #6820 from yzct12345/split-cache | Fernando S | 2021-08-10 | 4 | -2/+14 |
|\ | | | | | texture_cache: Split out template definitions | ||||
| * | texture_cache: Address ameerj's review | yzct12345 | 2021-08-07 | 1 | -0/+2 |
| | | |||||
| * | texture_cache: Don't change copyright year | yzct12345 | 2021-08-05 | 1 | -1/+1 |
| | | |||||
| * | texture_cache: Address ameerj's review | yzct12345 | 2021-08-05 | 3 | -3/+3 |
| | | |||||
| * | texture_cache: Split templates out | yzct12345 | 2021-08-05 | 2 | -1/+11 |
| | | |||||
* | | Merge pull request #6791 from ameerj/astc-opt | bunnei | 2021-08-07 | 2 | -94/+8 |
|\ \ | |/ |/| | astc_decoder: Various performance and memory optimizations | ||||
| * | astc_decoder: Reduce workgroup size | ameerj | 2021-08-01 | 1 | -2/+2 |
| | | | | | | | | This reduces the amount of over dispatching when there are odd dimensions (i.e. ASTC 8x5), which rarely evenly divide into 32x32. | ||||
| * | astc_decoder: Compute offset swizzles in-shader | ameerj | 2021-08-01 | 2 | -67/+5 |
| | | | | | | | | Alleviates the dependency on the swizzle table and a uniform which is constant for all ASTC texture sizes. | ||||
| * | astc_decoder: Optimize the use EncodingData | ameerj | 2021-08-01 | 1 | -33/+9 |
| | | | | | | | | | | | | | | This buffer was a list of EncodingData structures sorted by their bit length, with some duplication from the cpu decoder implementation. We can take advantage of its sorted property to optimize its usage in the shader. Thanks to wwylele for the optimization idea. | ||||
* | | Merge pull request #6720 from ameerj/vk-screenshot | Fernando S | 2021-08-01 | 4 | -69/+241 |
|\ \ | | | | | | | renderer_vulkan: Implement screenshots | ||||
| * | | renderers: Add explicit invert_y bool to screenshot callback | ameerj | 2021-07-29 | 1 | -1/+1 |
| | | | | | | | | | | | | OpenGL and Vulkan images render in different coordinate systems. This allows us to specify the coordinate system of the screenshot within each renderer | ||||
| * | | renderer_vulkan: Implement screenshots | ameerj | 2021-07-29 | 2 | -0/+152 |
| | | | |||||
| * | | vk_blit_screen: Add public CreateFramebuffer method | ameerj | 2021-07-29 | 2 | -14/+18 |
| | | | |||||
| * | | vk_blit_screen: Make Draw method more generic | ameerj | 2021-07-29 | 3 | -55/+71 |
| | | | | | | | | | | | | Allows specifying the framebuffer and render area dimensions, rather than being hard coded for the render window. | ||||
* | | | Merge pull request #6765 from ReinUsesLisp/y-negate-vk | Ameer J | 2021-08-01 | 1 | -2/+7 |
|\ \ \ | |_|/ |/| | | vk_rasterizer: Flip viewport on Y_NEGATE | ||||
| * | | vk_rasterizer: Flip viewport on Y_NEGATE | ReinUsesLisp | 2021-07-29 | 1 | -2/+7 |
| |/ | | | | | | | | | Matches OpenGL's behavior. I don't believe this register flips geometry, but we have to try to match behavior on both backends. | ||||
* / | renderer_vulkan: Add setting to log pipeline statistics | ReinUsesLisp | 2021-07-28 | 8 | -19/+195 |
|/ | | | | | | | | | | | | | | | | Use VK_KHR_pipeline_executable_properties when enabled and available to log statistics about the pipeline cache in a game. For example, this is on Turing GPUs when generating a pipeline cache from Super Smash Bros. Ultimate: Average pipeline statistics ========================================== Code size: 6433.167 Register count: 32.939 More advanced results could be presented, at the moment it's just an average of all 3D and compute pipelines. | ||||
* | vk_compute_pass: Remove unused captures | Lioncash | 2021-07-27 | 1 | -3/+2 |
| | | | | Resolves two compiler warnings. | ||||
* | Merge pull request #6741 from ReinUsesLisp/stream-remove | Rodrigo Locatti | 2021-07-27 | 2 | -244/+0 |
|\ | | | | | vk_stream_buffer: Remove unused stream buffer | ||||
| * | vk_stream_buffer: Remove unused stream buffer | ReinUsesLisp | 2021-07-26 | 2 | -244/+0 |
| | | | | | | | | Remove unused file. | ||||
* | | Merge pull request #6740 from K0bin/hvv-fallback | Rodrigo Locatti | 2021-07-27 | 1 | -8/+21 |
|\ \ | | | | | | | Handle allocation failure in Staging buffer | ||||
| * | | vk_staging_buffer_pool: Fall back to host memory when allocation fails | Robin Kertels | 2021-07-26 | 1 | -8/+21 |
| |/ | |||||
* | | Merge pull request #6728 from ReinUsesLisp/null-buffer-usage | Rodrigo Locatti | 2021-07-26 | 1 | -3/+7 |
|\ \ | | | | | | | vk_buffer_cache: Add transform feedback usage to null buffer | ||||
| * | | vk_buffer_cache: Add transform feedback usage to null buffer | ReinUsesLisp | 2021-07-26 | 1 | -3/+7 |
| |/ | | | | | | | Fixes bad API usages on Vulkan. | ||||
* / | vk_compute_pass: Fix pipeline barrier for indexed quads | ReinUsesLisp | 2021-07-26 | 1 | -1/+1 |
|/ | | | | Use an index buffer barrier instead of a vertex input read barrier. | ||||
* | vulkan/blit_image: Commit descriptor sets within worker thread | ReinUsesLisp | 2021-07-23 | 1 | -9/+7 |
| | | | | | Fixes race condition caused. The descriptor pool is not thread safe, so we have to commit descriptor sets within the same thread. | ||||
* | Revert "renderers: Disable async shader compilation" | ReinUsesLisp | 2021-07-23 | 1 | -1/+1 |
| | | | | This reverts commit 4a152767286717fa69bfc94846a124a366f70065. | ||||
* | shader_environment: Receive cache version from outside | ReinUsesLisp | 2021-07-23 | 1 | -3/+6 |
| | | | | This allows us invalidating OpenGL and Vulkan separately in the future. | ||||
* | shader_recompiler, video_core: Resolve clang errors | lat9nq | 2021-07-23 | 1 | -3/+1 |
| | | | | | | | | | | Silences the following warnings-turned-errors: -Wsign-conversion -Wunused-private-field -Wbraced-scalar-init -Wunused-variable And some other errors | ||||
* | renderers: Fix clang formatting | ameerj | 2021-07-23 | 3 | -8/+12 |
| | |||||
* | renderers: Disable async shader compilation | ameerj | 2021-07-23 | 1 | -1/+1 |
| | | | | The current implementation is prone to causing graphical issues. Disable until a better solution is implemented. | ||||
* | maxwell_to_vk: Add R16_SNORM | ReinUsesLisp | 2021-07-23 | 1 | -1/+1 |
| | |||||
* | shader: Ignore global memory ops on devices lacking int64 support | ameerj | 2021-07-23 | 1 | -0/+1 |
| | |||||
* | emit_spirv: Workaround VK_KHR_shader_float_controls on fp16 Nvidia | ReinUsesLisp | 2021-07-23 | 1 | -0/+1 |
| | | | | Fix regression on Fire Emblem: Three Houses when using native fp16. | ||||
* | vk_rasterizer: Workaround bug in VK_EXT_vertex_input_dynamic_state | ReinUsesLisp | 2021-07-23 | 2 | -14/+19 |
| | | | | | Workaround potential bug on Nvidia's driver where only updating high attributes leaves low attributes out dated. | ||||
* | vk_graphics_pipeline: Implement smooth lines | ReinUsesLisp | 2021-07-23 | 3 | -0/+23 |
| | |||||
* | vk_graphics_pipeline: Implement line width | ReinUsesLisp | 2021-07-23 | 5 | -6/+28 |
| | |||||
* | shader: Rework varyings and implement passthrough geometry shaders | ReinUsesLisp | 2021-07-23 | 2 | -10/+12 |
| | | | | | | Put all varyings into a single std::bitset with helpers to access it. Implement passthrough geometry shaders using host's. | ||||
* | vk_graphics_pipeline: Implement conservative rendering | ReinUsesLisp | 2021-07-23 | 3 | -9/+26 |
| | |||||
* | shader: Unify shader stage types | ReinUsesLisp | 2021-07-23 | 4 | -11/+11 |
| | |||||
* | shader: Emulate 64-bit integers when not supported | ReinUsesLisp | 2021-07-23 | 1 | -1/+1 |
| | | | | Useful for mobile and Intel Xe devices. | ||||
* | gl_shader_cache: Check previous pipeline before checking hash map | ReinUsesLisp | 2021-07-23 | 1 | -2/+1 |
| | | | | Port optimization from Vulkan. | ||||
* | shaders: Allow shader notify when async shaders is disabled | ameerj | 2021-07-23 | 1 | -7/+5 |
| | |||||
* | vk_graphics_pipeline: Use VK_KHR_push_descriptor when available | ReinUsesLisp | 2021-07-23 | 4 | -24/+45 |
| | | | | ~51% faster on Nvidia compared to previous method. | ||||
* | shader: Properly manage attributes not written from previous stages | ReinUsesLisp | 2021-07-23 | 1 | -4/+12 |
| | |||||
* | shader: Add support for native 16-bit floats | ReinUsesLisp | 2021-07-23 | 2 | -4/+11 |
| | |||||
* | shader: Rename maxwell/program.h to translate_program.h | ReinUsesLisp | 2021-07-23 | 1 | -1/+1 |
| | |||||
* | vk_rasterizer: Exit render passes on fragment barriers | ReinUsesLisp | 2021-07-23 | 1 | -0/+1 |
| | |||||
* | vk_graphics_pipeline: Fix path with no VK_EXT_extended_dynamic_state | Rodrigo Locatti | 2021-07-23 | 1 | -1/+1 |
| | |||||
* | vk_pipeline_cache: Skip cached pipelines with different dynamic state | ReinUsesLisp | 2021-07-23 | 1 | -0/+6 |
| | |||||
* | vulkan: Add VK_EXT_vertex_input_dynamic_state support | ReinUsesLisp | 2021-07-23 | 8 | -116/+276 |
| | | | | | Reduces the number of total pipelines generated on Vulkan. Tested on Super Smash Bros. Ultimate. | ||||
* | shader: Reorder shader cache directories | ReinUsesLisp | 2021-07-23 | 1 | -10/+7 |
| | |||||
* | vk_rasterizer: Implement first index | ReinUsesLisp | 2021-07-23 | 1 | -2/+5 |
| | |||||
* | vulkan: Use VK_EXT_provoking_vertex when available | ReinUsesLisp | 2021-07-23 | 3 | -3/+12 |
| | |||||
* | vk_pipeline_cache,shader_notify: Add shader notifications | ReinUsesLisp | 2021-07-23 | 7 | -49/+83 |
| | |||||
* | vk_pipeline_cache: Add asynchronous shaders | ReinUsesLisp | 2021-07-23 | 3 | -3/+33 |
| | |||||
* | vk_rasterizer: Flush work on clear and dispatches | ReinUsesLisp | 2021-07-23 | 1 | -0/+3 |
| | |||||
* | vk_swapchain: Handle outdated swapchains | ReinUsesLisp | 2021-07-23 | 3 | -17/+34 |
| | | | | Fixes pixelated presentation on Intel devices. | ||||
* | vk_buffer_cache: Handle null texture buffers | ReinUsesLisp | 2021-07-23 | 1 | -0/+4 |
| | | | | Fixes a crash on Age of Calamity cutscenes. | ||||
* | vk_pipeline_cache: Set support_derivative_control to true | ReinUsesLisp | 2021-07-23 | 1 | -0/+1 |
| | |||||
* | buffer_cache: Reduce uniform buffer size from shader usage | ReinUsesLisp | 2021-07-23 | 4 | -7/+18 |
| | | | | Increases performance significantly on certain titles. | ||||
* | fixed_pipeline_state: Use regular for loop instead of ranges for perf | ReinUsesLisp | 2021-07-23 | 1 | -2/+3 |
| | | | | MSVC generates better code for it. | ||||
* | vk_swapchain: Avoid recreating the swapchain on each frame | ReinUsesLisp | 2021-07-23 | 2 | -15/+9 |
| | | | | | Recreate only when requested (or sRGB is changed) instead of tracking the frontend's size. That size is still used as a hint. | ||||
* | vulkan: Conditionally use shaderInt16 | ReinUsesLisp | 2021-07-23 | 1 | -1/+1 |
| | | | | Add support for Polaris AMD devices. | ||||
* | vulkan: Enable depth bounds and use it conditionally | ReinUsesLisp | 2021-07-23 | 2 | -1/+9 |
| | | | | Intel devices pre-Xe don't support this. | ||||
* | vk_buffer_cache: Add transform feedback usage to buffers | ReinUsesLisp | 2021-07-23 | 1 | -15/+22 |
| | |||||
* | opengl: Declare fragment outputs even if they are not used | ReinUsesLisp | 2021-07-23 | 1 | -0/+7 |
| | | | | | | Fixes Ori and the Blind Forest's menu on GLASM. For some reason (probably high level optimizations) it is not sanitized on SPIR-V for OpenGL. Vulkan is unaffected by this change. | ||||
* | buffer_cache: Mark uniform buffers as dirty if any enable bit changes | ReinUsesLisp | 2021-07-23 | 2 | -1/+8 |
| | |||||
* | shader: Handle host exceptions | ReinUsesLisp | 2021-07-23 | 1 | -11/+24 |
| | |||||
* | video_core,shader: Clang-format fixes | ReinUsesLisp | 2021-07-23 | 2 | -5/+10 |
| | |||||
* | video_core: Abstract transform feedback translation utility | ReinUsesLisp | 2021-07-23 | 3 | -111/+15 |
| | |||||
* | shader: Split profile and runtime information in separate structs | ReinUsesLisp | 2021-07-23 | 2 | -215/+208 |
| | |||||
* | vk_update_descriptor: Properly initialize payload on the update descriptor queue | ReinUsesLisp | 2021-07-23 | 1 | -1/+3 |
| | |||||
* | vk_pipeline_cache: Enable int8 and int16 types on Vulkan | ReinUsesLisp | 2021-07-23 | 1 | -0/+2 |
| | |||||
* | vk_scheduler: Use locks instead of SPSC a queue | ReinUsesLisp | 2021-07-23 | 2 | -32/+42 |
| | | | | This tries to fix a data race where we'd wait forever for the GPU. | ||||
* | vk_query_cache: Wait before reading queries | ReinUsesLisp | 2021-07-23 | 1 | -9/+2 |
| | |||||
* | vk_master_semaphore: Use fetch_add to increase master semaphore tick | ReinUsesLisp | 2021-07-23 | 2 | -6/+4 |
| | |||||
* | Move SPIR-V emission functions to their own header | ReinUsesLisp | 2021-07-23 | 1 | -4/+4 |
| | |||||
* | shader: Initial OpenGL implementation | ReinUsesLisp | 2021-07-23 | 6 | -66/+31 |
| | |||||
* | spirv: Support OpenGL uniform buffers and change bindings | ReinUsesLisp | 2021-07-23 | 1 | -2/+5 |
| | |||||
* | shader: Address feedback | FernandoS27 | 2021-07-23 | 1 | -9/+9 |
| | |||||
* | shader: Implement VertexA stage | FernandoS27 | 2021-07-23 | 1 | -3/+14 |
| | |||||
* | vk_graphics_pipeline: Fix texture buffer descriptors | ReinUsesLisp | 2021-07-23 | 1 | -7/+8 |
| | |||||
* | vk_scheduler: Allow command submission on worker thread | ReinUsesLisp | 2021-07-23 | 8 | -182/+200 |
| | | | | | | | | | | | | This changes how Scheduler::Flush works. It queues the current command buffer to be sent to the GPU but does not do it immediately. The Vulkan worker thread takes care of that. Users will have to use Scheduler::Flush + Scheduler::WaitWorker to get the previous behavior. Scheduler::Finish is unchanged. To avoid waiting on work never queued, Scheduler::Wait sends the current command buffer if that's what the caller wants to wait. | ||||
* | vk_compute_pass: Fix -Wshadow warning | ReinUsesLisp | 2021-07-23 | 1 | -3/+3 |
| | |||||
* | shader: Move pipeline cache logic to separate files | ReinUsesLisp | 2021-07-23 | 4 | -649/+104 |
| | | | | | | | | | Move code to separate files to be able to reuse it from OpenGL. This greatly simplifies the pipeline cache logic on Vulkan. Transform feedback state is not yet abstracted and it's still intrusively stored inside vk_pipeline_cache. It will be moved when needed on OpenGL. | ||||
* | vulkan: Defer descriptor set work to the Vulkan thread | ReinUsesLisp | 2021-07-23 | 8 | -79/+69 |
| | | | | | | | Move descriptor lookup and update code to a separate thread. Delaying this removes work from the main GPU thread and allows creating descriptor layouts on another thread. This reduces a bit the workload of the main thread when new pipelines are encountered. | ||||
* | vulkan: Rework descriptor allocation algorithm | ReinUsesLisp | 2021-07-23 | 15 | -197/+314 |
| | | | | | | Create multiple descriptor pools on demand. There are some degrees of freedom what is considered a compatible pool to avoid wasting large pools on small descriptors. | ||||
* | vk_graphics_pipeline: Generate specialized pipeline config functions and improve code | ReinUsesLisp | 2021-07-23 | 2 | -31/+230 |
| | |||||
* | shader: Accelerate pipeline transitions and use dirty flags for shaders | ReinUsesLisp | 2021-07-23 | 4 | -56/+105 |
| | |||||
* | vk_compute_pipeline: Fix index comparison oversight on compute texture buffers | ReinUsesLisp | 2021-07-23 | 1 | -1/+1 |
| | |||||
* | vk_graphics_pipeline: Guard against non-tessellation pipelines using patches | ReinUsesLisp | 2021-07-23 | 1 | -2/+8 |
| | |||||
* | shader: Fix bugs and build issues on GCC | Rodrigo Locatti | 2021-07-23 | 2 | -3/+3 |
| | |||||
* | shader: Fix render targets with null attachments | ReinUsesLisp | 2021-07-23 | 2 | -26/+34 |
| | |||||
* | shader: Implement indexed textures | ReinUsesLisp | 2021-07-23 | 3 | -64/+95 |
| | |||||
* | shader: Move microinstruction header to the value header | ReinUsesLisp | 2021-07-23 | 1 | -1/+1 |
| | |||||
* | shader: Implement D3D samplers | ReinUsesLisp | 2021-07-23 | 3 | -37/+51 |
| | |||||
* | shader: Implement SR_Y_DIRECTION | FernandoS27 | 2021-07-23 | 3 | -0/+4 |
| | |||||
* | spirv: Implement ViewportMask with NV_viewport_array2 | ReinUsesLisp | 2021-07-23 | 1 | -0/+1 |
| | |||||
* | shader: Implement tessellation shaders, polygon mode and invocation id | ReinUsesLisp | 2021-07-23 | 5 | -2/+48 |
| | |||||
* | vk_pipeline_cache: Silence GCC warnings | lat9nq | 2021-07-23 | 1 | -0/+2 |
| | | | | | Silences `-Werror=missing-field-initializers` due to missing initializers. | ||||
* | spirv: Implement image buffers | ReinUsesLisp | 2021-07-23 | 3 | -21/+37 |
| | |||||
* | spirv: Implement alpha test | ameerj | 2021-07-23 | 1 | -0/+36 |
| | |||||
* | shader: Implement transform feedbacks and define file format | ReinUsesLisp | 2021-07-23 | 3 | -7/+156 |
| | |||||
* | shader: Implement early Z tests | ReinUsesLisp | 2021-07-23 | 1 | -0/+1 |
| | |||||
* | shader: Implement geometry shaders | ReinUsesLisp | 2021-07-23 | 2 | -7/+56 |
| | |||||
* | pipeline_helper: Simplify descriptor objects initialization | ReinUsesLisp | 2021-07-23 | 1 | -33/+25 |
| | |||||
* | shader: Implement ATOM/S and RED | ameerj | 2021-07-23 | 1 | -0/+1 |
| | |||||
* | nsight_aftermath_tracker: Report used shaders to Nsight Aftermath | ReinUsesLisp | 2021-07-23 | 2 | -1/+4 |
| | |||||
* | spirv: Guard against typeless image reads on unsupported devices | ReinUsesLisp | 2021-07-23 | 1 | -0/+1 |
| | |||||
* | vk_rasterizer: Request outside render pass execution context for compute | ReinUsesLisp | 2021-07-23 | 1 | -0/+1 |
| | |||||
* | pipeline_helper: Add missing [[maybe_unused]] | ReinUsesLisp | 2021-07-23 | 1 | -1/+1 |
| | |||||
* | shader: Implement SULD and SUST | ReinUsesLisp | 2021-07-23 | 7 | -65/+127 |
| | |||||
* | shader: Address feedback + clang format | lat9nq | 2021-07-23 | 1 | -2/+2 |
| | |||||
* | shader_recompiler,video_core: Cleanup some GCC and Clang errors | lat9nq | 2021-07-23 | 4 | -15/+15 |
| | | | | | | | | | | | | | | | | | Mostly fixing unused *, implicit conversion, braced scalar init, fpermissive, and some others. Some Clang errors likely remain in video_core, and std::ranges is still a pertinent issue in shader_recompiler shader_recompiler: cmake: Force bracket depth to 1024 on Clang Increases the maximum fold expression depth thread_worker: Include condition_variable Don't use list initializers in control flow Co-authored-by: ReinUsesLisp <reinuseslisp@airmail.cc> | ||||
* | shader: Interact texture buffers with buffer cache | ReinUsesLisp | 2021-07-23 | 7 | -115/+140 |
| | |||||
* | shader: Implement texture buffers | ReinUsesLisp | 2021-07-23 | 4 | -12/+29 |
| | |||||
* | vk_pipeline_cache: Fix num of pipeline workers on weird platforms | ReinUsesLisp | 2021-07-23 | 1 | -1/+1 |
| | |||||
* | shader: Fix ShadowCube declaration type, set number of pipeline threads based on hardware | FernandoS27 | 2021-07-23 | 1 | -1/+3 |
| | |||||
* | vk_compute_pass: Fix compute passes | ReinUsesLisp | 2021-07-23 | 3 | -23/+19 |
| | |||||
* | shader: Remove atomic flags and use mutex + cond variable for pipelines | ReinUsesLisp | 2021-07-23 | 4 | -11/+32 |
| | |||||
* | vk_pipeline_cache: Remove unnecesary scope in pipeline cache locking | ReinUsesLisp | 2021-07-23 | 1 | -15/+12 |
| | |||||
* | vk_pipeline_cache: Small fixes to the pipeline cache | FernandoS27 | 2021-07-23 | 1 | -10/+14 |
| | |||||
* | shader: Mark SSBOs as written when they are | FernandoS27 | 2021-07-23 | 2 | -2/+2 |
| | |||||
* | shader: Implement ViewportIndex | FernandoS27 | 2021-07-23 | 1 | -0/+1 |
| | |||||
* | vulkan: Serialize pipelines on a separate thread | ReinUsesLisp | 2021-07-23 | 2 | -67/+64 |
| | |||||
* | vulkan: Create pipeline layouts in separate threads | ReinUsesLisp | 2021-07-23 | 7 | -63/+65 |
| | |||||
* | vulkan: Build pipelines in parallel at runtime | ReinUsesLisp | 2021-07-23 | 9 | -165/+197 |
| | | | | | Wait from the worker thread for a pipeline to build before binding it to the command buffer. This allows queueing pipelines to multiple threads. | ||||
* | vk_pipeline_cache: Name SPIR-V modules | ReinUsesLisp | 2021-07-23 | 1 | -1/+11 |
| | |||||
* | spirv: Add fixed pipeline point size | ReinUsesLisp | 2021-07-23 | 1 | -0/+3 |
| | |||||
* | shader: Implement BRX | FernandoS27 | 2021-07-23 | 1 | -1/+49 |
| | |||||
* | vk_pipeline_cache: Fix size hashing of shaders | ReinUsesLisp | 2021-07-23 | 1 | -8/+7 |
| | |||||
* | shader: Implement LDS, STS, LDL, and STS and use SPIR-V 1.4 when available | ReinUsesLisp | 2021-07-23 | 1 | -4/+43 |
| | |||||
* | shader: Better interpolation and disabled attributes support | ReinUsesLisp | 2021-07-23 | 2 | -2/+5 |
| | |||||
* | spirv: Remove dependencies on Environment when generating SPIR-V | ReinUsesLisp | 2021-07-23 | 1 | -7/+3 |
| | |||||
* | vk_pipeline_cache: Fix pipeline and shader caches | ReinUsesLisp | 2021-07-23 | 2 | -6/+21 |
| | |||||
* | shader: Fix rasterizer integration order issues | ReinUsesLisp | 2021-07-23 | 3 | -7/+6 |
| | |||||
* | shader: Implement TXQ and fix FragDepth | ReinUsesLisp | 2021-07-23 | 1 | -0/+92 |
| | |||||
* | shader: Implement NDC [-1, 1], attribute types and default varying initialization | ReinUsesLisp | 2021-07-23 | 3 | -3/+37 |
| | |||||
* | shader: Implement VOTE | ameerj | 2021-07-23 | 2 | -1/+8 |
| | |||||
* | vk_pipeline_cache: Fix ReleaseContents order | ReinUsesLisp | 2021-07-23 | 1 | -2/+2 |
| | |||||
* | vk_pipeline_cache: Add pipeline cache | ReinUsesLisp | 2021-07-23 | 2 | -0/+7 |
| | |||||
* | vk_pipeline_cache: Add pipeline cache | ReinUsesLisp | 2021-07-23 | 4 | -98/+332 |
| | |||||
* | shader: Implement DMNMX, DSET, DSETP | ameerj | 2021-07-23 | 1 | -0/+2 |
| | |||||
* | spirv: Implement VertexId and InstanceId, refactor code | ReinUsesLisp | 2021-07-23 | 1 | -0/+1 |
| | |||||
* | shader: Implement I2F | ReinUsesLisp | 2021-07-23 | 1 | -1/+2 |
| | |||||
* | shader: Add partial rasterizer integration | ReinUsesLisp | 2021-07-23 | 18 | -409/+1278 |
| | |||||
* | spirv: Add SignedZeroInfNanPreserve logic | ameerj | 2021-07-23 | 1 | -0/+4 |
| | |||||
* | shader: Initial support for textures and TEX | ReinUsesLisp | 2021-07-23 | 4 | -1/+111 |
| | |||||
* | spirv: Fixes and Intel specific workarounds | ReinUsesLisp | 2021-07-23 | 1 | -0/+1 |
| | |||||
* | shader: Rename, implement FADD.SAT and P2R (imm) | ReinUsesLisp | 2021-07-23 | 1 | -2/+2 |
| | |||||
* | shader: Add denorm flush support | ReinUsesLisp | 2021-07-23 | 2 | -7/+15 |
| | |||||
* | spirv: Add lower fp16 to fp32 pass | ReinUsesLisp | 2021-07-23 | 3 | -4/+9 |
| | |||||
* | shader: Primitive Vulkan integration | ReinUsesLisp | 2021-07-23 | 11 | -77/+428 |
| | |||||
* | shader: Remove old shader management | ReinUsesLisp | 2021-07-23 | 9 | -1604/+41 |
| | |||||
* | spirv: Initial SPIR-V support | ReinUsesLisp | 2021-07-23 | 2 | -3265/+0 |
| | |||||
* | Merge pull request #6686 from ReinUsesLisp/vk-optimal-copy | bunnei | 2021-07-22 | 1 | -21/+35 |
|\ | | | | | vk_texture_cache: Use VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL when possible | ||||
| * | vk_texture_cache: Use VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL when possible | ReinUsesLisp | 2021-07-20 | 1 | -21/+35 |
| | | | | | | | | Silences performance warnings generated from validation layers on each frame. | ||||
* | | Merge pull request #6629 from FernandoS27/accel-dma-2 | bunnei | 2021-07-20 | 4 | -0/+33 |
|\ \ | |/ |/| | DMAEngine: Accelerate BufferClear [accelerateDMA Part 2] | ||||
| * | DMAEngine: Accelerate BufferClear | Fernando Sahmkow | 2021-07-13 | 4 | -0/+33 |
| | | |||||
* | | vk_buffer_cache: Fix quad index array with 0 vertices (#6627) | Fernando S | 2021-07-20 | 1 | -0/+7 |
| | | |||||
* | | Merge pull request #6580 from ReinUsesLisp/xfb-radv | Rodrigo Locatti | 2021-07-20 | 2 | -11/+19 |
|\ \ | | | | | | | vk_buffer_cache: Use emulated null buffers for transform feedback | ||||
| * | | vk_buffer_cache: Use emulated null buffers for transform feedback | ReinUsesLisp | 2021-07-09 | 2 | -11/+19 |
| | | | | | | | | | | | | | | | | | | Vulkan does not support null buffers on transform feedback bindings. Emulate these using the same null buffer we were using for index buffers. | ||||
* | | | Merge pull request #6679 from yzct12345/fix-lets-go | Fernando S | 2021-07-19 | 1 | -1/+4 |
|\ \ \ | | | | | | | | | Fix Pokemon Let's Go on Vulkan | ||||
| * | | | Update src/video_core/renderer_vulkan/vk_texture_cache.cpp | yzct12345 | 2021-07-19 | 1 | -1/+1 |
| | | | | | | | | | | | | Co-authored-by: Vitor K <vitor-kiguchi@hotmail.com> | ||||
| * | | | Update src/video_core/renderer_vulkan/vk_texture_cache.cpp | yzct12345 | 2021-07-19 | 1 | -1/+1 |
| | | | | | | | | | | | | Co-authored-by: Vitor K <vitor-kiguchi@hotmail.com> | ||||
| * | | | Ignore wrong blit format | yzct12345 | 2021-07-18 | 1 | -1/+4 |
| | | | | |||||
* | | | | vk_texture_cache: Finalize renderpass when downloading images | ReinUsesLisp | 2021-07-18 | 1 | -0/+1 |
| | | | | |||||
* | | | | vk_compute_pass: Fix pipeline barriers on non-initialized ASTC images | ReinUsesLisp | 2021-07-18 | 1 | -2/+3 |
| | | | | |||||
* | | | | vk_compute_pass: Fix ASTC buffer setup synchronization | ReinUsesLisp | 2021-07-18 | 1 | -14/+14 |
|/ / / | |||||
* | | | Merge pull request #6579 from ameerj/float-settings | bunnei | 2021-07-16 | 1 | -1/+4 |
|\ \ \ | | | | | | | | | settings: Eliminate usage of float-point setting values | ||||
| * | | | configure_graphics: Use u8 for bg_color values | ameerj | 2021-07-09 | 1 | -1/+4 |
| |/ / | |||||
* | / | vk_rasterizer: Only clear valid color attachments | ameerj | 2021-07-13 | 1 | -2/+4 |
| |/ |/| | |||||
* | | accelerateDMA: Fixes and feedback. | Fernando Sahmkow | 2021-07-12 | 1 | -4/+5 |
| | | |||||
* | | accelerateDMA: Accelerate Buffer Copies. | Fernando Sahmkow | 2021-07-11 | 2 | -1/+24 |
| | | |||||
* | | Fence Manager: remove reference fencing. | Fernando Sahmkow | 2021-07-09 | 1 | -5/+2 |
| | | |||||
* | | Fence Manager: Force ordering on WFI. | Fernando Sahmkow | 2021-07-09 | 1 | -0/+4 |
| | | |||||
* | | Fence Manager: Add fences on Reference Count. | Fernando Sahmkow | 2021-07-09 | 2 | -0/+8 |
|/ | |||||
* | Merge pull request #6539 from lat9nq/default-setting | Ameer J | 2021-07-08 | 1 | -1/+1 |
|\ | | | | | general: Move most settings' defaults and labels into their definition | ||||
| * | yuzu qt: Make most UISettings a BasicSetting | lat9nq | 2021-06-29 | 1 | -4/+9 |
| | | | | | | | | | | | | | | | | | | For simple primitive settings, moves their defaults and labels to definition time. Also fixes typo and clang-format yuzu qt: config: Fix rng_seed | ||||
| * | general: Make most settings a BasicSetting | lat9nq | 2021-06-28 | 1 | -10/+5 |
| | | | | | | | | | | | | | | | | | | | | | | Creates a new BasicSettings class in common/settings, and forces setting a default and label for each setting that uses it in common/settings. Moves defaults and labels from both frontends into common settings. Creates a helper function in each frontend to facillitate reading the settings now with the new default and label properties. Settings::Setting is also now a subclass of Settings::BasicSetting. Also adds documentation for both Setting and BasicSetting. | ||||
* | | Texture Cache: Initial Implementation of Sparse Textures. | Fernando Sahmkow | 2021-07-04 | 2 | -0/+8 |
| | | |||||
* | | Merge pull request #6502 from ameerj/vendor-title | Morph | 2021-06-28 | 1 | -0/+4 |
|\ \ | | | | | | | main: Add GPU Vendor name to running title bar | ||||
| * | | video_core: Add GPU vendor name to window title bar | ameerj | 2021-06-21 | 1 | -0/+4 |
| | | | |||||
* | | | vk_buffer_cache: Silence implicit cast warnings | ReinUsesLisp | 2021-06-26 | 1 | -2/+3 |
| |/ |/| | |||||
* | | Merge pull request #6496 from ameerj/astc-fixes | bunnei | 2021-06-25 | 1 | -93/+14 |
|\ \ | | | | | | | astc: Various robustness enhancements for the gpu decoder | ||||
| * | | astc_decoder.comp: Remove unnecessary LUT SSBOs | ameerj | 2021-06-19 | 1 | -64/+10 |
| | | | | | | | | | | | | We can move them to instead be compile time constants within the shader. | ||||
| * | | astc: Various robustness enhancements for the gpu decoder | ameerj | 2021-06-19 | 1 | -32/+7 |
| |/ | | | | | | | | | | | These changes should help in reducing crashes/drivers panics that may occur due to synchronization issues between the shader completion and later access of the decoded texture. | ||||
* | | common: Replace common_sizes into user-literals | Wunkolo | 2021-06-24 | 2 | -3/+10 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | Removes common_sizes.h in favor of having `_KiB`, `_MiB`, `_GiB`, etc user-literals within literals.h. To keep the global namespace clean, users will have to use: ``` using namespace Common::Literals; ``` to access these literals. | ||||
* | | Merge pull request #6465 from FernandoS27/sex-on-the-beach | Mai M | 2021-06-23 | 2 | -0/+17 |
|\ \ | | | | | | | GPU: Implement a garbage collector for GPU Caches (project Reaper+) | ||||
| * | | Reaper: Guarantee correct deletion. | Fernando Sahmkow | 2021-06-20 | 2 | -0/+10 |
| | | | |||||
| * | | Reaper: Change memory restrictions on TC depending on host memory on VK. | Fernando Sahmkow | 2021-06-17 | 2 | -0/+7 |
| |/ | |||||
* / | vk_master_semaphore: Use jthread for debug thread | ReinUsesLisp | 2021-06-22 | 2 | -19/+8 |
|/ | |||||
* | configure_graphics: Add Accelerate ASTC decoding setting | ameerj | 2021-06-16 | 1 | -1/+6 |
| | |||||
* | buffer_cache: Simplify uniform disabling logic | ameerj | 2021-06-01 | 2 | -0/+5 |
| | |||||
* | Merge pull request #6317 from ameerj/fps-fix | bunnei | 2021-05-19 | 1 | -0/+1 |
|\ | | | | | perf_stats: Rework FPS counter to be more accurate | ||||
| * | perf_stats: Rework FPS counter to be more accurate | ameerj | 2021-05-16 | 1 | -0/+1 |
| | | | | | | | | | | | | | | | | | | The FPS counter was based on metrics in the nvdisp swapbuffers call. This metric would be accurate if the gpu thread/renderer were synchronous with the nvdisp service, but that's no longer the case. This commit moves the frame counting responsibility onto the concrete renderers after their frame draw calls. Resulting in more meaningful metrics. The displayed FPS is now made up of the average framerate between the previous and most recent update, in order to avoid distracting FPS counter updates when framerate is oscillating between close values. The status bar update frequency was also changed from 2 seconds to 500ms. | ||||
* | | texture_cache: Handle out of bound texture blits | ameerj | 2021-05-08 | 4 | -43/+36 |
|/ | | | | Some games interleave a texture blit using regions which are out-of-bounds. This addresses the interleaving to avoid oob reads from the src texture. | ||||
* | vk_texture_cache: Swap R and B channels of color flipped format | ameerj | 2021-04-25 | 1 | -1/+24 |
| | | | | Swaps the Red and Blue channels of the A1B5G5R5_UNORM texture format, which was being incorrectly rendered. | ||||
* | common: Move settings to common from core. | bunnei | 2021-04-15 | 3 | -3/+3 |
| | | | | - Removes a dependency on core and input_common from common. | ||||
* | Merge pull request #6190 from lioncash/constfn2 | bunnei | 2021-04-14 | 1 | -2/+2 |
|\ | | | | | vk_master_semaphore: Add missing const qualifier for IsFree() | ||||
| * | vk_master_semaphore: Deduplicate atomic access within IsFree() | Lioncash | 2021-04-12 | 1 | -1/+1 |
| | | | | | | | | | | We can just reuse the already existing KnownGpuTick() to deduplicate the access. | ||||
| * | vk_master_semaphore: Add missing const qualifier for IsFree() | Lioncash | 2021-04-12 | 1 | -1/+1 |
| | | | | | | | | This member function doesn't modify class state. | ||||
* | | vk_texture_cache: Make use of Common::BitCast where applicable | Lioncash | 2021-04-12 | 1 | -5/+6 |
|/ | | | | | Also clarify the TODO comment a little more on the lacking implementations for std::bit_cast. | ||||
* | vk_buffer_cache: Fix offset for NULL vertex buffers | Joshua Ashton | 2021-04-11 | 1 | -1/+1 |
| | | | | | | | The Vulkan spec states: If an element of pBuffers is VK_NULL_HANDLE, then the corresponding element of pOffsets must be zero. https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdBindVertexBuffers2EXT.html#VUID-vkCmdBindVertexBuffers2EXT-pBuffers-04112 | ||||
* | renderer_vulkan: Check return value of AcquireNextImage | Joshua Ashton | 2021-04-11 | 3 | -5/+10 |
| | | | | | We can get into a really bad state by ignoring this leading to device loss and using incorrect resources. | ||||
* | astc_decoder: Refactor for style and more efficient memory use | ameerj | 2021-03-25 | 1 | -79/+96 |
| | |||||
* | astc_decoder: Reimplement Layers | Rodrigo Locatti | 2021-03-13 | 3 | -95/+122 |
| | | | | Reimplements the approach to decoding layers in the compute shader. Fixes multilayer astc decoding when using Vulkan. | ||||
* | renderer_vulkan: Accelerate ASTC decoding | ameerj | 2021-03-13 | 7 | -9/+386 |
| | | | | Co-Authored-By: Rodrigo Locatti <reinuseslisp@airmail.cc> | ||||
* | Merge pull request #5891 from ameerj/bgra-ogl | Rodrigo Locatti | 2021-03-09 | 1 | -0/+5 |
|\ | | | | | renderer_opengl: Use compute shaders to swizzle BGR textures on copy | ||||
| * | texture_cache: Blacklist BGRA8 copies and views on OpenGL | ameerj | 2021-03-04 | 1 | -0/+5 |
| | | | | | | | | | | | | In order to force the BGRA8 conversion on Nvidia using OpenGL, we need to forbid texture copies and views with other formats. This commit also adds a boolean relating to this, as this needs to be done only for the OpenGL api, Vulkan must remain unchanged. | ||||
* | | vk_command_pool: Reduce the command pool size from 4096 to 4 | ReinUsesLisp | 2021-02-23 | 1 | -1/+1 |
|/ | | | | | This allows drivers to reuse memory more easily and preallocate less. The optimal number has been measured booting Pokémon Sword. | ||||
* | Merge pull request #5936 from Kelebek1/Offsets | bunnei | 2021-02-22 | 1 | -7/+24 |
|\ | | | | | Offsets for TexelFetch and TextureGather in Vulkan | ||||
| * | Review 1 | Kelebek1 | 2021-02-15 | 1 | -2/+2 |
| | | |||||
| * | Implement texture offset support for TexelFetch and TextureGather and add offsets for Tlds | Kelebek1 | 2021-02-15 | 1 | -7/+24 |
| | | | | | | | | Formatting | ||||
* | | Merge pull request #5924 from ReinUsesLisp/inline-bindings | bunnei | 2021-02-19 | 4 | -24/+24 |
|\ \ | | | | | | | vk_update_descriptor: Inline and improve code for binding buffers | ||||
| * | | vk_update_descriptor: Inline and improve code for binding buffers | ReinUsesLisp | 2021-02-13 | 4 | -24/+24 |
| | | | | | | | | | | | | Allow compilers with our settings inline hot code. | ||||
* | | | vk_rasterizer: Fix loading shader addresses twice | ReinUsesLisp | 2021-02-16 | 1 | -1/+0 |
| | | | | | | | | | | | | This was recently introduced on a wrongly rebased commit. | ||||
* | | | Merge pull request #5923 from ReinUsesLisp/vk-dirty-pipeline | bunnei | 2021-02-15 | 7 | -56/+103 |
|\ \ \ | |_|/ |/| | | fixed_pipeline_cache: Use dirty flags to lazily update key | ||||
| * | | fixed_pipeline_cache: Use dirty flags to lazily update key | ReinUsesLisp | 2021-02-13 | 7 | -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. | ||||
* / | vk_resource_pool: Load GPU tick once and compare with it | ReinUsesLisp | 2021-02-13 | 2 | -8/+8 |
|/ | | | | | Other minor style improvements. Rename free_iterator to hint_iterator, to describe better what it does. | ||||
* | vk_master_semaphore: Mark gpu_tick atomic operations with relaxed order | ReinUsesLisp | 2021-02-13 | 1 | -4/+4 |
| | |||||
* | vk_staging_buffer_pool: Inline tick tests | ReinUsesLisp | 2021-02-13 | 2 | -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 check | ReinUsesLisp | 2021-02-13 | 1 | -1/+1 |
| | | | | | | 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. | ||||
* | video_core: Fix clang build issues | ReinUsesLisp | 2021-02-13 | 1 | -1/+5 |
| | |||||
* | vk_staging_buffer_pool: Fix softlock when stream buffer overflows | ReinUsesLisp | 2021-02-13 | 2 | -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 buffers | ReinUsesLisp | 2021-02-13 | 2 | -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. | ||||
* | vk_staging_buffer_pool: Get a staging buffer instead of waiting | ReinUsesLisp | 2021-02-13 | 2 | -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. | ||||
* | buffer_cache: Skip cache on small uploads on Vulkan | ReinUsesLisp | 2021-02-13 | 2 | -1/+9 |
| | | | | | | | | 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 uploads | ReinUsesLisp | 2021-02-13 | 7 | -64/+214 |
| | | | | | | | | 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. | ||||
* | video_core: Reimplement the buffer cache | ReinUsesLisp | 2021-02-13 | 20 | -1003/+585 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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. | ||||
* | gpu: Report renderer errors with exceptions | ReinUsesLisp | 2021-02-13 | 6 | -141/+91 |
| | | | | | | Instead of using a two step initialization to report errors, initialize the GPU renderer and rasterizer on the constructor and report errors through std::runtime_error. | ||||
* | vk_scheduler: Fix unaligned placement new expressions | ReinUsesLisp | 2021-01-28 | 1 | -6/+6 |
| | | | | | We were accidentaly creating an object in an unaligned memory address. Fix this by manually aligning the offset. | ||||
* | vk_graphics_pipeline: Fix narrowing conversion on MSVC | ReinUsesLisp | 2021-01-25 | 1 | -2/+2 |
| | |||||
* | Merge pull request #5807 from ReinUsesLisp/vc-warnings | LC | 2021-01-24 | 4 | -3/+4 |
|\ | | | | | video_core: Silence the remaining gcc warnings and enforce them | ||||
| * | video_core: Silence -Wmissing-field-initializers warnings | ReinUsesLisp | 2021-01-24 | 2 | -1/+2 |
| | | |||||
| * | maxwell_to_vk: Silence -Wextra warnings about using different enum types | ReinUsesLisp | 2021-01-24 | 2 | -2/+2 |
| | | |||||
* | | Merge pull request #5363 from ReinUsesLisp/vk-image-usage | Rodrigo Locatti | 2021-01-24 | 3 | -38/+72 |
|\ \ | | | | | | | vk_texture_cache: Support image store on sRGB images with VkImageViewUsageCreateInfo | ||||
| * | | vk_texture_cache: Support image store on sRGB images with VkImageViewUsageCreateInfo | ReinUsesLisp | 2021-01-24 | 3 | -38/+72 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Vulkan 1.0 didn't support creating sRGB image views on an ABGR8 VkImage with storage usage bits. VK_KHR_maintenance2 addressed this allowing to reduce the usage bits on a VkImageView. To allow image store on non-sRGB image views when the VkImage is created with sRGB, always create VkImages without sRGB and add the sRGB format on the view. | ||||
* | | | vk_pipeline_cache: Properly bypass VertexA shaders | ReinUsesLisp | 2021-01-23 | 1 | -9/+3 |
| |/ |/| | | | | | | | | | | | | | The VertexA stage is not yet implemented, but Vulkan is adding its descriptors, causing a discrepancy in the pushed descriptors and the template. This generally ends up in a driver side crash. Bypass the VertexA stage for now. | ||||
* | | Merge pull request #5361 from ReinUsesLisp/vk-shader-comment | bunnei | 2021-01-21 | 1 | -1/+4 |
|\ \ | | | | | | | vk_shader_decompiler: Show comments as OpUndef with a type | ||||
| * | | vk_shader_decompiler: Show comments as OpUndef with a type | ReinUsesLisp | 2021-01-16 | 1 | -1/+4 |
| |/ | | | | | | | | | | | | | | | | | Silence the new validation layer error about SPIR-V not allowing OpUndef on a OpTypeVoid, even when the SPIR-V spec doesn't say anything against it. They will be inserted as an undefined int to avoid SPIRV-Cross and validation errors, but only when a debugging tool is attached. | ||||
* | | vk_texture_cache: Use Download memory types for texture flushes | ReinUsesLisp | 2021-01-15 | 2 | -5/+10 |
| | | | | | | | | Use the Download memory type where it matters. | ||||
* | | vulkan_memory_allocator: Add "download" memory usage hint | ReinUsesLisp | 2021-01-15 | 7 | -35/+48 |
| | | | | | | | | | | | | | | Allow users of the allocator to hint memory usage for downloads. This removes the non-descriptive boolean passed for "host visible" or not host visible memory commits, and uses an enum to hint device local, upload and download usages. | ||||
* | | vulkan_common: Move allocator to the common directory | ReinUsesLisp | 2021-01-15 | 10 | -330/+8 |
| | | | | | | | | Allow using the abstraction from the OpenGL backend. | ||||
* | | renderer_vulkan: Rename Vulkan memory manager to memory allocator | ReinUsesLisp | 2021-01-15 | 15 | -54/+52 |
| | | | | | | | | | | "Memory manager" collides with the guest GPU memory manager, and a memory allocator sounds closer to what the abstraction aims to be. | ||||
* | | vk_memory_manager: Improve memory manager and its API | ReinUsesLisp | 2021-01-15 | 13 | -343/+318 |
|/ | | | | | | | | | Fix a bug where the memory allocator could leave gaps between commits. To fix this the allocation algorithm was reworked, although it's still short in number of lines of code. Rework the allocation API to self-contained movable objects instead of naively using an unique_ptr to do the job for us. Remove the VK prefix. | ||||
* | vk_buffer_cache: Remove unused function | ReinUsesLisp | 2021-01-15 | 1 | -4/+0 |
| | |||||
* | Merge pull request #5311 from ReinUsesLisp/fence-wait | bunnei | 2021-01-13 | 3 | -54/+18 |
|\ | | | | | vk_fence_manager: Use timeline semaphores instead of spin waits | ||||
| * | vk_fence_manager: Use timeline semaphores instead of spin waits | ReinUsesLisp | 2021-01-08 | 3 | -54/+18 |
| | | | | | | | | | | | | | | | | | | | | | | With timeline semaphores we can avoid creating objects. Instead of creating an event, grab the current tick from the scheduler and flush the current command buffer. When the fence has to be queried/waited, we can do so against the master semaphore instead of spinning on an event. If Vulkan supported NVN like events or fences, we could signal from the command buffer and wait for that without splitting things in two separate command buffers. | ||||
* | | Merge pull request #5231 from ReinUsesLisp/dyn-bindings | bunnei | 2021-01-08 | 3 | -26/+12 |
|\ \ | |/ |/| | renderer_vulkan/fixed_pipeline_state: Move enabled bindings to static state | ||||
| * | renderer_vulkan/fixed_pipeline_state: Move enabled bindings to static state | ReinUsesLisp | 2020-12-26 | 3 | -26/+12 |
| | | | | | | | | | | | | | | | | | | | | | | | | Without using VK_EXT_robustness2, we can't consider the 'enabled' (not null) vertex buffers as dynamic state, as this leads to invalid Vulkan state. Move this to static state that is always hashed and compared in the pipeline key. The bits for enabled vertex buffers are moved into the attribute state bitfield. This is not 'correct' as it's not an attribute state, but that struct has bits to spare, and it's used in an array of 32 elements (the exact same number of vertex buffer bindings). | ||||
* | | Merge pull request #5288 from ReinUsesLisp/workaround-garbage | Morph | 2021-01-06 | 1 | -0/+5 |
|\ \ | | | | | | | gl_texture_cache: Avoid format views on Intel and AMD | ||||
| * | | gl_texture_cache: Avoid format views on Intel and AMD | ReinUsesLisp | 2021-01-04 | 1 | -0/+5 |
| | | | | | | | | | | | | | | | | | | | | | Intel and AMD proprietary drivers are incapable of rendering to texture views of different formats than the original texture. Avoid creating these at a cache level. This will consume more memory, emulating them with copies. | ||||
* | | | Merge pull request #5289 from ReinUsesLisp/vulkan-device | bunnei | 2021-01-06 | 29 | -1521/+27 |
|\ \ \ | | | | | | | | | vulkan_common: Move device abstraction to the common directory and allow surfaceless devices | ||||
| * | | | renderer_vulkan/nsight_aftermath_tracker: Move to vulkan_common | ReinUsesLisp | 2021-01-04 | 2 | -307/+0 |
| | | | | |||||
| * | | | renderer_vulkan: Move device abstraction to vulkan_common | ReinUsesLisp | 2021-01-04 | 27 | -1214/+27 |
| | | | | |||||
* | | | | Merge pull request #5292 from ReinUsesLisp/empty-set | LC | 2021-01-05 | 1 | -2/+4 |
|\ \ \ \ | |/ / / |/| | | | vk_rasterizer: Skip binding empty descriptor sets on compute | ||||
| * | | | vk_rasterizer: Skip binding empty descriptor sets on compute | ReinUsesLisp | 2021-01-04 | 1 | -2/+4 |
| |/ / | | | | | | | | | | | | | Fixes unit tests where compute shaders had no descriptors in the set, making Vulkan drivers crash when binding an empty set. | ||||
* / / | renderer_vulkan: Rename VKDevice to Device | ReinUsesLisp | 2021-01-03 | 50 | -166/+163 |
|/ / | | | | | | | | | | | | | The "VK" prefix predates the "Vulkan" namespace. It was carried around the codebase for consistency. "VKDevice" currently is a bad alias with "VkDevice" (only an upcase character of difference) that can cause confusion. Rename all instances of it. | ||||
* | | Merge pull request #5230 from ReinUsesLisp/vulkan-common | Rodrigo Locatti | 2021-01-03 | 51 | -2575/+146 |
|\ \ | | | | | | | vulkan_common: Move reusable Vulkan abstractions to a separate directory | ||||
| * | | vulkan_instance: Allow different Vulkan versions and enforce 1.1 | ReinUsesLisp | 2020-12-31 | 5 | -28/+12 |
| | | | | | | | | | | | | | | | | | | | | | For listing the available physical devices we can use Vulkan 1.0. Now that MoltenVK supports 1.1 we can require it for running games. Add missing documentation. | ||||
| * | | vk_device: Use an array to report lacking device limits | ReinUsesLisp | 2020-12-31 | 1 | -13/+17 |
| | | | | | | | | | | | | This makes easier to add and tune the required device limits. | ||||
| * | | vk_device: Stop initialization when device is not suitable | ReinUsesLisp | 2020-12-31 | 2 | -61/+39 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | VKDevice::IsSuitable was not being called. To address this issue, check suitability before initialization and throw an exception if it fails. By doing this, we can deduplicate some code on queue searches. Previosuly we would first search if a present and graphics queue existed, then on initialization we would search again to find the index. | ||||
| * | | renderer_vulkan: Remove two step initialization on VKDevice | ReinUsesLisp | 2020-12-31 | 4 | -25/+7 |
| | | | | | | | | | | | | | | | The Vulkan device abstraction either initializes successfully on the constructor or throws a Vulkan exception. | ||||
| * | | renderer_vulkan: Throw when enumerating devices fails | ReinUsesLisp | 2020-12-31 | 1 | -22/+13 |
| | | | | | | | | | | | | | | | | | | Report device enumeration errors with exceptions to be consistent with other initialization related function calls. Reduces the amount of code to maintain. | ||||
| * | | renderer_vulkan: Initialize surface in separate file | ReinUsesLisp | 2020-12-31 | 2 | -73/+3 |
| | | | | | | | | | | | | | | | | | | Move surface initialization code to a separate file. It's unlikely to use this code outside of Vulkan, but keeping platform-specific code (Win32, Xlib, Wayland) in its own translation unit keeps things cleaner. | ||||
| * | | renderer_vulkan: Catch and report exceptions | ReinUsesLisp | 2020-12-31 | 1 | -2/+5 |
| | | | | | | | | | | | | | | | | | | | | | Move more Vulkan code to report errors with exceptions and report them through a log before notifying it with an error boolean for backwards compatibility. In the future we can replace the rasterizer two-step initialization to always use exceptions. | ||||
| * | | renderer_vulkan: Create debug callback on separate file and throw | ReinUsesLisp | 2020-12-31 | 2 | -34/+7 |
| | | | | | | | | | | | | | | | | | | | | | | | | Initialize debug callbacks (messenger) from a separate file. This allows sharing code with different backends. Change our Vulkan error handling to use exceptions instead of error codes, simplifying the initialization process. | ||||
| * | | renderer_vulkan: Move instance initialization to a separate file | ReinUsesLisp | 2020-12-31 | 1 | -111/+1 |
| | | | | | | | | | | | | | | | | | | Simplify Vulkan's backend initialization code by moving it to a separate file, allowing us to initialize a Vulkan instance from different backends. | ||||
| * | | vulkan_common: Rename renderer_vulkan/wrapper.h to vulkan_common/vulkan_wrapper.h | ReinUsesLisp | 2020-12-31 | 50 | -2189/+48 |
| | | | | | | | | | | | | Allows sharing Vulkan wrapper code between different rendering backends. | ||||
| * | | vulkan_common: Move dynamic library load to a separate file | ReinUsesLisp | 2020-12-31 | 1 | -31/+8 |
| | | | | | | | | | | | | | | | Allows us to initialize a Vulkan dynamic library from different backends without duplicating code. | ||||
* | | | general: Fix various spelling errors | Morph | 2021-01-02 | 1 | -1/+1 |
|/ / | |||||
* | | maxwell_to_vk: Initialize usage variable in SurfaceFormat() | Lioncash | 2020-12-30 | 1 | -1/+1 |
| | | | | | | | | Silences a -Wmaybe-uninitialized warning | ||||
* | | video_core: Rewrite the texture cache | ReinUsesLisp | 2020-12-30 | 52 | -2582/+2979 |
|/ | | | | | | | | | | | | | | The current texture cache has several points that hurt maintainability and performance. It's easy to break unrelated parts of the cache when doing minor changes. The cache can easily forget valuable information about the cached textures by CPU writes or simply by its normal usage.The current texture cache has several points that hurt maintainability and performance. It's easy to break unrelated parts of the cache when doing minor changes. The cache can easily forget valuable information about the cached textures by CPU writes or simply by its normal usage. This commit aims to address those issues. | ||||
* | vk_shader_decompiler: Silence warning when compiling without asserts | ReinUsesLisp | 2020-12-25 | 1 | -0/+1 |
| | |||||
* | video_core: Make use of ordered container contains() where applicable | Lioncash | 2020-12-07 | 2 | -3/+2 |
| | | | | | | With C++20, we can use the more concise contains() member function instead of comparing the result of the find() call with the end iterator. | ||||
* | video_core: Remove unnecessary enum class casting in logging messages | Lioncash | 2020-12-07 | 4 | -27/+24 |
| | | | | | | | fmt now automatically prints the numeric value of an enum class member by default, so we don't need to use casts any more. Reduces the line noise a bit. | ||||
* | Merge pull request #5152 from comex/xx-override | LC | 2020-12-07 | 1 | -1/+1 |
|\ | | | | | renderer_vulkan: Add missing `override` specifier | ||||
| * | renderer_vulkan: Add missing `override` specifier | comex | 2020-12-07 | 1 | -1/+1 |
| | | |||||
* | | Merge pull request #5136 from lioncash/video-shadow3 | LC | 2020-12-07 | 12 | -119/+119 |
|\ \ | | | | | | | video_core: Resolve more variable shadowing scenarios pt.3 | ||||
| * | | video_core: Resolve more variable shadowing scenarios pt.3 | Lioncash | 2020-12-05 | 12 | -119/+119 |
| |/ | | | | | | | | | Cleans out the rest of the occurrences of variable shadowing and makes any further occurrences of shadowing compiler errors. | ||||
* / | video_core: Adjust `NUM` macro to avoid Clang warning | comex | 2020-12-07 | 1 | -1/+1 |
|/ | | | | | | | | | | | | | | | | The previous definition was: #define NUM(field_name) (sizeof(Maxwell3D::Regs::field_name) / sizeof(u32)) In cases where `field_name` happens to refer to an array, Clang thinks `sizeof(an array value) / sizeof(a type)` is an instance of the idiom where `sizeof` is used to compute an array length. So it thinks the type in the denominator ought to be the array element type, and warns if it isn't, assuming this is a mistake. In reality, `NUM` is not used to get array lengths at all, so there is no mistake. Silence the warning by applying Clang's suggested workaround of parenthesizing the denominator. | ||||
* | video_core: Resolve more variable shadowing scenarios pt.2 | Lioncash | 2020-12-05 | 32 | -241/+249 |
| | | | | | | | Migrates the video core code closer to enabling variable shadowing warnings as errors. This primarily sorts out shadowing occurrences within the Vulkan code. | ||||
* | video_core: Resolve more variable shadowing scenarios | Lioncash | 2020-12-04 | 2 | -3/+3 |
| | | | | | | Resolves variable shadowing scenarios up to the end of the OpenGL code to make it nicer to review. The rest will be resolved in a following commit. | ||||
* | vk_shader_decompiler: Implement force early fragment tests | ReinUsesLisp | 2020-11-26 | 5 | -10/+13 |
| | | | | | | | | Force early fragment tests when the 3D method is enabled. The established pipeline cache takes care of recompiling if needed. This is implemented only on Vulkan to avoid invalidating the shader cache on OpenGL. | ||||
* | Merge pull request #4976 from comex/poll-events | Rodrigo Locatti | 2020-11-26 | 1 | -3/+1 |
|\ | | | | | Overhaul EmuWindow::PollEvents to fix yuzu-cmd calling SDL_PollEvents off main thread | ||||
| * | Overhaul EmuWindow::PollEvents to fix yuzu-cmd calling SDL_PollEvents off main thread | comex | 2020-11-23 | 1 | -3/+1 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | EmuWindow::PollEvents was called from the GPU thread (or the CPU thread in sync-GPU mode) when swapping buffers. It had three implementations: - In GRenderWindow, it didn't actually poll events, just set a flag and emit a signal to indicate that a frame was displayed. - In EmuWindow_SDL2_Hide, it did nothing. - In EmuWindow_SDL2, it did call SDL_PollEvents, but this is wrong because SDL_PollEvents is supposed to be called on the thread that set up video - in this case, the main thread, which was sleeping in a busyloop (regardless of whether sync-GPU was enabled). On macOS this causes a crash. To fix this: - Rename EmuWindow::PollEvents to OnFrameDisplayed, and give it a default implementation that does nothing. - In EmuWindow_SDL2, do not override OnFrameDisplayed, but instead have the main thread call SDL_WaitEvent in a loop. | ||||
* | | cleanup unneeded comments and newlines | ameerj | 2020-11-25 | 1 | -6/+0 |
| | | |||||
* | | Refactor MaxwellToSpirvComparison. Use Common::BitCast | ameerj | 2020-11-25 | 3 | -31/+34 |
| | | | | | | | | Co-Authored-By: Rodrigo Locatti <reinuseslisp@airmail.cc> | ||||
* | | Address PR feedback from Rein | ameerj | 2020-11-25 | 5 | -40/+31 |
| | | |||||
* | | vulkan_renderer: Alpha Test Culling Implementation | ameerj | 2020-11-25 | 5 | -2/+76 |
|/ | | | | Used by various textures in many titles, e.g. SSBU menu. | ||||
* | General: Resolve a few missing initializer warnings | Lioncash | 2020-10-30 | 2 | -2/+9 |
| | | | | Resolves a few -Wmissing-initializer warnings. | ||||
* | video_core: Enforce -Wredundant-move and -Wpessimizing-move | ReinUsesLisp | 2020-10-28 | 1 | -1/+1 |
| | | | | Silence three warnings and make them errors to avoid introducing more in the future. | ||||
* | Merge pull request #4204 from ReinUsesLisp/vulkan-1.0 | bunnei | 2020-10-19 | 7 | -58/+92 |
|\ | | | | | renderer_vulkan: Create and properly use Vulkan 1.0 instances when 1.1 is not available | ||||
| * | vk_device: Use Vulkan 1.0 properly | ReinUsesLisp | 2020-08-20 | 5 | -52/+66 |
| | | | | | | | | | | Enable the required capabilities to use Vulkan 1.0 without validation errors and disable those that are not compatible with it. | ||||
| * | renderer_vulkan: Create a Vulkan 1.0 instance when 1.1 is not available | ReinUsesLisp | 2020-08-20 | 3 | -6/+26 |
| | | | | | | | | | | This commit doesn't make yuzu compatible with Vulkan 1.0 yet, it only creates an 1.0 instance. | ||||
* | | Merge pull request #4782 from ReinUsesLisp/remove-dyn-primitive | bunnei | 2020-10-18 | 6 | -26/+7 |
|\ \ | | | | | | | vk_graphics_pipeline: Manage primitive topology as fixed state | ||||
| * | | vk_graphics_pipeline: Manage primitive topology as fixed state | ReinUsesLisp | 2020-10-13 | 6 | -26/+7 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Vulkan has requirements for primitive topologies that don't play nicely with yuzu's. Since it's only 4 bits, we can move it to fixed state without changing the size of the pipeline key. - Fixes a regression on recent Nvidia drivers on Fire Emblem: Three Houses. | ||||
* | | | vk_device: Block VK_EXT_extended_dynamic_state for RDNA devices | goldenx86 | 2020-10-09 | 1 | -0/+24 |
|/ / | | | | | | | | | | | RDNA devices seem to crash when using VK_EXT_extended_dynamic_state in the latest 20.9.2 proprietary Windows drivers. As a workaround, for now we block device names corresponding to current RDNA released products. | ||||
* | | renderer_vulkan/wrapper: Fix physical device sorting | ReinUsesLisp | 2020-10-07 | 1 | -13/+35 |
| | | | | | | | | | | | | | | | | The old code had a sort function that was invalid and it didn't work as expected when the base vector had a different order (e.g. renderdoc was attached). This sorts devices as expected and fixes a debug assert on MSVC. | ||||
* | | Remove ext_extended_dynamic_state blacklist | Matías Locatti | 2020-09-30 | 1 | -8/+0 |
| | | | | | | Latest AMD 20.9.2 driver fixed this, there's no reason to keep it blocked, as the previous stable signed driver release doesn't include the extension. | ||||
* | | Merge pull request #4724 from lat9nq/fix-vulkan-nvidia-allocate-2 | Rodrigo Locatti | 2020-09-27 | 1 | -1/+2 |
|\ \ | | | | | | | vk_stream_buffer: Fix initializing Vulkan with NVIDIA on Linux | ||||
| * | | vk_stream_buffer: Fix initializing Vulkan with NVIDIA on Linux | lat9nq | 2020-09-25 | 1 | -1/+2 |
| | | | | | | | | | | | | The previous fix only partially solved the issue, as only certain GPUs that needed 9 or less MiB subtracted would work (i.e. GTX 980 Ti, GT 730). This takes from DXVK's example to divide `heap_size` by 2 to determine `allocable_size`. Additionally tested on my Quadro K4200, which previously required setting it to 12 to boot. | ||||
* | | | vk_command_pool: Move definition of Pool into the cpp file | Lioncash | 2020-09-25 | 2 | -4/+6 |
| | | | | | | | | | | | | | | | Allows the implementation details to be changed without recompiling any files that include this header. | ||||
* | | | vk_command_pool: Make use of override on destructor | Lioncash | 2020-09-25 | 1 | -1/+1 |
| | | | |||||
* | | | vk_command_pool: Add missing header guard | Lioncash | 2020-09-25 | 1 | -0/+2 |
|/ / | |||||
* | | Merge pull request #4674 from ReinUsesLisp/timeline-semaphores | bunnei | 2020-09-24 | 37 | -799/+618 |
|\ \ | | | | | | | renderer_vulkan: Make unconditional use of VK_KHR_timeline_semaphore | ||||
| * | | vk_query_cache: Hack counter destructor to avoid reserving queries | ReinUsesLisp | 2020-09-19 | 1 | -1/+10 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a hack to destroy all HostCounter instances before the base class destructor is called. The query cache should be redesigned to have a proper ownership model instead of using shared pointers. For now, destroy the host counter hierarchy from the derived class destructor. | ||||
| * | | renderer_vulkan: Make unconditional use of VK_KHR_timeline_semaphore | ReinUsesLisp | 2020-09-19 | 37 | -799/+609 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reworks how host<->device synchronization works on the Vulkan backend. Instead of "protecting" resources with a fence and signalling these as free when the fence is known to be signalled by the host GPU, use timeline semaphores. Vulkan timeline semaphores allow use to work on a subset of D3D12 fences. As far as we are concerned, timeline semaphores are a value set by the host or the device that can be waited by either of them. Taking advantange of this, we can have a monolithically increasing atomic value for each submission to the graphics queue. Instead of protecting resources with a fence, we simply store the current logical tick (the atomic value stored in CPU memory). When we want to know if a resource is free, it can be compared to the current GPU tick. This greatly simplifies resource management code and the free status of resources should have less false negatives. To workaround bugs in validation layers, when these are attached there's a thread waiting for timeline semaphores. | ||||
* | | | renderer_opengl: Remove emulated mailbox presentation | ReinUsesLisp | 2020-09-20 | 2 | -6/+0 |
|/ / | | | | | | | | | Emulated mailbox presentation was causing performance issues on Nvidia's OpenGL driver. Remove it. | ||||
* | | video_core: Enforce -Werror=switch | ReinUsesLisp | 2020-09-16 | 2 | -4/+36 |
| | | | | | | | | This forces us to fix all -Wswitch warnings in video_core. | ||||
* | | video_core: Remove all Core::System references in renderer | ReinUsesLisp | 2020-09-06 | 19 | -240/+221 |
| | | | | | | | | | | | | | | | | | | Now that the GPU is initialized when video backends are initialized, it's no longer needed to query components once the game is running: it can be done when yuzu is booting. This allows us to pass components between constructors and in the process remove all Core::System references in the video backend. | ||||
* | | vk_device: Fix driver id check on AMD for VK_EXT_extended_dynamic_state | ReinUsesLisp | 2020-08-31 | 1 | -6/+9 |
| | | | | | | | | | | | | | | | | | | | | 'driver_id' can only be known on Vulkan 1.1 after creating a logical device. Move the driver id check to disable VK_EXT_extended_dynamic_state after the logical device is successfully initialized. The Vulkan device will have the extension enabled but it will not be used. | ||||
* | | vk_device: Blacklist AMD proprietary from VK_EXT_extended_dynamic_state | ReinUsesLisp | 2020-08-29 | 1 | -1/+6 |
| | | | | | | | | | | | | Vertex binding's <stride> is bugged on AMD's proprietary drivers when using VK_EXT_extended_dynamic_state. Blacklist it for now while we investigate how to report this issue to AMD. | ||||
* | | Merge pull request #4555 from ReinUsesLisp/fix-primitive-topology | bunnei | 2020-08-27 | 3 | -13/+14 |
|\ \ | | | | | | | vk_state_tracker: Fix primitive topology | ||||
| * | | vk_state_tracker: Fix primitive topology | ReinUsesLisp | 2020-08-21 | 3 | -13/+14 |
| |/ | | | | | | | | | | | | | | | | | State track the current primitive topology with a regular comparison instead of using dirty flags. This fixes a bug in dirty flags for this particular state and it also avoids unnecessary state changes as this property is stored in a frequently changed bit field. | ||||
* | | Merge pull request #4542 from ReinUsesLisp/gpu-init-base | bunnei | 2020-08-25 | 2 | -3/+8 |
|\ \ | |/ |/| | video_core: Initialize renderer with a GPU | ||||
| * | video_core: Initialize renderer with a GPU | ReinUsesLisp | 2020-08-22 | 2 | -3/+8 |
| | | | | | | | | | | Add an extra step in GPU initialization to be able to initialize render backends with a valid GPU instance. | ||||
* | | Merge pull request #4546 from lioncash/telemetry | bunnei | 2020-08-20 | 1 | -1/+1 |
|\ \ | | | | | | | common/telemetry: Migrate namespace into the Common namespace | ||||
| * | | common/telemetry: Migrate namespace into the Common namespace | Lioncash | 2020-08-18 | 1 | -1/+1 |
| | | | | | | | | | | | | | | | Migrates the Telemetry namespace into the Common namespace to make the code consistent with the rest of our common code. | ||||
* | | | Merge pull request #4522 from lioncash/vulk-copy | bunnei | 2020-08-19 | 1 | -1/+1 |
|\ \ \ | |/ / |/| | | vulkan/wrapper: Avoid unnecessary copy in EnumerateInstanceExtensionProperties() | ||||
| * | | vulkan/wrapper: Avoid unnecessary copy in EnumerateInstanceExtensionProperties() | Lioncash | 2020-08-14 | 1 | -1/+1 |
| |/ | | | | | | | | | Given this is implicitly creating a std::optional, we can move the vector into it. | ||||
* | | Merge pull request #4535 from lioncash/fileutil | bunnei | 2020-08-18 | 2 | -8/+8 |
|\ \ | | | | | | | common/fileutil: Convert namespace to Common::FS | ||||
| * | | common/fileutil: Convert namespace to Common::FS | Lioncash | 2020-08-16 | 2 | -8/+8 |
| |/ | | | | | | | | | | | | | | | | | | | | | | | Migrates a remaining common file over to the Common namespace, making it consistent with the rest of common files. This also allows for high-traffic FS related code to alias the filesystem function namespace as namespace FS = Common::FS; for more concise typing. | ||||
* | | Remove unneeded newlines, optional Registry in shader params | ameerj | 2020-08-16 | 3 | -6/+5 |
| | | | | | | | | Addressing feedback from Rodrigo | ||||
* | | move thread 1/4 count computation into allocate workers method | ameerj | 2020-08-16 | 1 | -11/+1 |
| | | |||||
* | | Address feedback, add shader compile notifier, update setting text | ameerj | 2020-08-16 | 6 | -93/+51 |
| | | |||||
* | | Vk Async Worker directly emplace in cache | ameerj | 2020-08-16 | 2 | -5/+16 |
| | | |||||
* | | Address feedback. Bruteforce delete duplicates | ameerj | 2020-08-16 | 5 | -19/+38 |
| | | |||||
* | | Vk Async pipeline compilation | ameerj | 2020-08-16 | 11 | -14/+98 |
|/ | |||||
* | General: Tidy up clang-format warnings part 2 | Lioncash | 2020-08-13 | 1 | -14/+14 |
| | |||||
* | vulkan: Silence more -Wmissing-field-initializer warnings | Lioncash | 2020-08-03 | 6 | -3/+18 |
| | |||||
* | vulkan: Resolve -Wmissing-field-initializer warnings | Lioncash | 2020-07-25 | 2 | -0/+4 |
| | |||||
* | Merge pull request #4393 from lioncash/unused5 | bunnei | 2020-07-25 | 1 | -4/+0 |
|\ | | | | | vk_rasterizer: Remove unused variable in Clear() | ||||
| * | vk_rasterizer: Remove unused variable in Clear() | Lioncash | 2020-07-21 | 1 | -4/+0 |
| | | | | | | | | | | The relevant values are already assigned further down in the lambda, so this can be removed entirely. | ||||
* | | Merge pull request #4394 from lioncash/unused6 | bunnei | 2020-07-24 | 2 | -4/+2 |
|\ \ | | | | | | | video_core: Remove unused variables | ||||
| * | | video_core: Remove unused variables | Lioncash | 2020-07-21 | 2 | -4/+2 |
| |/ | | | | | | | Silences several compiler warnings about unused variables. | ||||
* | | Merge pull request #4359 from ReinUsesLisp/clamp-shared | Rodrigo Locatti | 2020-07-21 | 2 | -3/+14 |
|\ \ | | | | | | | renderer_{opengl,vulkan}: Clamp shared memory to host's limit | ||||
| * | | renderer_{opengl,vulkan}: Clamp shared memory to host's limit | ReinUsesLisp | 2020-07-16 | 2 | -3/+14 |
| | | | | | | | | | | | | | | | This stops shaders from failing to build when the exceed host's shared memory size limit. An error is logged. | ||||
* | | | Merge pull request #4324 from ReinUsesLisp/formats | bunnei | 2020-07-21 | 4 | -88/+108 |
|\ \ \ | |_|/ |/| | | video_core: Fix, add and rename pixel formats | ||||
| * | | video_core: Rearrange pixel format names | ReinUsesLisp | 2020-07-13 | 3 | -99/+99 |
| | | | | | | | | | | | | | | | | | | Normalizes pixel format names to match Vulkan names. Previous to this commit pixel formats had no convention, leading to confusion and potential bugs. | ||||
| * | | video_core: Fix DXT4 and RGB565 | ReinUsesLisp | 2020-07-13 | 2 | -1/+4 |
| | | | |||||
| * | | video_core: Fix B5G6R5_UNORM render target format | ReinUsesLisp | 2020-07-13 | 1 | -0/+1 |
| | | | |||||
| * | | video_core: Fix B5G6R5U | ReinUsesLisp | 2020-07-13 | 1 | -1/+1 |
| | | | |||||
| * | | video_core: Implement RGBA32_SINT render target | ReinUsesLisp | 2020-07-13 | 2 | -0/+2 |
| | | | |||||
| * | | video_core: Implement RGBA32_SINT render target | ReinUsesLisp | 2020-07-13 | 2 | -0/+2 |
| | | | |||||
| * | | video_core: Implement RGBA16_SINT render target | ReinUsesLisp | 2020-07-13 | 2 | -0/+2 |
| | | | |||||
| * | | video_core: Implement RGBA8_SINT render target | ReinUsesLisp | 2020-07-13 | 2 | -0/+2 |
| | | | |||||
| * | | video_core: Implement RG32_SINT render target | ReinUsesLisp | 2020-07-13 | 2 | -0/+2 |
| | | | |||||
| * | | video_core: Implement RG8_SINT render target and fix RG8_UINT | ReinUsesLisp | 2020-07-13 | 2 | -0/+2 |
| | | | |||||
| * | | video_core: Implement R8_SINT render target | ReinUsesLisp | 2020-07-13 | 2 | -0/+2 |
| | | | |||||
| * | | video_core: Implement R8_SNORM render target | ReinUsesLisp | 2020-07-13 | 2 | -0/+2 |
| |/ | |||||
* | | Merge pull request #4364 from lioncash/desig5 | bunnei | 2020-07-18 | 19 | -664/+763 |
|\ \ | | | | | | | vulkan: Make use of designated initializers where applicable | ||||
| * | | wrapper: Make use of designated initializers where applicable | Lioncash | 2020-07-17 | 1 | -56/+64 |
| | | | |||||
| * | | vk_texture_cache: Make use of designated initializers where applicable | Lioncash | 2020-07-17 | 1 | -96/+135 |
| | | | |||||
| * | | vk_swapchain: Make use of designated initializers where applicable | Lioncash | 2020-07-17 | 1 | -43/+51 |
| | | | |||||
| * | | vk_stream_buffer: Make use of designated initializers where applicable | Lioncash | 2020-07-17 | 1 | -19/+16 |
| | | | |||||
| * | | vk_staging_buffer_pool: Make use of designated initializers where applicable | Lioncash | 2020-07-17 | 1 | -13/+12 |
| | | | |||||
| * | | vk_shader_util: Make use of designated initializers where applicable | Lioncash | 2020-07-17 | 1 | -7/+7 |
| | | | |||||
| * | | vk_scheduler: Make use of designated initializers where applicable | Lioncash | 2020-07-17 | 1 | -27/+30 |
| | | | |||||
| * | | vk_sampler_cache: Make use of designated initializers where applicable | Lioncash | 2020-07-17 | 1 | -24/+27 |
| | | | |||||
| * | | vk_resource_manager: Make use of designated initializers where applicable | Lioncash | 2020-07-17 | 1 | -15/+14 |
| | | | |||||
| * | | vk_renderpass_cache: Make use of designated initializers where applicable | Lioncash | 2020-07-17 | 1 | -59/+70 |
| | | | |||||
| * | | vk_rasterizer: Make use of designated initializers where applicable | Lioncash | 2020-07-17 | 1 | -41/+47 |
| | | | |||||
| * | | vk_query_cache: Make use of designated initializers where applicable | Lioncash | 2020-07-17 | 1 | -8/+8 |
| | | | |||||
| * | | vk_pipeline_cache: Make use of designated initializers where applicable | Lioncash | 2020-07-17 | 1 | -31/+35 |
| | | | |||||
| * | | vk_memory_manager: Make use of designated initializers where applicable | Lioncash | 2020-07-17 | 1 | -7/+6 |
| | | | |||||
| * | | vk_image: Make use of designated initializers where applicable | Lioncash | 2020-07-17 | 1 | -15/+23 |
| | | | |||||
| * | | vk_descriptor_pool: Make use of designated initializers where applicable | Lioncash | 2020-07-17 | 1 | -15/+18 |
| | | | |||||
| * | | vk_compute_pipeline: Make use of designated initializers where applicable | Lioncash | 2020-07-16 | 1 | -63/+68 |
| | | | |||||
| * | | vk_compute_pass: Make use of designated initializers where applicable | Lioncash | 2020-07-16 | 1 | -95/+99 |
| | | | | | | | | | | | | Note: Some barriers can't be converted over yet, as they ICE MSVC. | ||||
| * | | vk_buffer_cache: Make use of designated initializers where applicable | Lioncash | 2020-07-16 | 1 | -30/+33 |
| | | | | | | | | | | | | | | | Note: An array within CopyFrom() cannot be converted over yet, as it ICEs MSVC when converted over. | ||||
* | | | vk_device: Fix build error on old MSVC versions | ReinUsesLisp | 2020-07-18 | 1 | -3/+3 |
| | | | | | | | | | | | | | | | Designated initializers on old MSVC versions fail to build when they take the address of a constant. | ||||
* | | | Merge pull request #4322 from ReinUsesLisp/fix-dynstate | bunnei | 2020-07-17 | 1 | -0/+1 |
|\ \ \ | | | | | | | | | vk_state_tracker: Fix dirty flags for stencil_enable on VK_EXT_extended_dynamic_state | ||||
| * | | | vk_state_tracker: Fix dirty flags for stencil_enable on VK_EXT_extended_dynamic_state | ReinUsesLisp | 2020-07-13 | 1 | -0/+1 |
| | |/ | |/| | | | | | | | | | | Fixes a regression on any game using stencil on devices with VK_EXT_extended_dynamic_state. | ||||
* | | | vk_texture_cache: Amend mismatched access masks and indices in UploadBuffer | Lioncash | 2020-07-17 | 1 | -6/+4 |
| | | | | | | | | | | | | | | | Discovered while converting relevant parts of the codebase over to designated initializers. | ||||
* | | | vk_graphics_pipeline: Resolve narrowing warnings | Lioncash | 2020-07-17 | 1 | -2/+4 |
| |/ |/| | | | | | | | For whatever reason, VK_TRUE and VK_FALSE aren't defined as having a VkBool32 type, so we need to cast to it explicitly. | ||||
* | | Merge pull request #4333 from lioncash/desig3 | Rodrigo Locatti | 2020-07-16 | 1 | -198/+223 |
|\ \ | | | | | | | vk_graphics_pipeline: Make use of designated initializers where applicable | ||||
| * | | vk_graphics_pipeline: Make use of designated initializers where applicable | Lioncash | 2020-07-14 | 1 | -198/+223 |
| |/ | | | | | | | Avoids redundant variable name repetitions. | ||||
* | | Merge pull request #4332 from lioncash/vkdev | Rodrigo Locatti | 2020-07-16 | 1 | -124/+152 |
|\ \ | | | | | | | vk_device: Make use of designated initializers where applicable | ||||
| * | | vk_device: Make use of designated initializers where applicable | Lioncash | 2020-07-14 | 1 | -124/+152 |
| |/ | | | | | | | | | Avoids redundant repetitions of variable names, and allows assignment all in one statement. | ||||
* / | vk_blit_screen: Make use of designated initializers where applicable | Lioncash | 2020-07-13 | 1 | -334/+384 |
|/ | | | | | Now that we make use of C++20, we can use designated initializers to make things a little nicer to read. | ||||
* | vk_rasterizer: Pass <pSizes> to CmdBindVertexBuffers2EXT | ReinUsesLisp | 2020-07-10 | 1 | -6/+6 |
| | | | | | This has been fixed in Nvidia's public beta driver 451.74. The previous beta driver will be broken, people using these will have to update. | ||||
* | Merge pull request #4283 from lat9nq/fix-linux-nvidia-vulkan | Rodrigo Locatti | 2020-07-10 | 1 | -1/+1 |
|\ | | | | | vk_stream_buffer: Prevent Vulkan crash in Linux on recent NVIDIA driver | ||||
| * | vk_stream_buffer: set allocable_size to 9 MiB | lat9nq | 2020-07-10 | 1 | -1/+1 |
| | | | | | | | | This solves the crash on Linux systems running the current Linux Long Lived branch nVidia driver. | ||||
* | | configuration: implement per-game configurations (#4098) | lat9nq | 2020-07-10 | 1 | -1/+1 |
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Switch game settings to use a pointer In order to add full per-game settings, we need to be able to tell yuzu to switch to using either the global or game configuration. Using a pointer makes it easier to switch. * configuration: add new UI without changing existing funcitonality The new UI also adds General, System, Graphics, Advanced Graphics, and Audio tabs, but as yet they do nothing. This commit keeps yuzu to the same functionality as originally branched. * configuration: Rename files These weren't included in the last commit. Now they are. * configuration: setup global configuration checkbox Global config checkbox now enables/disables the appropriate tabs in the game properties dialog. The use global configuration setting is now saved to the config, defaulting to true. This also addresses some changes requested in the PR. * configuration: swap to per-game config memory for properties dialog Does not set memory going in-game. Swaps to game values when opening the properties dialog, then swaps back when closing it. Uses a `memcpy` to swap. Also implements saving config files, limited to certain groups of configurations so as to not risk setting unsafe configurations. * configuration: change config interfaces to use config-specific pointers When a game is booted, we need to be able to open the configuration dialogs without changing the settings pointer in the game's emualtion. A new pointer specific to just the configuration dialogs can be used to separate changes to just those config dialogs without affecting the emulation. * configuration: boot a game using per-game settings Swaps values where needed to boot a game. * configuration: user correct config during emulation Creates a new pointer specifically for modifying the configuration while emulation is in progress. Both the regular configuration dialog and the game properties dialog now use the pointer Settings::config_values to focus edits to the correct struct. * settings: split Settings::values into two different structs By splitting the settings into two mutually exclusive structs, it becomes easier, as a developer, to determine how to use the Settings structs after per-game configurations is merged. Other benefits include only duplicating the required settings in memory. * settings: move use_docked_mode to Controls group `use_docked_mode` is set in the input settings and cannot be accessed from the system settings. Grouping it with system settings causes it to be saved with per-game settings, which may make transferring configs more difficult later on, especially since docked mode cannot be set from within the game properties dialog. * configuration: Fix the other yuzu executables and a regression In main.cpp, we have to get the title ID before the ROM is loaded, else the renderer will reflect only the global settings and now the user's game specific settings. * settings: use a template to duplicate memory for each setting Replaces the type of each variable in the Settings::Values struct with a new class that allows basic data reading and writing. The new struct Settings::Setting duplicates the data in memory and can manage global overrides per each setting. * configuration: correct add-ons config and swap settings when apropriate Any add-ons interaction happens directly through the global values struct. Swapping bewteen structs now also includes copying the necessary global configs that cannot be changed nor saved in per-game settings. General and System config menus now update based on whether it is viewing the global or per-game settings. * settings: restore old values struct No longer needed with the Settings::Setting class template. * configuration: implement hierarchical game properties dialog This sets the apropriate global or local data in each setting. * clang format * clang format take 2 can the docker container save this? * address comments and style issues * config: read and write settings with global awareness Adds new functions to read and write settings while keeping the global state in focus. Files now generated per-game are much smaller since often they only need address the global state. * settings: restore global state when necessary Upon closing a game or the game properties dialog, we need to restore all global settings to the original global state so that we can properly open the configuration dialog or boot a different game. * configuration: guard setting values incorrectly This disables setting values while a game is running if the setting is overwritten by a per game setting. * config: don't write local settings in the global config Simple guards to prevent writing the wrong settings in the wrong files. * configuration: add comments, assume less, and clang format No longer assumes that a disabled UI element means the global state is turned off, instead opting to directly answer that question. Still however assumes a game is running if it is in that state. * configuration: fix a logic error Should not be negated * restore settings' global state regardless of accept/cancel Fixes loading a properties dialog and causing the global config dialog to show local settings. * fix more logic errors Fixed the frame limit would set the global setting from the game properties dialog. Also strengthened the Settings::Setting member variables and simplified the logic in config reading (ReadSettingGlobal). * fix another logic error In my efforts to guard RestoreGlobalState, I accidentally negated the IsPowered condition. * configure_audio: set toggle_stretched_audio to tristate * fixed custom rtc and rng seed overwriting the global value * clang format * rebased * clang format take 4 * address my own review Basically revert unintended changes * settings: literal instead of casting "No need to cast, use 1U instead" Thanks, Morph! Co-authored-by: Morph <39850852+Morph1984@users.noreply.github.com> * Revert "settings: literal instead of casting " This reverts commit 95e992a87c898f3e882ffdb415bb0ef9f80f613f. * main: fix status buttons reporting wrong settings after stop emulation * settings: Log UseDockedMode in the Controls group This should have happened when use_docked_mode was moved over to the controls group internally. This just reflects this in the log. * main: load settings if the file has a title id In other words, don't exit if the loader has trouble getting a title id. * use a zero * settings: initalize resolution factor with constructor instead of casting * Revert "settings: initalize resolution factor with constructor instead of casting" This reverts commit 54c35ecb46a29953842614620f9b7de1aa9d5dc8. * configure_graphics: guard device selector when Vulkan is global Prevents the user from editing the device selector if Vulkan is the global renderer backend. Also resets the vulkan_device variable when the users switches back-and-forth between global and Vulkan. * address reviewer concerns Changes function variables to const wherever they don't need to be changed. Sets Settings::Setting to final as it should not be inherited from. Sets ConfigurationShared::use_global_text to static. Co-Authored-By: VolcaEM <volcaem@users.noreply.github.com> * main: load per-game settings after LoadROM This prevents `Restart Emulation` from restoring the global settings *after* the per-game settings were applied. Thanks to BSoDGamingYT for finding this bug. * Revert "main: load per-game settings after LoadROM" This reverts commit 9d0d48c52d2dcf3bfb1806cc8fa7d5a271a8a804. * main: only restore global settings when necessary Loading the per-game settings cannot happen after the ROM is loaded, so we have to specify when to restore the global state. Again thanks to BSoD for finding the bug. * configuration_shared: address reviewer concerns except operator overrides Dropping operator override usage in next commit. Co-Authored-By: LC <lioncash@users.noreply.github.com> * settings: Drop operator overrides from Setting template Requires using GetValue and SetValue explicitly. Also reverts a change that broke title ID formatting in the game properties dialog. * complete rebase * configuration_shared: translate "Use global configuration" Uses ConfigurePerGame to do so, since its usage, at least as of now, corresponds with ConfigurationShared. * configure_per_game: address reviewer concern As far as I understand, it prevents the program from unnecessarily copying strings. Co-Authored-By: LC <lioncash@users.noreply.github.com> Co-authored-by: Morph <39850852+Morph1984@users.noreply.github.com> Co-authored-by: VolcaEM <volcaem@users.noreply.github.com> Co-authored-by: LC <lioncash@users.noreply.github.com> | ||||
* | Merge pull request #4150 from ReinUsesLisp/dynamic-state-impl | bunnei | 2020-07-07 | 13 | -275/+660 |
|\ | | | | | vulkan: Use VK_EXT_extended_dynamic_state when available | ||||
| * | vk_rasterizer: Use nullptr for <pSizes> in CmdBindVertexBuffers2EXT | ReinUsesLisp | 2020-06-27 | 1 | -6/+6 |
| | | | | | | | | Disable this temporarily. | ||||
| * | vk_pipeline_cache: Avoid hashing and comparing dynamic state when possible | ReinUsesLisp | 2020-06-27 | 6 | -23/+51 |
| | | | | | | | | | | | | With extended dynamic states, some bytes don't have to be collected from the pipeline key, hence we can avoid hashing and comparing them on lookups. | ||||
| * | vulkan/fixed_pipeline_state: Move state out of individual structures | ReinUsesLisp | 2020-06-27 | 4 | -121/+84 |
| | | |||||
| * | vk_rasterizer: Use VK_EXT_extended_dynamic_state | ReinUsesLisp | 2020-06-27 | 5 | -46/+356 |
| | | |||||
| * | renderer_vulkan/wrapper: Add VK_EXT_extended_dynamic_state functions | ReinUsesLisp | 2020-06-27 | 2 | -0/+64 |
| | | |||||
| * | fixed_pipeline_state: Add requirements for VK_EXT_extended_dynamic_state | ReinUsesLisp | 2020-06-27 | 7 | -155/+143 |
| | | | | | | | | | | | | | | This moves dynamic state present in VK_EXT_extended_dynamic_state to a separate structure in FixedPipelineState. This is structure is at the bottom allowing us to hash and memcmp only when the extension is not supported. | ||||
| * | vk_device: Enable VK_EXT_extended_dynamic_state when available | ReinUsesLisp | 2020-06-27 | 2 | -0/+32 |
| | | |||||
* | | Merge pull request #4175 from ReinUsesLisp/read-buffer | bunnei | 2020-07-03 | 2 | -6/+6 |
|\ \ | | | | | | | gl_buffer_cache: Copy to buffers created as STREAM_READ before downloading | ||||
| * | | gl_buffer_cache: Copy to buffers created as STREAM_READ before downloading | ReinUsesLisp | 2020-06-26 | 2 | -6/+6 |
| | | | | | | | | | | | | | | | | | | | | | | | | After marking buffers as resident, Nvidia's driver seems to take a slow path. To workaround this issue, copy to a STREAM_READ buffer and then call GetNamedBufferSubData on it. This is a temporary solution until we have asynchronous flushing. | ||||
* | | | Merge pull request #4191 from Morph1984/vertex-formats | Rodrigo Locatti | 2020-06-30 | 1 | -75/+69 |
|\ \ \ | | | | | | | | | maxwell_to_gl/vk: Reorder vertex formats | ||||
| * | | | maxwell_to_vk: Reorder vertex formats and add A2B10G10R10 for all types except float | Morph | 2020-06-28 | 1 | -75/+69 |
| | |/ | |/| | |||||
* | | | Merge pull request #4140 from ReinUsesLisp/validation-layers | Rodrigo Locatti | 2020-06-29 | 3 | -5/+43 |
|\ \ \ | | | | | | | | | renderer_vulkan: Update validation layer name and test before enabling | ||||
| * | | | renderer_vulkan: Update validation layer name and test before enabling | ReinUsesLisp | 2020-06-22 | 3 | -5/+43 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Update validation layer string to VK_LAYER_KHRONOS_validation. While we are at it, properly check for available validation layers before enabling them. | ||||
* | | | | General: Tune the priority of main emulation threads so they have higher priority than less important helper threads. | Fernando Sahmkow | 2020-06-27 | 1 | -0/+2 |
| |/ / |/| | | |||||
* | | | Merge pull request #4111 from ReinUsesLisp/preserve-contents-vk | bunnei | 2020-06-27 | 2 | -7/+58 |
|\ \ \ | |_|/ |/| | | vk_rasterizer: Don't preserve contents on full screen clears | ||||
| * | | vk_rasterizer: Don't preserve contents on full screen clears | ReinUsesLisp | 2020-06-18 | 2 | -7/+58 |
| | | | | | | | | | | | | | | | | | | There's no need to load contents from the CPU when a clear resets all the contents of the underlying memory. This is already implemented on OpenGL and the texture cache. | ||||
* | | | buffer_cache: Use buffer methods instead of cache virtual methods | ReinUsesLisp | 2020-06-24 | 2 | -54/+58 |
| | | | |||||
* | | | gl_buffer_cache: Mark buffers as resident | ReinUsesLisp | 2020-06-24 | 4 | -18/+29 |
| | | | | | | | | | | | | | | | | | | Make stream buffer and cached buffers as resident and query their address. This allows us to use GPU addresses for several proprietary Nvidia extensions. | ||||
* | | | Merge pull request #4110 from ReinUsesLisp/direct-upload-sets | Rodrigo Locatti | 2020-06-22 | 3 | -42/+30 |
|\ \ \ | |_|/ |/| | | vk_update_descriptor: Upload descriptor sets data directly | ||||
| * | | vk_update_descriptor: Upload descriptor sets data directly | ReinUsesLisp | 2020-06-18 | 3 | -42/+30 |
| | | | | | | | | | | | | | | | Instead of copying to a temporary payload before sending the update task to the worker thread, insert elements to the payload directly. | ||||
* | | | Merge pull request #4126 from lioncash/noexcept | bunnei | 2020-06-22 | 2 | -3/+2 |
|\ \ \ | | | | | | | | | vulkan/wrapper: Remove noexcept from GetSurfaceCapabilitiesKHR() | ||||
| * | | | vulkan/wrapper: Remove noexcept from GetSurfaceCapabilitiesKHR() | Lioncash | 2020-06-20 | 2 | -3/+2 |
| | |/ | |/| | | | | | | | | | | | | | | | | Check() can throw an exception if the Vulkan result isn't successful. We remove the check so that std::terminate isn't outright called and allows for better debugging (should it ever actually fail). | ||||
* | | | Merge pull request #4099 from MerryMage/macOS-build | bunnei | 2020-06-20 | 2 | -2/+4 |
|\ \ \ | |/ / |/| | | Fix compilation on macOS | ||||
| * | | vk_rasterizer: BindTransformFeedbackBuffersEXT accepts a size of type VkDeviceSize | MerryMage | 2020-06-18 | 1 | -1/+1 |
| | | | |||||
| * | | renderer_vulkan: Fix macOS GetBundleDirectory reference | MerryMage | 2020-06-18 | 1 | -1/+3 |
| |/ | |||||
* | | vk_sampler_cache: Emulate GL_LINEAR/NEAREST minification filters | Morph | 2020-06-18 | 1 | -2/+4 |
| | | | | | | | | Emulate GL_LINEAR/NEAREST minification filters using minLod = 0 and maxLod = 0.25 during sampler creation | ||||
* | | maxwell_to_vk: Reorder filter cases and correct mipmap_filter=None | Morph | 2020-06-18 | 1 | -17/+15 |
|/ | | | | | | maxwell_to_vk: Reorder filtering modes to start with None, then Nearest, then Linear. maxwell_to_vk: Logs filter modes under UNREACHABLE_MSG instead of UNIMPLEMENTED_MSG, since any unknown filter modes are invalid and not unimplemented. maxwell_to_vk: Return VK_SAMPLER_MIPMAP_MODE_NEAREST instead of VK_SAMPLER_MIPMAP_MODE_LINEAR when mipmap_filter is None with the description from the VkSamplerCreateInfo(3) man page. | ||||
* | Merge pull request #4066 from ReinUsesLisp/shared-ptr-buf | Rodrigo Locatti | 2020-06-16 | 3 | -24/+16 |
|\ | | | | | buffer_cache: Avoid passing references of shared pointers and misc style changes | ||||
| * | buffer_cache: Avoid passing references of shared pointers and misc style changes | ReinUsesLisp | 2020-06-09 | 3 | -24/+16 |
| | | | | | | | | | | | | | | | | | | Instead of using as template argument a shared pointer, use the underlying type and manage shared pointers explicitly. This can make removing shared pointers from the cache more easy. While we are at it, make some misc style changes and general improvements (like insert_or_assign instead of operator[] + operator=). | ||||
* | | Merge pull request #4049 from ReinUsesLisp/separate-samplers | bunnei | 2020-06-13 | 1 | -0/+11 |
|\ \ | | | | | | | shader/texture: Join separate image and sampler pairs offline | ||||
| * | | shader/texture: Join separate image and sampler pairs offline | ReinUsesLisp | 2020-06-05 | 1 | -0/+11 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Games using D3D idioms can join images and samplers when a shader executes, instead of baking them into a combined sampler image. This is also possible on Vulkan. One approach to this solution would be to use separate samplers on Vulkan and leave this unimplemented on OpenGL, but we can't do this because there's no consistent way of determining which constant buffer holds a sampler and which one an image. We could in theory find the first bit and if it's in the TIC area, it's an image; but this falls apart when an image or sampler handle use an index of zero. The used approach is to track for a LOP.OR operation (this is done at an IR level, not at an ISA level), track again the constant buffers used as source and store this pair. Then, outside of shader execution, join the sample and image pair with a bitwise or operation. This approach won't work on games that truly use separate samplers in a meaningful way. For example, pooling textures in a 2D array and determining at runtime what sampler to use. This invalidates OpenGL's disk shader cache :) - Used mostly by D3D ports to Switch | ||||
* | | | Merge pull request #3986 from ReinUsesLisp/shader-cache | bunnei | 2020-06-13 | 5 | -60/+55 |
|\ \ \ | | | | | | | | | shader_cache: Implement a generic runtime shader cache | ||||
| * | | | rasterizer_cache: Remove files and includes | ReinUsesLisp | 2020-06-07 | 2 | -5/+3 |
| | | | | | | | | | | | | | | | | | | | | The rasterizer cache is no longer used. Each cache has its own generic implementation optimized for the cached data. | ||||
| * | | | vk_pipeline_cache: Use generic shader cache | ReinUsesLisp | 2020-06-07 | 4 | -55/+52 |
| | | | | | | | | | | | | | | | | Trivial port the generic shader cache to Vulkan. | ||||
* | | | | texture_cache: Implement rendering to 3D textures | ReinUsesLisp | 2020-06-08 | 3 | -39/+79 |
| |_|/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This allows rendering to 3D textures with more than one slice. Applications are allowed to render to more than one slice of a texture using gl_Layer from a VTG shader. This also requires reworking how 3D texture collisions are handled, for now, this commit allows rendering to slices but not to miplevels. When a render target attempts to write to a mipmap, we fallback to the previous implementation (copying or flushing as needed). - Fixes color correction 3D textures on UE4 games (rainbow effects). - Allows Xenoblade games to render to 3D textures directly. | ||||
* | | | Merge pull request #4034 from ReinUsesLisp/storage-texels | Rodrigo Locatti | 2020-06-07 | 8 | -91/+143 |
|\ \ \ | |/ / |/| | | vk_rasterizer: Implement storage texels and atomic image operations | ||||
| * | | vk_shader_decompiler: Implement atomic image operations | ReinUsesLisp | 2020-06-02 | 1 | -40/+24 |
| | | | | | | | | | | | | | | | Implement atomic operations on images. On GLSL these are atomicImage* functions (e.g. atomicImageAdd). | ||||
| * | | vk_rasterizer: Implement storage texels | ReinUsesLisp | 2020-06-02 | 8 | -52/+120 |
| | | | | | | | | | | | | | | | | | | This is the equivalent of an image buffer on OpenGL. - Used by Octopath Traveler | ||||
* | | | Merge pull request #4013 from ReinUsesLisp/skip-no-xfb | bunnei | 2020-06-05 | 1 | -0/+7 |
|\ \ \ | |_|/ |/| | | vk_rasterizer: Skip transform feedbacks when extension is unavailable | ||||
| * | | vk_rasterizer: Skip transform feedbacks when extension is unavailable | ReinUsesLisp | 2020-05-29 | 1 | -0/+7 |
| | | | | | | | | | | | | | | | Avoids calling transform feedback procedures when VK_EXT_transform_feedback is not available. | ||||
* | | | maxwell_to_vk: Add R16UI image format | ReinUsesLisp | 2020-06-02 | 2 | -71/+74 |
| |/ |/| | | | | | - Used by Octopath Traveler | ||||
* | | Merge pull request #3996 from ReinUsesLisp/front-faces | bunnei | 2020-06-01 | 1 | -2/+1 |
|\ \ | | | | | | | fixed_pipeline_state,gl_rasterizer: Swap negative viewport checks for front faces | ||||
| * | | fixed_pipeline_state: Remove unnecessary check for front faces flip | ReinUsesLisp | 2020-05-26 | 1 | -2/+1 |
| | | | | | | | | | | | | | | | | | | The check to flip faces when viewports are negative were a left over from the old OpenGL code. This is not required on Vulkan where we have negative viewports. | ||||
* | | | Merge pull request #3930 from ReinUsesLisp/animal-borders | bunnei | 2020-06-01 | 4 | -17/+26 |
|\ \ \ | | | | | | | | | vk_rasterizer: Implement constant attributes | ||||
| * | | | vk_rasterizer: Implement constant attributes | ReinUsesLisp | 2020-05-13 | 4 | -13/+26 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Constant attributes (in OpenGL known disabled attributes) are not supported on Vulkan, even with extensions. To emulate this behavior we return zero on reads from disabled vertex attributes in shader code. This has no caching cost because attribute formats are not dynamic state on Vulkan and we have to store it in the pipeline cache anyway. - Fixes Animal Crossing: New Horizons terrain borders | ||||
| * | | | vk_rasterizer: Remove buffer check in attribute selection | ReinUsesLisp | 2020-05-13 | 1 | -4/+0 |
| | | | | | | | | | | | | | | | | | | | | | | | | This was a left over from OpenGL when disabled buffers where not properly emulated. We no longer have to assert this as it is checked in vertex buffer initialization. | ||||
* | | | | Merge pull request #3982 from ReinUsesLisp/membar-cts | bunnei | 2020-05-30 | 1 | -3/+4 |
|\ \ \ \ | |_|_|/ |/| | | | shader/other: Implement MEMBAR.CTS | ||||
| * | | | shader/other: Implement MEMBAR.CTS | ReinUsesLisp | 2020-05-27 | 1 | -3/+4 |
| | | | | | | | | | | | | | | | | | | | | This silences an assertion we were hitting and uses workgroup memory barriers when the game requests it. | ||||
* | | | | Merge pull request #3991 from ReinUsesLisp/depth-sampling | bunnei | 2020-05-29 | 1 | -16/+13 |
|\ \ \ \ | | | | | | | | | | | texture_cache: Implement depth stencil texture swizzles | ||||
| * | | | | texture_cache: Implement depth stencil texture swizzles | ReinUsesLisp | 2020-05-26 | 1 | -16/+13 |
| | |_|/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | Stop ignoring image swizzles on depth and stencil images. This doesn't fix a known issue on Xenoblade Chronicles 2 where an OpenGL texture changes swizzles twice before being used. A proper fix would be having a small texture view cache for this like we do on Vulkan. | ||||
* | | | | Merge pull request #3961 from Morph1984/bgra8_srgb | bunnei | 2020-05-27 | 2 | -2/+3 |
|\ \ \ \ | |_|/ / |/| | | | maxwell_to_vk: Add format B8G8R8A8_SRGB and add Attachable capability for B8G8R8A8_UNORM | ||||
| * | | | maxwell_to_vk: Add format B8G8R8A8_SRGB | Morph | 2020-05-18 | 2 | -2/+3 |
| | | | | | | | | | | | | | | | | | | | | Add format B8G8R8A8_SRGB and add Attachable capability for B8G8R8A8_UNORM Used by Bravely Default II | ||||
* | | | | Merge pull request #3981 from ReinUsesLisp/bar | bunnei | 2020-05-26 | 1 | -0/+17 |
|\ \ \ \ | |_|/ / |/| | | | shader/other: Implement BAR.SYNC 0x0 | ||||
| * | | | shader/other: Implement BAR.SYNC 0x0 | ReinUsesLisp | 2020-05-22 | 1 | -0/+17 |
| |/ / | | | | | | | | | | | | | Trivially implement this particular case of BAR. Unless games use OpenCL or CUDA barriers, we shouldn't hit any other case here. | ||||
* | | | Merge pull request #3978 from ReinUsesLisp/write-rz | bunnei | 2020-05-26 | 1 | -3/+4 |
|\ \ \ | | | | | | | | | shader_decompiler: Visit source nodes even when they assign to RZ | ||||
| * | | | shader_decompiler: Visit source nodes even when they assign to RZ | ReinUsesLisp | 2020-05-22 | 1 | -1/+3 |
| | | | | | | | | | | | | | | | | | | | | | | | | Some operations like atomicMin were ignored because they returned were being stored to RZ. This operations have a side effect and it was being ignored. | ||||
| * | | | vk_shader_decompiler: Don't assert for void returns | ReinUsesLisp | 2020-05-22 | 1 | -2/+1 |
| |/ / | | | | | | | | | | | | | Atomic instructions can be used without returning anything and this is valid code. Remove the assert. | ||||
* | | | Merge pull request #3905 from FernandoS27/vulkan-fix | bunnei | 2020-05-24 | 2 | -4/+3 |
|\ \ \ | | | | | | | | | Correct a series of crashes and intructions on Async GPU and Vulkan Pipeline | ||||
| * | | | VkPipelineCache: Use a null shader on invalid address. | Fernando Sahmkow | 2020-05-10 | 1 | -2/+1 |
| | | | | |||||
| * | | | VideoCore: Use SyncGuestMemory mechanism for Shader/Pipeline Cache invalidation. | Fernando Sahmkow | 2020-05-10 | 1 | -2/+2 |
| | | | | |||||
* | | | | Merge pull request #3979 from ReinUsesLisp/thread-group | bunnei | 2020-05-24 | 1 | -0/+23 |
|\ \ \ \ | | | | | | | | | | | shader/other: Implement thread comparisons (NV_shader_thread_group) | ||||
| * | | | | shader/other: Implement thread comparisons (NV_shader_thread_group) | ReinUsesLisp | 2020-05-22 | 1 | -0/+23 |
| | |/ / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Hardware S2R special registers match gl_Thread*MaskNV. We can trivially implement these using Nvidia's extension on OpenGL or naively stubbing them with the ARB instructions to match. This might cause issues if the host device warp size doesn't match Nvidia's. That said, this is unlikely on proper shaders. Refer to the attached url for more documentation about these flags. https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_thread_group.txt | ||||
* / | | | buffer_cache: Use boost::intrusive::set for caching | ReinUsesLisp | 2020-05-21 | 2 | -0/+2 |
|/ / / | | | | | | | | | | | | | | | | | | | | | | Instead of using boost::icl::interval_map for caching, use boost::intrusive::set. interval_map is intended as a container where the keys can overlap with one another; we don't need this for caching buffers and a std::set-like data structure that allows us to search with lower_bound is enough. | ||||
* | | | vk_rasterizer: Match OpenGL's FlushAndInvalidate behavior | ReinUsesLisp | 2020-05-16 | 1 | -1/+3 |
| | | | | | | | | | | | | | | | Match OpenGL's behavior. This can fix or simplify bisecting issues on Vulkan. | ||||
* | | | Merge pull request #3899 from ReinUsesLisp/float-comparisons | bunnei | 2020-05-13 | 1 | -1/+26 |
|\ \ \ | |_|/ |/| | | shader_ir: Add separate instructions for ordered and unordered comparisons and fix NE on GLSL | ||||
| * | | shader_ir: Separate float-point comparisons in ordered and unordered | ReinUsesLisp | 2020-05-09 | 1 | -1/+26 |
| | | | | | | | | | | | | | | | This allows us to use native SPIR-V instructions without having to manually check for NAN. | ||||
* | | | Merge pull request #3816 from ReinUsesLisp/vk-rasterizer-enable | bunnei | 2020-05-12 | 3 | -1/+3 |
|\ \ \ | |_|/ |/| | | vk_graphics_pipeline: Implement rasterizer_enable on Vulkan | ||||
| * | | vk_graphics_pipeline: Implement rasterizer_enable on Vulkan | ReinUsesLisp | 2020-05-02 | 3 | -1/+3 |
| | | | | | | | | | | | | | | | We can simply enable rasterizer discard matching the current pipeline key. | ||||
* | | | Merge pull request #3839 from Morph1984/r8g8ui | Rodrigo Locatti | 2020-05-09 | 2 | -0/+2 |
|\ \ \ | | | | | | | | | texture: Implement R8G8UI | ||||
| * | | | texture: Implement R8G8UI | Morph | 2020-04-30 | 2 | -0/+2 |
| | | | | | | | | | | | | | | | | - Used by The Walking Dead: The Final Season | ||||
* | | | | Merge pull request #3842 from makigumo/maxwell_to_vk_vertexattribute_signed_int | bunnei | 2020-05-09 | 1 | -2/+14 |
|\ \ \ \ | | | | | | | | | | | maxwell_to_vk: implement missing signed int formats | ||||
| * | | | | maxwell_to_vk: implement missing signed int formats | Dan | 2020-04-30 | 1 | -2/+14 |
| | | | | | |||||
* | | | | | Merge pull request #3885 from ReinUsesLisp/viewport-swizzles | bunnei | 2020-05-08 | 7 | -0/+83 |
|\ \ \ \ \ | |_|_|_|/ |/| | | | | video_core: Implement viewport swizzles with NV_viewport_swizzle | ||||
| * | | | | vk_graphics_pipeline: Implement viewport swizzles with NV_viewport_swizzle | ReinUsesLisp | 2020-05-04 | 7 | -0/+83 |
| | | | | | |||||
* | | | | | vk_sampler_cache: Use VK_EXT_custom_border_color when available | ReinUsesLisp | 2020-05-05 | 3 | -2/+44 |
|/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This should fix grass interactions on Breath of the Wild on Vulkan. It is currently untested against validation layers. Nvidia's Windows 443.09 beta driver or Linux 440.66.12 is required for now. | ||||
* | | | | Merge pull request #3808 from ReinUsesLisp/wait-for-idle | bunnei | 2020-05-03 | 5 | -3/+34 |
|\ \ \ \ | | | | | | | | | | | {maxwell_3d,buffer_cache}: Implement memory barriers using 3D registers | ||||
| * | | | | {maxwell_3d,buffer_cache}: Implement memory barriers using 3D registers | ReinUsesLisp | 2020-04-28 | 5 | -3/+34 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Drop MemoryBarrier from the buffer cache and use Maxwell3D's register WaitForIdle. To implement this on OpenGL we just call glMemoryBarrier with the necessary bits. Vulkan lacks this synchronization primitive, so we set an event and immediately wait for it. This is not a pretty solution, but it's what Vulkan can do without submitting the current command buffer to the queue (which ends up being more expensive on the CPU). | ||||
* | | | | | Merge pull request #3732 from lioncash/header | bunnei | 2020-05-02 | 30 | -58/+3 |
|\ \ \ \ \ | | | | | | | | | | | | | vulkan: Remove unnecessary includes | ||||
| * | | | | | vulkan: Remove unnecessary includes | Lioncash | 2020-04-29 | 30 | -58/+3 |
| | |_|/ / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Reduces some header churn and reduces rebuilds when some header internals change. While we're at it we can also resolve a missing include in buffer_cache. | ||||
* | | | | | Merge pull request #3809 from ReinUsesLisp/empty-index | bunnei | 2020-05-02 | 1 | -0/+3 |
|\ \ \ \ \ | |_|_|_|/ |/| | | | | vk_rasterizer: Skip index buffer setup when vertices are zero | ||||
| * | | | | vk_rasterizer: Skip index buffer setup when vertices are zero | ReinUsesLisp | 2020-04-28 | 1 | -0/+3 |
| | |/ / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Xenoblade 2 invokes a draw call with zero vertices. This is likely due to indirect drawing (glDrawArraysIndirect). This causes a crash in the staging buffer pool when trying to create a buffer with a size of zero. To workaround this, skip index buffer setup entirely when the number of indices is zero. | ||||
* | | | | Merge pull request #3693 from ReinUsesLisp/clean-samplers | bunnei | 2020-05-02 | 3 | -45/+44 |
|\ \ \ \ | |_|_|/ |/| | | | shader/texture: Support multiple unknown sampler properties | ||||
| * | | | shader_ir: Turn classes into data structures | ReinUsesLisp | 2020-04-23 | 3 | -45/+44 |
| | | | | |||||
* | | | | Merge pull request #3807 from ReinUsesLisp/fix-depth-clamp | bunnei | 2020-04-30 | 3 | -3/+3 |
|\ \ \ \ | | | | | | | | | | | maxwell_3d: Fix depth clamping register | ||||
| * | | | | maxwell_3d: Fix depth clamping register | ReinUsesLisp | 2020-04-28 | 3 | -3/+3 |
| | |/ / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Using deko3d as reference: https://github.com/devkitPro/deko3d/blob/4e47ba0013552e592a86ab7a2510d1e7dadf236a/source/maxwell/gpu_3d_state.cpp#L42 We were using bits 3 and 4 to determine depth clamping, but these are the same both enabled and disabled: state->depthClampEnable ? 0x101A : 0x181D The same happens on Nvidia's OpenGL driver, where they do something like this (default capabilities, GL 4.5 compatibility): (state & DEPTH_CLAMP) != 0 ? 0x201a : 0x281c There's always a difference between the first bits in this register, but bit 11 is consistently disabled on both deko3d/NVN and OpenGL. This commit changes yuzu's behaviour to use bit 11 to determine depth clamping. - Fixes depth issues on Super Mario Odyssey's intro. | ||||
* | | | | Merge pull request #3799 from ReinUsesLisp/iadd-cc | bunnei | 2020-04-30 | 1 | -0/+11 |
|\ \ \ \ | | | | | | | | | | | shader: Implement P2R CC, IADD Rd.CC and IADD.X | ||||
| * | | | | shader/arithmetic_integer: Implement CC for IADD | ReinUsesLisp | 2020-04-26 | 1 | -0/+11 |
| | | | | | |||||
* | | | | | Merge pull request #3805 from ReinUsesLisp/preserve-contents | bunnei | 2020-04-30 | 1 | -2/+2 |
|\ \ \ \ \ | |_|_|_|/ |/| | | | | texture_cache: Reintroduce preserve_contents accurately | ||||
| * | | | | texture_cache: Reintroduce preserve_contents accurately | ReinUsesLisp | 2020-04-27 | 1 | -2/+2 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 94b0e2e5dae4e0bd0021ac2d8fe1ff904a93ee69. preserve_contents proved to be a meaningful optimization. This commit reintroduces it but properly implemented on OpenGL. We have to make sure the clear removes all the previous contents of the image. It's not currently implemented on Vulkan because we can do smart things there that's preferred to be introduced in a separate commit. | ||||
* | | | | | Merge pull request #3784 from ReinUsesLisp/shader-memory-util | bunnei | 2020-04-28 | 2 | -63/+14 |
|\ \ \ \ \ | |_|_|/ / |/| | | | | shader/memory_util: Deduplicate code | ||||
| * | | | | shader/memory_util: Deduplicate code | ReinUsesLisp | 2020-04-26 | 2 | -63/+14 |
| | |_|/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | Deduplicate code shared between vk_pipeline_cache and gl_shader_cache as well as shader decoder code. While we are at it, fix a bug in gl_shader_cache where compute shaders had an start offset of a stage shader. | ||||
* | | | | Merge pull request #3766 from ReinUsesLisp/renderpass-cache-key | Fernando Sahmkow | 2020-04-27 | 8 | -126/+129 |
|\ \ \ \ | | | | | | | | | | | vk_renderpass_cache: Pack renderpass cache key and unify keys | ||||
| * | | | | vk_rasterizer: Pack texceptions and color formats on invalid formats | ReinUsesLisp | 2020-04-25 | 2 | -5/+19 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Sometimes for unknown reasons NVN games can bind a render target format of 0. This may be a yuzu bug. With the commits before this the formats were specified without being "packed", assuming all formats and texceptions will be written like in the color_attachments vector. To address this issue, iterate all render targets and pack them as they are valid. This way they will match color_attachments. - Fixes validation errors and graphical issues on Breath of the Wild. | ||||
| * | | | | vk_rasterizer: Fix framebuffer creation validation errors | ReinUsesLisp | 2020-04-23 | 1 | -2/+4 |
| | | | | | | | | | | | | | | | | | | | | Framebuffer creation was ignoring the number of color attachments. | ||||
| * | | | | vk_pipeline_cache: Unify pipeline cache keys into a single operation | ReinUsesLisp | 2020-04-23 | 5 | -47/+59 |
| | | | | | | | | | | | | | | | | | | | | | | | | | This allows us to call Common::CityHash and std::memcmp only once for GraphicsPipelineCacheKey. While we are at it, do the same for compute. | ||||
| * | | | | vk_renderpass_cache: Pack renderpass cache key to 12 bytes | ReinUsesLisp | 2020-04-23 | 4 | -84/+59 |
| |/ / / | |||||
* | | | | Merge pull request #3756 from ReinUsesLisp/integrated-devices | Fernando Sahmkow | 2020-04-27 | 5 | -35/+6 |
|\ \ \ \ | |_|/ / |/| | | | vk_memory_manager: Remove unified memory model flag | ||||
| * | | | vk_memory_manager: Remove unified memory model flag | ReinUsesLisp | 2020-04-22 | 5 | -35/+6 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | All drivers (even Intel) seem to have a device local memory type that is not host visible. Remove this flag so all devices follow the same path. This fixes a crash when trying to map to host device local memory on integrated devices. | ||||
* | | | | Merge pull request #3753 from ReinUsesLisp/ac-vulkan | Rodrigo Locatti | 2020-04-26 | 3 | -7/+43 |
|\ \ \ \ | |_|_|/ |/| | | | {gl,vk}_rasterizer: Add lazy default buffer maker and use it for empty buffers | ||||
| * | | | vk_rasterizer: Add lazy default buffer maker and use it for empty buffers | ReinUsesLisp | 2020-04-22 | 3 | -4/+40 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Introduce a default buffer getter that lazily constructs an empty buffer. This is intended to match OpenGL's buffer 0. Use this for disabled vertex and uniform buffers. While we are at it, include vertex buffer usages for staging buffers to silence validation errors. | ||||
| * | | | gl_rasterizer: Fix buffers without size | ReinUsesLisp | 2020-04-22 | 1 | -3/+3 |
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On NVN buffers can be enabled but have no size. According to deko3d and the behavior we see in Animal Crossing: New Horizons these buffers get the special address of 0x1000 and limit themselves to 0xfff. Implement buffers without a size by binding a null buffer to OpenGL without a side. https://github.com/devkitPro/deko3d/blob/1d1930beea093b5a663419e93b0649719a3ca5da/source/maxwell/gpu_3d_vbo.cpp#L62-L63 | ||||
* | | | Merge pull request #3721 from ReinUsesLisp/sort-devices | bunnei | 2020-04-25 | 1 | -1/+20 |
|\ \ \ | | | | | | | | | vulkan/wrapper: Sort physical devices | ||||
| * | | | vulkan/wrapper: Sort physical devices | ReinUsesLisp | 2020-04-19 | 1 | -1/+20 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Sort discrete GPUs over the rest, Nvidia over AMD, AMD over Intel, Intel over the rest. This gives us a somewhat consistent order when Optimus is removed (renderdoc does this when it's attached). This can break the configuration of users with an Intel GPU that manually remove Optimus on yuzu. That said, it's a very unlikely to happen. | ||||
* | | | | Fix -Werror=conversion error. | Markus Wick | 2020-04-24 | 1 | -1/+1 |
| |_|/ |/| | | |||||
* | | | Merge pull request #3677 from FernandoS27/better-sync | bunnei | 2020-04-23 | 8 | -5/+290 |
|\ \ \ | | | | | | | | | Introduce Predictive Flushing and Improve ASYNC GPU | ||||
| * | | | Async GPU: Correct flushing behavior to be similar to old async GPU behavior. | Fernando Sahmkow | 2020-04-22 | 1 | -0/+4 |
| | | | | |||||
| * | | | ShaderCache/PipelineCache: Cache null shaders. | Fernando Sahmkow | 2020-04-22 | 2 | -4/+15 |
| | | | | |||||
| * | | | Address Feedback. | Fernando Sahmkow | 2020-04-22 | 3 | -3/+3 |
| | | | | |||||
| * | | | vk_fence_manager: Initial implementation | ReinUsesLisp | 2020-04-22 | 6 | -12/+219 |
| | | | | |||||
| * | | | OpenGL: Guarantee writes to Buffers. | Fernando Sahmkow | 2020-04-22 | 1 | -2/+0 |
| | | | | |||||
| * | | | GPU: Implement Flush Requests for Async mode. | Fernando Sahmkow | 2020-04-22 | 1 | -0/+4 |
| | | | | |||||
| * | | | FenceManager: Manage syncpoints and rename fences to semaphores. | Fernando Sahmkow | 2020-04-22 | 2 | -3/+16 |
| | | | | |||||
| * | | | Rasterizer: Document SignalFence & ReleaseFences and setup skeletons on Vulkan. | Fernando Sahmkow | 2020-04-22 | 2 | -0/+27 |
| | | | | |||||
| * | | | ThreadManager: Sync async reads on accurate gpu. | Fernando Sahmkow | 2020-04-22 | 2 | -0/+5 |
| | | | | |||||
| * | | | BufferCache: Implement OnCPUWrite and SyncGuestHost | Fernando Sahmkow | 2020-04-22 | 1 | -2/+2 |
| | | | | |||||
| * | | | GPU: Refactor synchronization on Async GPU | Fernando Sahmkow | 2020-04-22 | 2 | -0/+16 |
| | |/ | |/| | |||||
* | | | vk_pipeline_cache: Fix unintentional memcpy into optional | ReinUsesLisp | 2020-04-23 | 1 | -2/+4 |
| | | | | | | | | | | | | | | | | | | | | | | | | The intention behind this was to assign a float to from an uint32_t, but it was unintentionally being copied directly into the std::optional. Copy to a temporary and assign that temporary to std::optional. This can be replaced with std::bit_cast<float> once we are in C++20. | ||||
* | | | Merge pull request #3653 from ReinUsesLisp/nsight-aftermath | Fernando Sahmkow | 2020-04-22 | 11 | -74/+373 |
|\ \ \ | |/ / |/| | | renderer_vulkan: Integrate Nvidia Nsight Aftermath on Windows | ||||
| * | | renderer_vulkan: Integrate Nvidia Nsight Aftermath on Windows | ReinUsesLisp | 2020-04-14 | 8 | -19/+344 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Adds optional support for Nsight Aftermath. It is enabled through ENABLE_NSIGHT_AFTERMATH in cmake. A path to the SDK has to be provided by the environment variable NSIGHT_AFTERMATH_SDK. Nsight Aftermath allows an application to generate "minidumps" of the GPU state when a device loss happens. By analysing these on Nsight we can know what a game was doing and why it triggered a device loss. The dump is generated inside %APPDATA%\yuzu\log\gpucrash and this directory is deleted every time a new instance is initialized with Nsight enabled. To enable it on yuzu there has a to be a driver and device capable of running Nsight Aftermath on Vulkan. That means only Turing based GPUs on the latest stable driver, beta drivers won't work for now. It is manually enabled in Configuration>Debug>Enable Graphics Debugging because when using all debugging capabilities there is a runtime cost. | ||||
| * | | renderer_vulkan: Remove Nvidia checkpoints | ReinUsesLisp | 2020-04-13 | 4 | -34/+0 |
| | | | |||||
| * | | renderer_vulkan: Catch device losses in more places | ReinUsesLisp | 2020-04-13 | 3 | -21/+29 |
| | | | |||||
* | | | Merge pull request #3718 from ReinUsesLisp/better-pipeline-state | Rodrigo Locatti | 2020-04-21 | 5 | -478/+530 |
|\ \ \ | | | | | | | | | fixed_pipeline_state: Pack structure, use memcmp and CityHash on it | ||||
| * | | | fixed_pipeline_state: Hash and compare the whole structure | ReinUsesLisp | 2020-04-19 | 2 | -105/+9 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Pad FixedPipelineState's size to 384 bytes to be a multiple of 16. Compare the whole struct with std::memcmp and hash with CityHash. Using CityHash instead of a naive hash should reduce the number of collisions. Improve used type traits to ensure this operation is safe. With these changes the improvements to the hashable pipeline state are: Optimized structure Hash: 89 ns Comparison: 103 ns Construction*: 164 ns Struct size: 384 bytes Original structure Hash: 148 ns Equal: 174 ns Construction*: 281 ns Size: 1384 bytes * Attribute state initialization is not measured These measures are averages taken with std::chrono::high_accuracy_clock on MSVC shipped on Visual Studio 16.6.0 Preview 2.1. | ||||
| * | | | fixed_pipeline_state: Pack blending state | ReinUsesLisp | 2020-04-19 | 3 | -98/+227 |
| | | | | | | | | | | | | | | | | Reduce FixedPipelineState's size to 364 bytes. | ||||
| * | | | fixed_pipeline_state: Pack rasterizer state | ReinUsesLisp | 2020-04-19 | 4 | -163/+155 |
| | | | | | | | | | | | | | | | | Reduce FixedPipelineState's size to 600 bytes. | ||||
| * | | | fixed_pipeline_state: Pack depth stencil state | ReinUsesLisp | 2020-04-19 | 3 | -97/+140 |
| | | | | | | | | | | | | | | | | Reduce FixedPipelineState's size to 632 bytes. | ||||
| * | | | fixed_pipeline_state: Pack attribute state | ReinUsesLisp | 2020-04-19 | 5 | -100/+84 |
| | |/ | |/| | | | | | | | Reduce FixedPipelineState's size from 1384 to 664 bytes | ||||
* | | | Merge pull request #3733 from ambasta/patch-2 | Mat M | 2020-04-21 | 1 | -1/+1 |
|\ \ \ | | | | | | | | | Initialize quad_indexed_pass before uint8_pass | ||||
| * | | | Initialize quad_indexed_pass before uint8_pass | Amit Prakash Ambasta | 2020-04-20 | 1 | -1/+1 |
| | | | | | | | | | | | | Fixes Werror=reorder in gcc | ||||
* | | | | Merge pull request #3700 from ReinUsesLisp/stream-buffer-sizes | Fernando Sahmkow | 2020-04-20 | 2 | -33/+48 |
|\ \ \ \ | |/ / / |/| | | | vk_stream_buffer: Fix out of memory on boot on recent Nvidia drivers | ||||
| * | | | vk_stream_buffer: Fix out of memory on boot on recent Nvidia drivers | ReinUsesLisp | 2020-04-17 | 2 | -33/+48 |
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Nvidia recently introduced a new memory type for data streaming (awesome!), but yuzu was assuming that all heaps had enough memory for the assumed stream buffer size (256 MiB). This worked fine on AMD but Nvidia's new memory heap was smaller than 256 MiB. This commit changes this assumption and allocates a bit less than the size of the preferred heap, with a maximum of 256 MiB (to avoid allocating all system memory on integrated devices). - Fixes a crash on NVIDIA 450.82.0.0 | ||||
* | | | Merge pull request #3694 from ReinUsesLisp/indexed-quads | bunnei | 2020-04-19 | 5 | -12/+280 |
|\ \ \ | | | | | | | | | vk_compute_pass: Implement indexed quads | ||||
| * | | | vk_compute_pass: Implement indexed quads | ReinUsesLisp | 2020-04-17 | 5 | -12/+280 |
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Implement indexed quads (GL_QUADS used with glDrawElements*) with a compute pass conversion. The compute shader converts from uint8/uint16/uint32 indices to uint32. The format is passed through push constants to avoid having different variants of the same shader. - Used by Fast RMX - Used by Xenoblade Chronicles 2 (it still has graphical due to synchronization issues on Vulkan) | ||||
* / / | renderer_vulkan: assume X11 if not Windows/macOS after bf1d66b7c074 | Jan Beich | 2020-04-19 | 1 | -3/+3 |
|/ / | | | | | | | | | | | Render.Vulkan <Error> video_core/renderer_vulkan/renderer_vulkan.cpp:CreateInstance:131: Presentation not supported on this platform Render.Vulkan <Error> video_core/renderer_vulkan/renderer_vulkan.cpp:CreateSurface:378: Presentation not supported on this platform Core <Critical> core/core.cpp:Load:199: Failed to initialize system (Error 5)! | ||||
* | | Merge pull request #3600 from ReinUsesLisp/no-pointer-buf-cache | Fernando Sahmkow | 2020-04-17 | 7 | -51/+42 |
|\ \ | | | | | | | buffer_cache: Return handles instead of pointer to handles | ||||
| * | | buffer_cache: Return handles instead of pointer to handles | ReinUsesLisp | 2020-04-16 | 7 | -51/+42 |
| |/ | | | | | | | | | | | | | | | | | | | | | The original idea of returning pointers is that handles can be moved. The problem is that the implementation didn't take that in mind and made everything harder to work with. This commit drops pointer to handles and returns the handles themselves. While it is still true that handles can be invalidated, this way we get an old handle instead of a dangling pointer. This problem can be solved in the future with sparse buffers. | ||||
* | | video_core: Amend doxygen comment references | Lioncash | 2020-04-16 | 1 | -1/+1 |
| | | | | | | | | Fixes broken documentation references. | ||||
* | | Merge pull request #3612 from ReinUsesLisp/red | Fernando Sahmkow | 2020-04-15 | 1 | -25/+40 |
|\ \ | | | | | | | shader/memory: Implement RED.E.ADD and minor changes to ATOM | ||||
| * | | shader/memory: Implement RED.E.ADD | ReinUsesLisp | 2020-04-06 | 1 | -25/+40 |
| | | | | | | | | | | | | | | | | | | | | | | | | Implements a reduction operation. It's an atomic operation that doesn't return a value. This commit introduces another primitive because some shading languages might have a primitive for reduction operations. | ||||
* | | | Merge pull request #3668 from ReinUsesLisp/vtx-format-16ui | Mat M | 2020-04-15 | 1 | -0/+10 |
|\ \ \ | | | | | | | | | maxwell_to_vk: Add uint16 vertex formats | ||||
| * | | | maxwell_to_vk: Add uint16 vertex formats | ReinUsesLisp | 2020-04-15 | 1 | -0/+8 |
| | | | | |||||
| * | | | maxwell_to_vk: Add missing breaks | ReinUsesLisp | 2020-04-15 | 1 | -0/+2 |
| | | | | | | | | | | | | | | | | Avoid invalid fallbacks. | ||||
* | | | | vk_blit_screen: Initialize all members in VkPipelineViewportStateCreateInfo | ReinUsesLisp | 2020-04-15 | 1 | -0/+2 |
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When the dynamic state is specified, pViewports and pScissors are ignored, quoting the specification: pViewports is a pointer to an array of VkViewport structures, defining the viewport transforms. If the viewport state is dynamic, this member is ignored. That said, AMD's proprietary driver itself seem to read it regardless of what the specification says. | ||||
* | / | vk_rasterizer: Default to 1 viewports with a size of 0 | ReinUsesLisp | 2020-04-14 | 1 | -3/+6 |
| |/ |/| | | | | | Silence validation layer errors. | ||||
* | | Merge pull request #3636 from ReinUsesLisp/drop-vk-hpp | Rodrigo Locatti | 2020-04-13 | 50 | -2271/+2881 |
|\ \ | | | | | | | renderer_vulkan: Drop Vulkan-Hpp | ||||
| * | | renderer_vulkan: Drop Vulkan-Hpp | ReinUsesLisp | 2020-04-11 | 50 | -2271/+2881 |
| | | | |||||
* | | | texture_cache: Remove preserve_contents | ReinUsesLisp | 2020-04-11 | 1 | -2/+2 |
|/ / | | | | | | | | | | | | | preserve_contents was always true. We can't assume we don't have to preserve clears because scissored and color masked clears exist. This removes preserve_contents and assumes it as true at all times. | ||||
* | | Merge pull request #3594 from ReinUsesLisp/vk-instance | bunnei | 2020-04-11 | 5 | -96/+302 |
|\ \ | | | | | | | yuzu: Drop SDL2 and Qt frontend Vulkan requirements | ||||
| * | | yuzu: Drop SDL2 and Qt frontend Vulkan requirements | ReinUsesLisp | 2020-04-07 | 5 | -105/+238 |
| | | | | | | | | | | | | Create Vulkan instances and surfaces from the Vulkan backend. | ||||
| * | | renderer_vulkan: Query device names from the backend | ReinUsesLisp | 2020-04-07 | 3 | -0/+73 |
| | | | |||||
* | | | VkRasterizer: Eliminate Legacy code. | Fernando Sahmkow | 2020-04-09 | 1 | -1/+0 |
| | | | |||||
* | | | Memory: Address Feedback. | Fernando Sahmkow | 2020-04-08 | 1 | -2/+2 |
| | | | |||||
* | | | Shader/Pipeline Cache: Use VAddr instead of physical memory for addressing. | Fernando Sahmkow | 2020-04-06 | 3 | -26/+22 |
| | | | |||||
* | | | Query Cache: Use VAddr instead of physical memory for adressing. | Fernando Sahmkow | 2020-04-06 | 1 | -2/+2 |
| | | | |||||
* | | | Buffer Cache: Use vAddr instead of physical memory. | Fernando Sahmkow | 2020-04-06 | 3 | -8/+8 |
| | | | |||||
* | | | Texture Cache: Use vAddr instead of physical memory for caching. | Fernando Sahmkow | 2020-04-06 | 1 | -4/+3 |
| | | | |||||
* | | | GPU: Setup Flush/Invalidate to use VAddr instead of CacheAddr | Fernando Sahmkow | 2020-04-06 | 2 | -13/+21 |
|/ / | |||||
* | | Merge pull request #3513 from ReinUsesLisp/native-astc | Fernando Sahmkow | 2020-04-06 | 2 | -33/+46 |
|\ \ | | | | | | | video_core: Use native ASTC when available | ||||
| * | | vk_device: Add missing ASTC queries | ReinUsesLisp | 2020-04-01 | 1 | -14/+29 |
| | | | |||||
| * | | video_core: Use native ASTC when available | ReinUsesLisp | 2020-04-01 | 2 | -19/+17 |
| | | | |||||
* | | | Merge pull request #3592 from ReinUsesLisp/ipa | Fernando Sahmkow | 2020-04-06 | 1 | -10/+7 |
|\ \ \ | |_|/ |/| | | shader_decompiler: Remove FragCoord.w hack and change IPA implementation | ||||
| * | | shader_decompiler: Remove FragCoord.w hack and change IPA implementation | ReinUsesLisp | 2020-04-02 | 1 | -10/+7 |
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Credits go to gdkchan and Ryujinx. The pull request used for this can be found here: https://github.com/Ryujinx/Ryujinx/pull/1082 yuzu was already using the header for interpolation, but it was missing the FragCoord.w multiplication described in the linked pull request. This commit finally removes the FragCoord.w == 1.0f hack from the shader decompiler. While we are at it, this commit renames some enumerations to match Nvidia's documentation (linked below) and fixes component declaration order in the shader program header (z and w were swapped). https://github.com/NVIDIA/open-gpu-doc/blob/master/Shader-Program-Header/Shader-Program-Header.html | ||||
* | | Merge pull request #3552 from jroweboy/single-context | Rodrigo Locatti | 2020-04-02 | 2 | -2/+3 |
|\ \ | |/ |/| | Refactor Context management (Fixes renderdoc on opengl issues) | ||||
| * | Frontend/GPU: Refactor context management | James Rowe | 2020-03-25 | 2 | -2/+3 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Changes the GraphicsContext to be managed by the GPU core. This eliminates the need for the frontends to fool around with tricky MakeCurrent/DoneCurrent calls that are dependent on the settings (such as async gpu option). This also refactors out the need to use QWidget::fromWindowContainer as that caused issues with focus and input handling. Now we use a regular QWidget and just access the native windowHandle() directly. Another change is removing the debug tool setting in FrameMailbox. Instead of trying to block the frontend until a new frame is ready, the core will now take over presentation and draw directly to the window if the renderer detects that its hooked by NSight or RenderDoc Lastly, since it was in the way, I removed ScopeAcquireWindowContext and replaced it with a simple subclass in GraphicsContext that achieves the same result | ||||
* | | Merge pull request #3591 from ReinUsesLisp/vk-wrapper-part2 | Rodrigo Locatti | 2020-04-01 | 2 | -0/+850 |
|\ \ | | | | | | | renderer_vulkan/wrapper: Add a Vulkan wrapper (part 2 of 2) | ||||
| * | | renderer_vulkan/wrapper: Add vkEnumerateInstanceExtensionProperties wrapper | ReinUsesLisp | 2020-04-01 | 2 | -0/+17 |
| | | | |||||
| * | | renderer_vulkan/wrapper: Add command buffer handle | ReinUsesLisp | 2020-04-01 | 1 | -0/+192 |
| | | | |||||
| * | | renderer_vulkan/wrapper: Add physical device handle | ReinUsesLisp | 2020-04-01 | 2 | -0/+123 |
| | | | |||||
| * | | renderer_vulkan/wrapper: Add device handle | ReinUsesLisp | 2020-04-01 | 2 | -0/+277 |
| | | | |||||
| * | | renderer_vulkan/wrapper: Add swapchain handle | ReinUsesLisp | 2020-04-01 | 2 | -0/+15 |
| | | | |||||
| * | | renderer_vulkan/wrapper: Add fence handle | ReinUsesLisp | 2020-04-01 | 1 | -0/+17 |
| | | | |||||
| * | | renderer_vulkan/wrapper: Add device memory handle | ReinUsesLisp | 2020-04-01 | 1 | -0/+15 |
| | | | |||||
| * | | renderer_vulkan/wrapper: Add pool handles | ReinUsesLisp | 2020-04-01 | 2 | -0/+47 |
| | | | |||||
| * | | renderer_vulkan/wrapper: Add buffer and image handles | ReinUsesLisp | 2020-04-01 | 2 | -0/+24 |
| | | | |||||
| * | | renderer_vulkan/wrapper: Add queue handle | ReinUsesLisp | 2020-04-01 | 2 | -0/+36 |
| | | | |||||
| * | | renderer_vulkan/wrapper: Add instance handle | ReinUsesLisp | 2020-04-01 | 2 | -0/+87 |
| | | | |||||
* | | | Merge pull request #3506 from namkazt/patch-9 | Rodrigo Locatti | 2020-03-31 | 1 | -6/+25 |
|\ \ \ | |/ / |/| | | shader_decode: Implement partial ATOM/ATOMS instr | ||||
| * | | vk_decompiler: add atomic op and handler function. | Nguyen Dac Nam | 2020-03-30 | 1 | -6/+25 |
| | | | |||||
* | | | Merge pull request #3566 from ReinUsesLisp/vk-wrapper-part1 | Rodrigo Locatti | 2020-03-31 | 2 | -0/+887 |
|\ \ \ | |/ / |/| | | renderer_vulkan/wrapper: Add a Vulkan wrapper (part 1 of 2) | ||||
| * | | renderer_vulkan/wrapper: Address feedback | ReinUsesLisp | 2020-03-28 | 1 | -3/+24 |
| | | | |||||
| * | | renderer_vulkan/wrapper: Add owning handles | ReinUsesLisp | 2020-03-27 | 1 | -0/+18 |
| | | | |||||
| * | | renderer_vulkan/wrapper: Add pool allocations owning templated class | ReinUsesLisp | 2020-03-27 | 1 | -0/+81 |
| | | | |||||
| * | | renderer_vulkan/wrapper: Add owning handle templated class | ReinUsesLisp | 2020-03-27 | 1 | -0/+144 |
| | | | |||||
| * | | renderer_vulkan/wrapper: Add destroy and free overload set | ReinUsesLisp | 2020-03-27 | 2 | -0/+133 |
| | | | |||||
| * | | renderer_vulkan/wrapper: Add dispatch table and loaders | ReinUsesLisp | 2020-03-27 | 2 | -0/+283 |
| | | | |||||
| * | | renderer_vulkan/wrapper: Add exception class | ReinUsesLisp | 2020-03-27 | 2 | -0/+34 |
| | | | |||||
| * | | renderer_vulkan/wrapper: Add ToString function for VkResult | ReinUsesLisp | 2020-03-27 | 2 | -0/+90 |
| | | | |||||
| * | | renderer_vulkan/wrapper: Add Vulakn wrapper and a span helper | ReinUsesLisp | 2020-03-27 | 1 | -0/+83 |
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The intention behind a Vulkan wrapper is to drop Vulkan-Hpp. The issues with Vulkan-Hpp are: - Regular breaks of the API. - Copy constructors that do the same as the aggregates (fixed recently) - External dynamic dispatch that is hard to remove - Alias KHR handles with non-KHR handles making it impossible to use smart handles on Vulkan 1.0 instances with extensions that were included on Vulkan 1.1. - Dynamic dispatchers silently change size depending on preprocessor definitions. Different files will have different dispatch definitions, generating all kinds of hard to debug memory issues. In other words, Vulkan-Hpp is not "production ready" for our needs and this wrapper aims to replace it without losing RAII and exception safety. | ||||
* / | maxwell_to_vk: implement signedscaled vertex formats | Dan | 2020-03-27 | 1 | -0/+20 |
|/ | |||||
* | vk_texture_cache: Silence misc warnings | ReinUsesLisp | 2020-03-19 | 1 | -3/+3 |
| | |||||
* | vk_staging_buffer_pool: Silence unused constant warning | ReinUsesLisp | 2020-03-19 | 1 | -1/+1 |
| | |||||
* | vk_rasterizer: Remove unused variable | ReinUsesLisp | 2020-03-19 | 1 | -2/+0 |
| | |||||
* | vk_pipeline_cache: Remove unused variable | ReinUsesLisp | 2020-03-19 | 1 | -1/+0 |
| | |||||
* | maxwell_to_vk: Sielence -Wswitch warning | ReinUsesLisp | 2020-03-19 | 1 | -0/+2 |
| | |||||
* | Merge pull request #3510 from FernandoS27/dirty-write | Mat M | 2020-03-17 | 1 | -2/+0 |
|\ | | | | | DirtyFlags: relax need to set render_targets as dirty | ||||
| * | DirtyFlags: relax need to set render_targets as dirty | Fernando Sahmkow | 2020-03-14 | 1 | -2/+0 |
| | | | | | | | | | | The texture cache already takes care of setting a render target to dirty when invalidated. | ||||
* | | Merge pull request #3518 from ReinUsesLisp/scissor-clears | Mat M | 2020-03-17 | 4 | -45/+53 |
|\ \ | | | | | | | vk_rasterizer: Implement scissor clears and layered clears | ||||
| * | | vk_rasterizer: Implement layered clears | ReinUsesLisp | 2020-03-15 | 1 | -2/+2 |
| | | | |||||
| * | | vk_rasterizer: Reimplement clears with vkCmdClearAttachments | ReinUsesLisp | 2020-03-15 | 4 | -45/+53 |
| | | | |||||
* | | | Merge pull request #3519 from ReinUsesLisp/int-formats | Mat M | 2020-03-17 | 1 | -0/+4 |
|\ \ \ | | | | | | | | | maxwell_to_vk: Implement RG32 and RGB32 integer vertex formats | ||||
| * | | | maxwell_to_vk: Implement RG32 and RGB32 integer vertex formats | ReinUsesLisp | 2020-03-15 | 1 | -0/+4 |
| |/ / | |||||
* | | | Merge pull request #3515 from ReinUsesLisp/vertex-vk-assert | Rodrigo Locatti | 2020-03-16 | 1 | -1/+1 |
|\ \ \ | | | | | | | | | vk_rasterizer: Fix vertex range assert | ||||
| * | | | vk_rasterizer: Fix vertex range assert | ReinUsesLisp | 2020-03-15 | 1 | -1/+1 |
| |/ / | | | | | | | | | | | | | End can be equal to start in CalculateVertexArraysSize. This is quite common when the vertex size is zero. | ||||
* | | | Merge pull request #3501 from ReinUsesLisp/rgba16-snorm | Rodrigo Locatti | 2020-03-16 | 2 | -0/+2 |
|\ \ \ | | | | | | | | | video_core: Implement RGBA16_SNORM | ||||
| * | | | video_core: Implement RGBA16_SNORM | ReinUsesLisp | 2020-03-13 | 2 | -0/+2 |
| | | | | | | | | | | | | | | | | Implement RGBA16_SNORM with the current API. Nothing special here. | ||||
* | | | | Merge pull request #3503 from makigumo/patch-2 | Rodrigo Locatti | 2020-03-16 | 1 | -0/+2 |
|\ \ \ \ | | | | | | | | | | | maxwell_to_vk: add vertex format eA2B10G10R10UnormPack32 | ||||
| * | | | | fix formatting | makigumo | 2020-03-13 | 1 | -1/+1 |
| | | | | | |||||
| * | | | | maxwell_to_vk: add vertex format eA2B10G10R10UnormPack32 | makigumo | 2020-03-13 | 1 | -1/+3 |
| | |_|/ | |/| | | |||||
* | | | | vk_shader_decompiler: fix linux build | makigumo | 2020-03-15 | 1 | -1/+1 |
| |_|/ |/| | | |||||
* | | | vk/gl_shader_decompiler: Silence assertion on compute | ReinUsesLisp | 2020-03-13 | 1 | -3/+6 |
| | | | |||||
* | | | vk_shader_decompiler: Fix default varying regression | ReinUsesLisp | 2020-03-13 | 1 | -2/+6 |
| | | | |||||
* | | | vk_shader_decompiler: Fix implicit type conversion | Rodrigo Locatti | 2020-03-13 | 1 | -1/+1 |
| | | | | | | | | | Co-Authored-By: Mat M. <mathew1800@gmail.com> | ||||
* | | | vk_rasterizer: Implement transform feedback binding zero | ReinUsesLisp | 2020-03-13 | 2 | -0/+46 |
| | | | |||||
* | | | vk_shader_decompiler: Add XFB decorations to generic varyings | ReinUsesLisp | 2020-03-13 | 1 | -16/+89 |
| | | | |||||
* | | | vk_device: Enable VK_EXT_transform_feedback when available | ReinUsesLisp | 2020-03-13 | 2 | -7/+40 |
| | | | |||||
* | | | vk_device: Shrink formatless capability name size | ReinUsesLisp | 2020-03-13 | 3 | -26/+23 |
| | | | |||||
* | | | vk_shader_decompiler: Use registry for specialization | ReinUsesLisp | 2020-03-13 | 4 | -31/+37 |
| | | | |||||
* | | | Merge branch 'master' into shader-purge | Rodrigo Locatti | 2020-03-13 | 2 | -2/+10 |
|\| | | |||||
| * | | Merge pull request #3483 from namkazt/patch-1 | Fernando Sahmkow | 2020-03-13 | 1 | -1/+1 |
| |\ \ | | | | | | | | | vk_rasterizer: fix mistype on SetupGraphicsImages | ||||
| | * | | vk_reasterizer: fix mistype on SetupGraphicsImages | Nguyen Dac Nam | 2020-03-08 | 1 | -1/+1 |
| | | | | | | | | | | | | This should use Maxwell3D engine. Fixed some GPU error on Kirby and maybe other games. | ||||
| * | | | Merge pull request #3480 from ReinUsesLisp/vk-disabled-ubo | Fernando Sahmkow | 2020-03-13 | 2 | -1/+9 |
| |\ \ \ | | |_|/ | |/| | | vk_rasterizer: Support disabled uniform buffers | ||||
| | * | | vk_rasterizer: Support disabled uniform buffers | ReinUsesLisp | 2020-03-06 | 2 | -1/+9 |
| | | | | |||||
* | | | | video_core: Rename "const buffer locker" to "registry" | ReinUsesLisp | 2020-03-09 | 2 | -4/+4 |
|/ / / | |||||
* | | | Merge pull request #3301 from ReinUsesLisp/state-tracker | Rodrigo Locatti | 2020-03-09 | 14 | -118/+270 |
|\ \ \ | |_|/ |/| | | video_core: Remove gl_state and use a state tracker based on dirty flags | ||||
| * | | dirty_flags: Deduplicate code between OpenGL and Vulkan | ReinUsesLisp | 2020-02-28 | 1 | -39/+2 |
| | | | |||||
| * | | vk_rasterizer: Pass Maxwell registers to dynamic updates | ReinUsesLisp | 2020-02-28 | 2 | -26/+21 |
| | | | |||||
| * | | state_tracker: Remove type traits with named structures | ReinUsesLisp | 2020-02-28 | 2 | -10/+12 |
| | | | |||||
| * | | vk_state_tracker: Implement dirty flags for stencil properties | ReinUsesLisp | 2020-02-28 | 3 | -0/+21 |
| | | | |||||
| * | | vk_state_tracker: Implement dirty flags for depth bounds | ReinUsesLisp | 2020-02-28 | 3 | -0/+14 |
| | | | |||||
| * | | vk_state_tracker: Implement dirty flags for blend constants | ReinUsesLisp | 2020-02-28 | 3 | -0/+14 |
| | | | |||||
| * | | vk_state_tracker: Implement dirty flags for depth bias | ReinUsesLisp | 2020-02-28 | 3 | -0/+17 |
| | | | |||||
| * | | vk_state_tracker: Implement dirty flags for scissors | ReinUsesLisp | 2020-02-28 | 3 | -0/+14 |
| | | | |||||
| * | | vk_state_tracker: Initial implementation | ReinUsesLisp | 2020-02-28 | 9 | -52/+196 |
| | | | | | | | | | | | | Add support for render targets and viewports. | ||||
| * | | maxwell_3d: Flatten cull and front face registers | ReinUsesLisp | 2020-02-28 | 4 | -21/+20 |
| | | | |||||
| * | | gl_rasterizer: Remove dirty flags | ReinUsesLisp | 2020-02-28 | 2 | -32/+1 |
| | | | |||||
* | | | Merge pull request #3481 from ReinUsesLisp/abgr5-storage | bunnei | 2020-03-08 | 1 | -1/+1 |
|\ \ \ | | | | | | | | | maxwell_to_vk: Remove Storage capability for A1B5G5R5U | ||||
| * | | | maxwell_to_vk: Remove Storage capability for A1B5G5R5U | ReinUsesLisp | 2020-03-06 | 1 | -1/+1 |
| | |/ | |/| | |||||
* | | | Merge pull request #3463 from ReinUsesLisp/vk-toctou | bunnei | 2020-03-06 | 1 | -9/+12 |
|\ \ \ | |/ / |/| | | vk_swapchain: Silence TOCTOU race condition | ||||
| * | | vk_swapchain: Silence TOCTOU race condition | ReinUsesLisp | 2020-02-26 | 1 | -9/+12 |
| | | | | | | | | | | | | | | | | | | | | | | | | It's possible that the window is resized from the moment we ask for its size to the moment a swapchain is created, causing validation issues. To workaround this Vulkan issue request the capabilities again just before creating the swapchain, making the race condition less likely. | ||||
* | | | Merge pull request #3451 from ReinUsesLisp/indexed-textures | bunnei | 2020-03-05 | 6 | -54/+99 |
|\ \ \ | | | | | | | | | vk_shader_decompiler: Implement indexed textures | ||||
| * | | | vk_shader_decompiler: Implement indexed textures | ReinUsesLisp | 2020-02-24 | 6 | -54/+99 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Implement accessing textures through an index. It uses the same interface as OpenGL, the main difference is that Vulkan bindings are forced to be arrayed (the binding index doesn't change for stacked textures in SPIR-V). | ||||
* | | | | Merge pull request #3455 from ReinUsesLisp/attr-scaled | bunnei | 2020-03-04 | 2 | -4/+16 |
|\ \ \ \ | |_|_|/ |/| | | | video_core: Implement more scaled attribute formats | ||||
| * | | | video_core: Implement more scaler attribute formats | ReinUsesLisp | 2020-02-24 | 2 | -4/+16 |
| |/ / | | | | | | | | | | | | | While changing this, fix assert in vk_shader_decompiler. We now know scaled formats are expected to be float in shaders attributes. | ||||
* | / | frontend: qt: bootmanager: Vulkan: Restore support for VK backend. | bunnei | 2020-02-26 | 2 | -9/+14 |
| |/ |/| | |||||
* | | Merge pull request #3417 from ReinUsesLisp/r32i | bunnei | 2020-02-25 | 2 | -0/+2 |
|\ \ | | | | | | | texture: Implement R32I | ||||
| * | | texture: Implement R32I | ReinUsesLisp | 2020-02-15 | 2 | -0/+2 |
| | | | |||||
* | | | Merge pull request #3425 from ReinUsesLisp/layered-framebuffer | bunnei | 2020-02-24 | 3 | -10/+21 |
|\ \ \ | |_|/ |/| | | texture_cache: Implement layered framebuffer attachments | ||||
| * | | texture_cache: Implement layered framebuffer attachments | ReinUsesLisp | 2020-02-16 | 3 | -10/+21 |
| |/ | | | | | | | | | | | Layered framebuffer attachments is a feature that allows applications to write attach layered textures to a single attachment. What layer the fragments are written to is decided from the shader using gl_Layer. | ||||
* | | Merge pull request #3424 from ReinUsesLisp/spirv-layer | bunnei | 2020-02-23 | 1 | -6/+30 |
|\ \ | | | | | | | vk_shader_decompiler: Implement Layer output attribute | ||||
| * | | vk_shader_decompiler: Implement Layer output attribute | ReinUsesLisp | 2020-02-16 | 1 | -6/+30 |
| |/ | | | | | | | | | | | SPIR-V's Layer is GLSL's gl_Layer. It lets the application choose from a shader stage (vertex, tessellation or geometry) which framebuffer layer write the output fragments to. | ||||
* | | Merge pull request #3433 from namkazt/patch-1 | Rodrigo Locatti | 2020-02-21 | 1 | -3/+8 |
|\ \ | | | | | | | renderer_vulkan: Add the rest of case for TryConvertBorderColor | ||||
| * | | fixups mistake auto commit. | Nguyen Dac Nam | 2020-02-18 | 1 | -9/+0 |
| | | | |||||
| * | | Update code structure | Nguyen Dac Nam | 2020-02-18 | 1 | -0/+7 |
| | | | | | | | | | Co-Authored-By: Mat M. <mathew1800@gmail.com> | ||||
| * | | renderer_vulkan: Add the rest of case for TryConvertBorderColor | Nguyen Dac Nam | 2020-02-18 | 1 | -3/+10 |
| |/ | |||||
* | | Merge pull request #3434 from namkazt/patch-2 | Rodrigo Locatti | 2020-02-21 | 3 | -2/+25 |
|\ \ | | | | | | | vk_shader: Implement ImageLoad | ||||
| * | | vk_device: remove left over from other branch | Nguyen Dac Nam | 2020-02-21 | 1 | -1/+0 |
| | | | |||||
| * | | clang-format | Nguyen Dac Nam | 2020-02-20 | 1 | -1/+1 |
| | | | |||||
| * | | shader_decompiler: only add StorageImageReadWithoutFormat when available | Nguyen Dac Nam | 2020-02-20 | 1 | -1/+4 |
| | | | |||||
| * | | shader_decompiler: add check in case of device not support ShaderStorageImageReadWithoutFormat | Nguyen Dac Nam | 2020-02-19 | 1 | -0/+4 |
| | | | |||||
| * | | vk_device: setup shaderStorageImageReadWithoutFormat | Nguyen Dac Nam | 2020-02-19 | 1 | -0/+5 |
| | | | |||||
| * | | vk_device: add check for shaderStorageImageReadWithoutFormat | Nguyen Dac Nam | 2020-02-19 | 1 | -0/+7 |
| | | | |||||
| * | | vk_shader: add Capability StorageImageReadWithoutFormat | Nguyen Dac Nam | 2020-02-19 | 1 | -0/+1 |
| | | | |||||
| * | | vk_shader: Implement function ImageLoad (Used by Kirby Start Allies) | Nguyen Dac Nam | 2020-02-19 | 1 | -2/+6 |
| |/ | | | | | | | Please enter the commit message for your changes. Lines starting | ||||
* | | Merge pull request #3435 from namkazt/patch-3 | Rodrigo Locatti | 2020-02-21 | 2 | -1/+4 |
|\ \ | | | | | | | vulkan: add DXT23_SRGB | ||||
| * | | add vertex UnsignedInt size RGBA | Nguyen Dac Nam | 2020-02-18 | 1 | -0/+2 |
| | | | |||||
| * | | add eBc2SrgbBlock to formats | Nguyen Dac Nam | 2020-02-18 | 1 | -0/+1 |
| | | | |||||
| * | | vulkan: add DXT23_SRGB | Nguyen Dac Nam | 2020-02-18 | 1 | -1/+1 |
| |/ | |||||
* | | Merge pull request #3414 from ReinUsesLisp/maxwell-3d-draw | bunnei | 2020-02-19 | 2 | -14/+1 |
|\ \ | | | | | | | maxwell_3d: Unify draw methods | ||||
| * | | maxwell_3d: Unify draw methods | ReinUsesLisp | 2020-02-14 | 2 | -14/+1 |
| |/ | | | | | | | | | Pass instanced state of a draw invocation as an argument instead of having two separate virtual methods. | ||||
* | | Merge pull request #3410 from ReinUsesLisp/vk-draw-index | bunnei | 2020-02-19 | 1 | -4/+13 |
|\ \ | | | | | | | vk_shader_decompiler: Fix vertex id and instance id | ||||
| * | | vk_shader_decompiler: Fix vertex id and instance id | ReinUsesLisp | 2020-02-14 | 1 | -4/+13 |
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | Vulkan's VertexIndex and InstanceIndex don't match with hardware. This is because Nvidia implements gl_VertexID and gl_InstanceID. The math that relates these is: gl_VertexIndex = gl_BaseVertex + gl_VertexID gl_InstanceIndex = gl_InstanceIndex + gl_InstanceID To emulate it using what Vulkan's SPIR-V offers (the *Index variants) this commit substracts gl_Base* from gl_*Index to obtain the OpenGL and hardware's equivalent. | ||||
* / | vk_query_cache: Implement generic query cache on Vulkan | ReinUsesLisp | 2020-02-14 | 7 | -3/+283 |
|/ | |||||
* | vk_rasterizer: Use noexcept variants of std::bitset | ReinUsesLisp | 2020-02-04 | 1 | -4/+5 |
| | | | | Removes bounds checking from "texceptions" instances. | ||||
* | Merge pull request #3337 from ReinUsesLisp/vulkan-staged | bunnei | 2020-02-03 | 2 | -2/+269 |
|\ | | | | | yuzu: Implement Vulkan frontend | ||||
| * | yuzu: Implement Vulkan frontend | ReinUsesLisp | 2020-01-29 | 1 | -0/+265 |
| | | | | | | | | | | Adds a Qt and SDL2 frontend for Vulkan. It also finishes the missing bits on Vulkan initialization. | ||||
| * | settings: Add settings for graphics backend | ReinUsesLisp | 2020-01-29 | 1 | -2/+4 |
| | | |||||
* | | Merge pull request #3282 from FernandoS27/indexed-samplers | bunnei | 2020-02-02 | 1 | -0/+19 |
|\ \ | | | | | | | Partially implement Indexed samplers in general and specific code in GLSL | ||||
| * | | Shader_IR: Address feedback. | Fernando Sahmkow | 2020-01-25 | 1 | -2/+3 |
| | | | |||||
| * | | Shader_IR: Correct Custom Variable assignment. | Fernando Sahmkow | 2020-01-24 | 1 | -0/+2 |
| | | | |||||
| * | | Shader_IR: Implement Injectable Custom Variables to the IR. | Fernando Sahmkow | 2020-01-24 | 1 | -0/+16 |
| | | | |||||
* | | | shader/memory: Implement ATOM.ADD | ReinUsesLisp | 2020-01-26 | 1 | -33/+33 |
| |/ |/| | | | | | | | | | | | | | | | | | | | | | | | ATOM operates atomically on global memory. For now only add ATOM.ADD since that's what was found in commercial games. This asserts for ATOM.ADD.S32 (handling the others as unimplemented), although ATOM.ADD.U32 shouldn't be any different. This change forces us to change the default type on SPIR-V storage buffers from float to uint. We could also alias the buffers, but it's simpler for now to just use uint. While we are at it, abstract the code to avoid repetition. | ||||
* | | vk_shader_decompiler: Disable default values on unwritten render targets | ReinUsesLisp | 2020-01-24 | 3 | -19/+16 |
|/ | | | | | | | | | Some games like The Legend of Zelda: Breath of the Wild assign render targets without writing them from the fragment shader. This generates Vulkan validation errors, so silence these I previously introduced a commit to set "vec4(0, 0, 0, 1)" for these attachments. The problem is that this is not what games expect. This commit reverts that change. | ||||
* | Merge pull request #3330 from ReinUsesLisp/vk-blit-screen | Fernando Sahmkow | 2020-01-21 | 4 | -6/+752 |
|\ | | | | | vk_blit_screen: Initial implementation | ||||
| * | vk_blit_screen: Address feedback | ReinUsesLisp | 2020-01-20 | 4 | -22/+25 |
| | | |||||
| * | vk_blit_screen: Initial implementation | ReinUsesLisp | 2020-01-20 | 2 | -0/+743 |
| | | | | | | | | | | This abstraction takes care of presenting accelerated and non-accelerated or "framebuffer" images to the Vulkan swapchain. | ||||
* | | Merge pull request #3328 from ReinUsesLisp/vulkan-atoms | bunnei | 2020-01-20 | 1 | -3/+11 |
|\ \ | | | | | | | vk_shader_decompiler: Implement UAtomicAdd (ATOMS) on SPIR-V | ||||
| * | | vk_shader_decompiler: Implement UAtomicAdd (ATOMS) on SPIR-V | ReinUsesLisp | 2020-01-19 | 1 | -3/+11 |
| | | | | | | | | | | | | Also updates sirit to include atomic instructions. | ||||
* | | | Merge pull request #3322 from ReinUsesLisp/vk-front-face | bunnei | 2020-01-20 | 1 | -2/+1 |
|\ \ \ | |_|/ |/| | | vk_graphics_pipeline: Set front facing properly | ||||
| * | | vk_graphics_pipeline: Set front facing properly | ReinUsesLisp | 2020-01-18 | 1 | -2/+1 |
| | | | | | | | | | | | | | | | | | | Front face was being forced to a certain value when cull face is disabled. Set a default value on initialization and drop the forcefully set front facing value with culling disabled. | ||||
* | | | Merge pull request #3313 from ReinUsesLisp/vk-rasterizer | bunnei | 2020-01-20 | 3 | -1/+1464 |
|\ \ \ | |_|/ |/| | | vk_rasterizer: Implement Vulkan's rasterizer | ||||
| * | | vk_rasterizer: Address feedback | ReinUsesLisp | 2020-01-18 | 2 | -25/+32 |
| | | | |||||
| * | | vk_rasterizer: Implement Vulkan's rasterizer | ReinUsesLisp | 2020-01-17 | 2 | -1/+1385 |
| | | | | | | | | | | | | | | | | | | This abstraction is Vulkan's equivalent to OpenGL's rasterizer. It takes care of joining all parts of the backend and rendering accordingly on demand. | ||||
| * | | renderer_vulkan: Add header as placeholder | ReinUsesLisp | 2020-01-17 | 1 | -0/+72 |
| |/ | |||||
* | | Merge pull request #3312 from ReinUsesLisp/atoms-u32 | bunnei | 2020-01-18 | 1 | -0/+7 |
|\ \ | |/ |/| | shader/memory: Implement ATOMS.ADD.U32 | ||||
| * | shader/memory: Implement ATOMS.ADD.U32 | ReinUsesLisp | 2020-01-16 | 1 | -0/+7 |
| | | |||||
* | | Merge pull request #3300 from ReinUsesLisp/vk-texture-cache | bunnei | 2020-01-17 | 3 | -0/+715 |
|\ \ | |/ |/| | vk_texture_cache: Implement generic texture cache on Vulkan | ||||
| * | vk_texture_cache: Address feedback | ReinUsesLisp | 2020-01-16 | 2 | -22/+8 |
| | | |||||
| * | vk_texture_cache: Fix typo in commentary | Rodrigo Locatti | 2020-01-16 | 1 | -1/+1 |
| | | | | | | Co-Authored-By: MysticExile <30736337+MysticExile@users.noreply.github.com> | ||||
| * | vk_texture_cache: Implement generic texture cache on Vulkan | ReinUsesLisp | 2020-01-14 | 3 | -0/+729 |
| | | | | | | | | | | It currently ignores PBO linearizations since these should be dropped as soon as possible on OpenGL. | ||||
* | | Merge pull request #3290 from ReinUsesLisp/gl-clamp | bunnei | 2020-01-14 | 3 | -6/+11 |
|\ \ | |/ |/| | maxwell_to_vk: Implement GL_CLAMP hacking Nvidia's driver | ||||
| * | maxwell_to_vk: Implement GL_CLAMP hacking Nvidia's driver | ReinUsesLisp | 2020-01-10 | 3 | -6/+11 |
| | | | | | | | | | | | | Nvidia's driver defaults invalid enumerations to GL_CLAMP. Vulkan doesn't expose GL_CLAMP through its API, but we can hack it on Nvidia's driver using the internal driver defaults. | ||||
* | | vk_compute_pass: Address feedback | Rodrigo Locatti | 2020-01-11 | 1 | -0/+2 |
| | | | | | | Comment hardcoded SPIR-V modules. | ||||
* | | vk_compute_pass: Add compute passes to emulate missing Vulkan features | ReinUsesLisp | 2020-01-08 | 2 | -0/+414 |
| | | | | | | | | | | | | | | | | | | | | | | This currently only supports quad arrays and u8 indices. In the future we can remove quad arrays with a table written from the CPU, but this was used to bootstrap the other passes helpers and it was left in the code. The blob code is generated from the "shaders/" directory. Read the instructions there to know how to generate the SPIR-V. | ||||
* | | vk_shader_util: Add helper to build SPIR-V shaders | ReinUsesLisp | 2020-01-08 | 2 | -0/+51 |
|/ | |||||
* | vk_pipeline_cache: Initial implementation | ReinUsesLisp | 2020-01-07 | 2 | -1/+460 |
| | | | | | Given a pipeline key, this cache returns a pipeline abstraction (for graphics or compute). | ||||
* | vk_graphics_pipeline: Initial implementation | ReinUsesLisp | 2020-01-07 | 3 | -0/+393 |
| | | | | | | | | | This abstractio represents the state of the 3D engine at a given draw. Instead of changing individual bits of the pipeline how it's done in APIs like D3D11, OpenGL and NVN; on Vulkan we are forced to put everything together into a single, immutable object. It takes advantage of the few dynamic states Vulkan offers. | ||||
* | vk_compute_pipeline: Initial implementation | ReinUsesLisp | 2020-01-07 | 3 | -0/+217 |
| | | | | This abstraction represents a Vulkan compute pipeline. | ||||
* | vk_pipeline_cache: Add file and define descriptor update template filler | ReinUsesLisp | 2020-01-07 | 2 | -0/+65 |
| | | | | | This function allows us to share code between compute and graphics pipelines compilation. | ||||
* | fixed_pipeline_state: Add depth clamp | ReinUsesLisp | 2020-01-07 | 2 | -10/+18 |
| | |||||
* | vk_rasterizer: Add placeholder | ReinUsesLisp | 2020-01-07 | 1 | -0/+13 |
| | |||||
* | Merge pull request #3276 from ReinUsesLisp/pipeline-reqs | bunnei | 2020-01-06 | 4 | -0/+340 |
|\ | | | | | vk_update_descriptor/vk_renderpass_cache: Add pipeline cache dependencies | ||||
| * | vk_renderpass_cache: Initial implementation | ReinUsesLisp | 2020-01-06 | 2 | -0/+197 |
| | | | | | | | | | | The renderpass cache is used to avoid creating renderpasses on each draw. The hashed structure is not currently optimized. | ||||
| * | vk_update_descriptor: Initial implementation | ReinUsesLisp | 2020-01-06 | 2 | -0/+143 |
| | | | | | | | | | | | | | | | | | | 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. | ||||
* | | vk_stream_buffer/vk_buffer_cache: Avoid halting and use generic cache | ReinUsesLisp | 2020-01-06 | 4 | -62/+340 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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. | ||||
* | | vk_memory_manager: Misc changes | ReinUsesLisp | 2020-01-06 | 2 | -88/+142 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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. | ||||
* | | vk_buffer_cache: Temporarily remove buffer cache | ReinUsesLisp | 2020-01-06 | 2 | -226/+0 |
|/ | | | | This is intended for a follow up commit to avoid circular dependencies. | ||||
* | Merge pull request #3264 from ReinUsesLisp/vk-descriptor-pool | Fernando Sahmkow | 2020-01-05 | 2 | -0/+145 |
|\ | | | | | vk_descriptor_pool: Initial implementation | ||||
| * | Update src/video_core/renderer_vulkan/vk_descriptor_pool.cpp | Rodrigo Locatti | 2020-01-03 | 1 | -1/+1 |
| | | | | | | Co-Authored-By: Mat M. <mathew1800@gmail.com> | ||||
| * | vk_descriptor_pool: Initial implementation | ReinUsesLisp | 2020-01-01 | 2 | -0/+145 |
| | | | | | | | | | | | | | | | | | | | | Create a large descriptor pool where we allocate all our descriptors from. It has to be wide enough to support any pipeline, hence its large numbers. If the descritor pool is filled, we allocate more memory at that moment. This way we can take advantage of permissive drivers like Nvidia's that allocate more descriptors than what the spec requires. | ||||
* | | Merge pull request #3258 from FernandoS27/shader-amend | bunnei | 2020-01-04 | 1 | -0/+8 |
|\ \ | |/ |/| | Shader_IR: add the ability to amend code in the shader ir. | ||||
| * | Shader_IR: Address Feedback | Fernando Sahmkow | 2020-01-04 | 1 | -14/+4 |
| | | |||||
| * | Shader_IR: add the ability to amend code in the shader ir. | Fernando Sahmkow | 2019-12-30 | 1 | -0/+18 |
| | | | | | | | | | | | | | | This commit introduces a mechanism by which shader IR code can be amended and extended. This useful for track algorithms where certain information can derived from before the track such as indexes to array samplers. | ||||
* | | Merge pull request #3248 from ReinUsesLisp/vk-image | Fernando Sahmkow | 2019-12-30 | 2 | -0/+190 |
|\ \ | | | | | | | vk_image: Add an image object abstraction | ||||
| * | | vk_image: Avoid unnecesary equals | Rodrigo Locatti | 2019-12-30 | 1 | -1/+1 |
| | | | |||||
| * | | vk_image: Add an image object abstraction | ReinUsesLisp | 2019-12-25 | 2 | -0/+190 |
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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. | ||||
* | | vk_staging_buffer_pool: Initialize last epoch to zero | Rodrigo Locatti | 2019-12-29 | 1 | -1/+1 |
| | | |||||
* | | vk_staging_buffer_pool: Add a staging pool for temporary operations | ReinUsesLisp | 2019-12-25 | 2 | -0/+210 |
|/ | | | | | | | 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. | ||||
* | fixed_pipeline_state: Define symetric operator!= and mark as noexcept | ReinUsesLisp | 2019-12-24 | 2 | -40/+92 |
| | | | | Marks as noexcept Hash, operator== and operator!= for consistency. | ||||
* | fixed_pipeline_state: Define structure and loaders | ReinUsesLisp | 2019-12-23 | 2 | -0/+526 |
| | | | | | | | | | | | | | The intention behind this hasheable structure is to describe the state of fixed function pipeline state that gets compiled to a single graphics pipeline state object. This is all dynamic state in OpenGL but Vulkan wants it in an immutable state, even if hardware can edit it freely. In this commit the structure is defined in an optimized state (it uses booleans, has paddings and many data entries that can be packed to single integers). This is intentional as an initial implementation that is easier to debug, implement and review. It will be optimized in later stages, or it might change if Vulkan gets more dynamic states. | ||||
* | Merge pull request #3238 from ReinUsesLisp/vk-resource-manager | bunnei | 2019-12-22 | 4 | -1/+82 |
|\ | | | | | vk_resource_manager: Catch device losses and other changes | ||||
| * | vk_resource_manager: Add entry to VKFence to test its usage | ReinUsesLisp | 2019-12-19 | 1 | -0/+8 |
| | | |||||
| * | vk_reosurce_manager: Add assert for releasing fences | ReinUsesLisp | 2019-12-19 | 1 | -0/+1 |
| | | | | | | | | | | Notify the programmer when a request to release a fence is invalid because the fence is already free. | ||||
| * | vk_resource_manager: Implement VKFenceWatch move constructor | ReinUsesLisp | 2019-12-19 | 2 | -0/+32 |
| | | | | | | | | | | | | This allows us to put VKFenceWatch inside a std::vector without storing it in heap. On move we have to signal the fences where the new protected resource is, adding some overhead. | ||||
| * | vk_device: Add entry to catch device losses | ReinUsesLisp | 2019-12-19 | 3 | -1/+40 |
| | | | | | | | | | | | | | | VK_NV_device_diagnostic_checkpoints allows us to push data to a Vulkan queue and then query it even after a device loss. This allows us to push the current pipeline object and see what was the call that killed the device. | ||||
| * | vk_device: Add query for RGBA8Uint | ReinUsesLisp | 2019-12-19 | 1 | -0/+1 |
| | | |||||
* | | Merge pull request #3237 from ReinUsesLisp/vk-shader-decompiler | Fernando Sahmkow | 2019-12-22 | 2 | -38/+49 |
|\ \ | | | | | | | vk_shader_decompiler: Misc changes | ||||
| * | | vk_shader_decompiler: Fix full decompilation | ReinUsesLisp | 2019-12-19 | 1 | -3/+5 |
| | | | | | | | | | | | | | | | When full decompilation was enabled, labels were not being inserted and instructions were misused. Fix these bugs. | ||||
| * | | vk_shader_decompiler: Skip NDC correction when it is native | ReinUsesLisp | 2019-12-19 | 2 | -1/+2 |
| | | | | | | | | | | | | | | | Avoid changing gl_Position when the NDC used by the game is [0, 1] (Vulkan's native). | ||||
| * | | vk_shader_decompiler: Normalize output fragment attachments | ReinUsesLisp | 2019-12-19 | 2 | -12/+12 |
| | | | | | | | | | | | | | | | | | | Some games write from fragment shaders to an unexistant framebuffer attachment or they don't write to one when it exists in the framebuffer. Fix this by skipping writes or adding zeroes. | ||||
| * | | vk_shader_decompiler: Update sirit and implement Texture AOFFI | ReinUsesLisp | 2019-12-19 | 1 | -22/+30 |
| |/ | |||||
* | | Merge pull request #3230 from ReinUsesLisp/vk-emu-shaders | Fernando Sahmkow | 2019-12-22 | 4 | -0/+122 |
|\ \ | | | | | | | renderer_vulkan/shader: Add helper GLSL shaders | ||||
| * | | renderer_vulkan/shader: Add helper GLSL shaders | ReinUsesLisp | 2019-12-16 | 4 | -0/+122 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | These shaders are used to specify code that is not dynamically generated in the Vulkan backend. Instead of packing it inside the build system, it's manually built and copied to the C++ file to avoid adding unnecessary build time dependencies. quad_array should be dropped in the future since it can be emulated with a memory pool generated from the CPU. | ||||
* | | | vk_shader_decompiler: Use Visit instead of reimplementing it | ReinUsesLisp | 2019-12-21 | 1 | -23/+1 |
| |/ |/| | | | | | | | | | | | | | ExprCondCode visit implements the generic Visit. Use this instead of that one. As an intended side effect this fixes unwritten memory usages in cases when a negation of a condition code is used. | ||||
* | | Merge pull request #3221 from ReinUsesLisp/vk-scheduler | bunnei | 2019-12-19 | 2 | -37/+311 |
|\ \ | |/ |/| | vk_scheduler: Delegate commands to a worker thread and state track | ||||
| * | vk_scheduler: Delegate commands to a worker thread and state track | ReinUsesLisp | 2019-12-13 | 2 | -37/+311 |
| | | | | | | | | | | | | | | | | | | | | | | | | Introduce a worker thread approach for delegating Vulkan work derived from dxvk's approach. https://github.com/doitsujin/dxvk Now that the scheduler is what handles all Vulkan work related to command streaming, store state tracking in itself. This way we can know when to reupload Vulkan dynamic state to the queue (since this one is invalidated between command buffers unlike NVN). We can also store the renderpass state and graphics pipeline bound to avoid redundant binds and renderpass begins/ends. | ||||
* | | maxwell_to_vk: Improve image format table and add more formats | ReinUsesLisp | 2019-12-13 | 2 | -89/+127 |
| | | | | | | | | | | | | A1B5G5R5 uses A1R5G5B5. This is flipped with image view swizzles; flushing is still not properly implemented on Vulkan for this particular format. | ||||
* | | maxwell_to_vk: Implement more vertex formats | ReinUsesLisp | 2019-12-13 | 1 | -7/+81 |
| | | |||||
* | | maxwell_to_vk: Implement more primitive topologies | ReinUsesLisp | 2019-12-13 | 2 | -2/+11 |
| | | | | | | | | | | | | Add an extra argument to query device capabilities in the future. The intention behind this is to use native quads, quad strips, line loops and polygons if these are released for Vulkan. | ||||
* | | maxwell_to_vk: Approach GL_CLAMP closer to the GL spec | ReinUsesLisp | 2019-12-13 | 3 | -9/+17 |
| | | | | | | | | | | | | | | The OpenGL spec defines GL_CLAMP's formula similarly to CLAMP_TO_EDGE and CLAMP_TO_BORDER depending on the filter mode used. It doesn't exactly behave like this, but it's the closest we can get with what Vulkan offers without emulating it by injecting shader code. | ||||
* | | maxwell_to_vk: Use VK_EXT_index_type_uint8 when available | ReinUsesLisp | 2019-12-13 | 2 | -4/+7 |
|/ | |||||
* | shader: Implement MEMBAR.GL | ReinUsesLisp | 2019-12-10 | 1 | -0/+14 |
| | | | | Implement using memoryBarrier in GLSL and OpMemoryBarrier on SPIR-V. | ||||
* | vk_shader_decompiler: Fix build issues on old gcc versions | ReinUsesLisp | 2019-12-10 | 1 | -2/+3 |
| | |||||
* | vk_shader_decompiler: Reduce YNegate's severity | ReinUsesLisp | 2019-12-10 | 1 | -1/+1 |
| | |||||
* | shader_ir/other: Implement S2R InvocationId | ReinUsesLisp | 2019-12-10 | 1 | -0/+1 |
| | |||||
* | vk_shader_decompiler: Misc changes | ReinUsesLisp | 2019-12-10 | 2 | -697/+1648 |
| | | | | | | | | Update Sirit and its usage in vk_shader_decompiler. Highlights: - Implement tessellation shaders - Implement geometry shaders - Implement some missing features - Use native half float instructions when available. | ||||
* | vk_device: Misc changes | ReinUsesLisp | 2019-12-09 | 2 | -117/+276 |
| | | | | | | | | | - Setup more features and requirements. - Improve logging for missing features. - Collect telemetry parameters. - Add queries for more image formats. - Query push constants limits. - Optionally enable some extensions. | ||||
* | externals: Update Vulkan-Headers | ReinUsesLisp | 2019-12-09 | 2 | -2/+14 |
| | |||||
* | vk_swapchain: Add support for swapping sRGB | ReinUsesLisp | 2019-12-07 | 2 | -24/+31 |
| | | | | | We don't know until the game is running if it's using an sRGB color space or not. Add support for hot-swapping swapchain surface formats. | ||||
* | Merge pull request #3109 from FernandoS27/new-instr | bunnei | 2019-12-07 | 1 | -0/+8 |
|\ | | | | | Implement FLO & TXD Instructions on GPU Shaders | ||||
| * | Shader_IR: Implement TXD instruction. | Fernando Sahmkow | 2019-11-14 | 1 | -0/+6 |
| | | |||||
| * | Shader_IR: Implement FLO instruction. | Fernando Sahmkow | 2019-11-14 | 1 | -0/+2 |
| | | |||||
* | | core/memory: Migrate over GetPointer() | Lioncash | 2019-11-27 | 1 | -3/+3 |
| | | | | | | | | | | With all of the interfaces ready for migration, it's trivial to migrate over GetPointer(). | ||||
* | | core: Prepare various classes for memory read/write migration | Lioncash | 2019-11-27 | 2 | -2/+9 |
| | | | | | | | | | | | | | | | | | | | | Amends a few interfaces to be able to handle the migration over to the new Memory class by passing the class by reference as a function parameter where necessary. Notably, within the filesystem services, this eliminates two ReadBlock() calls by using the helper functions of HLERequestContext to do that for us. | ||||
* | | video_core: Unify ProgramType and ShaderStage into ShaderType | ReinUsesLisp | 2019-11-23 | 4 | -22/+25 |
| | | |||||
* | | texture_cache: Drop abstracted ComponentType | ReinUsesLisp | 2019-11-14 | 2 | -74/+71 |
|/ | | | | | | | | | Abstracted ComponentType was not being used in a meaningful way. This commit drops its usage. There is one place where it was being used to test compatibility between two cached surfaces, but this one is implied in the pixel format. Removing the component type test doesn't change the behaviour. | ||||
* | shader_ir/warp: Implement FSWZADD | ReinUsesLisp | 2019-11-08 | 1 | -0/+6 |
| | |||||
* | gl_shader_decompiler: Reimplement shuffles with platform agnostic intrinsics | ReinUsesLisp | 2019-11-08 | 1 | -40/+3 |
| | |||||
* | Shader_IR: Implement Fast BRX and allow multi-branches in the CFG. | Fernando Sahmkow | 2019-10-25 | 1 | -0/+7 |
| | |||||
* | Merge pull request #2983 from lioncash/fallthrough | Fernando Sahmkow | 2019-10-22 | 1 | -0/+3 |
|\ | | | | | gl_shader_decompiler/vk_shader_decompiler: Resolve implicit fallthrough cases | ||||
| * | vk_shader_decompiler: Resolve fallthrough within ExprDecompiler's ExprCondCode operator() | Lioncash | 2019-10-16 | 1 | -0/+3 |
| | | | | | | | | | | This would previously result in NeverExecute and UnusedIndex being treated as regular predicates. | ||||
* | | vk_shader_decompiler: Mark operator() function parameters as const references | Lioncash | 2019-10-18 | 1 | -21/+23 |
|/ | | | | | These parameters aren't actually modified in any way, so they can be made const references. | ||||
* | Shader_Ir: Address Feedback and clang format. | Fernando Sahmkow | 2019-10-05 | 1 | -25/+18 |
| | |||||
* | vk_shader_decompiler: Correct Branches inside conditionals. | Fernando Sahmkow | 2019-10-05 | 1 | -1/+11 |
| | |||||
* | vk_shader_decompiler: Clean code and be const correct. | Fernando Sahmkow | 2019-10-05 | 1 | -7/+5 |
| | |||||
* | vk_shader_compiler: Don't enclose branches with if(true) to avoid crashing AMD | Fernando Sahmkow | 2019-10-05 | 1 | -16/+33 |
| | |||||
* | vk_shader_compiler: Correct SPIR-V AST Decompiling | Fernando Sahmkow | 2019-10-05 | 1 | -4/+11 |
| | |||||
* | Shader_IR: allow else derivation to be optional. | Fernando Sahmkow | 2019-10-05 | 1 | -2/+4 |
| | |||||
* | vk_shader_compiler: Implement the decompiler in SPIR-V | Fernando Sahmkow | 2019-10-05 | 1 | -22/+276 |
| | |||||
* | Merge pull request #2869 from ReinUsesLisp/suld | bunnei | 2019-09-24 | 1 | -10/+5 |
|\ | | | | | shader/image: Implement SULD and fix SUATOM | ||||
| * | gl_shader_decompiler: Use uint for images and fix SUATOM | ReinUsesLisp | 2019-09-21 | 1 | -12/+0 |
| | | | | | | | | | | | | In the process remove implementation of SUATOM.MIN and SUATOM.MAX as these require a distinction between U32 and S32. These have to be implemented with imageCompSwap loop. | ||||
| * | shader/image: Implement SULD and remove irrelevant code | ReinUsesLisp | 2019-09-21 | 1 | -0/+7 |
| | | | | | | | | | | * Implement SULD as float. * Remove conditional declaration of GL_ARB_shader_viewport_layer_array. | ||||
* | | video_core: Implement RGBX16F PixelFormat | FearlessTobi | 2019-09-22 | 1 | -0/+1 |
|/ | |||||
* | shader_ir/warp: Implement SHFL | ReinUsesLisp | 2019-09-17 | 1 | -0/+50 |
| | |||||
* | Merge pull request #2858 from ReinUsesLisp/vk-device | Fernando Sahmkow | 2019-09-14 | 3 | -111/+258 |
|\ | | | | | vk_device: Add miscellaneous features and minor style changes | ||||
| * | vk_device: Add miscellaneous features and minor style changes | ReinUsesLisp | 2019-09-13 | 3 | -111/+258 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Increase minimum Vulkan requirements * Require VK_EXT_vertex_attribute_divisor * Require depthClamp, samplerAnisotropy and largePoints features * Search and expose VK_KHR_uniform_buffer_standard_layout * Search and expose VK_EXT_index_type_uint8 * Search and expose native float16 arithmetics * Track current driver with VK_KHR_driver_properties * Query and expose SSBO alignment * Query more image formats * Improve logging overall * Minor style changes * Minor rephrasing of commentaries | ||||
* | | shader/image: Implement SUATOM and fix SUST | ReinUsesLisp | 2019-09-11 | 1 | -0/+42 |
|/ | |||||
* | shader_ir: Implement VOTE | ReinUsesLisp | 2019-08-21 | 1 | -0/+25 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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. | ||||
* | Shader_Ir: Implement F16 Variants of F2F, F2I, I2F. | Fernando Sahmkow | 2019-07-20 | 1 | -0/+18 |
| | | | | | This commit takes care of implementing the F16 Variants of the conversion instructions and makes sure conversions are done. | ||||
* | shader/half_set_predicate: Fix HSETP2 implementation | ReinUsesLisp | 2019-07-20 | 1 | -13/+4 |
| | |||||
* | Merge pull request #2695 from ReinUsesLisp/layer-viewport | Fernando Sahmkow | 2019-07-15 | 1 | -8/+6 |
|\ | | | | | gl_shader_decompiler: Implement gl_ViewportIndex and gl_Layer in vertex shaders | ||||
| * | gl_shader_decompiler: Implement gl_ViewportIndex and gl_Layer in vertex shaders | ReinUsesLisp | 2019-07-08 | 1 | -8/+6 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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. | ||||
* | | Merge pull request #2609 from FernandoS27/new-scan | bunnei | 2019-07-11 | 1 | -0/+9 |
|\ \ | | | | | | | Implement a New Shader Scanner, Decompile Flow Stack and implement BRX BRA.CC | ||||
| * | | shader_ir: Implement BRX & BRA.CC | Fernando Sahmkow | 2019-07-09 | 1 | -0/+9 |
| |/ | |||||
* | | Merge pull request #2686 from ReinUsesLisp/vk-scheduler | bunnei | 2019-07-10 | 6 | -50/+60 |
|\ \ | | | | | | | vk_scheduler: Drop execution context in favor of views | ||||
| * | | vk_scheduler: Drop execution context in favor of views | ReinUsesLisp | 2019-07-07 | 6 | -50/+60 |
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of passing by copy an execution context through out the whole Vulkan call hierarchy, use a command buffer view and fence view approach. This internally dereferences the command buffer or fence forcing the user to be unable to use an outdated version of it on normal usage. It is still possible to keep store an outdated if it is casted to VKFence& or vk::CommandBuffer. While changing this file, add an extra parameter for Flush and Finish to allow releasing the fence from this calls. | ||||
* | | vk_sampler_cache: Remove unused includes | Lioncash | 2019-07-07 | 1 | -3/+0 |
| | | | | | | | | These are no longer used within this header, so they can be removed. | ||||
* | | video_core: Add missing override specifiers | Lioncash | 2019-07-07 | 1 | -2/+2 |
|/ | |||||
* | shader: Decode SUST and implement backing image functionality | ReinUsesLisp | 2019-06-21 | 1 | -0/+7 |
| | |||||
* | Merge pull request #2538 from ReinUsesLisp/ssy-pbk | Zach Hilman | 2019-06-16 | 1 | -12/+37 |
|\ | | | | | shader: Split SSY and PBK stack | ||||
| * | shader: Split SSY and PBK stack | ReinUsesLisp | 2019-06-07 | 1 | -12/+37 |
| | | | | | | | | | | | | | | | | | | | | | | 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; | ||||
* | | Merge pull request #2514 from ReinUsesLisp/opengl-compat | Zach Hilman | 2019-06-07 | 1 | -1/+1 |
|\ \ | |/ |/| | video_core: Drop OpenGL core in favor of OpenGL compatibility | ||||
| * | maxwell_to_gl: Use GL_CLAMP to emulate Clamp wrap mode | ReinUsesLisp | 2019-05-30 | 1 | -1/+1 |
| | | |||||
* | | shader: Use shared_ptr to store nodes and move initialization to file | ReinUsesLisp | 2019-06-06 | 1 | -25/+25 |
| | | | | | | | | | | | | | | | | | | Instead of having a vector of unique_ptr stored in a vector and returning star pointers to this, use shared_ptr. While changing initialization code, move it to a separate file when possible. This is a first step to allow code analysis and node generation beyond the ShaderIR class. | ||||
* | | Merge pull request #2520 from ReinUsesLisp/vulkan-refresh | bunnei | 2019-06-06 | 4 | -88/+218 |
|\ \ | |/ |/| | vk_device,vk_shader_decompiler: Miscellaneous changes | ||||
| * | vk_device: Let formats array type be deduced | ReinUsesLisp | 2019-05-26 | 1 | -33/+33 |
| | | |||||
| * | vk_shader_decompiler: Misc fixes | ReinUsesLisp | 2019-05-26 | 2 | -45/+67 |
| | | | | | | | | | | | | | | | | | | | | | | | | Fix missing OpSelectionMerge instruction. This caused devices loses on most hardware, Intel didn't care. Fix [-1;1] -> [0;1] depth conversions. Conditionally use VK_EXT_scalar_block_layout. This allows us to use non-std140 layouts on UBOs. Update external Vulkan headers. | ||||
| * | vk_device: Enable features when available and misc changes | ReinUsesLisp | 2019-05-26 | 2 | -43/+151 |
| | | | | | | | | | | | | | | | | | | | | | | | | Keeps track of native ASTC support, VK_EXT_scalar_block_layout availability and SSBO range. Check for independentBlend and vertexPipelineStorageAndAtomics as a required feature. Always enable it. Use vk::to_string format to log Vulkan enums. Style changes. | ||||
* | | shader: Implement S2R Tid{XYZ} and CtaId{XYZ} | ReinUsesLisp | 2019-05-20 | 1 | -0/+18 |
|/ | |||||
* | Merge pull request #2441 from ReinUsesLisp/al2p | bunnei | 2019-05-19 | 1 | -4/+3 |
|\ | | | | | shader: Implement AL2P and ALD.PHYS | ||||
| * | shader: Remove unused AbufNode Ipa mode | ReinUsesLisp | 2019-05-03 | 1 | -4/+3 |
| | | |||||
* | | Merge pull request #2461 from lioncash/unused-var | Mat M | 2019-05-14 | 1 | -1/+0 |
|\ \ | | | | | | | video_core: Remove a few unused variables and functions | ||||
| * | | renderer_vulkan/vk_shader_decompiler: Remove unused variable from DeclareInternalFlags() | Lioncash | 2019-05-10 | 1 | -1/+0 |
| |/ | |||||
* | | Merge pull request #2413 from FernandoS27/opt-gpu | Rodrigo Locatti | 2019-05-14 | 1 | -3/+4 |
|\ \ | |/ |/| | Rasterizer Cache: refactor flushing & optimize memory usage of surfaces | ||||
| * | Rasterizer Cache: Use a temporal storage for Surfaces loading/flushing. | Fernando Sahmkow | 2019-04-21 | 1 | -1/+0 |
| | | | | | | | | | | This PR should heavily reduce memory usage since temporal buffers are no longer stored per Surface but instead managed by the Rasterizer Cache. | ||||
| * | RasterizerCache Redesign: Flush | Fernando Sahmkow | 2019-04-20 | 1 | -2/+4 |
| | | | | | | | | | | | | flushing is now responsability of children caches instead of the cache object. This change will allow the specific cache to pass extra parameters on flushing and will allow more flexibility. | ||||
* | | Merge pull request #2322 from ReinUsesLisp/wswitch | bunnei | 2019-04-29 | 1 | -4/+6 |
|\ \ | | | | | | | video_core: Silent -Wswitch warnings | ||||
| * | | video_core: Silent -Wswitch warnings | ReinUsesLisp | 2019-04-18 | 1 | -4/+6 |
| | | | |||||
* | | | Merge pull request #2409 from ReinUsesLisp/half-floats | bunnei | 2019-04-20 | 1 | -5/+20 |
|\ \ \ | |_|/ |/| | | shader_ir/decode: Miscellaneous fixes to half-float decompilation | ||||
| * | | vk_shader_decompiler: Add missing operations | ReinUsesLisp | 2019-04-16 | 1 | -0/+7 |
| | | | |||||
| * | | shader_ir/decode: Fix half float pre-operations and remove MetaHalfArithmetic | ReinUsesLisp | 2019-04-16 | 1 | -5/+7 |
| | | | | | | | | | | | | | | | | | | | | | Operations done before the main half float operation (like HAdd) were managing a packed value instead of the unpacked one. Adding an unpacked operation allows us to drop the per-operand MetaHalfArithmetic entry, simplifying the code overall. | ||||
| * | | shader_ir/decode: Implement half float saturation | ReinUsesLisp | 2019-04-16 | 1 | -0/+6 |
| |/ | |||||
* | | Merge pull request #2318 from ReinUsesLisp/sampler-cache | bunnei | 2019-04-18 | 2 | -58/+18 |
|\ \ | | | | | | | gl_sampler_cache: Port sampler cache to OpenGL | ||||
| * | | video_core: Abstract vk_sampler_cache into a templated class | ReinUsesLisp | 2019-04-02 | 2 | -58/+18 |
| | | | |||||
* | | | shader_ir: Implement STG, keep track of global memory usage and flush | ReinUsesLisp | 2019-04-14 | 1 | -6/+8 |
| |/ |/| | |||||
* | | vk_shader_decompiler: Implement flow primitives | ReinUsesLisp | 2019-04-10 | 1 | -5/+82 |
| | | |||||
* | | vk_shader_decompiler: Implement most common texture primitives | ReinUsesLisp | 2019-04-10 | 1 | -8/+65 |
| | | |||||
* | | vk_shader_decompiler: Implement texture decompilation helper functions | ReinUsesLisp | 2019-04-10 | 1 | -0/+32 |
| | | |||||
* | | vk_shader_decompiler: Implement Assign and LogicalAssign | ReinUsesLisp | 2019-04-10 | 1 | -2/+64 |
| | | |||||
* | | vk_shader_decompiler: Implement non-OperationCode visits | ReinUsesLisp | 2019-04-10 | 1 | -7/+129 |
| | | |||||
* | | vk_shader_decompiler: Implement OperationCode decompilation interface | ReinUsesLisp | 2019-04-10 | 1 | -1/+411 |
| | | |||||
* | | vk_shader_decompiler: Implement Visit | ReinUsesLisp | 2019-04-10 | 1 | -1/+50 |
| | | |||||
* | | vk_shader_decompiler: Implement labels tree and flow | ReinUsesLisp | 2019-04-10 | 1 | -0/+71 |
| | | |||||
* | | vk_shader_decompiler: Implement declarations | ReinUsesLisp | 2019-04-10 | 1 | -3/+457 |
| | | |||||
* | | vk_shader_decompiler: Declare and stub interface for a SPIR-V decompiler | ReinUsesLisp | 2019-04-10 | 2 | -0/+125 |
| | | |||||
* | | video_core/engines: Remove unnecessary inclusions where applicable | Lioncash | 2019-04-06 | 1 | -0/+1 |
| | | | | | | | | | | | | Replaces header inclusions with forward declarations where applicable and also removes unused headers within the cpp file. This reduces a few more dependencies on core/memory.h | ||||
* | | Merge pull request #2302 from ReinUsesLisp/vk-swapchain | bunnei | 2019-04-03 | 2 | -0/+302 |
|\ \ | |/ |/| | vk_swapchain: Implement a swapchain manager | ||||
| * | vk_swapchain: Implement a swapchain manager | ReinUsesLisp | 2019-03-29 | 2 | -0/+302 |
| | | |||||
* | | Merge pull request #2297 from lioncash/reorder | bunnei | 2019-03-31 | 1 | -2/+2 |
|\ \ | |/ |/| | video_core: Amend constructor initializer list order where applicable | ||||
| * | video_core: Amend constructor initializer list order where applicable | Lioncash | 2019-03-27 | 1 | -2/+2 |
| | | | | | | | | | | | | | | Specifies the members in the same order that initialization would take place in. This also silences -Wreorder warnings. | ||||
* | | video_core: Add missing override specifiers | Lioncash | 2019-03-27 | 2 | -2/+2 |
|/ | | | | | | Ensures that the signatures will always match with the base class. Also silences a few compilation warnings. | ||||
* | gpu: Move GPUVAddr definition to common_types. | bunnei | 2019-03-21 | 2 | -4/+2 |
| | |||||
* | gpu: Use host address for caching instead of guest address. | bunnei | 2019-03-15 | 2 | -17/+41 |
| | |||||
* | vk_sampler_cache: Use operator== instead of memcmp | Mat M | 2019-03-13 | 1 | -1/+1 |
| | | | Co-Authored-By: ReinUsesLisp <reinuseslisp@airmail.cc> | ||||
* | vk_sampler_cache: Implement a sampler cache | ReinUsesLisp | 2019-03-13 | 2 | -0/+137 |
| | |||||
* | Merge pull request #2191 from ReinUsesLisp/maxwell-to-vk | bunnei | 2019-03-08 | 3 | -3/+551 |
|\ | | | | | maxwell_to_vk: Initial implementation | ||||
| * | maxwell_to_vk: Initial implementation | ReinUsesLisp | 2019-03-04 | 3 | -3/+551 |
| | | |||||
* | | video_core/engines: Remove unnecessary includes | Lioncash | 2019-03-06 | 1 | -1/+1 |
|/ | | | | | | | | | Removes a few unnecessary dependencies on core-related machinery, such as the core.h and memory.h, which reduces the amount of rebuilding necessary if those files change. This also uncovered some indirect dependencies within other source files. This also fixes those. | ||||
* | vk_buffer_cache: Fix clang-format | ReinUsesLisp | 2019-03-02 | 1 | -3/+3 |
| | |||||
* | vk_buffer_cache: Implement a buffer cache | ReinUsesLisp | 2019-03-01 | 2 | -0/+203 |
| | | | | | This buffer cache is just like OpenGL's buffer cache with some minor style changes. It uses VKStreamBuffer. | ||||
* | Merge pull request #2152 from ReinUsesLisp/vk-stream-buffer | bunnei | 2019-02-28 | 4 | -7/+169 |
|\ | | | | | vk_stream_buffer: Implement a stream buffer | ||||
| * | vk_stream_buffer: Remove copy code path | ReinUsesLisp | 2019-02-26 | 2 | -53/+18 |
| | | |||||
| * | vk_stream_buffer: Implement a stream buffer | ReinUsesLisp | 2019-02-24 | 2 | -0/+197 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | This manages two kinds of streaming buffers: one for unified memory models and one for dedicated GPUs. The first one skips the copy from the staging buffer to the real buffer, since it creates an unified buffer. This implementation waits for all fences to finish their operation before "invalidating". This is suboptimal since it should allocate another buffer or start searching from the beginning. There is room for improvement here. This could also handle AMD's "pinned" memory (a heap with 256 MiB) that seems to be designed for buffer streaming. | ||||
| * | vk_resource_manager: Minor VKFenceWatch changes | ReinUsesLisp | 2019-02-24 | 2 | -7/+7 |
| | | |||||
* | | vk_memory_manager: Reorder constructor initializer list in terms of member declaration order | Lioncash | 2019-02-27 | 1 | -1/+1 |
|/ | | | | | Reorders members in the order that they would actually be initialized in. Silences a -Wreorder warning. | ||||
* | Merge pull request #2146 from ReinUsesLisp/vulkan-scheduler | bunnei | 2019-02-24 | 2 | -0/+129 |
|\ | | | | | vk_scheduler: Implement a scheduler | ||||
| * | vk_scheduler: Implement a scheduler | ReinUsesLisp | 2019-02-22 | 2 | -0/+129 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | The scheduler abstracts command buffer and fence management with an interface that's able to do OpenGL-like operations on Vulkan command buffers. It returns by value a command buffer and fence that have to be used for subsequent operations until Flush or Finish is executed, after that the current execution context (the pair of command buffers and fences) gets invalidated a new one must be fetched. Thankfully validation layers will quickly detect if this is skipped throwing an error due to modifications to a sent command buffer. | ||||
* | | vk_memory_manager: Fixup commit interval allocation | ReinUsesLisp | 2019-02-24 | 1 | -2/+1 |
|/ | | | | | VKMemoryCommitImpl was using as the end of its interval "begin + end". That ended up wasting memory. | ||||
* | vk_memory_manager: Implement memory manager | ReinUsesLisp | 2019-02-19 | 2 | -0/+340 |
| | | | | | A memory manager object handles the memory allocations for a device. It allocates chunks of Vulkan memory objects and then suballocates. | ||||
* | vk_resource_manager: Implement a command buffer pool with VKFencedPool | ReinUsesLisp | 2019-02-14 | 2 | -1/+59 |
| | |||||
* | vk_resource_manager: Add VKFencedPool interface | ReinUsesLisp | 2019-02-14 | 2 | -0/+83 |
| | | | | | | | Handles a pool of resources protected by fences. Manages resource overflow allocating more resources. This class is intended to be used through inheritance. | ||||
* | vk_resource_manager: Implement VKResourceManager and fence allocator | ReinUsesLisp | 2019-02-14 | 2 | -0/+85 |
| | | | | | CommitFence iterates a pool of fences until one is found. If all fences are being used at the same time, allocate more. | ||||
* | vk_resource_manager: Implement VKFenceWatch | ReinUsesLisp | 2019-02-14 | 2 | -0/+68 |
| | | | | | | A fence watch is used to keep track of the usage of a fence and protect a resource or set of resources without having to inherit from their handlers. | ||||
* | vk_resource_manager: Implement VKFence | ReinUsesLisp | 2019-02-14 | 2 | -0/+131 |
| | | | | | | | | | | Fences take ownership of objects, protecting them from GPU-side or driver-side concurrent access. They must be commited from the resource manager. Their usage flow is: commit the fence from the resource manager, protect resources with it and use them, send the fence to an execution queue and Wait for it if needed and then call Release. Used resources will automatically be signaled when they are free to be reused. | ||||
* | vk_resource_manager: Add VKResource interface | ReinUsesLisp | 2019-02-14 | 2 | -0/+40 |
| | | | | | VKResource is an interface that gets signaled by a fence when it is free to be reused. | ||||
* | vk_device: Abstract device handling into a class | ReinUsesLisp | 2019-02-13 | 2 | -0/+347 |
| | | | | | | | VKDevice contains all the data required to manage and initialize a physical device. Its intention is to be passed across Vulkan objects to query device-specific data (for example the logical device and the dispatch loader). | ||||
* | renderer_vulkan: Add declarations file | ReinUsesLisp | 2019-02-12 | 1 | -0/+45 |
This file is intended to be included instead of vulkan/vulkan.hpp. It includes declarations of unique handlers using a dynamic dispatcher instead of a static one (which would require linking to a Vulkan library). |