Commit Graph

305 Commits

Author SHA1 Message Date
psucien
dc50cc55fb
missing line fix 2024-07-14 17:11:54 +02:00
psucien
b8916787b2 renderer: debug markers for ability to match cmdlists with rdoc captures 2024-07-14 11:37:52 +02:00
psucien
8144f835a9 amdgpu: additional heuristic for CB extents detection
Found in CUSA00144
2024-07-14 10:59:22 +02:00
psucien
1b94f07a6a recompiler: proper VS inputs initialization 2024-07-13 01:00:24 +02:00
psucien
a75851f7e2 hot fix: reduce geometry staging 3Gb -> 512Mb 2024-07-11 20:29:53 +02:00
Vladislav Mikhalin
989f88837d
Filesystem errors and Base Array Layers (#280)
* Filesystem errors and Base Array Layers

* Fixed build for POSIX

* forgot 1 file
2024-07-11 14:37:21 +03:00
psucien
ab6a1fb5f0
Merge pull request #247 from viniciuslrangel/device-selector
Improve physical device selection in Vulkan renderer
2024-07-08 22:04:51 +02:00
offtkp
0619af24a7 Eliminate compiler warning 2024-07-08 01:17:42 +03:00
Vinicius Rangel
6cc8381d62
Improve physical device selection in Vulkan renderer
Fix when two discrete gpu are present & memory heap size is now considered while sorting physical devices
2024-07-07 17:02:35 -03:00
psucien
6dbb842bec renderer: a bit more formats to support 2024-07-07 14:34:36 +02:00
psucien
1d608427ed renderer: don't let unbound color attachment affect pass's rendering area 2024-07-06 20:13:12 +02:00
psucien
cfbe8b9e6d renderer: added support for instance step rates 2024-07-06 18:03:43 +02:00
psucien
986ed0662c gnmdriver, amdgpu: added gpu idle IRQ; submission lock logic improved 2024-07-06 18:03:34 +02:00
TheTurtle
38080b60af
shader_recompiler: Check usage before enabling capabilities (#245)
* vk_instance: Better feature check

* shader_recompiler: Make most features optional

* vk_instance: Bump extension vector size

* resource_tracking_pass: Perform BFS for sharp tracking

* The Witness triggered this
2024-07-06 02:42:16 +03:00
DanielSvoboda
1d58a0403e
Fix ShowSplash size (#235)
* Fix ShowSplash size

* enable isShowSplash
2024-07-05 00:16:06 +03:00
psucien
dd97b517f7
Recompiler: sampler patching (#236)
* recompiler: restored bfs in image instruction producers search

* recompiler: added pattern check for s# anisotropy modification

* added check if s# comes from constant load (e.g. EUD)
2024-07-05 00:15:57 +03:00
TheTurtle
6ceab6dfac
shader_recompiler: Implement most integer image atomics, workgroup barriers and shared memory load/store (#231)
* shader_recompiler: Add LDEXP

* shader_recompiler: Add most image integer atomic ops

* shader_recompiler: Implement shared memory load/store

* shader_recompiler: More image atomics

* externals: Update sirit

* clang format

* cmake: Add missing files

* shader_recompiler: Fix some atomic bugs

* shader_recompiler: Vs outputs

* shader_recompiler: Shared mem has side-effects, fix format component order

* shader_recompiler: Inline constant buffer impl

* video_core: Fix regressions

* Work

* Fixup a few things
2024-07-05 00:15:44 +03:00
IndecisiveTurtle
fe5bfa9d61 texture_cache: Always validate for now 2024-07-01 22:53:01 +03:00
IndecisiveTurtle
2fe897eeda host_shaders: Fix R8G8 detiler 2024-07-01 20:25:43 +03:00
IndecisiveTurtle
7d4f0da40e video_core: Fix some regressions 2024-07-01 18:26:22 +03:00
IndecisiveTurtle
20e83b4d53 clang format 2024-07-01 13:56:14 +03:00
IndecisiveTurtle
410ba37ec2 code: Add additional logging during init 2024-07-01 13:56:14 +03:00
IndecisiveTurtle
6774216038 shader_recompiler: Apply buffer swizzle on vertex attribs 2024-07-01 13:56:14 +03:00
IndecisiveTurtle
b4d24d8737 renderer_vulkan: Prefer depth stencil read-only layout when possible
* Persona reads a depth attachment while it is being attached with writes disabled. Now this works without spamming vk validation errors
2024-07-01 13:56:14 +03:00
IndecisiveTurtle
22b930ba5e video_core: Track renderpass scopes properly 2024-07-01 13:56:14 +03:00
IndecisiveTurtle
ad10020836 video_core: Fix a few problems 2024-07-01 13:56:14 +03:00
IndecisiveTurtle
10ef357f1f image: Fix image type of 1D Array 2024-07-01 13:56:14 +03:00
psucien
f03262421e texture_cache: force storage usage bit to all images 2024-07-01 09:58:52 +02:00
psucien
1f55eff9d8 libraries: gnmdriver: added initialization preamble to every first submit in a frame 2024-06-30 18:22:39 +02:00
psucien
14377b39b5 texture_cache: detiler: added missing micro8x2 2024-06-30 15:54:59 +02:00
psucien
9121ecf123 renderer_vulkan: more formats conversion 2024-06-30 01:21:39 +03:00
psucien
c4061c3b95 amdgpu: fix for wrong constant ram offset in WriteConstRam decoding 2024-06-30 01:21:39 +03:00
psucien
2cbbcbd371
Metadata support (#223)
* texture_cache: more image usage flags

* texture_cache: metadata registration

* renderer_vulkan: initial CMask support

* renderer_vulkan: skip redundant FCE and FMask decompression passes

* renderer_vulkan: redundant VO surface registration removed

* renderer_vulkan: initial HTile support

* renderer_vulkan: added support for MSAA attachments

* renderer_vulkan: skip unnecessary metadata updates
2024-06-29 16:49:59 +03:00
georgemoralis
059f54838a
Merge pull request #219 from shadps4-emu/gnmdriver/hw_init
Complete HW state init functions
2024-06-27 17:33:58 +03:00
georgemoralis
0ada442cbc
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
91940781b8 libraries: gnmdriver: complete HW stat init functions 2024-06-27 13:36:55 +02:00
georgemoralis
521ff4d14b clang format fixes 2024-06-26 20:32:08 +03:00
IndecisiveTurtle
550bfa1c88 liverpool: Fix assert for compute queues 2024-06-26 20:00:09 +03:00
IndecisiveTurtle
4846704832 shader_recompiler: More instructions and fix for swords of ditto 2024-06-26 18:03:09 +03:00
Alexandre Bouvier
a2224a9b6b fix system include paths 2024-06-25 18:17:16 +02:00
psucien
8475a62a46 common: Common namespace for the slot vector container 2024-06-25 09:31:32 +02:00
psucien
c04fbb75d8 libraries: gnm_driver: added sceGnmDrawIndexIndirect and sceGnmDrawIndirect 2024-06-24 22:53:59 +02:00
psucien
cb6b21de1f
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
73d60b7e8d linker: Set rela bits for all symbol types 2024-06-22 18:09:04 +03:00
IndecisiveTurtle
741427040f shader_recompiler: Even more instructions 2024-06-22 18:09:04 +03:00
IndecisiveTurtle
30199fe701 kernel: Add scePthreadExit 2024-06-22 18:09:04 +03:00
psucien
ab4cc8b218 texture_cache: return back image view usage override 2024-06-16 22:30:18 +02:00
psucien
6e7fd21338 renderer_vulkan: simplified sRGB hack 2024-06-16 22:29:23 +02:00
psucien
3f92a68129 renderer_vulkan: BC3 formats conversion 2024-06-16 22:29:04 +02:00
psucien
37ceea2314 renderer_vulkan: added log entry for CS compiling 2024-06-16 20:51:35 +02:00
psucien
b02ec385b2 video_out: proper sRGB output workflow 2024-06-15 23:24:34 +02:00
psucien
b2b45bf480 video_core: added support for alternate CB channels order 2024-06-15 23:24:33 +02:00
psucien
b9602afc82 renderer_vulkan: sRGB swapchain 2024-06-15 23:24:33 +02:00
psucien
e6f773f950 videoout: register buffers in texture cache at VO creation time 2024-06-15 23:24:33 +02:00
psucien
bdb235716a texture_cache: don't set color attachment usage flag for packed images 2024-06-15 23:24:33 +02:00
psucien
fd8ceacef7 video_core: shaders hash switched to one from binary header 2024-06-15 23:24:32 +02:00
psucien
37cbdad57b renderer_vulkan: static vector for vertex buffers ranges 2024-06-15 23:20:14 +02:00
psucien
be6f523b6e renderer_vulkan: fixed buffers alignments 2024-06-15 23:20:13 +02:00
TheTurtle
c5d1d579b1
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
31bd502764
core: Fixup linux support (#195)
* tls: Implement for linux

* core: Implement memory manager for linux
2024-06-14 00:58:57 +03:00
psucien
64569ff737 tracy: guards for missing vk profiler context 2024-06-11 22:57:37 +02:00
psucien
d7565dec57 tracy: added Vulkan GPU profiling 2024-06-11 21:52:48 +02:00
psucien
04b1226e9c tracy: basic markup and project palette 2024-06-11 12:14:33 +02:00
psucien
c2dc7c3fd4 renderer_vulkan: another fix for vertex buffer offsets 2024-06-10 23:20:32 +02:00
TheTurtle
7b1a317b09
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
01f09cfa63 texture_cache: detiler: added support for block coded 64bit images 2024-06-09 18:18:49 +02:00
psucien
fa73812f32 texture_cache: detiler: added support for block coded 128bit images 2024-06-09 12:54:19 +02:00
psucien
9230d04a0a common: slot_vector moved into common 2024-06-08 01:19:51 +02:00
TheTurtle
998d046210
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
fe3b546d93 renderer_vulkan, config: option to toggle VK validation layer 2024-06-07 11:21:02 +02:00
psucien
dd5a25fda2 review iteration 2024-06-07 08:39:03 +02:00
psucien
e790ec775f texture_cache: detiler: more verbosity in print 2024-06-07 00:12:16 +02:00
psucien
cfc297622f texture_cache: fix for forgotten cb tiling info update 2024-06-07 00:12:16 +02:00
psucien
b17b4ab787 texture_cache: detiler: redundant flag removed 2024-06-07 00:12:15 +02:00
psucien
cb07778008 renderer_vulkan: proper barriers 2024-06-06 23:40:31 +02:00
psucien
729d02d699 renderer_vulkan: proper min uniform alignment 2024-06-06 22:24:20 +02:00
psucien
6814d5f108 renderer_vulkan: fix for vertex buffer mapping offset 2024-06-06 21:41:59 +02:00
raphaelthegreat
5aa3a4d4a0 shader: Fix block processing order in dead code elimination pass 2024-06-06 02:46:36 +03:00
raphaelthegreat
ae7e6dafd5 shader_recompiler: Add more instructions and fix a few thinhs 2024-06-05 22:22:34 +03:00
TheTurtle
728249f58d
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
f9e5c70414 texture_cache: detiler image view moved into image class 2024-06-05 18:37:06 +02:00
psucien
b59e525408 texture_cache: detiler: change staging to faster stream buffer 2024-06-05 18:16:31 +02:00
psucien
bee444b6da fix for re-use 2024-06-05 17:57:05 +02:00
psucien
3a5ba82eae final touch 2024-06-05 16:34:17 +02:00
psucien
0b63a76b51 amdgpu: render target size hint for old runtime 2024-06-05 16:34:04 +02:00
psucien
19994424c5 texture_cache: detiler: shader module release and debug name 2024-06-05 16:33:26 +02:00
psucien
440a60a43b texture_cache: detiler: m8x1 and m8x4 shaders 2024-06-05 16:14:22 +02:00
psucien
184b7b7fc2 video_core: added shader header files generator from Citra 2024-06-05 14:31:50 +02:00
psucien
2c87171b95 texture_cache: a support for m8x1 and m8x4 layouts added to the detiler 2024-06-05 13:10:48 +02:00
psucien
cd87005ded renderer_vulkan: unused extension removed 2024-06-04 12:43:23 +02:00
psucien
d491bbf366 amdgpu: tiling mode introduced 2024-06-04 12:40:08 +02:00
psucien
d7d324ac76 amdgpu: surface bits per element LUT 2024-06-02 22:46:40 +02:00
psucien
23cc60bf06 video_core: amdgpu: simply crash if an exception occured in coro 2024-06-02 19:16:05 +02:00
raphaelthegreat
02a50265f8 shader_recompiler: Better branch detection + more opcodes 2024-06-02 03:05:40 +03:00
psucien
f624f7749c
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
dd91456b48 video_core: Moar shader instruction 2024-05-30 18:17:54 +03:00
psucien
365df2a3ac video_core: renderer_vulkan: write mask fallback 2024-05-30 16:27:39 +02:00
psucien
8e6d492524 video_core: renderer_vulkan: added color mask support 2024-05-30 12:55:37 +02:00
psucien
767e13cccb Linux build fix 2024-05-30 12:09:33 +02:00
psucien
9227a2b868 video_core: multiple color attachments support 2024-05-30 11:21:26 +02:00
psucien
d05cbd88bb video_core: renderer_vulkan: support for passes w\o a fs 2024-05-30 09:42:44 +02:00
raphaelthegreat
58de7ff55a video_core: Implement basic compute shaders and more instructions 2024-05-30 01:39:24 +03:00
psucien
055dec1149 video_core: texture_cache: proper UniqueImage class movers 2024-05-29 17:17:24 +02:00
psucien
a67b8f7a0b video_core: renderer_vulkan: proper inclusion of maintenance4 2024-05-29 17:06:46 +02:00
psucien
5f37a6be83 video_core: amdgpu: fix for a deadlock in wait on idle 2024-05-29 16:03:37 +02:00
psucien
e5486cc57f video_core: amdgpu: proper destruction of processing thread 2024-05-29 16:02:51 +02:00
raphaelthegreat
4d728e943d video_core: Address some feedback 2024-05-27 22:13:55 +03:00
raphaelthegreat
d59b102b6f video_core: Add image support 2024-05-27 18:25:45 +03:00
georgemoralis
729e166cd3
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
09c7379fe0 fix for leaks of coroutine handle 2024-05-27 13:48:35 +03:00
TheTurtle
8dfa5782b2
video_core: Add constant buffer support (#147) 2024-05-26 15:51:35 +03:00
psucien
2963790e0d video_core: initial support for CE and ASC queues 2024-05-26 12:39:30 +02:00
TheTurtle
3c90b8ac00
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
62fd72009b video_core: a fix for multi submits processing (temporary code) 2024-05-22 22:20:33 +02:00
psucien
d752aa5357 config, video_core: null gpu configuration added 2024-05-22 20:19:42 +02:00
TheTurtle
8730968385
video: Import new shader recompiler + display a triangle (#142) 2024-05-22 01:35:12 +03:00
georgemoralis
bb89b1c95a
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
8455574615 gnmdriver: submission lock moved out from gpu 2024-05-17 23:31:19 +02:00
psucien
85704e26a0 renderer_vulkan: state tracking for Image resources 2024-05-17 12:44:07 +02:00
psucien
64b2e58285 a fair multi-submissions support 2024-05-17 08:47:38 +02:00
psucien
dbdb3dc77e amdgpu: non-blocking submitDone 2024-05-17 08:22:47 +02:00
psucien
9df1a8d15b amdgpu: added support for several single GFX submits per frame 2024-05-17 00:01:47 +02:00
psucien
38061ae636 fix for crash in apps when splash is missing 2024-05-16 16:59:38 +03:00
psucien
8c4f72f404 review comments 2024-05-16 16:59:04 +03:00
georgemoralis
c9b5b5e963 show title splash while the game is loading 2024-05-16 16:58:14 +03:00
TheTurtle
55855b4195
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
055ffff463
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
45e354fd77
renderer_vk: missing barriers (#134) 2024-05-14 23:46:34 +03:00
psucien
8677972505 graphics: separate IRQ for GPU driven flips 2024-05-14 21:33:20 +02:00
psucien
d804a66aa2 review comments applied 2024-05-11 00:04:04 +02:00
psucien
37014394fd amdgpu: return perfcounter on EOP 2024-05-10 23:16:56 +02:00
psucien
923baf0164 core: gpu interrupt dispatcher 2024-05-10 21:48:01 +02:00
psucien
581688c1ac amdgpu: EOS event packet handling 2024-05-10 11:55:04 +02:00
psucien
8e0c67f12e 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
bfb18135fb amdgpu: EOP irq and dummy PM4 handlers 2024-05-08 23:27:56 +02:00
psucien
498c5eb0cd gnm_driver: sceGnmSubmitAndFlipCommandBuffers implementation 2024-05-08 22:55:39 +02:00
psucien
4746f514ff gnm_driver: various fixes 2024-05-08 22:53:55 +02:00
psucien
4206ec3c94 video_core, kernel: added gfx eop event handling 2024-05-07 22:46:54 +02:00
psucien
7e8d90d609
core: libraries: gnmdriver: basic functionality extension (#120)
Also a bit of refactoring in `video_core`
2024-05-01 19:29:06 +03:00
TheTurtle
1b9bf924ca
core: Rewrite thread local storage implementation (#118) 2024-05-01 13:38:41 +03:00
TheTurtle
b94efcba5a
video_core: Add basic command list processing (#117) 2024-04-30 01:23:28 +03:00
psucien
2696733cad
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
0727775c88 give texture cache exception handler priority over tls exception handler 2024-04-29 19:26:35 +03:00
raphaelthegreat
25c04ad42f texture_cache: Fix linear image uploads
* Also fixed build for clang-cl with libc
2024-04-29 18:22:04 +03:00
psucien
35777a9fb3 clang format fix 2024-04-28 01:34:14 +02:00
psucien
453b24eb20 config: option to select gpu for vk device 2024-04-28 01:19:04 +02:00
psucien
249373bf0d texture_cache: protection flags re-worked
* actually I gave up on clang fmt
2024-04-28 01:00:24 +02:00
psucien
d2c53d0fde clang format fix 2024-04-28 00:51:34 +02:00
psucien
1047293bf2 Merge branch 'main' of github.com:raphaelthegreat/shadps4 into raph-main 2024-04-28 00:29:15 +02:00
psucien
e0a4c3f1a3 texture_cache: added memory protection for Windows 2024-04-28 00:21:04 +02:00
raphaelthegreat
40c86b7688 Address feedback 2024-04-28 01:09:03 +03:00
GPUCode
c01b6f8397 video_core: Rewrite vulkan and videoout 2024-04-14 17:10:40 +03:00
GPUCode
584b7d2b15 chore: Make shadps4 REUSE compliant 2024-02-23 23:33:43 +02:00
GPUCode
6f4c6ae0bb
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
fe43558779 common: Rework timekeeping with native RDTSC and port to linux 2024-02-23 11:30:06 +02:00