Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | video_core: use interval map for page count tracking | Liam | 2023-12-15 | 1 | -5/+5 |
| | |||||
* | texture_cache: fix max_element comparison function | Liam | 2023-12-04 | 1 | -1/+1 |
| | |||||
* | renderer_vulkan: do not recreate swapchain for srgb | Liam | 2023-12-03 | 2 | -10/+28 |
| | |||||
* | texture_cache: use pedantic type names | Liam | 2023-12-02 | 1 | -1/+1 |
| | |||||
* | renderer_vulkan: Introduce separate cmd buffer for uploads | GPUCode | 2023-11-12 | 1 | -0/+4 |
| | |||||
* | Merge pull request #11747 from Kelebek1/image_alias_sample_names | liamwhite | 2023-10-17 | 2 | -3/+7 |
|\ | | | | | 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 | -3/+7 |
| | | |||||
* | | Merge pull request #11788 from Squall-Leonhart/IFREMOVED | Fernando S | 2023-10-17 | 1 | -2/+9 |
|\ \ | | | | | | | [crash fix]brings back the removed if statement in util.cpp and adds the num_level test to it like previous discontinued PR | ||||
| * | | brings back the removed If statement and adds the num_level test | Squall Leonhart | 2023-10-14 | 1 | -2/+9 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This resolves the out of bounds read/writes in the linear swizzler, it brings back the scaled TOTK Recall bug however, pending further work in the block size calculation. Recall is not glitched in the Dynamic FPS resolution mod to the degree that it is in the native yuzu scaler, this can be a workaround for the time being. The recall effect is constructed from multiple 320x180 texture slices, it breaking may have a similar origin to https://github.com/Ryujinx/Ryujinx/pull/5640 but it may also be connected to the other deficiencies identified in the Yuzu size calculations, such as no apparent implementation of slice testing for end of slce depth as opposed to full aligned size as implemented in https://github.com/Ryujinx/Ryujinx/pull/5220 | ||||
* | | | Transition MSAA images to general layout without uploading data | Kelebek1 | 2023-10-12 | 1 | -0/+1 |
| |/ |/| | |||||
* | | Merge pull request #11743 from Squall-Leonhart/IFREMOVED | Fernando S | 2023-10-11 | 1 | -2/+2 |
|\| | | | | | Fix mistaken usage of info.block instead of level_info.block | ||||
| * | Fix mistaken usage of info.block instead of level_info.block | Squall-Leonhart | 2023-10-11 | 1 | -2/+2 |
| | | | | | | | | | | | | Fixed an error on my part, in the last change I had mistakenly passed unadjusted block info into FullUploadSwizzles and UnswizzleImage Revert (my mistaken changing of) the construction of SwizzleParameters in UnswizzleImage and FullUploadSwizzles to use level_info.block instead of info.block. This ensures that the block information used in the swizzling process is correctly adjusted for each mip level. | ||||
* | | Merge pull request #11534 from Squall-Leonhart/IFREMOVED | liamwhite | 2023-10-10 | 1 | -21/+20 |
|\| | | | | | Partial revert of #10433 (Texture Cache Util: Fix block depth adjustment on slices) | ||||
| * | Reuse part of my previous idea to to use num_levels to check within AdjustMipBlockSize | Squall-Leonhart | 2023-09-19 | 1 | -14/+20 |
| | | | | | | | | The partial revert was not enough for Tsukihime, this might do the trick | ||||
| * | Partial revert of #10433 | Squall Leonhart | 2023-09-18 | 1 | -9/+2 |
| | | | | | | | | | | The If block in this change was causing some 2D textures to be treated as if their mip 0 was a 3D Slice, this could be ascertained as the same texture viewed from different distances would render fine, but then close up would look like a decoding failure. It also resulted in some 3D ASTC textures not being scaled appropriate leading to broken graphical effects such as the jagged TOTK recall animation being a circle, as the If block was only accepting the image based on its original info without any adjustments applied. | ||||
* | | add Z32, FLOAT, UINT, UINT, UINT, LINEAR to format lookup table | Squall Leonhart | 2023-10-08 | 1 | -0/+2 |
| | | | | | | Should fix and close #11711 | ||||
* | | Implement X8_D24 format | Kelebek1 | 2023-10-06 | 3 | -0/+7 |
| | | |||||
* | | ci: fix new codespell errors | Liam | 2023-10-03 | 2 | -2/+2 |
| | | |||||
* | | Merge pull request #11258 from Squall-Leonhart/Z16_Assert_Fix | liamwhite | 2023-09-18 | 1 | -0/+2 |
|\ \ | |/ |/| | Fix a logged assert in the format lookup table for Z16 | ||||
| * | Needed to make this an extra case so it didnt also start asserting in BOTW. | Squall-Leonhart | 2023-08-11 | 1 | -0/+2 |
| | | | | | | | | Thanks Liam | ||||
| * | Fix an assert in the format lookup table fir Z16 | Squall Leonhart | 2023-08-11 | 1 | -1/+1 |
| | | | | | | | | Came across this while looking into Asterix and Obelix XXL glitching | ||||
* | | Look for the most recently modified image for present | Kelebek1 | 2023-09-11 | 1 | -1/+14 |
| | | |||||
* | | Mark accelerted DMA destination buffers and images as GPU-modified | Kelebek1 | 2023-08-13 | 1 | -3/+3 |
|/ | |||||
* | Merge pull request #10996 from Kelebek1/readblock_optimisation | bunnei | 2023-07-11 | 3 | -32/+21 |
|\ | | | | | Use spans over guest memory where possible instead of copying data | ||||
| * | Use spans over guest memory where possible instead of copying data. | Kelebek1 | 2023-07-03 | 3 | -32/+21 |
| | | |||||
* | | oops re open | gidoly | 2023-07-03 | 1 | -0/+4 |
|/ | |||||
* | Merge pull request #10479 from GPUCode/format-list | liamwhite | 2023-07-02 | 2 | -8/+2 |
|\ | | | | | Add support for VK_KHR_image_format_list | ||||
| * | renderer_vulkan: Add support for VK_KHR_image_format_list | GPUCode | 2023-07-01 | 2 | -8/+2 |
| | | |||||
* | | Revert "texture_cache: Fix incorrect logic for AccelerateDMA" | Liam | 2023-07-02 | 1 | -4/+8 |
|/ | | | | This reverts commit 1fc47361a12afd91d8ea0b76378e0b3d4feb93a6. | ||||
* | Merge pull request #10953 from FernandoS27/oh-oopsies-yfc | Fernando S | 2023-06-30 | 1 | -9/+0 |
|\ | | | | | Texture cache: Fix YFC regression due to code testing | ||||
| * | Texture cache: Fix YFC regression due to code testing | Fernando Sahmkow | 2023-06-29 | 1 | -9/+0 |
| | | |||||
* | | AccelerateDMA: Don't accelerate 3D texture DMA operations | Fernando Sahmkow | 2023-06-29 | 1 | -0/+4 |
|/ | |||||
* | video_core: Add BCn decoding support | GPUCode | 2023-06-28 | 4 | -106/+149 |
| | |||||
* | Remove memory allocations in some hot paths | Kelebek1 | 2023-06-22 | 5 | -47/+55 |
| | |||||
* | Merge pull request #10777 from liamwhite/no-barrier | bunnei | 2023-06-22 | 1 | -0/+4 |
|\ | | | | | video_core: optionally skip barriers on feedback loops | ||||
| * | video_core: optionally skip barriers on feedback loops | Liam | 2023-06-14 | 1 | -0/+4 |
| | | |||||
* | | Merge pull request #10818 from vonchenplus/render_target_samples | liamwhite | 2023-06-20 | 2 | -18/+14 |
|\ \ | | | | | | | video_core: add samples check when find render target | ||||
| * | | video_core: add samples check when find render target | FengChen | 2023-06-17 | 2 | -18/+14 |
| |/ | |||||
* | | Merge pull request #10744 from Wollnashorn/af-for-all | Fernando S | 2023-06-18 | 4 | -5/+91 |
|\ \ | |/ |/| | video_core: Improved anisotropic filtering heuristics | ||||
| * | video_core: Only apply AF to 2D (array) image types | Wollnashorn | 2023-06-17 | 1 | -2/+7 |
| | | |||||
| * | video_core: Use sampler IDs instead pointers in the pipeline config | Wollnashorn | 2023-06-16 | 3 | -6/+37 |
| | | | | | | | | 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: Disable AF for non-color image formats | Wollnashorn | 2023-06-15 | 1 | -0/+9 |
| | | |||||
| * | video_core: Add per-image anisotropy heuristics (format & mip count) | Wollnashorn | 2023-06-15 | 2 | -0/+41 |
| | | |||||
* | | image_info: adjust rescale thresholds and refactor constant use | Liam | 2023-06-08 | 1 | -8/+12 |
|/ | |||||
* | texture_cache: Fix incorrect logic for AccelerateDMA | ameerj | 2023-06-03 | 1 | -8/+4 |
| | |||||
* | Merge pull request #10418 from liamwhite/blink-and-youll-miss-it | Matías Locatti | 2023-05-26 | 4 | -61/+105 |
|\ | | | | | texture_cache: process aliases and overlaps in the correct order | ||||
| * | texture_cache: process aliases and overlaps in the correct order | Fernando Sahmkow | 2023-05-24 | 4 | -61/+105 |
| | | |||||
* | | video_core: don't garbage collect during configuration | Liam | 2023-05-25 | 2 | -6/+0 |
| | | |||||
* | | Merge pull request #10435 from FernandoS27/gotta-clean-mess-ups | bunnei | 2023-05-25 | 1 | -1/+1 |
|\ \ | | | | | | | Texture cache: revert wrong acceleration assumption | ||||
| * | | Texture cache: revert wrong acceleration assumption | Fernando Sahmkow | 2023-05-24 | 1 | -1/+1 |
| | | | |||||
* | | | Texture Cache Util: Fix block depth adjustment on slices. | Fernando Sahmkow | 2023-05-24 | 1 | -2/+13 |
|/ / | |||||
* | | Merge pull request #10422 from liamwhite/gc | Fernando S | 2023-05-24 | 1 | -4/+6 |
|\ \ | | | | | | | video_core: tune garbage collection aggressiveness | ||||
| * | | video_core: tune garbage collection aggressiveness | Liam | 2023-05-23 | 1 | -4/+6 |
| |/ | |||||
* | | Merge pull request #10398 from liamwhite/bcn | Fernando S | 2023-05-24 | 1 | -11/+66 |
|\ \ | | | | | | | video_core: add ASTC recompression | ||||
| * | | textures: add BC1 and BC3 compressors and recompression setting | Liam | 2023-05-23 | 1 | -11/+66 |
| |/ | |||||
* / | renderer_vulkan: barrier attachment feedback loops | Liam | 2023-05-23 | 2 | -0/+39 |
|/ | |||||
* | Allow Fermi blit accelerate to add src/dst to the cache if they don't exist already. Use ScratchBuffers in the software blit path. | Kelebek1 | 2023-05-11 | 1 | -1/+1 |
| | |||||
* | Texture Cache: Fix ASTC textures | Fernando Sahmkow | 2023-05-09 | 1 | -5/+5 |
| | |||||
* | Texture cache: Only force flush the dma downloads | Fernando Sahmkow | 2023-05-07 | 2 | -3/+3 |
| | |||||
* | Buffer Cache: disable reactive flushing in it. | Fernando Sahmkow | 2023-05-07 | 1 | -2/+6 |
| | |||||
* | Texture cache: reverse inmediate flush changes | Fernando Sahmkow | 2023-05-07 | 3 | -28/+14 |
| | |||||
* | Address feedback, add CR notice, etc | Fernando Sahmkow | 2023-05-07 | 1 | -1/+2 |
| | |||||
* | Settings: add option to enable / disable reactive flushing | Fernando Sahmkow | 2023-05-07 | 1 | -1/+2 |
| | |||||
* | Texture cache: sync the first flush. | Fernando Sahmkow | 2023-05-07 | 2 | -3/+30 |
| | |||||
* | GPU: Add Reactive flushing | Fernando Sahmkow | 2023-05-07 | 4 | -3/+35 |
| | |||||
* | Merge pull request #10081 from Kelebek1/copy_overlap_tick | liamwhite | 2023-05-07 | 1 | -0/+6 |
|\ | | | | | Sort overlap_ids by modification tick before copy | ||||
| * | Sort overlap_ids by modification tick before copy | Kelebek1 | 2023-04-22 | 1 | -0/+6 |
| | | |||||
* | | Log object names with debug renderer, add a GPU address to ImageViews | Kelebek1 | 2023-05-06 | 4 | -18/+21 |
| | | |||||
* | | GPU: implement missing ASTC | Fernando Sahmkow | 2023-05-03 | 2 | -0/+12 |
| | | |||||
* | | video_core: fix build on Apple Clang | Liam | 2023-05-03 | 1 | -1/+1 |
| | | |||||
* | | Texture Cache: Release stagging buffers on tick frame | Fernando Sahmkow | 2023-04-29 | 2 | -9/+14 |
| | | |||||
* | | Address Feedback & Clang Format | Fernando Sahmkow | 2023-04-29 | 2 | -17/+14 |
| | | |||||
* | | Accelerate DMA: Use texture cache async downloads to perform the copies | Fernando Sahmkow | 2023-04-29 | 2 | -38/+103 |
| | | | | | | | | | | | | to host. WIP | ||||
* | | TextureCache: refactor DMA downloads to allow multiple buffers. | Fernando Sahmkow | 2023-04-29 | 2 | -2/+16 |
|/ | |||||
* | Merge pull request #10008 from vonchenplus/texture_cache | liamwhite | 2023-04-11 | 3 | -46/+53 |
|\ | | | | | video_core: update imageinfo implement | ||||
| * | video_core: Keep the definition of DimensionControl consistent with nvidia open doc | Feng Chen | 2023-03-31 | 1 | -15/+18 |
| | | |||||
| * | video_core: Better defined ImageInfo parameters | FengChen | 2023-03-14 | 3 | -39/+43 |
| | | |||||
* | | Merge pull request #10004 from Kelebek1/cubemap | liamwhite | 2023-04-03 | 1 | -15/+15 |
|\ \ | | | | | | | [texture_cache] Only upload GPU-modified overlaps | ||||
| * | | Only upload GPU-modified overlaps | Kelebek1 | 2023-03-28 | 1 | -15/+15 |
| | | | |||||
* | | | Fixes 'Continous' typo | Max Dunbar | 2023-03-30 | 1 | -1/+1 |
|/ / | |||||
* | | Pass GPU page table by reference | Ross Schlaikjer | 2023-03-25 | 1 | -31/+32 |
| | | |||||
* | | Merge pull request #9933 from vonchenplus/texture_format | liamwhite | 2023-03-14 | 1 | -31/+31 |
|\ \ | |/ |/| | video_core: Update texture format | ||||
| * | video_core: Update texture format | Feng Chen | 2023-03-10 | 1 | -31/+31 |
| | | |||||
* | | general: fix spelling mistakes | Liam | 2023-03-12 | 1 | -1/+1 |
| | | |||||
* | | Refactor AccelerateDMA code | ameerj | 2023-03-07 | 2 | -20/+76 |
|/ | |||||
* | Engines: Implement Accelerate DMA Texture. | Fernando Sahmkow | 2023-03-05 | 7 | -12/+218 |
| | |||||
* | configuration: Add async ASTC decode setting | ameerj | 2023-02-23 | 1 | -0/+1 |
| | |||||
* | texture_cache: Add async texture decoding | ameerj | 2023-02-22 | 3 | -0/+88 |
| | |||||
* | texture_cache: OpenGL: Implement MSAA uploads and copies | ameerj | 2023-02-11 | 3 | -12/+10 |
| | |||||
* | Move to Clang Format 15 | Levi Behunin | 2023-01-30 | 2 | -4/+2 |
| | | | | | | Depends on https://github.com/yuzu-emu/build-environments/pull/69 clang-15 primary run | ||||
* | texture_cache: Adjust image view sizes by MSAA samples | ameerj | 2023-01-28 | 2 | -0/+48 |
| | |||||
* | video_core: Implement opengl/vulkan draw_texture | Feng Chen | 2023-01-05 | 2 | -0/+10 |
| | |||||
* | Texture Cache: Implement async texture downloads. | Fernando Sahmkow | 2023-01-04 | 2 | -32/+78 |
| | |||||
* | RasterizerMemory: Add filtering for flushing/invalidation operations. | Fernando Sahmkow | 2023-01-01 | 2 | -2/+3 |
| | |||||
* | texture_cache: Use Common::ScratchBuffer for swizzle buffers | ameerj | 2022-12-25 | 4 | -10/+12 |
| | |||||
* | texture_cache: Use pre-allocated buffer for texture downloads | ameerj | 2022-12-25 | 3 | -9/+14 |
| | |||||
* | texture_cache: Use pre-allocated buffer for texture uploads | ameerj | 2022-12-25 | 4 | -13/+28 |
| | |||||
* | Merge pull request #9289 from liamwhite/fruit-company | liamwhite | 2022-12-03 | 4 | -3/+4 |
|\ | | | | | general: fix compile for Apple Clang | ||||
| * | general: fix compile for Apple Clang | Liam | 2022-11-23 | 4 | -3/+4 |
| | | |||||
* | | GPU: Implement additional render target formats. | Fernando Sahmkow | 2022-11-24 | 1 | -0/+2 |
| | | |||||
* | | Fermi2D: Rework blit engine and add a software blitter. | Fernando Sahmkow | 2022-11-24 | 2 | -9/+28 |
|/ | |||||
* | video_core: Fix SNORM texture buffer emulating error (#9001) | Feng Chen | 2022-11-04 | 1 | -1/+0 |
| | |||||
* | general: Resolve -Wunused-lambda-capture and C5233 | Morph | 2022-10-22 | 1 | -4/+4 |
| | |||||
* | format_lookup_table: Implement R32_B24G8 with D32_FLOAT_S8_UINT | Morph | 2022-10-21 | 1 | -0/+2 |
| | | | | | | This format is similar to Z32_FLOAT_X24S8_UINT, which is implemented with D32_FLOAT_S8_UINT. Used in Persona 5 Royal | ||||
* | video_core: Fix spelling of "synchronize" | Morph | 2022-10-16 | 2 | -5/+5 |
| | |||||
* | Update 3D regs | Kelebek1 | 2022-10-07 | 2 | -22/+34 |
| | |||||
* | general: Format licenses as per SPDX guidelines | Morph | 2022-10-06 | 3 | -11/+6 |
| | |||||
* | Vulkan Texture Cache: Limit render area to the max width/height of the targets. | Fernando Sahmkow | 2022-10-06 | 2 | -0/+3 |
| | |||||
* | ImageBase: Basic fixes. | Fernando Sahmkow | 2022-10-06 | 1 | -8/+5 |
| | |||||
* | VideoCore: Implement formats needed for N64 emulation. | Fernando Sahmkow | 2022-10-06 | 2 | -3/+3 |
| | |||||
* | DMA & InlineToMemory Engines Rework. | bunnei | 2022-10-06 | 1 | -1/+0 |
| | |||||
* | Texture Cache: Fix GC and GPU Modified on Joins. | Fernando Sahmkow | 2022-10-06 | 1 | -3/+5 |
| | |||||
* | Texture cache: Fix the remaining issues with memory mnagement and unmapping. | Fernando Sahmkow | 2022-10-06 | 2 | -8/+23 |
| | |||||
* | Texture cache: Fix dangling references on multichannel. | Fernando Sahmkow | 2022-10-06 | 1 | -21/+24 |
| | |||||
* | Refactor VideoCore to use AS sepparate from Channel. | Fernando Sahmkow | 2022-10-06 | 3 | -141/+101 |
| | |||||
* | General: Rebase fixes. | Fernando Sahmkow | 2022-10-06 | 1 | -7/+6 |
| | |||||
* | VideoCore: Extra Fixes. | Fernando Sahmkow | 2022-10-06 | 1 | -1/+1 |
| | |||||
* | VideoCore: Fix channels with disk pipeline/shader cache. | Fernando Sahmkow | 2022-10-06 | 1 | -5/+7 |
| | |||||
* | VideoCore: implement channels on gpu caches. | Fernando Sahmkow | 2022-10-06 | 3 | -90/+195 |
| | |||||
* | Texture Cache: Add ASTC 10x5 Format. | Fernando Sahmkow | 2022-10-06 | 2 | -0/+8 |
| | |||||
* | code: dodge PAGE_SIZE #define | Kyle Kienapfel | 2022-08-20 | 2 | -11/+11 |
| | | | | | | | | | | | | | | | | | | | | | Some header files, specifically for OSX and Musl libc define PAGE_SIZE to be a number This is great except in yuzu we're using PAGE_SIZE as a variable Specific example `static constexpr u64 PAGE_SIZE = u64(1) << PAGE_BITS;` PAGE_SIZE PAGE_BITS PAGE_MASK are all similar variables. Simply deleted the underscores, and then added YUZU_ prefix Might be worth noting that there are multiple uses in different classes/namespaces This list may not be exhaustive Core::Memory 12 bits (4096) QueryCacheBase 12 bits ShaderCache 14 bits (16384) TextureCache 20 bits (1048576, or 1MB) Fixes #8779 | ||||
* | renderer_(gl/vk): Implement ASTC_10x6_UNORM | Morph | 2022-07-06 | 2 | -0/+4 |
| | | | | - Used by Monster Hunter Rise Update 10.0.2 | ||||
* | common: Change semantics of UNREACHABLE to unconditionally crash | Liam | 2022-06-14 | 4 | -14/+14 |
| | |||||
* | chore: add missing SPDX tags | Andrea Pappacoda | 2022-04-28 | 1 | -21/+2 |
| | | | | Follow-up to 99ceb03a1cfcf35968cab589ea188a8c406cda52 | ||||
* | general: Convert source file copyright comments over to SPDX | Morph | 2022-04-23 | 25 | -75/+50 |
| | | | | | 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 | -0/+10 |
| | |||||
* | Revert "texture_cache/util: Remove unneeded ReadBlockUnsafe" | bunnei | 2022-04-05 | 1 | -0/+1 |
| | |||||
* | texture_cache/util: Remove unneeded ReadBlockUnsafe | ameerj | 2022-04-04 | 1 | -1/+0 |
| | | | | This call was reading GPU memory into the dst buffer, which is then overwritten by the SwizzleTexture call. | ||||
* | GPU Garbage Collection: Fix regressions. | Fernando Sahmkow | 2022-04-01 | 1 | -2/+0 |
| | |||||
* | Revert "Memory GPU <-> CPU: reduce infighting in the texture cache by adding CPU Cached memory." | bunnei | 2022-03-26 | 3 | -54/+1 |
| | |||||
* | Texture Cache: Add Cached CPU system. | Fernando Sahmkow | 2022-03-25 | 3 | -1/+54 |
| | |||||
* | Garbage Collection: Final tuning. | Fernando Sahmkow | 2022-03-25 | 2 | -17/+29 |
| | |||||
* | Buffer Cache: Tune to the levels of the new GC. | Fernando Sahmkow | 2022-03-25 | 1 | -2/+0 |
| | |||||
* | Garbage Collection: Redesign the algorithm to do a better use of memory. | Fernando Sahmkow | 2022-03-25 | 3 | -17/+49 |
| | |||||
* | Merge pull request #8048 from ameerj/include-purge | bunnei | 2022-03-22 | 5 | -7/+0 |
|\ | | | | | general: Reduce unused includes across the project | ||||
| * | video_core: Reduce unused includes | ameerj | 2022-03-19 | 5 | -7/+0 |
| | | |||||
* | | texture_cache: Ensure has_blacklisted is always initialized | Lioncash | 2022-02-02 | 1 | -1/+1 |
| | | | | | | | | Resolves a -Wmaybe_uninitialized warning | ||||
* | | texture_cache: Remove dead code within SynchronizeAliases | Lioncash | 2022-02-02 | 1 | -13/+1 |
| | | | | | | | | | | | | | | | | Since these were being copied by value, none of the changes applied in the loop would be reflected. However, from the looks of it, this would already be applied within CopyImage() anyways, so this can be removed. | ||||
* | | texture_cache: Amend unintended bitwise OR in SynchronizeAliases | Lioncash | 2022-02-02 | 1 | -1/+1 |
|/ | |||||
* | Merge pull request #7658 from ameerj/sparse-fixes | Fernando S | 2022-01-06 | 1 | -3/+1 |
|\ | | | | | video_core/memory_manager: Fixes for sparse memory management | ||||
| * | video_core/memory_manager: Fixes for sparse memory management | ameerj | 2021-12-31 | 1 | -3/+1 |
| | | |||||
* | | texture_cache/util: Fix s32 overflow when resolving overlaps | ameerj | 2022-01-01 | 1 | -5/+5 |
|/ | |||||
* | vk_texture_cache: Fix invalidated pointer access | ameerj | 2021-12-24 | 1 | -1/+2 |
| | | | | | 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. | ||||
* | Merge pull request #7399 from ameerj/art-refactor | Fernando S | 2021-12-18 | 1 | -2/+13 |
|\ | | | | | video_core: Refactoring post A.R.T. merge | ||||
| * | texture_cache: Fix image convert dimensions assertion | ameerj | 2021-12-05 | 1 | -1/+12 |
| | | |||||
| * | blit_image: Refactor upscale factors usage | ameerj | 2021-12-05 | 1 | -1/+1 |
| | | | | | | | | 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. | ||||
* | | Fix blit image/view not compatible | Feng Chen | 2021-12-10 | 1 | -1/+6 |
| | | |||||
* | | Texture Cache: Fix crashes on NVIDIA. | Fernando Sahmkow | 2021-12-04 | 1 | -3/+6 |
|/ | |||||
* | Add missing pixel format mapping | Feng Chen | 2021-11-29 | 1 | -0/+2 |
| | |||||
* | Texture Cache: Secure insertions against deletions. | Fernando Sahmkow | 2021-11-28 | 1 | -3/+13 |
| | |||||
* | Texture Cache: Redesigning the blitting system (again). | Fernando Sahmkow | 2021-11-27 | 3 | -23/+64 |
| | |||||
* | Texture Cache: Further fix regressions. | Fernando Sahmkow | 2021-11-26 | 1 | -11/+15 |
| | |||||
* | Texture Cache: Fix issue with blitting 3D textures. | Fernando Sahmkow | 2021-11-22 | 1 | -2/+4 |
| | |||||
* | TextureCache: Simplify blitting of D24S8 formats and fix bugs. | Fernando Sahmkow | 2021-11-22 | 1 | -1/+7 |
| | |||||
* | TextureCache: Eliminate format deduction as full depth conversion has been supported. | Fernando Sahmkow | 2021-11-21 | 2 | -29/+5 |
| | |||||
* | Merge pull request #7368 from FernandoS27/vulkan-conv | bunnei | 2021-11-21 | 4 | -14/+37 |
|\ | | | | | Fix ART Blit detection regression and add D24S8 <-> RGBA8 conv to Vulkan | ||||
| * | TextureCache: Implement buffer copies on Vulkan. | Fernando Sahmkow | 2021-11-20 | 2 | -4/+2 |
| | | |||||
| * | TextureCache: Further fixes on resolve algorithm. | Fernando Sahmkow | 2021-11-19 | 2 | -16/+17 |
| | | |||||
| * | TextureCache: force same image format when resolving an image. | Fernando Sahmkow | 2021-11-19 | 2 | -2/+9 |
| | | |||||
| * | TextureCache: Fix regression caused by ART and improve blit detection algorithm to be smarter. | Fernando Sahmkow | 2021-11-19 | 2 | -10/+27 |
| | | |||||
* | | Merge pull request #7357 from Morph1984/s8_uint | bunnei | 2021-11-19 | 1 | -0/+2 |
|\ \ | |/ |/| | video_core: Implement S8_UINT format | ||||
| * | video_core: Add S8_UINT stencil format | Morph | 2021-11-17 | 1 | -0/+2 |
| | | |||||
* | | texture_cache: Use pixel format conversion when supported by the runtime | ameerj | 2021-11-17 | 2 | -0/+5 |
|/ | |||||
* | TextureCache: Fix OGL cleaning | Fernando Sahmkow | 2021-11-17 | 1 | -0/+3 |
| | |||||
* | Texture Cache: revert Image changes. | Fernando Sahmkow | 2021-11-16 | 1 | -0/+4 |
| | |||||
* | Texture Cahe/Shader decompiler: Resize PointSize on rescaling, refactor and make reaper more agressive on 4Gb GPUs. | FernandoS27 | 2021-11-16 | 3 | -20/+5 |
| | |||||
* | texture_cache: Refactor Render Target scaling function | ameerj | 2021-11-16 | 2 | -14/+24 |
| | |||||
* | Texture Cache: Fix memory usage on ScaleDown. | FernandoS27 | 2021-11-16 | 1 | -4/+0 |
| | |||||
* | OpenGlTextureCache: Fix state invalidation on rescaling. | Fernando Sahmkow | 2021-11-16 | 1 | -2/+2 |
| | |||||
* | Texture Cache: Fix blitting. | Fernando Sahmkow | 2021-11-16 | 1 | -2/+2 |
| | |||||
* | TextureCache: Improve Reaper. | FernandoS27 | 2021-11-16 | 2 | -14/+26 |
| | |||||
* | TextureCache: fix rescaling in aliases and overlap joins. | FernandoS27 | 2021-11-16 | 3 | -14/+38 |
| | |||||
* | Texture Cache: fix memory managment and optimize scaled downloads, uploads. | Fernando Sahmkow | 2021-11-16 | 3 | -15/+15 |
| | |||||
* | Texture Cache: ease the requirements of textures being blacklisted. | Fernando Sahmkow | 2021-11-16 | 2 | -22/+7 |
| | |||||
* | Texture Cache: Fix downscaling and correct memory comsumption. | Fernando Sahmkow | 2021-11-16 | 4 | -14/+28 |
| | |||||
* | Texture Cache: Rescale conversions between depth and color | FernandoS27 | 2021-11-16 | 1 | -1/+1 |
| | |||||
* | Texture cache: Fix memory consumption and ignore rating when a depth texture is rendered. | Fernando Sahmkow | 2021-11-16 | 1 | -3/+4 |
| | |||||
* | Texture Cahe: Fix downscaling on SMO. | Fernando Sahmkow | 2021-11-16 | 3 | -0/+8 |
| | |||||
* | texture_cache_base: Remove unused function declarations | ameerj | 2021-11-16 | 1 | -8/+0 |
| | |||||
* | texture_cache: Fix infinitely recursive ImageCanRescale check | ameerj | 2021-11-16 | 3 | -10/+13 |
| | |||||
* | video_core: Refactor resolution scale function | ameerj | 2021-11-16 | 1 | -27/+12 |
| | |||||
* | texture_cache: Fix image resolves when src/dst are not both scaled | ameerj | 2021-11-16 | 1 | -5/+8 |
| | |||||
* | vk_texture_cache: Fix early returns on unsupported scales | ameerj | 2021-11-16 | 1 | -1/+1 |
| | |||||
* | video_core: Misc resolution scaling related refactoring | ameerj | 2021-11-16 | 1 | -2/+0 |
| | |||||
* | texture_cache: Refactor scaled image size calculation | ameerj | 2021-11-16 | 2 | -12/+13 |
| | |||||
* | Texture Cache: Fix calculations when scaling. | Fernando Sahmkow | 2021-11-16 | 1 | -0/+12 |
| | |||||
* | Texture Cache: Fix Rescaling on Multisample | Fernando Sahmkow | 2021-11-16 | 2 | -6/+15 |
| | |||||
* | TextureCache: Base fixes on rescaling. | Fernando Sahmkow | 2021-11-16 | 1 | -3/+4 |
| | |||||
* | image_info: Mark MSAA textures as non-rescalable | ameerj | 2021-11-16 | 1 | -2/+2 |
| | | | | Blitting or resolving multisampled images requires the dimensions of the src and dst to be equal for valid usage, making them difficult for resolution scaling using the current implementation. | ||||
* | shader, video_core: Fix GCC build errors | ameerj | 2021-11-16 | 1 | -7/+3 |
| | |||||
* | TextureCache: Fix Buffer Views Scaling. | Fernando Sahmkow | 2021-11-16 | 2 | -5/+9 |
| | |||||
* | Texture Cache: Correctly fix Blits Rescaling. | Fernando Sahmkow | 2021-11-16 | 1 | -9/+12 |
| | |||||
* | texture_cache: Disable dst_image scaling in BlitImage | ameerj | 2021-11-16 | 1 | -5/+7 |
| | | | | Fixes scaling in Super Mario Party | ||||
* | texture_cache: Add getter to query if image view is rescaled | ReinUsesLisp | 2021-11-16 | 2 | -16/+9 |
| | |||||
* | texture_cache: Fix blacklists on compute | ReinUsesLisp | 2021-11-16 | 1 | -1/+1 |
| | |||||
* | texture_cache: Simplify image view queries and blacklisting | ReinUsesLisp | 2021-11-16 | 7 | -35/+60 |
| | |||||
* | Texture Cache: Implement Rating System. | Fernando Sahmkow | 2021-11-16 | 5 | -15/+47 |
| | |||||
* | Texture Cache: Implement Blacklisting. | Fernando Sahmkow | 2021-11-16 | 3 | -1/+36 |
| | |||||
* | texture_cache: Add image getters | ReinUsesLisp | 2021-11-16 | 2 | -0/+16 |
| | |||||
* | texture_cache: Fix typo in aliased image rescaling | ameerj | 2021-11-16 | 1 | -1/+1 |
| | |||||
* | Texture Cache: Implement Rescaling on Aliases and Blits. | Fernando Sahmkow | 2021-11-16 | 1 | -5/+53 |
| | |||||
* | TextureCache: Fix rescaling of ImageCopies | Fernando Sahmkow | 2021-11-16 | 2 | -5/+40 |
| | |||||
* | TextureCache: Modify Viewports/Scissors according to Rescale. | Fernando Sahmkow | 2021-11-16 | 2 | -2/+26 |
| | |||||
* | Texture Cache: More rescaling fixes. | Fernando Sahmkow | 2021-11-16 | 2 | -82/+86 |
| | |||||
* | Texture Cache: Implement Vulkan UpScaling & DownScaling | Fernando Sahmkow | 2021-11-16 | 3 | -13/+77 |
| | |||||
* | VideoCore: Initial Setup for the Resolution Scaler. | Fernando Sahmkow | 2021-11-16 | 4 | -3/+126 |
| | |||||
* | Merge pull request #7070 from FernandoS27/want-you-bad | Ameer J | 2021-10-24 | 1 | -0/+3 |
|\ | | | | | Vulkan Rasterizer: Correct DepthBias/PolygonOffset on Vulkan. | ||||
| * | Vulkan Rasterizer: Correct DepthBias/PolygonOffset on Vulkan. | Fernando Sahmkow | 2021-09-23 | 1 | -0/+3 |
| | | |||||
* | | gpu: Migrate implementation to the cpp file | ameerj | 2021-10-03 | 3 | -7/+7 |
| | | |||||
* | | general: Update style to clang-format-12 | ameerj | 2021-09-24 | 1 | -2/+2 |
|/ | |||||
* | slot_vector: Add missing <algorithm> include | Morph | 2021-09-11 | 1 | -0/+1 |
| | |||||
* | Garbage Collection: Make it more agressive on high priority mode. | Fernando Sahmkow | 2021-08-29 | 1 | -2/+2 |
| | |||||
* | Garbage Collection: Adress Feedback. | Fernando Sahmkow | 2021-08-29 | 1 | -1/+1 |
| | |||||
* | Garbage Collection: enable as default, eliminate option. | Fernando Sahmkow | 2021-08-28 | 1 | -2/+1 |
| | |||||
* | VideoCore: Rework Garbage Collection. | Fernando Sahmkow | 2021-08-28 | 3 | -62/+37 |
| | |||||
* | texture_cache: Address ameerj's review | yzct12345 | 2021-08-08 | 3 | -7/+4 |
| | |||||
* | texture_cache: Address ameerj's review | yzct12345 | 2021-08-07 | 2 | -10/+2 |
| | |||||
* | texture_cache: Don't change copyright year | yzct12345 | 2021-08-05 | 2 | -2/+2 |
| | |||||
* | texture_cache: Address ameerj's review | yzct12345 | 2021-08-05 | 4 | -1811/+1811 |
| | |||||
* | texture_cache: Split templates out | yzct12345 | 2021-08-05 | 2 | -1527/+1508 |
| | |||||
* | render_target: Add missing initializer for size extent | Lioncash | 2021-07-27 | 1 | -3/+3 |
| | | | | | | | | | | Everything else has a default constructor that does the straightforward thing of initializing most members to a default value, except for the size. We explicitly initialize the size (and others, for consistency), to prevent potential uninitialized reads from occurring. Particularly given the largeish surface area that this struct is used in. | ||||
* | texture_cache: Reduce invalid image/sampler error severity | ReinUsesLisp | 2021-07-23 | 1 | -7/+7 |
| | |||||
* | shader: Initial OpenGL implementation | ReinUsesLisp | 2021-07-23 | 2 | -4/+3 |
| | |||||
* | shader: Implement SULD and SUST | ReinUsesLisp | 2021-07-23 | 1 | -0/+8 |
| | |||||
* | shader: Interact texture buffers with buffer cache | ReinUsesLisp | 2021-07-23 | 3 | -4/+19 |
| | |||||
* | Merge pull request #6670 from ReinUsesLisp/prepare-rt | Fernando S | 2021-07-19 | 1 | -0/+6 |
|\ | | | | | texture_cache: Always prepare image views on render targets | ||||
| * | texture_cache: Always prepare image views on render targets | ReinUsesLisp | 2021-07-18 | 1 | -0/+6 |
| | | | | | | | | | | | | | | | | Images used as render targets were not being "prepared", causing desynchronizations on the texture cache. Needs #6669 to avoid performance regressions on certain cooking titles. - Fixes black shadows on Age of Calamity. | ||||
* | | texture_cache/util: Fix size calculations of multisampled images | ReinUsesLisp | 2021-07-18 | 1 | -53/+33 |
|/ | | | | | | | | | | | | | | | | On the texture cache we handle multisampled images by keeping their real size in samples (e.g. 1920x1080 with 4 samples is 3840x2160). This works nicely with size matches and other comparisons, but the calculation for guest sizes was not having this in mind, and the size was being multiplied (again) by the number of samples per dimension. For example a 3840x2160 texture cache image had its width and height multiplied by 2, resulting in a much larger texture. Fix this issue. - Fixes performance regression on cooking related titles when an unrelated bug was fixed. | ||||
* | Buffer Cache: Fix High Downloads and don't predownload on Extreme. | Fernando Sahmkow | 2021-07-09 | 1 | -2/+2 |
| | |||||
* | Out of bound blit (#6531) | Feng Chen | 2021-07-08 | 1 | -56/+15 |
| | | | | | | | | | * Fix out of bound blit error * Fix code read * Fix ci error Co-authored-by: Feng Chen <chen.feng@gloritysolutions.com> | ||||
* | Merge pull request #6497 from FernandoS27/scotty-doesnt-know | bunnei | 2021-07-07 | 6 | -53/+437 |
|\ | | | | | GPU Memory Manager - Correct handling of non continuous backing memory. | ||||
| * | Texture Cache: Fix collision with multiple overlaps of the same sparse texture. | Fernando Sahmkow | 2021-07-04 | 1 | -1/+6 |
| | | |||||
| * | Texture Cache: Fix GCC & Clang. | Fernando Sahmkow | 2021-07-04 | 2 | -11/+11 |
| | | |||||
| * | Texture Cache: Address feedback. | Fernando Sahmkow | 2021-07-04 | 2 | -12/+32 |
| | | |||||
| * | Texture Cache: Improve accuracy of sparse texture detection. | Fernando Sahmkow | 2021-07-04 | 4 | -126/+222 |
| | | |||||
| * | Texture Cache: Initial Implementation of Sparse Textures. | Fernando Sahmkow | 2021-07-04 | 6 | -22/+285 |
| | | |||||
* | | Merge pull request #6537 from Morph1984/warnings | bunnei | 2021-07-06 | 2 | -2/+2 |
|\ \ | |/ |/| | general: Enforce multiple warnings in MSVC | ||||
| * | video_core: Silence signed/unsigned mismatch warnings | Morph | 2021-06-28 | 2 | -2/+2 |
| | | |||||
* | | TextureCache: Fix 1D to 2D overlapps. | Fernando Sahmkow | 2021-07-03 | 1 | -3/+0 |
|/ | |||||
* | buffer_cache/texture_cache: Make GC functions private | ReinUsesLisp | 2021-06-26 | 1 | -3/+3 |
| | |||||
* | common: Replace common_sizes into user-literals | Wunkolo | 2021-06-24 | 1 | -6/+6 |
| | | | | | | | | | | | | | 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 | 5 | -13/+259 |
|\ | | | | | GPU: Implement a garbage collector for GPU Caches (project Reaper+) | ||||
| * | Reaper: Set minimum cleaning limit on OGL. | Fernando Sahmkow | 2021-06-22 | 1 | -1/+4 |
| | | |||||
| * | Reaper: Guarantee correct deletion. | Fernando Sahmkow | 2021-06-20 | 1 | -2/+3 |
| | | |||||
| * | Reaper: Change memory restrictions on TC depending on host memory on VK. | Fernando Sahmkow | 2021-06-17 | 2 | -16/+32 |
| | | |||||
| * | Reaper: Address Feedback. | Fernando Sahmkow | 2021-06-16 | 1 | -13/+25 |
| | | |||||
| * | Reaper: Setup settings and final tuning. | Fernando Sahmkow | 2021-06-16 | 2 | -29/+34 |
| | | |||||
| * | Reaper: Tune it up to be an smart GC. | Fernando Sahmkow | 2021-06-16 | 4 | -8/+108 |
| | | |||||
| * | Initial Reaper Setup | ReinUsesLisp | 2021-06-16 | 4 | -12/+121 |
| | | | | | | | | WIP | ||||
* | | Merge pull request #6469 from ReinUsesLisp/blit-view-compat | Ameer J | 2021-06-17 | 1 | -1/+9 |
|\ \ | |/ |/| | texture_cache/util: Avoid relaxed image views on different bytes per block | ||||
| * | texture_cache/util: Avoid relaxed image views on different bytes per pixel | ReinUsesLisp | 2021-06-15 | 1 | -1/+9 |
| | | | | | | | | Avoids API usage errors on UE4 titles leading to crashes. | ||||
* | | textures: Reintroduce CPU ASTC decoder | ameerj | 2021-06-16 | 1 | -2/+11 |
|/ | | | | | | | Users may want to fall back to the CPU ASTC texture decoder due to hangs and crashes that may be caused by keeping the GPU under compute heavy loads for extended periods of time. This is especially the case in games such as Astral Chain which make extensive use of ASTC textures. | ||||
* | Fix GCC undefined behavior sanitizer. | Markus Wick | 2021-06-10 | 1 | -0/+3 |
| | | | | | | | | | * Wrong alignment in u64 LOG_DEBUG -> memcpy. * Huge shift exponent in stride calculation for linear buffer, unused result -> skipped. * Large shift in buffer cache if word = 0, skip checking for set bits. Non of those were critical, so this should not change any behavior. At least with the assumption, that the last one used masking behavior, which always yield continuous_bits = 0. | ||||
* | texture_cache: Handle out of bound texture blits | ameerj | 2021-05-08 | 2 | -8/+56 |
| | | | | 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. | ||||
* | texture_cache/util: Fix src being used instead of dst within DeduceBlitImages | Lioncash | 2021-04-19 | 1 | -1/+1 |
| | | | | | | | This line can only ever be reached if src is null, so dereferencing it here is a logic bug that slipped through. Instead, we dereference dst instead which is guaranteed to be valid. | ||||
* | common: Move settings to common from core. | bunnei | 2021-04-15 | 1 | -1/+1 |
| | | | | - Removes a dependency on core and input_common from common. | ||||
* | texure_cache/util: Resolve implicit sign conversions with std::reduce | Lioncash | 2021-04-12 | 2 | -11/+15 |
| | | | | | | Amends implicit sign conversions occurring with usages of std::reduce and also relocates it to its own utility function to reduce verbosity a little bit. | ||||
* | astc_decoder: Refactor for style and more efficient memory use | ameerj | 2021-03-25 | 1 | -12/+2 |
| | |||||
* | renderer_vulkan: Accelerate ASTC decoding | ameerj | 2021-03-13 | 1 | -2/+2 |
| | | | | Co-Authored-By: Rodrigo Locatti <reinuseslisp@airmail.cc> | ||||
* | texture_cache: Blacklist BGRA8 copies and views on OpenGL | ameerj | 2021-03-04 | 5 | -19/+25 |
| | | | | | | 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_staging_buffer_pool: Add stream buffer for small uploads | ReinUsesLisp | 2021-02-13 | 1 | -19/+19 |
| | | | | | | | | 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 | 1 | -18/+10 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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. | ||||
* | texture_cache/util: Remove unused functions | Lioncash | 2021-02-09 | 1 | -34/+0 |
| | | | | Silences a few warnings on clang 12. | ||||
* | video_core: Silence -Wmissing-field-initializers warnings | ReinUsesLisp | 2021-01-24 | 1 | -24/+35 |
| | |||||
* | texture_cache/util: Resolve -Wsign-compare warning | Lioncash | 2021-01-17 | 1 | -1/+1 |
| | | | | Resolves a -Wsign-compare warning on Clang. | ||||
* | common/alignment: Rename AlignBits to AlignUpLog2 | ReinUsesLisp | 2021-01-15 | 2 | -7/+7 |
| | | | | AlignUpLog2 describes what the function does better than AlignBits. | ||||
* | texture_cache: Replace PAGE_SHIFT with PAGE_BITS | MerryMage | 2021-01-07 | 1 | -6/+6 |
| | | | | PAGE_SHIFT is a #define in system headers that leaks into user code on some systems | ||||
* | gl_texture_cache: Avoid format views on Intel and AMD | ReinUsesLisp | 2021-01-04 | 5 | -16/+26 |
| | | | | | | | 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. | ||||
* | video_core: Rewrite the texture cache | ReinUsesLisp | 2020-12-30 | 31 | -2849/+4633 |
| | | | | | | | | | | | | | | 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: Remove unnecessary enum class casting in logging messages | Lioncash | 2020-12-07 | 2 | -5/+4 |
| | | | | | | | 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. | ||||
* | video_core: Resolve more variable shadowing scenarios pt.3 | Lioncash | 2020-12-05 | 5 | -29/+29 |
| | | | | | 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 | 3 | -22/+23 |
| | | | | | | | Migrates the video core code closer to enabling variable shadowing warnings as errors. This primarily sorts out shadowing occurrences within the Vulkan code. | ||||
* | General: Resolve a few missing initializer warnings | Lioncash | 2020-10-30 | 1 | -0/+1 |
| | | | | Resolves a few -Wmissing-initializer warnings. | ||||
* | General: Make use of std::nullopt where applicable | Lioncash | 2020-09-22 | 1 | -3/+7 |
| | | | | | | | | Allows some implementations to avoid completely zeroing out the internal buffer of the optional, and instead only set the validity byte within the structure. This also makes it consistent how we return empty optionals. | ||||
* | video_core: Remove all Core::System references in renderer | ReinUsesLisp | 2020-09-06 | 3 | -36/+31 |
| | | | | | | | | | 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. | ||||
* | Merge pull request #4389 from ogniK5377/redundant-format-type | bunnei | 2020-08-07 | 1 | -1/+0 |
|\ | | | | | video_core: Remove redundant pixel format type | ||||
| * | video_core: Remove redundant pixel format type | David Marcec | 2020-07-21 | 1 | -1/+0 |
| | | | | | | | | We already get the format type before converting shadow formats and during shadow formats. | ||||
* | | Merge pull request #4396 from lioncash/comma | bunnei | 2020-07-30 | 1 | -45/+52 |
|\ \ | | | | | | | surface_params: Replace questionable usages of the comma operator with semicolons | ||||
| * | | surface_params: Make use of designated initializers where applicable | Lioncash | 2020-07-21 | 1 | -38/+46 |
| | | | | | | | | | | | | Provides a convenient way to avoid unnecessary zero initializing. | ||||
| * | | surface_params: Remove redundant assignment | Lioncash | 2020-07-21 | 1 | -1/+0 |
| | | | | | | | | | | | | This is a redundant assignment that can be removed. | ||||
| * | | surface_params: Replace questionable usages of the comma operator with semicolons | Lioncash | 2020-07-21 | 1 | -9/+9 |
| | | | | | | | | | | | | These are bugs waiting to happen. | ||||
* | | | Merge pull request #4394 from lioncash/unused6 | bunnei | 2020-07-24 | 1 | -2/+0 |
|\ \ \ | |/ / |/| | | video_core: Remove unused variables | ||||
| * | | video_core: Remove unused variables | Lioncash | 2020-07-21 | 1 | -2/+0 |
| |/ | | | | | | | Silences several compiler warnings about unused variables. | ||||
* | | Merge pull request #4324 from ReinUsesLisp/formats | bunnei | 2020-07-21 | 4 | -84/+91 |
|\ \ | |/ |/| | video_core: Fix, add and rename pixel formats | ||||
| * | video_core: Rearrange pixel format names | ReinUsesLisp | 2020-07-13 | 4 | -90/+90 |
| | | | | | | | | | | | | 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 | 1 | -4/+3 |
| | | |||||
| * | video_core/format_lookup_table: Add formats with existing PixelFormat | ReinUsesLisp | 2020-07-13 | 1 | -1/+9 |
| | | |||||
* | | Merge pull request #4242 from ReinUsesLisp/maxwell-dma | bunnei | 2020-07-14 | 2 | -4/+3 |
|\ \ | |/ |/| | maxwell_dma: Match official doc and support pitch->voxel copies | ||||
| * | video_core/textures: Add and use SwizzleSliceToVoxel, and minor style changes | ReinUsesLisp | 2020-07-10 | 2 | -4/+3 |
| | | | | | | | | | | | | | | Change GOB sizes from free-functions to constexpr constants. Add SwizzleSliceToVoxel, a function that swizzles a 2D array of pixels into a 3D texture and use it for 3D copies. | ||||
* | | 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 #4176 from ReinUsesLisp/compatible-formats | Fernando Sahmkow | 2020-06-30 | 1 | -5/+20 |
|\ | | | | | texture_cache: Check format compatibility before copying | ||||
| * | texture_cache: Test format compatibility before copying | ReinUsesLisp | 2020-06-27 | 1 | -5/+20 |
| | | | | | | | | | | | | | | | | Avoid illegal copies. This intercepts the last step of a copy to avoid generating validation errors or corrupting the driver on some instances. We can create views and emit copies accordingly in future commits and remove this last-step validation. | ||||
* | | Merge pull request #4144 from FernandoS27/tt-fix | bunnei | 2020-06-27 | 1 | -0/+3 |
|\ \ | |/ |/| | TextureCache: Fix case where layer goes off bound. | ||||
| * | TextureCache: Fix case where layer goes off bound. | Fernando Sahmkow | 2020-06-22 | 1 | -0/+3 |
| | | | | | | | | | | The returned layer is expected to be between 0 and the depth of the surface, anything larger is off bounds. | ||||
* | | texture_cache: Fix incorrect address used in a DeduceSurface() call | Lioncash | 2020-06-20 | 1 | -1/+1 |
|/ | | | | Previously the source was being deduced twice in a row. | ||||
* | texture_cache: Port original code management for 2D vs 3D textures | ReinUsesLisp | 2020-06-08 | 2 | -16/+35 |
| | | | | | | Handle blits to images as 2D, even when they have block depth. - Fixes rendering issues on Luigi's Mansion 3 | ||||
* | texture_cache: Simplify blit code | ReinUsesLisp | 2020-06-08 | 1 | -9/+7 |
| | |||||
* | texture_cache: Handle 3D texture blits with one layer | ReinUsesLisp | 2020-06-08 | 2 | -3/+8 |
| | |||||
* | texture_cache: Implement rendering to 3D textures | ReinUsesLisp | 2020-06-08 | 4 | -80/+76 |
| | | | | | | | | | | | | | | 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 #4012 from ReinUsesLisp/mipmap-overlaps | bunnei | 2020-06-03 | 1 | -28/+43 |
|\ | | | | | texture_cache: Handle overlaps with multiple subresources | ||||
| * | texture_cache: More relaxed reconstruction | ReinUsesLisp | 2020-05-30 | 1 | -13/+9 |
| | | | | | | | | Only reupload textures when they've not been modified from the GPU. | ||||
| * | texture_cache: Only copy textures that were modified from host | ReinUsesLisp | 2020-05-30 | 1 | -2/+6 |
| | | |||||
| * | texture_cache: Reload textures when number of resources mismatch | ReinUsesLisp | 2020-05-30 | 1 | -0/+9 |
| | | |||||
| * | texture_cache: Handle overlaps with multiple subresources | ReinUsesLisp | 2020-05-29 | 1 | -27/+33 |
| | | | | | | | | | | | | | | Implement more surface reconstruct cases. Allow overlaps with more than one layer and mipmap and copies all of them to the new texture. - Fixes textures moving around objects on Xenoblade games | ||||
* | | Merge pull request #4005 from ReinUsesLisp/g24r8 | Rodrigo Locatti | 2020-06-01 | 1 | -1/+2 |
|\ \ | | | | | | | format_lookup_table: Implement G24S8 format as S8Z24 | ||||
| * | | format_lookup_table: Implement G24S8 format as S8Z24 | ReinUsesLisp | 2020-05-28 | 1 | -1/+2 |
| | | | |||||
* | | | Merge pull request #3999 from ReinUsesLisp/opt-tex-cache | bunnei | 2020-05-31 | 1 | -24/+29 |
|\ \ \ | |_|/ |/| | | texture_cache: Optimize GetSurfacesInRegion | ||||
| * | | texture_cache: Use unordered_map::find instead of operator[] on hot code | ReinUsesLisp | 2020-05-27 | 1 | -15/+19 |
| | | | |||||
| * | | texture_cache: Use small vector for surface vectors | ReinUsesLisp | 2020-05-27 | 1 | -9/+10 |
| |/ | | | | | | | | | This avoids most heap allocations when collecting surfaces into a vector. | ||||
* / | texture_cache: Fix layered null surfaces | ReinUsesLisp | 2020-05-26 | 1 | -1/+3 |
|/ | | | | | Null texture cubes were not considered arrays, causing issues on Vulkan and OpenGL when creating views. | ||||
* | Merge pull request #3839 from Morph1984/r8g8ui | Rodrigo Locatti | 2020-05-09 | 1 | -1/+2 |
|\ | | | | | texture: Implement R8G8UI | ||||
| * | texture: Implement R8G8UI | Morph | 2020-04-30 | 1 | -1/+2 |
| | | | | | | | | - Used by The Walking Dead: The Final Season | ||||
* | | Merge pull request #3693 from ReinUsesLisp/clean-samplers | bunnei | 2020-05-02 | 2 | -7/+7 |
|\ \ | | | | | | | shader/texture: Support multiple unknown sampler properties | ||||
| * | | shader_ir: Turn classes into data structures | ReinUsesLisp | 2020-04-23 | 2 | -7/+7 |
| |/ | |||||
* / | texture_cache: Reintroduce preserve_contents accurately | ReinUsesLisp | 2020-04-27 | 1 | -25/+41 |
|/ | | | | | | | | | | | | | 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. | ||||
* | Address Feedback. | Fernando Sahmkow | 2020-04-22 | 1 | -9/+6 |
| | |||||
* | Address Feedback. | Fernando Sahmkow | 2020-04-22 | 1 | -32/+18 |
| | |||||
* | FenceManager: Manage syncpoints and rename fences to semaphores. | Fernando Sahmkow | 2020-04-22 | 1 | -0/+7 |
| | |||||
* | Rasterizer: Disable fence managing in synchronous gpu. | Fernando Sahmkow | 2020-04-22 | 1 | -1/+1 |
| | |||||
* | ThreadManager: Sync async reads on accurate gpu. | Fernando Sahmkow | 2020-04-22 | 1 | -0/+15 |
| | |||||
* | FenceManager: Implement should wait. | Fernando Sahmkow | 2020-04-22 | 1 | -0/+11 |
| | |||||
* | OpenGL: Implement Fencing backend. | Fernando Sahmkow | 2020-04-22 | 1 | -1/+31 |
| | |||||
* | TextureCache: Flush linear textures after finishing rendering. | Fernando Sahmkow | 2020-04-22 | 1 | -2/+8 |
| | |||||
* | GPU: Refactor synchronization on Async GPU | Fernando Sahmkow | 2020-04-22 | 1 | -2/+2 |
| | |||||
* | Texture Cache: Implement OnCPUWrite and SyncGuestHost | Fernando Sahmkow | 2020-04-22 | 2 | -3/+63 |
| | |||||
* | UI: Replasce accurate GPU option for GPU Accuracy Level | Fernando Sahmkow | 2020-04-22 | 1 | -4/+4 |
| | |||||
* | Merge pull request #3686 from lioncash/table | bunnei | 2020-04-19 | 1 | -3/+3 |
|\ | | | | | texture_cache/format_lookup_table: Fix incorrect green, blue, and alpha indices | ||||
| * | texture_cache/format_lookup_table: Fix incorrect green, blue, and alpha indices | Lioncash | 2020-04-16 | 1 | -3/+3 |
| | | | | | | | | | | Previously these were all using the red component to derive the indices, which is definitely not intentional. | ||||
* | | Merge pull request #3673 from lioncash/extra | bunnei | 2020-04-17 | 2 | -2/+2 |
|\ \ | | | | | | | CMakeLists: Specify -Wextra on linux builds | ||||
| * | | CMakeLists: Specify -Wextra on linux builds | Lioncash | 2020-04-16 | 2 | -2/+2 |
| |/ | | | | | | | | | | | | | | | | | | | | | Allows reporting more cases where logic errors may exist, such as implicit fallthrough cases, etc. We currently ignore unused parameters, since we currently have many cases where this is intentional (virtual interfaces). While we're at it, we can also tidy up any existing code that causes warnings. This also uncovered a few bugs as well. | ||||
* | | Merge pull request #3688 from lioncash/nequal | Rodrigo Locatti | 2020-04-16 | 2 | -0/+5 |
|\ \ | | | | | | | surface_view: Add missing operator!= to ViewParams | ||||
| * | | surface_view: Add missing operator!= to ViewParams | Lioncash | 2020-04-16 | 2 | -0/+5 |
| |/ | | | | | | | Provides logical symmetry to the interface. | ||||
* | | Merge pull request #3687 from lioncash/constness | Rodrigo Locatti | 2020-04-16 | 1 | -2/+2 |
|\ \ | | | | | | | surface_base: Make IsInside() a const member function | ||||
| * | | surface_base: Make IsInside() a const member function | Lioncash | 2020-04-16 | 1 | -2/+2 |
| |/ | | | | | | | This doesn't modify internal state, so this can be made const. | ||||
* | | Merge pull request #3683 from lioncash/docs | bunnei | 2020-04-16 | 1 | -4/+4 |
|\ \ | | | | | | | video_core: Amend doxygen comment references | ||||
| * | | video_core: Amend doxygen comment references | Lioncash | 2020-04-16 | 1 | -4/+4 |
| |/ | | | | | | | Fixes broken documentation references. | ||||
* | | Merge pull request #3649 from FernandoS27/3d-fix | Rodrigo Locatti | 2020-04-15 | 1 | -0/+6 |
|\ \ | |/ |/| | Texture Cache: Read current data when flushing a 3D segment. | ||||
| * | Texture Cache: Read current data when flushing a 3D segment. | Fernando Sahmkow | 2020-04-15 | 1 | -0/+6 |
| | | | | | | | | | | This PR corrects flushing of 3D segments when data of other segments is mixed, this aims to preserve the data in place. | ||||
* | | Texture Cache: Only do buffer copies on accurate GPU. (#3634) | Fernando Sahmkow | 2020-04-15 | 1 | -1/+3 |
|/ | | | This is a simple optimization as Buffer Copies are mostly used for texture recycling. They are, however, useful when games abuse undefined behavior but most 3D APIs forbid it. | ||||
* | texture_cache: Remove preserve_contents | ReinUsesLisp | 2020-04-11 | 1 | -41/+25 |
| | | | | | | | 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 #3610 from FernandoS27/gpu-caches | Rodrigo Locatti | 2020-04-09 | 3 | -122/+75 |
|\ | | | | | Refactor all the GPU Caches to use VAddr for cache addressing | ||||
| * | Texture Cache: Use vAddr instead of physical memory for caching. | Fernando Sahmkow | 2020-04-06 | 3 | -122/+75 |
| | | |||||
* | | Merge pull request #3599 from ReinUsesLisp/revert-3499 | bunnei | 2020-04-07 | 1 | -4/+2 |
|\ \ | |/ |/| | Revert "Merge pull request #3499 from ReinUsesLisp/depth-2d-array" | ||||
| * | Revert "Merge pull request #3499 from ReinUsesLisp/depth-2d-array" | ReinUsesLisp | 2020-04-04 | 1 | -4/+2 |
| | | | | | | | | | | | | | | This reverts commit 41905ee467b24172ba93e3fcd665bb4e4806a45a, reversing changes made to 35145bd529c3517e2c366efc764a762092d96edf. It causes regressions in several games. | ||||
* | | video_core: Use native ASTC when available | ReinUsesLisp | 2020-04-01 | 5 | -65/+59 |
|/ | |||||
* | Merge pull request #3501 from ReinUsesLisp/rgba16-snorm | Rodrigo Locatti | 2020-03-16 | 1 | -1/+2 |
|\ | | | | | video_core: Implement RGBA16_SNORM | ||||
| * | video_core: Implement RGBA16_SNORM | ReinUsesLisp | 2020-03-13 | 1 | -1/+2 |
| | | | | | | | | Implement RGBA16_SNORM with the current API. Nothing special here. | ||||
* | | Merge pull request #3500 from ReinUsesLisp/incompatible-types | Fernando Sahmkow | 2020-03-14 | 1 | -2/+39 |
|\ \ | | | | | | | texture_cache: Report incompatible textures as black | ||||
| * | | texture_cache: Report incompatible textures as black | ReinUsesLisp | 2020-03-12 | 1 | -2/+39 |
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Some games bind incompatible texture types to certain types. For example Astral Chain binds a 2D texture with 1 layer (non-array) to a cubemap slot (that's how it's used in the shader). After testing this in hardware, the expected "undefined behavior" is to report all pixels as black. We already have a path for reporting black textures in the texture cache. When textures types are incompatible, this commit binds these kind of textures. This is done on the API agnostic texture cache so no extra code has to be inserted on OpenGL or Vulkan. As a side effect, this fixes invalidations of ASTC textures on Astral Chain. This happened because yuzu detected a cube texture and forced 6 faces, generating a texture larger than what the TIC reported. | ||||
* / | texture_cache/surface_params: Force depth=1 on 2D textures | ReinUsesLisp | 2020-03-12 | 1 | -2/+4 |
|/ | | | | | | | Sometimes games will sample a 2D array TIC with a 2D access in the shader. This causes bad interactions with the rest of the texture cache. To emulate what the game wants to do, force a depth=1 on 2D textures (not 2D arrays) and let the texture cache handle the rest. | ||||
* | renderer_opengl: Reintroduce dirty flags for render targets | ReinUsesLisp | 2020-02-28 | 1 | -1/+19 |
| | |||||
* | gl_rasterizer: Remove dirty flags | ReinUsesLisp | 2020-02-28 | 1 | -19/+1 |
| | |||||
* | Merge pull request #3417 from ReinUsesLisp/r32i | bunnei | 2020-02-25 | 1 | -1/+2 |
|\ | | | | | texture: Implement R32I | ||||
| * | texture: Implement R32I | ReinUsesLisp | 2020-02-15 | 1 | -1/+2 |
| | | |||||
* | | Merge pull request #3425 from ReinUsesLisp/layered-framebuffer | bunnei | 2020-02-24 | 3 | -31/+26 |
|\ \ | | | | | | | texture_cache: Implement layered framebuffer attachments | ||||
| * | | texture_cache: Implement layered framebuffer attachments | ReinUsesLisp | 2020-02-16 | 3 | -31/+26 |
| |/ | | | | | | | | | | | 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 #3422 from ReinUsesLisp/buffer-flush | bunnei | 2020-02-23 | 1 | -0/+4 |
|\ \ | | | | | | | surface_base: Implement texture buffer flushes | ||||
| * | | surface_base: Implement texture buffer flushes | ReinUsesLisp | 2020-02-16 | 1 | -0/+4 |
| |/ | | | | | | | | | Implement downloads to guest memory from texture buffers on the generic cache and OpenGL. | ||||
* / | texture_cache: Avoid matches in 3D textures | ReinUsesLisp | 2020-02-16 | 1 | -8/+11 |
|/ | | | | | Code before this commit was trying to match 3D textures with another target. Fix that. | ||||
* | texture_cache/surface_base: Fix layered break down | ReinUsesLisp | 2020-01-27 | 1 | -1/+1 |
| | | | | | Layered break downs was passing "layer" as a "depth" parameter. This commit addresses that. | ||||
* | Merge pull request #3311 from ReinUsesLisp/z32fx24s8 | bunnei | 2020-01-17 | 1 | -1/+1 |
|\ | | | | | format_lookup_table: Fix ZF32_X24S8 component types | ||||
| * | format_lookup_table: Fix ZF32_X24S8 component types | ReinUsesLisp | 2020-01-16 | 1 | -1/+1 |
| | | | | | | | | | | | | Component types for ZF32_X24S8 were using UNORM. Drivers will set FLOAT, UINT, UNORM, UNORM; causing a format mismatch. This commit addresses that. | ||||
* | | texture_cache/surface_params: Make GetNumLayers public | ReinUsesLisp | 2020-01-14 | 1 | -4/+5 |
|/ | |||||
* | Texture Cache: Improve documentation | Fernando Sahmkow | 2019-12-22 | 2 | -4/+5 |
| | |||||
* | Texture Cache: Address Feedback | Fernando Sahmkow | 2019-12-22 | 2 | -11/+11 |
| | |||||
* | Texture Cache: Add HLE methods for building 3D textures within the GPU in certain scenarios. | Fernando Sahmkow | 2019-12-22 | 3 | -1/+139 |
| | | | | | | This commit adds a series of HLE methods for handling 3D textures in general. This helps games that generate 3D textures on every frame and may reduce loading times for certain games. | ||||
* | Merge pull request #2987 from FernandoS27/texture-invalid | bunnei | 2019-12-02 | 3 | -32/+101 |
|\ | | | | | Texture_Cache: Redo invalid Surfaces handling. | ||||
| * | Texture_Cache: Redo invalid Surfaces handling. | Fernando Sahmkow | 2019-11-20 | 3 | -32/+101 |
| | | | | | | | | | | | | | | This commit aims to redo the full setup of invalid textures and guarantee correct behavior across backends in the case of finding one by using black dummy textures that match the target of the expected texture. | ||||
* | | texture_cache/surface_base: Fix out of bounds texture views | ReinUsesLisp | 2019-11-29 | 1 | -7/+4 |
|/ | | | | | | | | | | Some texture views were being created out of bounds (with more layers or mipmaps than what the original texture has). This is because of a miscalculation in mipmap bounding. end_layer and end_mipmap are out of bounds (e.g. layer 6 in a cubemap), there's no need to add one more there. Fixes OpenGL errors and Vulkan crashes on Splatoon 2. | ||||
* | format_lookup_table: Address feedback | ReinUsesLisp | 2019-11-15 | 2 | -30/+24 |
| | | | | | | | | format_lookup_table: Drop bitfields format_lookup_table: Use std::array for definition table format_lookup_table: Include <limits> instead of <numeric> | ||||
* | texture_cache: Use a table instead of switch for texture formats | ReinUsesLisp | 2019-11-15 | 5 | -12/+288 |
| | | | | | | Use a large flat array to look up texture formats. This allows us to properly implement formats with different component types. It should also be faster. | ||||
* | texture_cache: Drop abstracted ComponentType | ReinUsesLisp | 2019-11-14 | 3 | -17/+5 |
| | | | | | | | | | 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. | ||||
* | Merge pull request #2978 from lioncash/doxygen | Rodrigo Locatti | 2019-10-17 | 1 | -57/+78 |
|\ | | | | | video_core/texture_cache: Amend Doxygen references | ||||
| * | video_core/texture_cache: Amend Doxygen references | Lioncash | 2019-10-15 | 1 | -57/+78 |
| | | | | | | | | | | | | Amends the doxygen comments so that they properly resolve. While we're at it, we can correct some typos and fix up some of the comments' formatting in order to make them slightly nicer to read. | ||||
* | | texture_cache: Avoid unnecessary surface copies within PickStrategy() and TryReconstructSurface() | Lioncash | 2019-10-16 | 1 | -2/+2 |
| | | | | | | | | | | | | We can take these by const reference and avoid making unnecessary copies, preventing some atomic reference count increments and decrements. | ||||
* | | common: Rename binary_find.h to algorithm.h | Lioncash | 2019-10-15 | 2 | -3/+3 |
|/ | | | | | | Makes the header more general for other potential algorithms in the future. While we're at it, include a missing <functional> include to satisfy the use of std::less. | ||||
* | Texture_Cache: Blit Deduction corrections and simplifications. | Fernando Sahmkow | 2019-10-05 | 1 | -18/+20 |
| | |||||
* | TextureCache: Add the ability to deduce if two textures are depth on blit. | Fernando Sahmkow | 2019-10-05 | 1 | -2/+142 |
| | |||||
* | texture_cache: Minor changes | ReinUsesLisp | 2019-09-06 | 4 | -19/+17 |
| | |||||
* | gl_rasterizer: Implement image bindings | ReinUsesLisp | 2019-09-06 | 3 | -30/+98 |
| | |||||
* | texture_cache: Pass TIC to texture cache | ReinUsesLisp | 2019-09-06 | 3 | -26/+24 |
| | |||||
* | video_core: Silent miscellaneous warnings (#2820) | Rodrigo Locatti | 2019-08-30 | 2 | -3/+0 |
| | | | | | | | | | | | | | | | | | | | | | | | | * texture_cache/surface_params: Remove unused local variable * rasterizer_interface: Add missing documentation commentary * maxwell_dma: Remove unused rasterizer reference * video_core/gpu: Sort member declaration order to silent -Wreorder warning * fermi_2d: Remove unused MemoryManager reference * video_core: Silent unused variable warnings * buffer_cache: Silent -Wreorder warnings * kepler_memory: Remove unused MemoryManager reference * gl_texture_cache: Add missing override * buffer_cache: Add missing include * shader/decode: Remove unused variables | ||||
* | Merge pull request #2739 from lioncash/cflow | bunnei | 2019-07-25 | 1 | -3/+2 |
|\ | | | | | video_core/control_flow: Minor changes/warning cleanup | ||||
| * | video_core: Resolve -Wreorder warnings | Lioncash | 2019-07-19 | 1 | -3/+2 |
| | | | | | | | | | | Ensures that the constructor members are always initialized in the order that they're declared in. | ||||
* | | Texture_Cache: Rebase Fixes | Fernando Sahmkow | 2019-07-17 | 1 | -6/+0 |
| | | |||||
* | | Maxwell3D: Rework the dirty system to be more consistant and scaleable | Fernando Sahmkow | 2019-07-17 | 1 | -5/+12 |
|/ | |||||
* | Texture_Cache: Address Feedback | Fernando Sahmkow | 2019-07-14 | 3 | -13/+17 |
| | |||||
* | Texture_Cache: Remove some unprecise fallback case and clang format | Fernando Sahmkow | 2019-07-14 | 2 | -13/+5 |
| | |||||
* | Texture_Cache: Force Framebuffer reset if an active render target is unregistered. | Fernando Sahmkow | 2019-07-14 | 3 | -10/+36 |
| | |||||
* | Texture_Cache: Correct Linear Structural Match. | Fernando Sahmkow | 2019-07-14 | 1 | -3/+6 |
| | |||||
* | texture_cache: Address Feedback | Fernando Sahmkow | 2019-07-05 | 1 | -2/+2 |
| | |||||
* | texture_cache: Correct Texture Buffer Uploading | Fernando Sahmkow | 2019-07-05 | 1 | -0/+2 |
| | |||||
* | texture_cache: Pack sibling queries inside a method | ReinUsesLisp | 2019-06-30 | 1 | -6/+8 |
| | |||||
* | texture_cache: Use std::vector reservation for sampled_textures | ReinUsesLisp | 2019-06-30 | 1 | -17/+10 |
| | |||||
* | texture_cache: Style changes | ReinUsesLisp | 2019-06-30 | 2 | -8/+4 |
| | |||||
* | texture_cache: Use std::array for siblings_table | ReinUsesLisp | 2019-06-29 | 1 | -10/+13 |
| | |||||
* | texture_cache: Address feedback | ReinUsesLisp | 2019-06-29 | 2 | -11/+12 |
| | |||||
* | texture_cache: Correct variable naming. | Fernando Sahmkow | 2019-06-26 | 1 | -3/+3 |
| | |||||
* | texture_cache: Corrections, documentation and asserts | Fernando Sahmkow | 2019-06-26 | 1 | -42/+42 |
| | |||||
* | surface_params: Corrections, asserts and documentation. | Fernando Sahmkow | 2019-06-26 | 2 | -43/+58 |
| | |||||
* | copy_params: use constexpr for constructor | Fernando Sahmkow | 2019-06-25 | 1 | -3/+4 |
| | |||||
* | texture_cache: Query MemoryManager from the system | Fernando Sahmkow | 2019-06-25 | 1 | -11/+7 |
| | |||||
* | texture_cache: Include "core/core.h" | ReinUsesLisp | 2019-06-24 | 1 | -4/+1 |
| | |||||
* | texture_cache/surface_view: Address feedback | ReinUsesLisp | 2019-06-24 | 1 | -1/+0 |
| | |||||
* | texture_cache/surface_base: Address feedback | ReinUsesLisp | 2019-06-24 | 2 | -2/+10 |
| | |||||
* | texture_cache: Style and Corrections | Fernando Sahmkow | 2019-06-21 | 3 | -2/+4 |
| | |||||
* | texture_cache: Eliminate linear textures fallthrough | Fernando Sahmkow | 2019-06-21 | 1 | -4/+0 |
| | |||||
* | texture_cache: Correct format R16U as sibling | Fernando Sahmkow | 2019-06-21 | 2 | -1/+2 |
| | |||||
* | texture_cache: Implement texception detection and texture barriers. | Fernando Sahmkow | 2019-06-21 | 1 | -5/+32 |
| | |||||
* | texture_cache: Corrections to buffers and shadow formats use. | Fernando Sahmkow | 2019-06-21 | 1 | -10/+34 |
| | |||||
* | texture_cache: Implement Irregular Views in surfaces | Fernando Sahmkow | 2019-06-21 | 2 | -4/+24 |
| | |||||
* | surface: Correct format S8Z24 | Fernando Sahmkow | 2019-06-21 | 1 | -4/+0 |
| | |||||
* | texture_cache: Initialize all siblings to invalid pixel format. | Fernando Sahmkow | 2019-06-21 | 1 | -6/+15 |
| | |||||
* | decoders: correct block calculation | Fernando Sahmkow | 2019-06-21 | 1 | -0/+16 |
| | |||||
* | texture_cache: Use siblings textures on Rebuild and fix possible error on blitting | Fernando Sahmkow | 2019-06-21 | 1 | -10/+23 |
| | |||||
* | texture_cache: Implement siblings texture formats. | Fernando Sahmkow | 2019-06-21 | 2 | -12/+31 |
| | |||||
* | texture_cache: correct texture buffer on surface params | Fernando Sahmkow | 2019-06-21 | 1 | -4/+11 |
| | |||||
* | texture_cache: eliminate accelerated depth->color/color->depth copies due to driver instability. | Fernando Sahmkow | 2019-06-21 | 1 | -8/+1 |
| | |||||
* | texture_cache: correct mutex locks | Fernando Sahmkow | 2019-06-21 | 1 | -4/+4 |
| | |||||
* | texture_cache: Don't Image Copy if component types differ | Fernando Sahmkow | 2019-06-21 | 1 | -1/+2 |
| | |||||
* | texture_cache: move some large methods to cpp files | Fernando Sahmkow | 2019-06-21 | 4 | -139/+135 |
| | |||||
* | texture_cache: Optimize GetSurface and use references on functions that don't change a surface. | Fernando Sahmkow | 2019-06-21 | 1 | -6/+6 |
| | |||||
* | texture_cache: Implement Buffer Copy and detect Turing GPUs Image Copies | Fernando Sahmkow | 2019-06-21 | 1 | -9/+31 |
| | |||||
* | texture_cache uncompress-compress is untopological. | Fernando Sahmkow | 2019-06-21 | 4 | -14/+48 |
| | | | | | | This makes conflicts between non compress and compress textures to be auto recycled. It also limits the amount of mipmaps a texture can have if it goes above it's limit. | ||||
* | texture_cache: Correct copying between compressed and uncompressed formats | Fernando Sahmkow | 2019-06-21 | 3 | -10/+27 |
| | |||||
* | texture_cache: Only load on recycle with accurate GPU. | Fernando Sahmkow | 2019-06-21 | 1 | -2/+3 |
| | | | | | Testing so far has proven this to be quite safe as texture memory read added a 2-5ms load to the current cache. | ||||
* | Fix rebase errors | Fernando Sahmkow | 2019-06-21 | 1 | -0/+4 |
| | |||||
* | texture_cache: Handle uncontinuous surfaces. | Fernando Sahmkow | 2019-06-21 | 3 | -19/+79 |
| | |||||
* | texture_cache: return null surface on invalid address | Fernando Sahmkow | 2019-06-21 | 1 | -0/+12 |
| | |||||
* | texture_cache: Add checks for texture buffers. | Fernando Sahmkow | 2019-06-21 | 1 | -2/+16 |
| | |||||
* | texture_cache: Fermi2D reform and implement View Mirage | Fernando Sahmkow | 2019-06-21 | 3 | -20/+49 |
| | | | | | This also does some fixes on compressed textures reinterpret and on the Fermi2D engine in general. | ||||
* | texture_cache: loose TryReconstructSurface when accurate GPU is not on. | Fernando Sahmkow | 2019-06-21 | 2 | -3/+19 |
| | | | | Also corrects some asserts. | ||||
* | texture_cache: Document the most important methods. | Fernando Sahmkow | 2019-06-21 | 1 | -8/+87 |
| | |||||
* | texture_cache: Try to Reconstruct Surface on bigger than overlap. | Fernando Sahmkow | 2019-06-21 | 1 | -4/+11 |
| | | | | | This fixes clouds in SMO Cap Kingdom and lens on Cloud Kingdom. Also moved accurate_gpu setting check to Pick Strategy | ||||
* | texture_cache: Implement Guard mechanism | Fernando Sahmkow | 2019-06-21 | 1 | -1/+8 |
| | |||||
* | texture_cache: General Fixes | Fernando Sahmkow | 2019-06-21 | 4 | -33/+68 |
| | | | | | | | Fixed ASTC mipmaps loading Fixed alignment on openGL upload/download Fixed Block Height Calculation Removed unalign_height | ||||
* | surface_params: Ensure pitch is always written to avoid surface leaks | ReinUsesLisp | 2019-06-21 | 1 | -0/+2 |
| | |||||
* | gl_framebuffer_cache: Use a hashed struct to cache framebuffers | ReinUsesLisp | 2019-06-21 | 1 | -1/+1 |
| | |||||
* | texture_cache return invalid buffer on deactivated color_mask | Fernando Sahmkow | 2019-06-21 | 1 | -0/+5 |
| | |||||
* | surface_params: Optimize CreateForTexture | ReinUsesLisp | 2019-06-21 | 1 | -2/+4 |
| | | | | | Instead of using Common::AlignUp, use Common::AlignBits to align the texture compression factor. | ||||
* | texture_cache: Add ASync Protections | Fernando Sahmkow | 2019-06-21 | 1 | -0/+10 |
| | |||||
* | Remove Framebuffer reconfiguration and restrict rendertarget protection | Fernando Sahmkow | 2019-06-21 | 2 | -26/+19 |
| | |||||
* | texture_cache: Implement GPU Dirty Flags | Fernando Sahmkow | 2019-06-21 | 1 | -15/+22 |
| | |||||
* | texture_cache: Optimize GetMipBlockHeight and GetMipBlockDepth | Fernando Sahmkow | 2019-06-21 | 1 | -13/+6 |
| | |||||
* | texture_cache: Implement L1_Inner_cache | Fernando Sahmkow | 2019-06-21 | 1 | -13/+30 |
| | |||||
* | video_core: Use un-shifted block sizes to avoid integer divisions | ReinUsesLisp | 2019-06-21 | 4 | -24/+28 |
| | | | | | | | | | | | | Instead of storing all block width, height and depths in their shifted form: block_width = 1U << block_shift; Store them like they are provided by the emulated hardware (their block_shift form). This way we can avoid doing the costly Common::AlignUp operation to align texture sizes and drop CPU integer divisions with bitwise logic (defined in Common::AlignBits). | ||||
* | texture_cache: Change internal cache from lists to vectors | ReinUsesLisp | 2019-06-21 | 1 | -6/+7 |
| | |||||
* | Reduce amount of size calculations. | Fernando Sahmkow | 2019-06-21 | 5 | -86/+85 |
| | |||||
* | texture_cache: Correct premature texceptions | Fernando Sahmkow | 2019-06-21 | 2 | -7/+36 |
| | | | | | | | | | | | | Due to our current infrastructure, it is possible for a mipmap to be set on as a render target before a texception of that mipmap's superset be set afterwards. This is problematic as we rely on texture views to set up texceptions and protecting render targets targets for 3D texture rendering. One simple solution is to configure framebuffers after texture setup but this brings other problems. This solution, forces a reconfiguration of the framebuffers after such event happens. | ||||
* | texture_cache: Implement guest flushing | Fernando Sahmkow | 2019-06-21 | 2 | -8/+25 |
| | |||||
* | Fixes to mipmap's process and reconstruct process | Fernando Sahmkow | 2019-06-21 | 2 | -3/+3 |
| | |||||
* | surface_base: Add parenthesis to EmplaceOverview's predicate | ReinUsesLisp | 2019-06-21 | 1 | -3/+2 |
| | |||||
* | Texture Cache: Implement Blitting and Fermi Copies | Fernando Sahmkow | 2019-06-21 | 1 | -4/+15 |
| | |||||
* | surface_view: Add constructor for ViewParams | ReinUsesLisp | 2019-06-21 | 2 | -28/+19 |
| | |||||
* | surface_base: Split BreakDown into layered and non-layered variants | ReinUsesLisp | 2019-06-21 | 1 | -45/+48 |
| | |||||
* | surface_base: Silence truncation warnings and minor renames and reordering | ReinUsesLisp | 2019-06-21 | 2 | -32/+37 |
| | |||||
* | copy_params: Use constructor instead of C-like initialization | ReinUsesLisp | 2019-06-21 | 3 | -47/+39 |
| | |||||
* | Correct Mipmaps View method in Texture Cache | Fernando Sahmkow | 2019-06-21 | 1 | -3/+2 |
| | |||||
* | Change texture_cache chaching from GPUAddr to CacheAddr | Fernando Sahmkow | 2019-06-21 | 3 | -78/+59 |
| | | | | | This also reverses the changes to make invalidation and flushing through the GPU address. | ||||
* | Corrections to Structural Matching | Fernando Sahmkow | 2019-06-21 | 2 | -24/+53 |
| | | | | | The texture will now be reconstructed if the width only matches on GoB alignment. | ||||
* | Implement Texture Cache V2 | Fernando Sahmkow | 2019-06-21 | 1 | -88/+366 |
| | |||||
* | Correct Surface Base and Views for new Texture Cache | Fernando Sahmkow | 2019-06-21 | 7 | -380/+466 |
| | |||||
* | texture_cache: Remove execution context copies from the texture cache | ReinUsesLisp | 2019-06-21 | 4 | -151/+41 |
| | | | | | This is done to simplify the OpenGL implementation, it is needed for Vulkan. | ||||
* | texture_cache: Split texture cache into different files | ReinUsesLisp | 2019-06-21 | 8 | -0/+1364 |