Commit graph

1688 commits

Author SHA1 Message Date
Ivan Podogov e72cb6801a Add DXT1-5 decompression on ARM 2025-02-20 14:57:57 +03:00
RipleyTom cd87a64621 Headers cleanup 2025-02-11 20:38:35 +01:00
kd-11 10d5907f46 rsx: Implement framebuffer statistics to track the internal render resolution at runtime. 2025-02-11 02:28:31 +03:00
kd-11 0f3d2c7085 gl: Implement MSAA transparency (sample-to-coverage) 2025-02-11 02:28:31 +03:00
kd-11 4f08bfd0a2 Fix compilation on clang 2025-02-11 02:28:31 +03:00
kd-11 54e7cb8d9e vk: Silence spec validation error on NV cards 2025-02-11 02:28:31 +03:00
kd-11 85880e6037 gl: Implement remaining resolvers
- Add support for NVIDIA cards
- Implement all depth-stencil resolver passes
2025-02-11 02:28:31 +03:00
kd-11 26d85e53a4 vk: Fix extension initialization during device creation
- Fix crash when using device_fault extension
- Fix spec violation when using conditional rendering
2025-02-11 02:28:31 +03:00
kd-11 f3e913b56a vk: Redesign resource binding for overlay passes 2025-02-11 02:28:31 +03:00
kd-11 8249b5dbfa gl: Implement MSAA resolve/unresolve for color images 2025-02-11 02:28:31 +03:00
kd-11 82981384d5 vk: Move MSAA resolve/unresolve shaders to common GPU program layer 2025-02-11 02:28:31 +03:00
kd-11 89eb473dce rsx: Fix graphics corruption when switching between shader interpreter and recompiler at runtime 2025-02-02 12:08:05 +03:00
kd-11 58a09e6838 vk: Use common pipeline layout in interpreter
- Avoids the layouts going out of sync every time something changes
2025-01-19 19:31:59 +03:00
kd-11 b5b93e962b vk: Factor out common pipeline layout generator into reusable parts 2025-01-19 19:31:59 +03:00
kd-11 efc9ae98ed vk: Fix out-of-bounds write when emitting MSAA unresolve clear command for NVIDIA fallback 2025-01-15 11:27:04 +03:00
kd-11 e1c6df0df3 rsx: Fix dynamic constants patching when draw call is skipped
- Also adds an optimization to skip reuploads when patch occurs outside our critical range.
2025-01-15 11:27:04 +03:00
kd-11 7965a0313c rsx: Improved shader interpreter support when hw instancing is active 2025-01-15 11:27:04 +03:00
kd-11 27c56cde22 rsx/shaders: Track active MRT count per shader
- Also use more robust hashing to avoid collisions
2025-01-10 04:34:28 +03:00
Aleksey Komarov c9d39ce7ae vk: Support panvk, allow creating device without textureCompressionBC
panvk supports BC1-BC3 which is all RPCS3 require, support is reported as
false since not all formats are supported
2025-01-04 20:22:05 +02:00
Aleksey Komarov da84326bd0 vk: Add driver vendor PANVK (Mali GPU on Mesa) 2025-01-04 20:22:05 +02:00
Megamouse 1c22cc2f52 overlays: add trophy list dialog 2025-01-01 13:42:21 +01:00
kd-11 15961b353a vk: Add support for hardware instanced draws 2024-12-29 20:53:05 +03:00
kd-11 9307abe7f5 rsx: Move more functions from rsx thread to the draw command processor 2024-12-29 20:53:05 +03:00
kd-11 05bab8ec4c rsx: Move draw call related functions to their own class 2024-12-29 20:53:05 +03:00
kd-11 43e04f3fc7 Revert "rsx/vk: Implement hardware instancing (#16466)"
This reverts commit 62701154f1.
2024-12-29 20:53:05 +03:00
kd-11 62701154f1
rsx/vk: Implement hardware instancing (#16466)
* rsx: Add code to detect instanced draw commands

* rsx: Add GLSL support for instanced rendering

* rsx: Move draw call related functions to their own class

* rsx: Move more functions from rsx thread to the draw command processor

* rsx: Fix vertex program compiler crash

* vk: Add support for hardware instanced draws

* rsx: Fix instancing bug when indexed addressing is used to read constants

* rsx: Fix rare crash in vertex program decompiler

- This whole decompiler mess needs a rewrite

* rsx: Handle dangling execution barriers

* rsx: Do not use global registers object in logical "firmware" units

* Cosmetic improvements

* rsx: Test vertex program flags on each draw

* rsx: Properly track changes in instancing state
2024-12-29 17:39:47 +02:00
kd-11 b2949f114b vk: Wrap device fault handler in SEH2 2024-12-25 01:41:23 +03:00
kd-11 e3df7bccac vk: Selectively enable extended device fault features in logical device creation step 2024-12-25 01:41:23 +03:00
kd-11 2c45438422 vk: Minor improvements to extended fault output 2024-12-25 01:41:23 +03:00
kd-11 4ef1d48c0c vk: Properly initialize device fault counts structure 2024-12-25 01:41:23 +03:00
kd-11 7b6a672c64 vk: Fix device fault extension loading 2024-12-25 01:41:23 +03:00
kd-11 883529eaf3 vk: Add support for spec-compliant query scopes 2024-12-25 01:41:23 +03:00
kd-11 afc10ea112 vk: Workaround for older SDK header versions 2024-12-25 01:41:23 +03:00
kd-11 488e5d9eb5 vk: Register honeykrisp as known driver in RTT quirks check 2024-12-25 01:41:23 +03:00
kd-11 6d976b5d90 vk: Fix build 2024-12-25 01:41:23 +03:00
kd-11 b44e2d3b30 vk: Add basic support for honeykrisp driver 2024-12-25 01:41:23 +03:00
kd-11 a196bbcbcd vk: Remove unnecessary workaround for older SDK versions 2024-12-25 01:41:23 +03:00
kd-11 6000e3a47d vk: Add support for extended device fault information 2024-12-25 01:41:23 +03:00
Elad 575a245f8d
IDM: Implement lock-free smart pointers (#16403)
Replaces `std::shared_pointer` with `stx::atomic_ptr` and `stx::shared_ptr`.

Notes to programmers:

* This pr kills the use of `dynamic_cast`, `std::dynamic_pointer_cast` and `std::weak_ptr` on IDM objects, possible replacement is to save the object ID on the base object, then use idm::check/get_unlocked to the destination type via the saved ID which may be null. Null pointer check is how you can tell type mismatch (as dynamic cast) or object destruction (as weak_ptr locking).
* Double-inheritance on IDM objects should be used with care, `stx::shared_ptr` does not support constant-evaluated pointer offsetting to parent/child type.
* `idm::check/get_unlocked` can now be used anywhere.

Misc fixes:
* Fixes some segfaults with RPCN with interaction with IDM.
* Fix deadlocks in access violation handler due locking recursion.
* Fixes race condition in process exit-spawn on memory containers read.
* Fix bug that theoretically can prevent RPCS3 from booting - fix `id_manager::typeinfo` comparison to compare members instead of `memcmp` which can fail spuriously on padding bytes.
* Ensure all IDM inherited types of base, either has `id_base` or `id_type` defined locally, this allows to make getters such as `idm::get_unlocked<lv2_socket, lv2_socket_raw>()` which were broken before. (requires save-states invalidation)
* Removes broken operator[] overload of `stx::shared_ptr` and `stx::single_ptr` for non-array types.
2024-12-22 20:59:48 +02:00
kd-11 760b49bc6c Cleanup 2024-12-21 15:24:15 +03:00
kd-11 70eca8cb24 vk: Fix border color swizzling behavior 2024-12-21 15:24:15 +03:00
kd-11 49d11b2e36 rsx: Make the deferred mm flush option usable with OpenGL 2024-12-16 19:00:08 +03:00
kd-11 83764fbbb4 rsx/vk: Implement asynchronous host memory management. 2024-12-16 19:00:08 +03:00
Elad 2222807624 RSX/GCM: Fix memory unmapping for HLE GCM 2024-11-01 10:43:46 +02:00
Elad 488814bb2d rsx/vm: Exclude events from VM mutex
Fixes a deadlock from a recent pull request, perhaps also some deadlocks with locking both IDM and VM mutex.
2024-11-01 07:37:57 +02:00
elad335 92bf6ed0a7 Replace rsx::uclock with get_system_time() 2024-10-29 19:26:33 +02:00
kd-11 5ed7d043c4 Fix build and cleanup 2024-10-23 16:33:44 +03:00
kd-11 0db06964dc Whitespace 2024-10-23 16:33:44 +03:00
kd-11 6ce1816e3f rsx: Move the host job management into common code to share with GL 2024-10-23 16:33:44 +03:00
kd-11 e9a45a6d06 rsx: Clarify OGL and VK difference when handling border texels 2024-10-03 15:02:09 +03:00