Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | scope_exit: Make constexpr | FearlessTobi | 2024-02-19 | 1 | -2/+6 |
| | | | | | Allows the use of the macro in constexpr-contexts. Also avoids some potential problems when nesting braces inside it. | ||||
* | video_core: consistently account for resolution scaling when rendering | Liam | 2024-01-31 | 1 | -1/+5 |
| | |||||
* | video_core: simplify accelerated surface fetch and crop handling between APIs | Liam | 2024-01-31 | 1 | -13/+14 |
| | |||||
* | Core: Eliminate core/memory dependancies. | Fernando Sahmkow | 2024-01-19 | 1 | -2/+2 |
| | |||||
* | Core: Clang format and other small issues. | Fernando Sahmkow | 2024-01-19 | 1 | -1/+0 |
| | |||||
* | SMMU: Implement physical memory mirroring | Fernando Sahmkow | 2024-01-19 | 1 | -4/+2 |
| | |||||
* | SMMU: Initial adaptation to video_core. | Fernando Sahmkow | 2024-01-19 | 1 | -19/+24 |
| | |||||
* | OpenGL: Add GL_PRIMITIVES_GENERATED and GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN queries | Ameer J | 2023-12-19 | 1 | -0/+4 |
| | |||||
* | Merge pull request #12274 from liamwhite/srgb-nonsense | liamwhite | 2023-12-08 | 1 | -2/+2 |
|\ | | | | | renderer_vulkan: do not recreate swapchain for srgb | ||||
| * | renderer_vulkan: do not recreate swapchain for srgb | Liam | 2023-12-03 | 1 | -2/+2 |
| | | |||||
* | | renderer_vulkan: adjust window origin and swizzle independently | Liam | 2023-11-30 | 1 | -4/+10 |
|/ | |||||
* | renderer_vulkan: exclude more qcom drivers from extensions | Liam | 2023-11-30 | 1 | -4/+3 |
| | |||||
* | 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 | 1 | -6/+4 |
| | | | | This reverts commit d9dde7e6f3a90f58d642808900ddd558da21f762. | ||||
* | 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 |
| | |||||
* | Add missing dowhile loops around FindBuffer calls | Kelebek1 | 2023-10-23 | 1 | -0/+2 |
| | |||||
* | Merge pull request #11806 from liamwhite/needs-more-locking | liamwhite | 2023-10-20 | 1 | -4/+6 |
|\ | | | | | renderer_vulkan: add locks to avoid scheduler flushes from CPU | ||||
| * | renderer_vulkan: add locks to avoid scheduler flushes from CPU | Liam | 2023-10-17 | 1 | -4/+6 |
| | | |||||
* | | 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 #11630 from Kelebek1/clear_stencil_requires_depth_test | liamwhite | 2023-10-07 | 1 | -1/+2 |
|\ \ | | | | | | | Enable depth test on depthstencil clear path | ||||
| * | | Enable depth test on stencil clear path | Kelebek1 | 2023-09-28 | 1 | -1/+2 |
| | | | |||||
* | | | 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 |
| |/ / | |||||
* | | | Query Cache: address issues | Fernando Sahmkow | 2023-09-23 | 1 | -27/+0 |
| | | | |||||
* | | | Query Cachge: Fully rework Vulkan's query cache | Fernando Sahmkow | 2023-09-23 | 1 | -50/+48 |
|/ / | |||||
* / | VideoCore: Implement DispatchIndirect | Fernando Sahmkow | 2023-08-27 | 1 | -0/+14 |
|/ | |||||
* | Masked depthstencil clears | Kelebek1 | 2023-08-19 | 1 | -9/+21 |
| | |||||
* | Mark accelerted DMA destination buffers and images as GPU-modified | Kelebek1 | 2023-08-13 | 1 | -1/+6 |
| | |||||
* | vulkan: centralize config | Alexandre Bouvier | 2023-08-02 | 1 | -1/+2 |
| | |||||
* | Memory Tracking: Optimize tracking to only use atomic writes when contested with the host GPU | Fernando Sahmkow | 2023-06-28 | 1 | -2/+23 |
| | |||||
* | MemoryTracking: Initial setup of atomic writes. | Fernando Sahmkow | 2023-06-28 | 1 | -6/+3 |
| | |||||
* | video_core: Add BCn decoding support | GPUCode | 2023-06-28 | 1 | -0/+7 |
| | |||||
* | renderer_vulkan: Respect viewport limit | GPUCode | 2023-06-28 | 1 | -4/+12 |
| | |||||
* | video_core: vk_rasterizer: Decrease draw dispatch count for Android. | bunnei | 2023-06-03 | 1 | -0/+4 |
| | |||||
* | android: video_core: Disable some problematic things on GPU Normal. | bunnei | 2023-06-03 | 1 | -0/+14 |
| | |||||
* | 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 |
| | | |||||
* | | renderer_vulkan: separate guest and host compute descriptor queues | Liam | 2023-05-10 | 1 | -9/+9 |
|/ | |||||
* | 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 | 1 | -0/+23 |
| | |||||
* | Merge pull request #10088 from FernandoS27/100-gelato-flavor-test-builds-later | bunnei | 2023-05-04 | 1 | -2/+4 |
|\ | | | | | Y.F.C Implement Asynchronous Fence manager and Rework Query async downloads | ||||
| * | Clang format and ddress feedback | Fernando Sahmkow | 2023-04-24 | 1 | -2/+4 |
| | | |||||
| * | QueryCache: rework async downloads. | Fernando Sahmkow | 2023-04-23 | 1 | -1/+1 |
| | | |||||
| * | Accuracy Normal: reduce accuracy further for perf improvements in Project Lime | Fernando Sahmkow | 2023-04-23 | 1 | -1/+1 |
| | | |||||
* | | Accelerate DMA: Use texture cache async downloads to perform the copies | Fernando Sahmkow | 2023-04-29 | 1 | -3/+3 |
| | | | | | | | | | | | | to host. WIP | ||||
* | | TextureCache: refactor DMA downloads to allow multiple buffers. | Fernando Sahmkow | 2023-04-29 | 1 | -1/+1 |
|/ | |||||
* | general: fix spelling mistakes | Liam | 2023-03-12 | 1 | -1/+1 |
| | |||||
* | Merge pull request #9913 from ameerj/acc-dma-refactor | Fernando S | 2023-03-11 | 1 | -218/+30 |
|\ | | | | | AccelerateDMA: Refactor Buffer/Image copy code and implement for OGL | ||||
| * | Refactor AccelerateDMA code | ameerj | 2023-03-07 | 1 | -218/+30 |
| | | |||||
* | | Merge pull request #9896 from Kelebek1/d24s8 | liamwhite | 2023-03-08 | 1 | -1/+1 |
|\ \ | |/ |/| | 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 | 1 | -1/+1 |
| | | |||||
* | | Engines: Implement Accelerate DMA Texture. | Fernando Sahmkow | 2023-03-05 | 1 | -2/+232 |
|/ | |||||
* | video_core: Implement vulkan clear specified channel | FengChen | 2023-01-28 | 1 | -1/+9 |
| | |||||
* | Merge pull request #9556 from vonchenplus/draw_texture | liamwhite | 2023-01-19 | 1 | -0/+29 |
|\ | | | | | video_core: Implement maxwell3d draw texture method | ||||
| * | Address feedback | Feng Chen | 2023-01-16 | 1 | -2/+3 |
| | | |||||
| * | video_core: Implement opengl/vulkan draw_texture | Feng Chen | 2023-01-05 | 1 | -0/+28 |
| | | |||||
* | | VideoCore: Fix OGL cache invalidation. | Fernando Sahmkow | 2023-01-08 | 1 | -0/+2 |
| | | |||||
* | | 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 | 1 | -0/+23 |
|/ | |||||
* | Video_core: Address feedback | Fernando Sahmkow | 2023-01-04 | 1 | -14/+13 |
| | |||||
* | Vulkan: rework stencil tracking. | Fernando Sahmkow | 2023-01-03 | 1 | -23/+83 |
| | |||||
* | video_core: fix build | Liam | 2023-01-01 | 1 | -2/+6 |
| | |||||
* | Rasterizer: Setup skeleton for Host Conditional rendering | Fernando Sahmkow | 2023-01-01 | 1 | -6/+22 |
| | |||||
* | RasterizerMemory: Add filtering for flushing/invalidation operations. | Fernando Sahmkow | 2023-01-01 | 1 | -17/+35 |
| | |||||
* | Vulkan: Implement Dynamic State 3 | Fernando Sahmkow | 2023-01-01 | 1 | -1/+93 |
| | |||||
* | Vulkan Implement Dynamic State 2 LogicOp and PatchVertices | Fernando Sahmkow | 2023-01-01 | 1 | -1/+14 |
| | |||||
* | Vulkan: Implement Dynamic States 2 | Fernando Sahmkow | 2023-01-01 | 1 | -4/+66 |
| | |||||
* | MacroHLE: Implement DrawIndexedIndirect & DrawArraysIndirect. | Fernando Sahmkow | 2023-01-01 | 1 | -18/+30 |
| | |||||
* | MacroHLE: Add MultidrawIndirect HLE Macro. | Fernando Sahmkow | 2023-01-01 | 1 | -14/+43 |
| | |||||
* | Merge pull request #9423 from vonchenplus/vulkan_quad_strip | liamwhite | 2022-12-29 | 1 | -2/+6 |
|\ | | | | | video_core: Implement all vulkan topology | ||||
| * | video_core: Implement vulkan QuadStrip topology | FengChen | 2022-12-26 | 1 | -2/+6 |
| | | |||||
* | | Remove unimplemented transform feedback geometry spam, it should be implemented | Kelebek1 | 2022-12-16 | 1 | -2/+1 |
| | | |||||
* | | 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 | 1 | -0/+1 |
|/ | | | | | Co-authored-by: goldenx86 <goldenx86@users.noreply.github.com> Co-authored-by: BreadFish64 <breadfish64@users.noreply.github.com> | ||||
* | video_core: Implement maxwell3d draw manager and split draw logic | Feng Chen | 2022-12-08 | 1 | -8/+10 |
| | |||||
* | 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 | 1 | -15/+0 |
|\ | | | | | video_core: Reimplement inline index buffer binding | ||||
| * | video_core: Reimplement inline index buffer binding | Feng Chen | 2022-11-15 | 1 | -15/+0 |
| | | |||||
* | | maxwell3d: full HLE for multi-layer clears | Liam | 2022-11-17 | 1 | -2/+2 |
| | | |||||
* | | ir/texture_pass: Use host_info instead of querying Settings::values (#9176) | Morph | 2022-11-11 | 1 | -1/+1 |
|/ | |||||
* | video_core: Fix SNORM texture buffer emulating error (#9001) | Feng Chen | 2022-11-04 | 1 | -5/+5 |
| | |||||
* | Merge pull request #8858 from vonchenplus/mipmap | bunnei | 2022-11-04 | 1 | -0/+16 |
|\ | | | | | video_core: Generate mipmap texture by drawing | ||||
| * | video_core: Generate mipmap texture by drawing | FengChen | 2022-09-20 | 1 | -0/+16 |
| | | |||||
* | | Merge pull request #9097 from liamwhite/intel-spv-compiler | Morph | 2022-11-04 | 1 | -4/+2 |
|\ \ | | | | | | | video_core: don't build ASTC decoder shader unless requested | ||||
| * | | video_core: don't build ASTC decoder shader unless requested | Liam | 2022-10-20 | 1 | -4/+2 |
| | | | |||||
* | | | video_core: Catch vulkan clear op not all channel need clear | FengChen | 2022-10-25 | 1 | -8/+13 |
| | | | |||||
* | | | video_core: Implement maxwell inline_index method | FengChen | 2022-10-22 | 1 | -0/+15 |
| | | | |||||
* | | | video_coare: Reimplementing the maxwell drawing trigger mechanism | FengChen | 2022-10-21 | 1 | -6/+5 |
|/ / | |||||
* | | Fix stencil func registers, make clip control equivalent to how it was before, but surely wrong. | Kelebek1 | 2022-10-10 | 1 | -8/+6 |
| | | |||||
* | | Update 3D regs | Kelebek1 | 2022-10-07 | 1 | -50/+54 |
| | | |||||
* | | DMA & InlineToMemory Engines Rework. | bunnei | 2022-10-06 | 1 | -1/+1 |
| | | |||||
* | | VideoCore: Refactor fencing system. | Fernando Sahmkow | 2022-10-06 | 1 | -14/+7 |
| | | |||||
* | | 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 | 1 | -2/+2 |
| | | |||||
* | | VideoCore: Fix channels with disk pipeline/shader cache. | Fernando Sahmkow | 2022-10-06 | 1 | -0/+2 |
| | | |||||
* | | OpenGl: Implement Channels. | Fernando Sahmkow | 2022-10-06 | 1 | -1/+1 |
| | | |||||
* | | VideoCore: implement channels on gpu caches. | Fernando Sahmkow | 2022-10-06 | 1 | -26/+61 |
|/ | |||||
* | video_core: vulkan: rasterizer: Workaround on viewport swizzle on AMD | Narr the Reg | 2022-08-24 | 1 | -1/+8 |
| | |||||
* | renderer_vulkan: add format fallbacks for R16G16B16_SFLOAT, R16G16B16_SSCALED, R8G8B8_SSCALED | Liam | 2022-08-03 | 1 | -1/+1 |
| | |||||
* | video_core: Replace VKScheduler with Scheduler | german77 | 2022-06-27 | 1 | -2/+2 |
| | |||||
* | vk_rasterizer: fix stencil test when two faces are disabled | Lody | 2022-05-06 | 1 | -2/+2 |
| | |||||
* | general: Convert source file copyright comments over to SPDX | Morph | 2022-04-23 | 1 | -3/+2 |
| | | | | | 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. | ||||
* | 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 |
| | |||||
* | video_core: Reduce unused includes | ameerj | 2022-03-19 | 1 | -3/+0 |
| | |||||
* | Rasterizer: Refactor inlineToMemory. | Fernando Sahmkow | 2022-02-01 | 1 | -2/+2 |
| | |||||
* | Rasterizer: Implement Inline2Memory Acceleration. | Fernando Sahmkow | 2022-01-29 | 1 | -0/+22 |
| | |||||
* | TextureCache: fix rescaling in aliases and overlap joins. | FernandoS27 | 2021-11-16 | 1 | -9/+10 |
| | |||||
* | Video Core: fix building for GCC. | Fernando Sahmkow | 2021-11-16 | 1 | -6/+5 |
| | |||||
* | Vulkan Rasterizer: Fix clears on integer textures. | FernandoS27 | 2021-11-16 | 1 | -1/+33 |
| | |||||
* | TextureCache: Fix blitting filter in Vulkan and correct viewport/scissor calculation when downscaling. | FernandoS27 | 2021-11-16 | 1 | -5/+19 |
| | |||||
* | TextureCache: Base fixes on rescaling. | Fernando Sahmkow | 2021-11-16 | 1 | -1/+2 |
| | |||||
* | vk_rasterizer: Fix scaling on Y_NEGATE | ameerj | 2021-11-16 | 1 | -3/+9 |
| | |||||
* | vk_rasterizer: Minor style change | ReinUsesLisp | 2021-11-16 | 1 | -2/+2 |
| | |||||
* | TextureCache: Modify Viewports/Scissors according to Rescale. | Fernando Sahmkow | 2021-11-16 | 1 | -30/+57 |
| | |||||
* | Vulran Rasterizer: address feedback. | Fernando Sahmkow | 2021-10-23 | 1 | -3/+5 |
| | |||||
* | Vulkan Rasterizer: Correct DepthBias/PolygonOffset on Vulkan. | Fernando Sahmkow | 2021-09-23 | 1 | -2/+12 |
| | |||||
* | 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. | ||||
* | vk_rasterizer: Only clear depth and stencil buffers when set in attachment aspect mask | ameerj | 2021-08-21 | 1 | -5/+6 |
| | | | | Silences validation errors for clearing the depth/stencil buffers of framebuffer attachments that were not specified to have depth/stencil usage. | ||||
* | texture_cache: Address ameerj's review | yzct12345 | 2021-08-05 | 1 | -1/+1 |
| | |||||
* | 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. | ||||
* | renderers: Fix clang formatting | ameerj | 2021-07-23 | 1 | -1/+1 |
| | |||||
* | vk_rasterizer: Workaround bug in VK_EXT_vertex_input_dynamic_state | ReinUsesLisp | 2021-07-23 | 1 | -13/+18 |
| | | | | | Workaround potential bug on Nvidia's driver where only updating high attributes leaves low attributes out dated. | ||||
* | vk_graphics_pipeline: Implement line width | ReinUsesLisp | 2021-07-23 | 1 | -0/+9 |
| | |||||
* | shader: Unify shader stage types | ReinUsesLisp | 2021-07-23 | 1 | -2/+0 |
| | |||||
* | vk_rasterizer: Exit render passes on fragment barriers | ReinUsesLisp | 2021-07-23 | 1 | -0/+1 |
| | |||||
* | vulkan: Add VK_EXT_vertex_input_dynamic_state support | ReinUsesLisp | 2021-07-23 | 1 | -0/+56 |
| | | | | | Reduces the number of total pipelines generated on Vulkan. Tested on Super Smash Bros. Ultimate. | ||||
* | vk_rasterizer: Implement first index | ReinUsesLisp | 2021-07-23 | 1 | -2/+5 |
| | |||||
* | vk_pipeline_cache,shader_notify: Add shader notifications | ReinUsesLisp | 2021-07-23 | 1 | -1/+1 |
| | |||||
* | vk_rasterizer: Flush work on clear and dispatches | ReinUsesLisp | 2021-07-23 | 1 | -0/+3 |
| | |||||
* | vulkan: Enable depth bounds and use it conditionally | ReinUsesLisp | 2021-07-23 | 1 | -0/+5 |
| | | | | Intel devices pre-Xe don't support this. | ||||
* | shader: Initial OpenGL implementation | ReinUsesLisp | 2021-07-23 | 1 | -11/+0 |
| | |||||
* | vk_scheduler: Allow command submission on worker thread | ReinUsesLisp | 2021-07-23 | 1 | -3/+4 |
| | | | | | | | | | | | | 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. | ||||
* | shader: Move pipeline cache logic to separate files | ReinUsesLisp | 2021-07-23 | 1 | -1/+1 |
| | | | | | | | | | 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. | ||||
* | vk_rasterizer: Request outside render pass execution context for compute | ReinUsesLisp | 2021-07-23 | 1 | -0/+1 |
| | |||||
* | shader: Implement SULD and SUST | ReinUsesLisp | 2021-07-23 | 1 | -1/+1 |
| | |||||
* | vk_compute_pass: Fix compute passes | ReinUsesLisp | 2021-07-23 | 1 | -1/+0 |
| | |||||
* | vulkan: Build pipelines in parallel at runtime | ReinUsesLisp | 2021-07-23 | 1 | -13/+2 |
| | | | | | Wait from the worker thread for a pipeline to build before binding it to the command buffer. This allows queueing pipelines to multiple threads. | ||||
* | shader: Fix rasterizer integration order issues | ReinUsesLisp | 2021-07-23 | 1 | -1/+0 |
| | |||||
* | vk_pipeline_cache: Add pipeline cache | ReinUsesLisp | 2021-07-23 | 1 | -0/+5 |
| | |||||
* | shader: Add partial rasterizer integration | ReinUsesLisp | 2021-07-23 | 1 | -7/+40 |
| | |||||
* | shader: Initial support for textures and TEX | ReinUsesLisp | 2021-07-23 | 1 | -1/+2 |
| | |||||
* | spirv: Add lower fp16 to fp32 pass | ReinUsesLisp | 2021-07-23 | 1 | -2/+0 |
| | |||||
* | shader: Primitive Vulkan integration | ReinUsesLisp | 2021-07-23 | 1 | -1/+22 |
| | |||||
* | shader: Remove old shader management | ReinUsesLisp | 2021-07-23 | 1 | -357/+4 |
| | |||||
* | Merge pull request #6629 from FernandoS27/accel-dma-2 | bunnei | 2021-07-20 | 1 | -0/+5 |
|\ | | | | | DMAEngine: Accelerate BufferClear [accelerateDMA Part 2] | ||||
| * | DMAEngine: Accelerate BufferClear | Fernando Sahmkow | 2021-07-13 | 1 | -0/+5 |
| | | |||||
* | | vk_rasterizer: Only clear valid color attachments | ameerj | 2021-07-13 | 1 | -2/+4 |
|/ | |||||
* | accelerateDMA: Accelerate Buffer Copies. | Fernando Sahmkow | 2021-07-11 | 1 | -1/+12 |
| | |||||
* | 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 | 1 | -0/+7 |
| | |||||
* | Texture Cache: Initial Implementation of Sparse Textures. | Fernando Sahmkow | 2021-07-04 | 1 | -0/+7 |
| | |||||
* | buffer_cache: Simplify uniform disabling logic | ameerj | 2021-06-01 | 1 | -0/+4 |
| | |||||
* | common: Move settings to common from core. | bunnei | 2021-04-15 | 1 | -1/+1 |
| | | | | - Removes a dependency on core and input_common from common. | ||||
* | renderer_vulkan: Accelerate ASTC decoding | ameerj | 2021-03-13 | 1 | -1/+4 |
| | | | | Co-Authored-By: Rodrigo Locatti <reinuseslisp@airmail.cc> | ||||
* | vk_rasterizer: Fix loading shader addresses twice | ReinUsesLisp | 2021-02-16 | 1 | -1/+0 |
| | | | | This was recently introduced on a wrongly rebased commit. | ||||
* | fixed_pipeline_cache: Use dirty flags to lazily update key | ReinUsesLisp | 2021-02-13 | 1 | -6/+7 |
| | | | | | 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. | ||||
* | video_core: Reimplement the buffer cache | ReinUsesLisp | 2021-02-13 | 1 | -536/+128 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Reimplement the buffer cache using cached bindings and page level granularity for modification tracking. This also drops the usage of shared pointers and virtual functions from the cache. - Bindings are cached, allowing to skip work when the game changes few bits between draws. - OpenGL Assembly shaders no longer copy when a region has been modified from the GPU to emulate constant buffers, instead GL_EXT_memory_object is used to alias sub-buffers within the same allocation. - OpenGL Assembly shaders stream constant buffer data using glProgramBufferParametersIuivNV, from NV_parameter_buffer_object. In theory this should save one hash table resolve inside the driver compared to glBufferSubData. - A new OpenGL stream buffer is implemented based on fences for drivers that are not Nvidia's proprietary, due to their low performance on partial glBufferSubData calls synchronized with 3D rendering (that some games use a lot). - Most optimizations are shared between APIs now, allowing Vulkan to cache more bindings than before, skipping unnecesarry work. This commit adds the necessary infrastructure to use Vulkan object from OpenGL. Overall, it improves performance and fixes some bugs present on the old cache. There are still some edge cases hit by some games that harm performance on some vendors, this are planned to be fixed in later commits. | ||||
* | vulkan_memory_allocator: Add "download" memory usage hint | ReinUsesLisp | 2021-01-15 | 1 | -1/+1 |
| | | | | | | | 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. | ||||
* | renderer_vulkan: Rename Vulkan memory manager to memory allocator | ReinUsesLisp | 2021-01-15 | 1 | -7/+7 |
| | | | | | "Memory manager" collides with the guest GPU memory manager, and a memory allocator sounds closer to what the abstraction aims to be. | ||||
* | vk_fence_manager: Use timeline semaphores instead of spin waits | ReinUsesLisp | 2021-01-08 | 1 | -2/+1 |
| | | | | | | | | | | | 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 #5289 from ReinUsesLisp/vulkan-device | bunnei | 2021-01-06 | 1 | -1/+1 |
|\ | | | | | vulkan_common: Move device abstraction to the common directory and allow surfaceless devices | ||||
| * | renderer_vulkan: Move device abstraction to vulkan_common | ReinUsesLisp | 2021-01-04 | 1 | -1/+1 |
| | | |||||
* | | 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 | 1 | -4/+4 |
|/ | | | | | | | 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. | ||||
* | vulkan_common: Rename renderer_vulkan/wrapper.h to vulkan_common/vulkan_wrapper.h | ReinUsesLisp | 2020-12-31 | 1 | -1/+1 |
| | | | | Allows sharing Vulkan wrapper code between different rendering backends. | ||||
* | video_core: Rewrite the texture cache | ReinUsesLisp | 2020-12-30 | 1 | -400/+300 |
| | | | | | | | | | | | | | | 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. | ||||
* | video_core: Resolve more variable shadowing scenarios pt.3 | Lioncash | 2020-12-05 | 1 | -7/+7 |
| | | | | | Cleans out the rest of the occurrences of variable shadowing and makes any further occurrences of shadowing compiler errors. | ||||
* | video_core: Resolve more variable shadowing scenarios pt.2 | Lioncash | 2020-12-05 | 1 | -9/+8 |
| | | | | | | | Migrates the video core code closer to enabling variable shadowing warnings as errors. This primarily sorts out shadowing occurrences within the Vulkan code. | ||||
* | vk_graphics_pipeline: Manage primitive topology as fixed state | ReinUsesLisp | 2020-10-13 | 1 | -11/+0 |
| | | | | | | | | | 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. | ||||
* | renderer_vulkan: Make unconditional use of VK_KHR_timeline_semaphore | ReinUsesLisp | 2020-09-19 | 1 | -11/+8 |
| | | | | | | | | | | | | | | | | | | | | | | | 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. | ||||
* | video_core: Remove all Core::System references in renderer | ReinUsesLisp | 2020-09-06 | 1 | -75/+53 |
| | | | | | | | | | 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_state_tracker: Fix primitive topology | ReinUsesLisp | 2020-08-21 | 1 | -2/+2 |
| | | | | | | | | | 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. | ||||
* | 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 | 1 | -12/+7 |
| | |||||
* | Address feedback. Bruteforce delete duplicates | ameerj | 2020-08-16 | 1 | -8/+10 |
| | |||||
* | Vk Async pipeline compilation | ameerj | 2020-08-16 | 1 | -2/+25 |
| | |||||
* | vulkan: Silence more -Wmissing-field-initializer warnings | Lioncash | 2020-08-03 | 1 | -2/+7 |
| | |||||
* | 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. | ||||
* | vk_rasterizer: Make use of designated initializers where applicable | Lioncash | 2020-07-17 | 1 | -41/+47 |
| | |||||
* | 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. | ||||
* | 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 | 1 | -1/+1 |
| | | | | | | 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. | ||||
* | vk_rasterizer: Use VK_EXT_extended_dynamic_state | ReinUsesLisp | 2020-06-27 | 1 | -44/+210 |
| | |||||
* | fixed_pipeline_state: Add requirements for VK_EXT_extended_dynamic_state | ReinUsesLisp | 2020-06-27 | 1 | -18/+2 |
| | | | | | | | 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. | ||||
* | Merge pull request #4111 from ReinUsesLisp/preserve-contents-vk | bunnei | 2020-06-27 | 1 | -6/+54 |
|\ | | | | | vk_rasterizer: Don't preserve contents on full screen clears | ||||
| * | vk_rasterizer: Don't preserve contents on full screen clears | ReinUsesLisp | 2020-06-18 | 1 | -6/+54 |
| | | | | | | | | | | | | 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. | ||||
* | | gl_buffer_cache: Mark buffers as resident | ReinUsesLisp | 2020-06-24 | 1 | -14/+17 |
| | | | | | | | | | | | | 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 | 1 | -2/+2 |
|\ \ | | | | | | | vk_update_descriptor: Upload descriptor sets data directly | ||||
| * | | vk_update_descriptor: Upload descriptor sets data directly | ReinUsesLisp | 2020-06-18 | 1 | -2/+2 |
| |/ | | | | | | | | | Instead of copying to a temporary payload before sending the update task to the worker thread, insert elements to the payload directly. | ||||
* / | vk_rasterizer: BindTransformFeedbackBuffersEXT accepts a size of type VkDeviceSize | MerryMage | 2020-06-18 | 1 | -1/+1 |
|/ | |||||
* | 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 | 1 | -3/+4 |
|\ \ | | | | | | | shader_cache: Implement a generic runtime shader cache | ||||
| * | | vk_pipeline_cache: Use generic shader cache | ReinUsesLisp | 2020-06-07 | 1 | -3/+4 |
| | | | | | | | | | | | | Trivial port the generic shader cache to Vulkan. | ||||
* | | | texture_cache: Implement rendering to 3D textures | ReinUsesLisp | 2020-06-08 | 1 | -4/+5 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 | 1 | -10/+38 |
|\ \ \ | |/ / |/| | | vk_rasterizer: Implement storage texels and atomic image operations | ||||
| * | | vk_rasterizer: Implement storage texels | ReinUsesLisp | 2020-06-02 | 1 | -10/+38 |
| |/ | | | | | | | | | | | 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. | ||||
* | | Merge pull request #3930 from ReinUsesLisp/animal-borders | bunnei | 2020-06-01 | 1 | -5/+1 |
|\ \ | |/ |/| | vk_rasterizer: Implement constant attributes | ||||
| * | vk_rasterizer: Implement constant attributes | ReinUsesLisp | 2020-05-13 | 1 | -1/+1 |
| | | | | | | | | | | | | | | | | | | | | 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 #3905 from FernandoS27/vulkan-fix | bunnei | 2020-05-24 | 1 | -2/+2 |
|\ \ | | | | | | | Correct a series of crashes and intructions on Async GPU and Vulkan Pipeline | ||||
| * | | VideoCore: Use SyncGuestMemory mechanism for Shader/Pipeline Cache invalidation. | Fernando Sahmkow | 2020-05-10 | 1 | -2/+2 |
| |/ | |||||
* / | 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 #3808 from ReinUsesLisp/wait-for-idle | bunnei | 2020-05-03 | 1 | -1/+21 |
|\ | | | | | {maxwell_3d,buffer_cache}: Implement memory barriers using 3D registers | ||||
| * | {maxwell_3d,buffer_cache}: Implement memory barriers using 3D registers | ReinUsesLisp | 2020-04-28 | 1 | -1/+21 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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 | 1 | -2/+0 |
|\ \ | | | | | | | vulkan: Remove unnecessary includes | ||||
| * | | vulkan: Remove unnecessary includes | Lioncash | 2020-04-29 | 1 | -2/+0 |
| |/ | | | | | | | | | | | | | 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 | 1 | -7/+6 |
|\ \ | | | | | | | shader/texture: Support multiple unknown sampler properties | ||||
| * | | shader_ir: Turn classes into data structures | ReinUsesLisp | 2020-04-23 | 1 | -7/+6 |
| | | | |||||
* | | | 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 #3766 from ReinUsesLisp/renderpass-cache-key | Fernando Sahmkow | 2020-04-27 | 1 | -22/+29 |
|\ \ \ | |/ / |/| | | vk_renderpass_cache: Pack renderpass cache key and unify keys | ||||
| * | | vk_rasterizer: Pack texceptions and color formats on invalid formats | ReinUsesLisp | 2020-04-25 | 1 | -4/+18 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 | 1 | -6/+10 |
| | | | | | | | | | | | | | | | 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 | 1 | -21/+8 |
| |/ | |||||
* | | Merge pull request #3753 from ReinUsesLisp/ac-vulkan | Rodrigo Locatti | 2020-04-26 | 1 | -6/+36 |
|\ \ | |/ |/| | {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 | 1 | -3/+33 |
| | | | | | | | | | | | | | | | | | | | | 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 #3677 from FernandoS27/better-sync | bunnei | 2020-04-23 | 1 | -1/+54 |
|\ \ | | | | | | | 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 |
| | | | |||||
| * | | Address Feedback. | Fernando Sahmkow | 2020-04-22 | 1 | -1/+1 |
| | | | |||||
| * | | vk_fence_manager: Initial implementation | ReinUsesLisp | 2020-04-22 | 1 | -12/+4 |
| | | | |||||
| * | | 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 | 1 | -2/+14 |
| | | | |||||
| * | | Rasterizer: Document SignalFence & ReleaseFences and setup skeletons on Vulkan. | Fernando Sahmkow | 2020-04-22 | 1 | -0/+25 |
| | | | |||||
| * | | ThreadManager: Sync async reads on accurate gpu. | Fernando Sahmkow | 2020-04-22 | 1 | -0/+4 |
| | | | |||||
| * | | BufferCache: Implement OnCPUWrite and SyncGuestHost | Fernando Sahmkow | 2020-04-22 | 1 | -2/+2 |
| | | | |||||
| * | | GPU: Refactor synchronization on Async GPU | Fernando Sahmkow | 2020-04-22 | 1 | -0/+14 |
| |/ | |||||
* | | Merge pull request #3653 from ReinUsesLisp/nsight-aftermath | Fernando Sahmkow | 2020-04-22 | 1 | -10/+0 |
|\ \ | |/ |/| | renderer_vulkan: Integrate Nvidia Nsight Aftermath on Windows | ||||
| * | renderer_vulkan: Remove Nvidia checkpoints | ReinUsesLisp | 2020-04-13 | 1 | -10/+0 |
| | | |||||
* | | Merge pull request #3718 from ReinUsesLisp/better-pipeline-state | Rodrigo Locatti | 2020-04-21 | 1 | -10/+10 |
|\ \ | | | | | | | fixed_pipeline_state: Pack structure, use memcmp and CityHash on it | ||||
| * | | fixed_pipeline_state: Pack attribute state | ReinUsesLisp | 2020-04-19 | 1 | -10/+10 |
| | | | | | | | | | | | | Reduce FixedPipelineState's size from 1384 to 664 bytes | ||||
* | | | Initialize quad_indexed_pass before uint8_pass | Amit Prakash Ambasta | 2020-04-20 | 1 | -1/+1 |
| | | | | | | | | | Fixes Werror=reorder in gcc | ||||
* | | | vk_compute_pass: Implement indexed quads | ReinUsesLisp | 2020-04-17 | 1 | -4/+13 |
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | 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) | ||||
* | | Merge pull request #3600 from ReinUsesLisp/no-pointer-buf-cache | Fernando Sahmkow | 2020-04-17 | 1 | -17/+13 |
|\ \ | | | | | | | buffer_cache: Return handles instead of pointer to handles | ||||
| * | | buffer_cache: Return handles instead of pointer to handles | ReinUsesLisp | 2020-04-16 | 1 | -17/+13 |
| |/ | | | | | | | | | | | | | | | | | | | | | 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. | ||||
* / | 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 | 1 | -138/+147 |
|\ | | | | | renderer_vulkan: Drop Vulkan-Hpp | ||||
| * | renderer_vulkan: Drop Vulkan-Hpp | ReinUsesLisp | 2020-04-11 | 1 | -138/+147 |
| | | |||||
* | | 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. | ||||
* | 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 | 1 | -2/+1 |
| | |||||
* | 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 | 1 | -2/+2 |
| | |||||
* | 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 | 1 | -10/+18 |
| | |||||
* | vk_rasterizer: Remove unused variable | ReinUsesLisp | 2020-03-19 | 1 | -2/+0 |
| | |||||
* | Merge pull request #3518 from ReinUsesLisp/scissor-clears | Mat M | 2020-03-17 | 1 | -40/+46 |
|\ | | | | | 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 | 1 | -40/+46 |
| | | |||||
* | | 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. | ||||
* | vk_rasterizer: Implement transform feedback binding zero | ReinUsesLisp | 2020-03-13 | 1 | -0/+42 |
| | |||||
* | 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 | 1 | -0/+7 |
|\ \ | | | | | | | vk_rasterizer: Support disabled uniform buffers | ||||
| * | | vk_rasterizer: Support disabled uniform buffers | ReinUsesLisp | 2020-03-06 | 1 | -0/+7 |
| |/ | |||||
* | | Merge pull request #3301 from ReinUsesLisp/state-tracker | Rodrigo Locatti | 2020-03-09 | 1 | -37/+32 |
|\ \ | |/ |/| | video_core: Remove gl_state and use a state tracker based on dirty flags | ||||
| * | vk_rasterizer: Pass Maxwell registers to dynamic updates | ReinUsesLisp | 2020-02-28 | 1 | -20/+15 |
| | | |||||
| * | vk_state_tracker: Implement dirty flags for stencil properties | ReinUsesLisp | 2020-02-28 | 1 | -0/+3 |
| | | |||||
| * | vk_state_tracker: Implement dirty flags for depth bounds | ReinUsesLisp | 2020-02-28 | 1 | -0/+3 |
| | | |||||
| * | vk_state_tracker: Implement dirty flags for blend constants | ReinUsesLisp | 2020-02-28 | 1 | -0/+3 |
| | | |||||
| * | vk_state_tracker: Implement dirty flags for depth bias | ReinUsesLisp | 2020-02-28 | 1 | -0/+3 |
| | | |||||
| * | vk_state_tracker: Implement dirty flags for scissors | ReinUsesLisp | 2020-02-28 | 1 | -0/+3 |
| | | |||||
| * | vk_state_tracker: Initial implementation | ReinUsesLisp | 2020-02-28 | 1 | -3/+14 |
| | | | | | | | | Add support for render targets and viewports. | ||||
| * | gl_rasterizer: Remove dirty flags | ReinUsesLisp | 2020-02-28 | 1 | -27/+1 |
| | | |||||
* | | Merge pull request #3451 from ReinUsesLisp/indexed-textures | bunnei | 2020-03-05 | 1 | -7/+14 |
|\ \ | |/ |/| | vk_shader_decompiler: Implement indexed textures | ||||
| * | vk_shader_decompiler: Implement indexed textures | ReinUsesLisp | 2020-02-24 | 1 | -7/+14 |
| | | | | | | | | | | | | | | 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 #3425 from ReinUsesLisp/layered-framebuffer | bunnei | 2020-02-24 | 1 | -8/+9 |
|\ \ | |/ |/| | texture_cache: Implement layered framebuffer attachments | ||||
| * | texture_cache: Implement layered framebuffer attachments | ReinUsesLisp | 2020-02-16 | 1 | -8/+9 |
| | | | | | | | | | | | | 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 #3414 from ReinUsesLisp/maxwell-3d-draw | bunnei | 2020-02-19 | 1 | -10/+0 |
|\ \ | | | | | | | maxwell_3d: Unify draw methods | ||||
| * | | maxwell_3d: Unify draw methods | ReinUsesLisp | 2020-02-14 | 1 | -10/+0 |
| |/ | | | | | | | | | Pass instanced state of a draw invocation as an argument instead of having two separate virtual methods. | ||||
* / | vk_query_cache: Implement generic query cache on Vulkan | ReinUsesLisp | 2020-02-14 | 1 | -1/+20 |
|/ | |||||
* | vk_rasterizer: Use noexcept variants of std::bitset | ReinUsesLisp | 2020-02-04 | 1 | -4/+5 |
| | | | | Removes bounds checking from "texceptions" instances. | ||||
* | vk_rasterizer: Address feedback | ReinUsesLisp | 2020-01-18 | 1 | -22/+28 |
| | |||||
* | vk_rasterizer: Implement Vulkan's rasterizer | ReinUsesLisp | 2020-01-17 | 1 | -0/+1135 |
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. |