Commit Graph

81 Commits

Author SHA1 Message Date
Random
fc745ee767
Fix a few issues with the intel anv vulkan driver from mesa (#514)
* add fallback format for d16UnormS8Uint which is not supported by intel

* fix depth/stencil buffer creation issues causing asserts in intel driver
2024-08-24 14:50:46 +02:00
¥IGA
0c5b91e1fb
Warnings fixes (#541)
* Warnings fixes

* Warnings fixes
2024-08-23 22:38:55 +03:00
Vladislav Mikhalin
79680c50c0
Misc fixes (#517)
* Misc fixes

* Removed the skip for draw calls without RTs

* Remove Srgb image stores to rework later
2024-08-21 23:54:23 +03:00
TheTurtle
3f9c86ad33
vk_pipeline_cache: Avoid recompiling new shaders on each new PL (#480)
* cfg: Add one more divergence case

* Seen in RDR shaders

* renderer_vulkan: Reduce number of compiled shaders

* vk_pipeline_cache: Remove some unnecessary checks
2024-08-21 02:00:24 +03:00
Dzmitry Dubrova
6f4e1a47b9
core: misc changes (#430)
* core: misc changes

* video_core: add some formats for detiling

* clang format
2024-08-14 20:37:05 +02:00
psucien
27cb218584
video_core: CPU flip relay (#415)
* video_core: cpu flip is propagated via gpu thread now

* tentative fix for cpu flips racing

* libraries: videoout: better flip status handling
2024-08-14 11:36:11 +02:00
TheTurtle
1fb0da9b89
video_core: Crucial buffer cache fixes + proper GPU clears (#414)
* translator: Use templates for stronger type guarantees

* spirv: Define buffer offsets upfront

* Saves a lot of shader instructions

* buffer_cache: Use dynamic vertex input when available

* Fixes issues when games like dark souls rebind vertex buffers with different stride

* externals: Update boost

* spirv: Use runtime array for ssbos

* ssbos can be large and typically their size will vary, especially in generic copy/clear cs shaders

* fs: Lock when doing case insensitive search

* Dark Souls does fs lookups from different threads

* texture_cache: More precise invalidation from compute

* Fixes unrelated render targets being cleared

* texture_cache: Use hashes for protect gpu modified images from reupload

* translator: Treat V_CNDMASK as float

* Sometimes it can have input modifiers. Worst this will cause is some extra calls to uintBitsToFloat and opposite. But most often this is used as float anyway

* translator: Small optimization for V_SAD_U32

* Fix review

* clang format
2024-08-13 09:21:48 +03:00
psucien
3d0fdf11f0
Build stabilization (#413)
* shader_recompiler: fix for float convert and debug asserts

* libraries: kernel: correct return code on invalid semaphore

* amdgpu: additional case for cb extents retrieval heuristic

* removed redundant check in assert

* amdgpu: fix for linear tiling mode detection fin color buffers

* texture_cache: fix for unexpected scheduler flushes by detiler

* renderer_vulkan: missing depth barrier

* texture_cache: missed slices in rt view; + detiler format
2024-08-12 17:23:01 +03:00
psucien
ace39957ef
Video Core: debug tools (#412)
* video_core: better use of rdoc markers

* renderer_vulkan: added gpu assisted validation

* renderer_vulkan: make nv_checkpoints operational

* video_core: unified Vulkan objects names
2024-08-12 13:46:45 +02:00
TheTurtle
381ba8c7a5
video_core: Implement guest buffer manager (#373)
* video_core: Introduce buffer cache

* video_core: Use multi level page table for caches

* renderer_vulkan: Remove unused stream buffer

* fix build

* oops forgot optimize off
2024-08-08 15:02:10 +03:00
TheTurtle
a7c9bfa5c5
shader_recompiler: Small instruction parsing refactor/bugfixes (#340)
* translator: Implemtn f32 to f16 convert

* shader_recompiler: Add bit instructions

* shader_recompiler: More data share instructions

* shader_recompiler: Remove exec contexts, fix S_MOV_B64

* shader_recompiler: Split instruction parsing into categories

* shader_recompiler: Better BFS search

* shader_recompiler: Constant propagation pass for cmp_class_f32

* shader_recompiler: Partial readfirstlane implementation

* shader_recompiler: Stub readlane/writelane only for non-compute

* hack: Fix swizzle on RDR

* Will properly fix this when merging this

* clang format

* address_space: Bump user area size to full

* shader_recompiler: V_INTERP_MOV_F32

* Should work the same as spirv will emit flat decoration on demand

* kernel: Add MAP_OP_MAP_FLEXIBLE

* image_view: Attempt to apply storage swizzle on format

* vk_scheduler: Barrier attachments on renderpass end

* clang format

* liverpool: cs state backup

* shader_recompiler: More instructions and formats

* vector_alu: Proper V_MBCNT_U32_B32

* shader_recompiler: Port some dark souls things

* file_system: Implement sceKernelRename

* more formats

* clang format

* resource_tracking_pass: Back to assert

* translate: Tracedata

* kernel: Remove tracy lock

* Solves random crashes in Dark Souls

* code: Review comments
2024-07-30 23:32:40 +02:00
Vasyl Baran
3e6af54ea3 Fixup for detiler artifacts on macOS 2024-07-28 22:21:18 +03:00
psucien
30198d5ffc
Surface management rework (2/3) (#329)
* texture_cache: interface refactoring

* a bit of fixes and improvements

* texture_cache: macro tile extents for bpp 128

* texture_cache: detiler: prefer host memory for large buffers upload
2024-07-28 17:20:42 +02:00
TheTurtle
0d6edaa0a0
Move presentation to separate thread/improve sync (#303)
* video_out: Move presentation to separate thread

* liverpool: Better sync for CPU flips

* driver: Make flip blocking

* videoout: Proper flip rate and vblank management

* config: Add vblank divider option

* clang format

* videoout: added `sceVideoOutWaitVblank`

* clang format

* vk_scheduler: Silly merge conflict

* externals: Add renderdoc API

* clang format

* reuse

* rdoc: manual capture trigger

* clang fmt

---------

Co-authored-by: psucien <168137814+psucien@users.noreply.github.com>
2024-07-28 15:54:09 +02:00
squidbus
175ffe8ce3 Add fallback system for unsupported pixel formats. 2024-07-21 22:36:12 +03:00
squidbus
66fa29059c Add initial macOS support. 2024-07-21 22:36:12 +03:00
psucien
64459f1a76
Surface management rework (1/3) (#307)
* amdgpu: proper CB and DB sizes calculation; minor refactoring

* texture_cache: separate file for image_info

* texture_cache: image guest address moved into image info

* texture_cache: surface size calculation

* shader_recompiler: fixed sin/cos

Thanks to red_pring and gandalfthewhite0173

* initial preparations for subresources upload

* review comments
2024-07-20 12:51:21 +03: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
6dbb842bec renderer: a bit more formats to support 2024-07-07 14:34:36 +02: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
20e83b4d53 clang format 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
14377b39b5 texture_cache: detiler: added missing micro8x2 2024-06-30 15:54:59 +02: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
psucien
8475a62a46 common: Common namespace for the slot vector container 2024-06-25 09:31:32 +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
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
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
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
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