Commit graph

222 commits

Author SHA1 Message Date
georgemoralis ae709d6557 Merge pull request #219 from shadps4-emu/gnmdriver/hw_init
Complete HW state init functions
2024-06-27 17:33:58 +03:00
georgemoralis 0845d8f250 Stabilization8 (#218)
* disable configured flexible memory size (caused issues in some games)

* fixed case S_OR_B64 for blazing chrome

* submodules updates and fixes for latest SDL

* stubbed _sigprocmask (not handled and spams too much)

* added ReplaceOp case in Stencilop

* dummy ajm module added
2024-06-27 16:37:17 +03:00
psucien 0dfb003aca libraries: gnmdriver: complete HW stat init functions 2024-06-27 13:36:55 +02:00
georgemoralis 1bf2e69c97 clang format fixes 2024-06-26 20:32:08 +03:00
IndecisiveTurtle 40f16aadd4 liverpool: Fix assert for compute queues 2024-06-26 20:00:09 +03:00
IndecisiveTurtle ee50cbdcb6 shader_recompiler: More instructions and fix for swords of ditto 2024-06-26 18:03:09 +03:00
Alexandre Bouvier aae827786d fix system include paths 2024-06-25 18:17:16 +02:00
psucien 7ad9d4a0d3 common: Common namespace for the slot vector container 2024-06-25 09:31:32 +02:00
psucien 117f859021 libraries: gnm_driver: added sceGnmDrawIndexIndirect and sceGnmDrawIndirect 2024-06-24 22:53:59 +02:00
psucien e6e3aa0080 Initial instancing and asynchronous compute queues (#207)
* gnm_driver: added `sceGnmRegisterOwner` and `sceGnmRegisterResource`

* video_out: `sceVideoOutGetDeviceCapabilityInfo` for sdk runtime

* gnm_driver: correct vqid index range

* amdgpu: indirect buffer, release mem and some additional irq modes

* amdgpu: added ASC commands processor

* shader_recompiler: added support for fetch instance id

* amdgpu: classic bitfields for T# representation (debugging experience)

* renderer_vulkan: skip zero sized VBs from binding

* texture_cache: image upload logic moved into `Image` object

* gnm_driver: `sceGnmDingDong` implementation

* texture_cache: `Image` usage flags moved; correct VO buffer pitch
2024-06-22 19:50:20 +03:00
IndecisiveTurtle f830b08b3f linker: Set rela bits for all symbol types 2024-06-22 18:09:04 +03:00
IndecisiveTurtle fc1d1e6f73 shader_recompiler: Even more instructions 2024-06-22 18:09:04 +03:00
IndecisiveTurtle 9844aaaec2 kernel: Add scePthreadExit 2024-06-22 18:09:04 +03:00
psucien 2a87be7c00 texture_cache: return back image view usage override 2024-06-16 22:30:18 +02:00
psucien c53e86248f renderer_vulkan: simplified sRGB hack 2024-06-16 22:29:23 +02:00
psucien 24ca6a26b4 renderer_vulkan: BC3 formats conversion 2024-06-16 22:29:04 +02:00
psucien 61c9e70781 renderer_vulkan: added log entry for CS compiling 2024-06-16 20:51:35 +02:00
psucien 72948f379f video_out: proper sRGB output workflow 2024-06-15 23:24:34 +02:00
psucien 200fe2f31c video_core: added support for alternate CB channels order 2024-06-15 23:24:33 +02:00
psucien 44cdbdbf90 renderer_vulkan: sRGB swapchain 2024-06-15 23:24:33 +02:00
psucien e5c27356f2 videoout: register buffers in texture cache at VO creation time 2024-06-15 23:24:33 +02:00
psucien 06f45310b2 texture_cache: don't set color attachment usage flag for packed images 2024-06-15 23:24:33 +02:00
psucien 42af4aab41 video_core: shaders hash switched to one from binary header 2024-06-15 23:24:32 +02:00
psucien 92c3a794be renderer_vulkan: static vector for vertex buffers ranges 2024-06-15 23:20:14 +02:00
psucien 4b3acb7ccb renderer_vulkan: fixed buffers alignments 2024-06-15 23:20:13 +02:00
TheTurtle 556d88ecb4 core: Many things (#194)
* video_core: Add a few missed things

* libkernel: More proper memory mapped files

* memory: Fix tessellation buffer mapping

* Cuphead work

* sceKernelPollSema fix

* clang format

* fixed ngs2 lle loading and rtc lib

* draft pthreads keys implementation

* fixed return codes

* return error code if sceKernelLoadStartModule module is invalid

* re-enabled system modules and disable debug in libs.h

* Improve linux support

* fix windows build

* kernel: Rework keys

---------

Co-authored-by: georgemoralis <giorgosmrls@gmail.com>
2024-06-15 14:36:07 +03:00
TheTurtle 1e5fed2e8a core: Fixup linux support (#195)
* tls: Implement for linux

* core: Implement memory manager for linux
2024-06-14 00:58:57 +03:00
psucien dca807f132 tracy: guards for missing vk profiler context 2024-06-11 22:57:37 +02:00
psucien 65a7155cd5 tracy: added Vulkan GPU profiling 2024-06-11 21:52:48 +02:00
psucien ce62ae31e5 tracy: basic markup and project palette 2024-06-11 12:14:33 +02:00
psucien fa198e228d renderer_vulkan: another fix for vertex buffer offsets 2024-06-10 23:20:32 +02:00
TheTurtle 769eb6a9ee video_core: Preliminary storage image support and more (#188)
* vk_rasterizer: Clear depth buffer when DB_RENDER_CONTROL says so

* video_core: Preliminary storage image support, more opcodes

* renderer_vulkan: a fix for vertex buffers merging

* renderer_vulkan: a heuristic for blend override when alpha out is masked

---------

Co-authored-by: psucien <bad_cast@protonmail.com>
2024-06-10 22:35:14 +03:00
psucien 94e574c660 texture_cache: detiler: added support for block coded 64bit images 2024-06-09 18:18:49 +02:00
psucien bda21bb659 texture_cache: detiler: added support for block coded 128bit images 2024-06-09 12:54:19 +02:00
psucien f3636b77b8 common: slot_vector moved into common 2024-06-08 01:19:51 +02:00
TheTurtle 718ade970f video_core: Add depth buffer support and fix some bugs (#172)
* memory: Avoid crash when alignment is zero

* Also remove unused file

* shader_recompiler: Add more instructions

* Also fix some minor issues with a few existing instructions

* control_flow: Don't emit discard for null exports

* renderer_vulkan: Add depth buffer support

* liverpool: Fix wrong color buffer number type and viewport zscale

* Also add some more formats
2024-06-07 16:26:43 +03:00
psucien 3adf7d9937 renderer_vulkan, config: option to toggle VK validation layer 2024-06-07 11:21:02 +02:00
psucien a3ee11914a review iteration 2024-06-07 08:39:03 +02:00
psucien 0723625321 texture_cache: detiler: more verbosity in print 2024-06-07 00:12:16 +02:00
psucien a60cf29b61 texture_cache: fix for forgotten cb tiling info update 2024-06-07 00:12:16 +02:00
psucien 7c9325ddbb texture_cache: detiler: redundant flag removed 2024-06-07 00:12:15 +02:00
psucien ae6e246f9c renderer_vulkan: proper barriers 2024-06-06 23:40:31 +02:00
psucien e63115d3c7 renderer_vulkan: proper min uniform alignment 2024-06-06 22:24:20 +02:00
psucien 02ec0f6d4d renderer_vulkan: fix for vertex buffer mapping offset 2024-06-06 21:41:59 +02:00
raphaelthegreat 6fbd20c2d8 shader: Fix block processing order in dead code elimination pass 2024-06-06 02:46:36 +03:00
raphaelthegreat fc8e4a1f97 shader_recompiler: Add more instructions and fix a few thinhs 2024-06-05 22:22:34 +03:00
TheTurtle 4779381eec core: Properly implement TLS (#164)
* core: Split module code from linker

* linker: Properly implement thread local storage

* kernel: Fix a few memory functions

* kernel: Implement module loading

* Now it's easy to do anyway with new module rework
2024-06-05 22:08:18 +03:00
psucien 0d8c705810 texture_cache: detiler image view moved into image class 2024-06-05 18:37:06 +02:00
psucien 304c266232 texture_cache: detiler: change staging to faster stream buffer 2024-06-05 18:16:31 +02:00
psucien cfd1af1785 fix for re-use 2024-06-05 17:57:05 +02:00
psucien 76c1f0ae87 final touch 2024-06-05 16:34:17 +02:00
psucien ca27729153 amdgpu: render target size hint for old runtime 2024-06-05 16:34:04 +02:00
psucien d6df222351 texture_cache: detiler: shader module release and debug name 2024-06-05 16:33:26 +02:00
psucien 88a0715aae texture_cache: detiler: m8x1 and m8x4 shaders 2024-06-05 16:14:22 +02:00
psucien a2eb813bee video_core: added shader header files generator from Citra 2024-06-05 14:31:50 +02:00
psucien 10396a38af texture_cache: a support for m8x1 and m8x4 layouts added to the detiler 2024-06-05 13:10:48 +02:00
psucien b593b8e1fc renderer_vulkan: unused extension removed 2024-06-04 12:43:23 +02:00
psucien d732a03b2e amdgpu: tiling mode introduced 2024-06-04 12:40:08 +02:00
psucien 59153f5c2a amdgpu: surface bits per element LUT 2024-06-02 22:46:40 +02:00
psucien 8a6528bc5a video_core: amdgpu: simply crash if an exception occured in coro 2024-06-02 19:16:05 +02:00
raphaelthegreat ead6ef58b5 shader_recompiler: Better branch detection + more opcodes 2024-06-02 03:05:40 +03:00
psucien 09bacf155e Fixes and QoL (#159)
* to ensure that we're not unlocking submits too early

* a final touch

* video_core: texture_cache: fix for page table corruption

* core: linker: a name for the game main thread

* libraries: gnmdriver: an option to dump application command lists

* libraries: kernel: named guest threads

* video_core: added a heuristic for determination of CB/DB surface extents

* fix for rebase leftover
2024-06-01 23:50:03 +03:00
raphaelthegreat e637f52076 video_core: Moar shader instruction 2024-05-30 18:17:54 +03:00
psucien 57158da07b video_core: renderer_vulkan: write mask fallback 2024-05-30 16:27:39 +02:00
psucien 75d74e53f3 video_core: renderer_vulkan: added color mask support 2024-05-30 12:55:37 +02:00
psucien 9cb6ea82a0 Linux build fix 2024-05-30 12:09:33 +02:00
psucien 7762def3e5 video_core: multiple color attachments support 2024-05-30 11:21:26 +02:00
psucien 11bdadc319 video_core: renderer_vulkan: support for passes w\o a fs 2024-05-30 09:42:44 +02:00
raphaelthegreat 99d20d4119 video_core: Implement basic compute shaders and more instructions 2024-05-30 01:39:24 +03:00
psucien b1f76d5e0a video_core: texture_cache: proper UniqueImage class movers 2024-05-29 17:17:24 +02:00
psucien 381d6c2816 video_core: renderer_vulkan: proper inclusion of maintenance4 2024-05-29 17:06:46 +02:00
psucien acddeb5bbf video_core: amdgpu: fix for a deadlock in wait on idle 2024-05-29 16:03:37 +02:00
psucien 0dbebc1902 video_core: amdgpu: proper destruction of processing thread 2024-05-29 16:02:51 +02:00
raphaelthegreat 05c4542301 video_core: Address some feedback 2024-05-27 22:13:55 +03:00
raphaelthegreat 8bd9bf1a7d video_core: Add image support 2024-05-27 18:25:45 +03:00
georgemoralis f850679b6e Merge pull request #146 from shadps4-emu/video_out/new_gpu_frontend
video_core: initial support for CE and ASC queues
2024-05-27 13:50:25 +03:00
psucien 1a04516c13 fix for leaks of coroutine handle 2024-05-27 13:48:35 +03:00
TheTurtle 22b7ae4b63 video_core: Add constant buffer support (#147) 2024-05-26 15:51:35 +03:00
psucien b3c26564cd video_core: initial support for CE and ASC queues 2024-05-26 12:39:30 +02:00
TheTurtle 0aa04c60cb video_core: Bringup some basic functionality (#145)
* video_core: Remove hack in rasterizer

* The hack was to skip the first draw as the display buffer had not been created yet and the texture cache couldn't create one itself. With this patch it now can, using the color buffer parameters from registers

* shader_recompiler: Implement attribute loads/stores

* video_core: Add basic vertex, index buffer handling and pipeline caching

* externals: Make xxhash lowercase
2024-05-25 15:33:15 +03:00
psucien 3f6de86eb6 video_core: a fix for multi submits processing (temporary code) 2024-05-22 22:20:33 +02:00
psucien f56f6f7be4 config, video_core: null gpu configuration added 2024-05-22 20:19:42 +02:00
TheTurtle 4380066a90 video: Import new shader recompiler + display a triangle (#142) 2024-05-22 01:35:12 +03:00
georgemoralis 7a6a8bfd88 Merge pull request #140 from shadps4-emu/additional_evq_func
A bunch of new functional and small improvements
2024-05-18 09:46:14 +03:00
psucien 8c95a2ba75 gnmdriver: submission lock moved out from gpu 2024-05-17 23:31:19 +02:00
psucien dc8759b4e0 renderer_vulkan: state tracking for Image resources 2024-05-17 12:44:07 +02:00
psucien 851bd00251 a fair multi-submissions support 2024-05-17 08:47:38 +02:00
psucien 0d443ac467 amdgpu: non-blocking submitDone 2024-05-17 08:22:47 +02:00
psucien b1eaec2ea1 amdgpu: added support for several single GFX submits per frame 2024-05-17 00:01:47 +02:00
psucien c69c0d1649 fix for crash in apps when splash is missing 2024-05-16 16:59:38 +03:00
psucien cd077362c3 review comments 2024-05-16 16:59:04 +03:00
georgemoralis 521fc0401f show title splash while the game is loading 2024-05-16 16:58:14 +03:00
TheTurtle 94caa0336e core: Implement new memory manager (#133)
* core: Implement new memory manager

* ci: Attempt to fix linux build

* code: Fix a few build errors
2024-05-16 15:55:50 +03:00
georgemoralis 085ffe359b Merge pull request #132 from shadps4-emu/gpu_flip
graphics: separate IRQ for GPU driven flips
2024-05-14 23:56:12 +03:00
psucien 18d7b08400 renderer_vk: missing barriers (#134) 2024-05-14 23:46:34 +03:00
psucien 1857828b50 graphics: separate IRQ for GPU driven flips 2024-05-14 21:33:20 +02:00
psucien 8edce87dac review comments applied 2024-05-11 00:04:04 +02:00
psucien 3c4a9d6a44 amdgpu: return perfcounter on EOP 2024-05-10 23:16:56 +02:00
psucien 8bb89aa746 core: gpu interrupt dispatcher 2024-05-10 21:48:01 +02:00
psucien 40923e5448 amdgpu: EOS event packet handling 2024-05-10 11:55:04 +02:00
psucien 758d695e31 amdgpu: wait_reg_mem and write_data implementation
Command list parsing is temporary moved to async task
2024-05-09 22:59:35 +02:00
psucien 8897e647b9 amdgpu: EOP irq and dummy PM4 handlers 2024-05-08 23:27:56 +02:00
psucien 717b00d63b gnm_driver: sceGnmSubmitAndFlipCommandBuffers implementation 2024-05-08 22:55:39 +02:00
psucien f0ac475ffd gnm_driver: various fixes 2024-05-08 22:53:55 +02:00
psucien d2856a7616 video_core, kernel: added gfx eop event handling 2024-05-07 22:46:54 +02:00
psucien 8347026ecb core: libraries: gnmdriver: basic functionality extension (#120)
Also a bit of refactoring in `video_core`
2024-05-01 19:29:06 +03:00
TheTurtle 49e65be25b core: Rewrite thread local storage implementation (#118) 2024-05-01 13:38:41 +03:00
TheTurtle 13fe78f0f5 video_core: Add basic command list processing (#117) 2024-04-30 01:23:28 +03:00
psucien 87f3724675 video_core: prefer discrete gpu if available (#116)
* video_core: prefer discrete gpu if available

* ci: Upgrade to clang format 17

* rewrite w\o std::zip usage

---------

Co-authored-by: raphaelthegreat <47210458+raphaelthegreat@users.noreply.github.com>
2024-04-30 00:19:12 +03:00
georgemoralis bdb0a6cf94 give texture cache exception handler priority over tls exception handler 2024-04-29 19:26:35 +03:00
raphaelthegreat 733956c39b texture_cache: Fix linear image uploads
* Also fixed build for clang-cl with libc
2024-04-29 18:22:04 +03:00
psucien 35ffc7fc97 clang format fix 2024-04-28 01:34:14 +02:00
psucien 1be496875a config: option to select gpu for vk device 2024-04-28 01:19:04 +02:00
psucien b2584dc455 texture_cache: protection flags re-worked
* actually I gave up on clang fmt
2024-04-28 01:00:24 +02:00
psucien 2b33596ebc clang format fix 2024-04-28 00:51:34 +02:00
psucien 9c4906f878 Merge branch 'main' of github.com:raphaelthegreat/shadps4 into raph-main 2024-04-28 00:29:15 +02:00
psucien 6fdc29ec5b texture_cache: added memory protection for Windows 2024-04-28 00:21:04 +02:00
raphaelthegreat dee8b77cb4 Address feedback 2024-04-28 01:09:03 +03:00
GPUCode 23b2eeba9b video_core: Rewrite vulkan and videoout 2024-04-14 17:10:40 +03:00
GPUCode 7e5b7a7ffa chore: Make shadps4 REUSE compliant 2024-02-23 23:33:43 +02:00
GPUCode d9e30405ba code: Add clang-format target and CI workflow (#82)
* code: Add clang format target, rules and CI workflow

* code: Run clang format on sources
2024-02-23 22:57:57 +02:00
GPUCode 7faf2d0ee8 common: Rework timekeeping with native RDTSC and port to linux 2024-02-23 11:30:06 +02:00