Commit Graph

342 Commits

Author SHA1 Message Date
Raven
5c5c02cb04
Add S_XOR_B32 opcode (#911)
* Add S_XOR_B32

* Stub S_OR_B32
2024-09-14 18:52:30 +03:00
Raven
12a0a02e38
Map BUFFER_AUTOMIC SMIN/SAMX/AND/OR/XOR/INC/DEC (#910) 2024-09-14 18:52:20 +03:00
Emulator-Team-2
c924457e28
Implement IMAGE_SAMPLE_L_O opcode (#899) 2024-09-13 19:20:35 +02:00
Luke Warner
c181102a02
Implement S_ABSDIFF_I32 shader instruction (#902) 2024-09-13 19:02:17 +02:00
TheTurtle
1b6cc447b4
hotfix: Restore unreachable 2024-09-12 23:46:29 +03:00
illusion0001
b911c70d35
Silence unhandled case warns (#823) 2024-09-12 23:01:13 +03:00
squidbus
a49c7e9dcb
shader_recompiler: Add buffer offset calculation when swizzle is enabled. (#834) 2024-09-12 22:59:52 +03:00
squidbus
136f6072b9
shader_recompiler: Use correct integer type for OpImageWrite. (#871) 2024-09-11 23:04:02 +03:00
TheTurtle
b0bbb16aae
video_core: Add fallback path for pipelines with more than 32 bindings (#837)
* video_core: Small fixes

* renderer_vulkan: Add fallback path for pipelines with more than 32 bindings

* vk_resource_pool: Rewrite desc heap

* work
2024-09-10 20:54:39 +03:00
Andrew Middendorp
4502a5ddcc
Added S_ANDN2_B32 and S_NAND_B32 opcodes (#833)
* Added S_ANDN2_B32 and S_NAND_B32 opcodes

* Update src/shader_recompiler/frontend/translate/scalar_alu.cpp

Co-authored-by: baggins183 <baggins31084@proton.me>

* Fix result and src1

Co-authored-by: baggins183 <baggins31084@proton.me>

* update result

Co-authored-by: baggins183 <baggins31084@proton.me>

* Update src1

Co-authored-by: baggins183 <baggins31084@proton.me>

---------

Co-authored-by: baggins183 <baggins31084@proton.me>
2024-09-09 22:46:57 +03:00
TheTurtle
13743b27fc
shader_recompiler: Implement data share append and consume operations (#814)
* shader_recompiler: Add more format swap modes

* texture_cache: Handle stencil texture reads

* emulator: Support loading font library

* readme: Add thanks section

* shader_recompiler: Constant buffers as integers

* shader_recompiler: Typed buffers as integers

* shader_recompiler: Separate thread bit scalars

* We can assume guest shader never mixes them with normal sgprs. This helps avoid errors where ssa could view an sgpr write dominating a thread bit read, due to how control flow is structurized, even though its not possible in actual control flow

* shader_recompiler: Implement data append/consume operations

* clang format

* buffer_cache: Simplify invalidation scheme

* video_core: Remove some invalidation remnants

* adjust
2024-09-07 00:14:51 +03:00
Stephen Miller
09ce12a868
shader_recompiler: Add more opcodes (#802)
* Implement some missing shader opcodes

Implements TBUFFER_STORE_FORMAT_XYZW, IMAGE_SAMPLE_CD, and IMAGE_GATHER4_C_LZ.

These are seen in https://github.com/shadps4-emu/shadPS4/issues/496.

* Implement IMAGE_STORE_MIP

Not sure if this is the right way to do this, let me know if this needs changing.

* Revert "Implement IMAGE_STORE_MIP"

This reverts commit cff78b5924.
2024-09-06 23:51:20 +03:00
baggins183
bb29224daf
Implement V_MOVREL variants (#745)
* shader_recompiler: Implement V_MOVRELS_B32, V_MOVRELD_B32,
V_MOVRELSD_B32

Generates a ton of OpSelects to hardcode reading or writing from each
possible vgpr depending on the value of m0

Future work is to do range analysis to put an upper bound on m0 and
check fewer registers.

* fix runtime info after rebase
2024-09-06 23:47:47 +03:00
squidbus
1d7ee198e1
shader_recompiler: Add ConvertF16F32 to FP16 detection. (#800) 2024-09-06 14:12:07 +03:00
georgemoralis
0dd6e257c5
Merge pull request #573 from polybiusproxy/shader_recompiler/format
shader_recompiler/frontend: Miscellaneous fixes
2024-09-04 23:21:23 +03:00
Sebastian Kassai
0a5c36482e
shader_recompiler: change ir.SetScalarReg() -> SetDst() (#777)
Fixes an out-of-bounds crash on Amplitude and Rock Band 4 startup.
2024-09-04 17:30:43 +03:00
squidbus
b87e6f3838
vulkan: Emulate depth clip control when extension is not available. (#762) 2024-09-04 01:07:05 +03:00
squidbus
d48836d5ae
shader_recompiler: Limit src0 to 4-bit in V_CVT_OFF_F32_I4 (#759) 2024-09-03 21:37:52 +03:00
TheTurtle
f087f43736
shader_recompiler: Implement render target swizzles when no format is available (#739)
* shader_recompiler: Use null image when shader is compiled with unbound sharp

* video_core: Refactor and render target swizzles

* liverpool_to_vk: Add missing swap format from RDR

* video_core: Refactor shader recompiler interface

* Makes it much easier to pass runtime information to the recompiler and have it treated as part of the shader key. Also pulls out most runtime state from Info struct

* shader_recompiler: Avoid some asserts
2024-09-03 14:04:30 +03:00
baggins183
101aeb920d
Implement V_BFM_B32 and V_FFBH_U32 (#663)
* Implement V_BFM_B32

* Render.Recompiler: Implement V_FFBH_U32

* fix clang-format
2024-09-01 22:20:42 +03:00
Grégoire Hage
1bd9317509
Implement V_READFIRSTLANE_B32 (#681)
* Implement V_READFIRSTLANE_B32

* refactor
2024-09-01 21:49:42 +03:00
Daniel R.
84f1690dfb
Merge branch 'shadps4-emu:main' into shader_recompiler/format 2024-08-30 15:40:17 +02:00
Grégoire Hage
1651db24fe
Implement S_XNOR_B64 (#654) 2024-08-30 02:43:12 +03:00
IndecisiveTurtle
6fbbe3d79b translator: Add missed flow instruction 2024-08-30 00:26:01 +03:00
IndecisiveTurtle
fab390b860 spirv: More correct texel buffer usage 2024-08-30 00:25:56 +03:00
TheTurtle
66e96dd944
video_core: Account of runtime state changes when compiling shaders (#575)
* video_core: Compile shader permutations

* spirv: Only specific storage image format for atomics

* ir: Avoid cube coord patching for storage image

* spirv: Fix default attributes

* data_share: Add more instructions

* video_core: Query storage flag with runtime state

* kernel: Use std::list for semaphore

* video_core: Use texture buffers for untyped format load/store

* buffer_cache: Limit view usage

* vk_pipeline_cache: Fix invalid iterator

* image_view: Reduce log spam when alpha=1 in storage swizzle

* video_core: More features and proper spirv feature detection

* video_core: Attempt no2 for specialization

* spirv: Remove conflict

* vk_shader_cache: Small cleanup
2024-08-29 19:29:54 +03:00
georgemoralis
18e95ae4c0
Merge branch 'main' into shader_recompiler/format 2024-08-29 10:18:12 +03:00
psucien
3fbb68048e
shader_recompiler: frontend: SOPC and SOPK handling separated; more cmp opcodes (#634) 2024-08-28 22:27:47 +02:00
0xsegf4ult
9f4e55a8e7
shader_recompiler: constant propagation bitwise operations + S_CMPK_EQ_U32 fix (#613)
* rebase on main branch impl of V_LSHL_B64

* remove V_LSHR_B64

* fix S_CMPK_EQ_u32

* fix conflicts

* fix broken merge

* remove duplicate cases

* remove duplicate declaration
2024-08-28 13:10:21 +03:00
psucien
371d1d009a Added missing headers and 2D MSAA image type 2024-08-27 19:17:23 +02:00
Grégoire Hage
288db9a0cf
Implement V_LSHL_B64 (#608) 2024-08-27 14:15:32 +03:00
psucien
af4356bfe1 shader_recompiler: fix for pattern detection in TryDisableAnisoLod0
Also fix for forgotten log message params.
2024-08-26 23:49:36 +02:00
Plínio Larrubia
ad8373095a
fix typo in LOG_INFO (#559)
fix: file name typo constant_propogation_pass.cpp

fix typo from 'symbol_vitrual_addr' variable

fix typo in emit_spirv_context_get_set.cpp

fix typo from constant_propagation_pass.cpp in CMakeLists

fix typo in these some config.cpp functions
- setSliderPosition
- setSliderPositionGrid
- getSliderPosition
- getSliderPositionGrid

fix typo inside src\core\aerolib\stubs.cpp

fix typo in a comment from src\core\file_format\pkg.cpp

fix typo inside src\core\file_sys\fs.cpp + fs.h
- NeedsCaseInsensiveSearch -> NeedsCaseInsensitiveSearch

fix 2 function typos: sceAppContentAddcontEnqueueDownloadByEntitlemetId and sceAppContentAddcontMountByEntitlemetId

fix typo on comment inside src\core\libraries\kernel\file_system.cpp

fix typo on src\core\libraries\videoout\driver.cpp

fix typo in src\core\memory.cpp

fix typo from comment in src\qt_gui\game_list_utils.h

fix typo in src\video_core\amdgpu\liverpool.h
- window_offset_disble to window_offset_disable

fix typo from comments in src\video_core\host_shaders\detile_m32x1.comp + detile_m32x2.comp
- subotimal -> suboptimal

fix typo from comment in src\video_core\renderer_vulkan\renderer_vulkan.cpp
- dimentions -> dimensions

fix typo from enum in src\common\debug.h and other files
- MarkersPallete -> MarkersPalette

fix last typo in src\video_core\amdgpu\pm4_opcodes.h
- PremableCntl -> PreambleCntl
2024-08-26 15:22:11 +03:00
Lizardy
aae6e5be73
shader_recompiler: BUFFER_ATOMIC_SWAP Opcode (#566)
* shader_recompiler: BUFFER_ATOMIC_SWAP Opcode

* clang

* follow 32 convention

---------

Co-authored-by: microsoftv <6063922+microsoftv@users.noreply.github.com>
2024-08-26 15:21:20 +03:00
greggameplayer
86870e7c8d Implement TBUFFER_STORE_FORMAT_XY 2024-08-26 03:39:38 +02:00
DanielSvoboda
2a737d0800
V_NOP | PfpSyncMe | S_CMPK_EQ_U32 (#426)
* V_NOP

V_NOP = Do nothing

* PfpSyncMe

PfpSyncMe ensures that all previous commands are completed before continuing.
'break' should be enough for now

* S_CMPK_EQ_U32

S_CMPK_EQ_U32
SCC = (D.u == SIMM16)

* S_CMPK_EQ_U32

* OperandField::Undefined:

* Update translate.cpp

remove  OperandField::Undefined:

* Update image_view.cpp

[Render.Vulkan] <Error> image_view.cpp:ImageViewInfo:109: Storage image (num_comps = 4) requires swizzling [BGRA]
format 43 dst_sel 3886

* Update liverpool_to_vk.cpp

* S_CMPK_EQ_U32

* S_CMPK_EQ_U32
2024-08-25 22:07:46 +02:00
psucien
b687ae5e34
GnmDriver: Clear context support (#567)
* gnmdriver: added support for gpu context reset

* shader_recompiler: minor validation fixes

* shader_recompiler: added `V_CMPX_GT_I32`

* shader_recompiler: fix for crash on inline sampler access

* compilation warnings and dead code elimination

* amdgpu: fix for registers addressing

* libraries: videoout: reduce logging pressure

* shader_recompiler: fix for devergence scope detection
2024-08-25 23:01:05 +03:00
Daniel R
3a8a666df0
shader_recompiler/frontend: fix IMAGE_SAMPLE_CD format
* Seen on Dark Souls
2024-08-25 19:53:45 +02:00
Daniel R.
977371e7e1
shader_recompiler/frontend: fix IMAGE_GATHER4_C_LZ format 2024-08-25 14:06:41 +02:00
Daniel R
ba140b9680
shader_recompiler/frontend: add information on instruction format assert 2024-08-25 13:17:59 +02:00
Daniel R
5691838eca
shader_recompiler/frontend: fix V_NOP instruction format 2024-08-25 13:17:24 +02:00
Daniel R.
d241867c7b
shader_recompiler/frontend: implement V_NOP 2024-08-24 23:18:04 +02:00
TheTurtle
c79b10edc1
video_core: Bloodborne stabilization pt1 (#543)
* shader_recompiler: Writelane elimination pass + null image fix

* spirv: Implement image derivatives

* texture_cache: Reduce page bit size

* clang format

* slot_vector: Back to debug assert

* vk_graphics_pipeline: Handle null tsharp

* spirv: Revert some change

* vk_instance: Support primitive restart on list topology

* page_manager: Adjust windows exception handler

* clang format

* Remove subres tracking

* Will be done separately
2024-08-24 22:51:47 +03:00
Vinicius Rangel
9e4fc17e6c
shader_recompiler: handle fetch shader address offsets (#538)
* shader_recompiler: handle fetch shader address offsets

parse index & offset sgpr from fetch shader and propagate them to vkBindVertexBuffers

* shader_recompiler: fix fetch_shader when offset is not present

* video_core: propagate index/offset SGPRs to vkCmdDraw instead of offsetting the buffer address

* video_core: add vertex_offset to non-indexed draw calls

renamed fetch offset fields
2024-08-24 17:36:40 +02:00
Herman Semenov
243fd0be78
core,shader_recompiler: align structures for 64-bit platforms (#447)
Decreased sizes:
 * TextureDefinition 32 bytes -> 24 bytes
 * PortOut 72 bytes -> 64 bytes
 * Request 48 bytes -> 40 bytes
 * WindowSystemInfo 32 bytes -> 24 bytes
2024-08-24 16:18:12 +03:00
psucien
2c540fbecb
Merge pull request #497 from xezrunner/xezrunner/cfg-msb-fix
shader_recompiler: fix BranchTarget sign flip for sopp.simm
2024-08-24 11:39:10 +02:00
Xphalnos
d4be3dbb31 Lot of small fixes 2024-08-22 18:01:30 +02:00
Herman Semenov
aed9a737d6 Added const reference params if possible, removed less 16 size 2024-08-22 02:56:01 +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
xezrunner
42c4d8353a Fix control.sopp.simm flipping sign in CFG label generation
This used to cause a fatal crash that would prevent Amplitude [CUSA02480] from booting beyond initialization.

A conditional true label would get an address starting with 0xffff...., which wasn't realistic with the given shader.

The multiplication by 4 causes the value to have its MSB set due to the smaller type.
2024-08-20 22:48:28 +02:00
Lizardy
63938ba8dd
shader_recompiler: BUFFER_ATOMIC & DS_* Opcodes (#428)
* BUFFER_ATOMIC | DS_MINMAX_U32

- Emission of BufferAtomicU32
- Addition of Buffer opcodes to IR
- Translator for BUFFER_ATOMIC Opcode
- Translators for DS_MAXMIN_U32 Opcodes

* Clang Format & UNREACHABLE_MSG

* clang

* no crash on compile

* clang

* Shared Atomics

* reuse

* rm vscode

* resolve

* opcodes

* side effects

* attempt fix shader comp

* failed attempt to fix

* clang

* do correct vdata set (still fails)

* clang

* fixed BUFFER_ATOMIC_ADD, DS_ADD_U32 fails

* data share should work

* clang

* resource tracking for buffer atomic

* clang

* distinguish RTN opcodes

* clean IsBufferInstruction

---------

Co-authored-by: microsoftv <6063922+microsoftv@users.noreply.github.com>
2024-08-17 22:06:06 +03:00
Dzmitry Dubrova
dcb057dd7f
misc changes, part ?/? (#441)
* gui: add option to boot a game by choosing elf file

* core: some small implementations

* fs: implement open func

* add some validations

* spirv: add image format

* video_core: add eR16Uint to formats
2024-08-16 20:16:15 +03:00
TheTurtle
1d1c88ad31
control_flow_graph: Initial divergence handling (#434)
* control_flow_graph: Initial divergence handling

* cfg: Handle additional case

* spirv: Handle tgid enable bits

* clang format

* spirv: Use proper format

* translator: Add more instructions
2024-08-16 20:05:37 +03:00
Herman Semenov
c1fb5d5bca
core,shader_recompiler: added const ref filesystem::path and removed if type size less 16 (#446) 2024-08-16 11:36:05 +03:00
psucien
9adc638220
shader_recompiler: basic implementation of BUFFER_STORE_FORMAT_ (#431)
* shader_recompiler: basic implementation of buffer store w\ fmt conversion

* added `Format16` dfmt
2024-08-15 00:15:07 +02: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
TheTurtle
d332a5e611
spirv: Simplify shared memory handling (#427)
* spirv: Simplify shared memory handling

* spirv: Ignore clip plane

* spirv: Fix image offsets

* ir_pass: Implement shared memory lowering pass

* NVIDIA doesn't like using shared mem in fragment shader and softlocks driver

* spirv: Add log for ignoring pos1
2024-08-14 19:01:17 +03:00
TheTurtle
d8b9d82ffa
video_core: Various fixes (#423)
* video_core: Various fixes

* clang format
2024-08-13 20:05:10 +03: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
Vinicius Rangel
dfcfd62d4f
spirv: fix image sample lod/clamp/offset translation (#402)
* spirv: fix image sample lod/clamp translation

* spirv: fix image sample offsets

* fix ImageSample opcodes & offset emission
2024-08-13 09:12:38 +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
IndecisiveTurtle
3fd2abdd5b vk_graphics_pipeline: Fix regression 2024-08-08 17:01:03 +03: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
159be2c7f4
video_core: Minor fixes (#366)
* data_share: Fix DS instruction

* vk_graphics_pipeline: Fix unnecessary invalidate

* spirv: Remove subgroup id

* vector_alu: Simplify mbcnt pattern

* shader_recompiler: More instructions

* clang format

* kernel: Fix cond memory leak and reduce spam

* liverpool: Print error on exception

* build fix
2024-08-05 13:45:28 +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
DanielSvoboda
fb145342ce
log improvement ThrowInvalidType (#330)
* log improvement ThrowInvalidType

* log improvement ThrowInvalidType
2024-07-28 18:42:54 +03:00
Vinicius Rangel
680192a0c4
64 bits OP, impl V_ADDC_U32 & V_MAD_U64_U32 (#310)
* impl V_ADDC_U32 & V_MAD_U64_U32

* shader recompiler: add 64 bits version to get register / GetSrc

* fix V_ADDC_U32 carry

* shader recompiler: removed automatic conversion to force_flt in GetSRc

* shader recompiler: auto cast between u32 and u64 during ssa pass

* shader recompiler: fix SetVectorReg64 & standardize switches-case

* shader translate: fix overflow detection in V_ADD_I32

use vcc lo instead of vcc thread bit

* shader recompiler: more 64-bit work

- removed bit_size parameter from Get[Scalar/Vector]Register
- add BitwiseOr64
- add SetDst64 as a replacement for SetScalarReg64 & SetVectorReg64
- add GetSrc64 for 64-bit value

* shader recompiler: add V_MAD_U64_U32 vcc output

- add V_MAD_U64_U32 vcc output
- ILessThan for 64-bits

* shader recompiler: removed unnecessary changes & missing consts

* shader_recompiler: Add s64 type in constant propagation
2024-07-27 17:23:59 +03:00
DanielSvoboda
b2ba84aa11
BUFFER_STORE_DWORDX2 2024-07-26 00:25:29 -03:00
TheTurtle
a2cd1669b6
memory: Cleanups and refactors (#324)
* memory: Various fixes

* Added (Partial) sceKernelBatchMap/sceKernelBatchMap2

* memory: Rename and implement batch unmap

* memory: Remove uneeded assert

* memory: Commonize free search routine

* memory: Contains check is inclusive

* memory: Address some alignment issues

* clang format

---------

Co-authored-by: raziel1000 <ckraziel@gmail.com>
2024-07-25 23:01:12 +03:00
squidbus
6a6d5bad42 Fix one-off bug with user data registers. 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
TheTurtle
bfe3322977
spirv: Address some regressions in buffer loads (#304)
* spirv: Use correct index

* spirv: Fix indices during buffer load

* clang-format fix

* spirv: Index can be const

---------

Co-authored-by: georgemoralis <giorgosmrls@gmail.com>
2024-07-19 19:36:07 +03:00
Vladislav Mikhalin
d0d7ef06e8
Fixed buffer_store_* regression (#302) 2024-07-18 21:04:12 +03:00
georgemoralis
439c0be9a6 clang format fix 2024-07-17 17:57:54 +03:00
IndecisiveTurtle
cd009cfec6 shader_recompiler: Normal gathers 2024-07-17 16:49:45 +03:00
Vladislav Mikhalin
f9e96793cc
Implemented load_buffer_format_* conversions (#295)
* Implemented load_buffer_format_* conversions

* clang-format insists on ugly things
2024-07-16 15:03:07 +03:00
georgemoralis
0de914995f
Merge pull request #293 from shadps4-emu/misc-fixes3
Various linux fixes
2024-07-15 15:25:20 +03:00
georgemoralis
ba0be91c73 clang format fix 2024-07-15 14:18:28 +03:00
IndecisiveTurtle
58d1cbd9b7 ssa_rewrite_pass: Correct phi node type for thread bitmask 2024-07-15 13:34:34 +03:00
georgemoralis
c49afb4c17
Merge pull request #287 from polybiusproxy/dev
gnmdriver: Implement shader functions
2024-07-15 07:47:33 +03:00
IndecisiveTurtle
ce6a01bd41 clang format 2024-07-15 03:47:10 +03:00
psucien
ed37fb32a7 review comments applied 2024-07-14 23:25:41 +02:00
georgemoralis
b4df90d8e4
Merge pull request #292 from shadps4-emu/games/00144
Missing graphics features for flOw & Flower
2024-07-14 23:07:46 +03:00
psucien
f041276b04 recompiler: added support for discard on export with masked EXEC 2024-07-13 14:57:01 +02:00
Daniel R
83c8204d23
shader_recompiler/frontend: Implement opcodes (#289)
`S_ASHR_I32` and `BUFFER_LOAD_DWORD`.
2024-07-13 12:37:25 +03:00
psucien
1b94f07a6a recompiler: proper VS inputs initialization 2024-07-13 01:00:24 +02:00
Vladislav Mikhalin
262bf3d337 Fixed an issue with number of components of shader attributes 2024-07-11 16:10:23 +03:00
Vinicius Rangel
94d1a6b0b9
impl V_CMP_CLASS_F32 common filter masks (#276) 2024-07-10 02:24:01 +03:00
DanielSvoboda
63b0465a33
add V_MAD_U32_U24 (#262)
* V_MAD_U32_U24

* adjust V_MAD_I32_I24 for bit extraction

* optional bit extraction parameter

* Update vector_alu.cpp

* clang-format

* Update src/shader_recompiler/frontend/translate/vector_alu.cpp

Co-authored-by: TheTurtle <47210458+raphaelthegreat@users.noreply.github.com>

* Update vector_alu.cpp

* Update translate.h

---------

Co-authored-by: TheTurtle <47210458+raphaelthegreat@users.noreply.github.com>
2024-07-09 01:35:01 +03:00
Stolas
2620919f0b
Added Legacy Min/Max ops (#266)
* Forwarding V_MAX_LEGACY_F32 to V_MAX3_F32. Fixes Translation error in Geometry Wars 3.

* Forwarded to correct op

* Implemented Legacy Max/Min using NMax/NMin

* Added extra argument to Min/Max op codes

* Removed extra translator functions, replaced with bool

* Formatting
2024-07-08 12:24:12 +03:00
psucien
6dbb842bec renderer: a bit more formats to support 2024-07-07 14:34:36 +02:00
psucien
19c85c78cf recompiler: switch instance data to storage buffers 2024-07-07 13:08:39 +02:00
psucien
bf4bf4ccb2 recompiler: fix for gather4 components return 2024-07-07 13:00:52 +02:00
psucien
cfbe8b9e6d renderer: added support for instance step rates 2024-07-06 18:03:43 +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
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
georgemoralis
afba6dbd66 clang format fix 2024-07-01 23:48:30 +03:00
IndecisiveTurtle
a603bc7d88 shader_recompiler: More instructions 2024-07-01 22:42:45 +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
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
5da79d4798 spirv: Add fragdepth and implement image query 2024-07-01 13:56:14 +03:00
psucien
cc945fb92e shader_recompiler: a simple bfs in image arg producer search 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
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
IndecisiveTurtle
c8ed338d5a kernel: Const correctness 2024-06-26 18:24:06 +03:00
IndecisiveTurtle
c081663aac translator: Merge ANDN2 with AND and impl ORN2 2024-06-26 18:16:01 +03:00
IndecisiveTurtle
4846704832 shader_recompiler: More instructions and fix for swords of ditto 2024-06-26 18:03:09 +03: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
georgemoralis
32225f4a8b more clang fix 2024-06-22 18:15:42 +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
8850c2f4be shader_recompiler: Add more instructions 2024-06-22 18:09:03 +03:00
psucien
5595da0a24 final touch: assert instead of log crit to crash earlier 2024-06-17 00:42:26 +02:00
psucien
0c32ea242b shader_recompiler: list all missing instructions during translation pass 2024-06-16 23:45:39 +02:00
psucien
396812bab6 shader_recompiler: added V_TRUNC VOP1/3 (496) 2024-06-16 23:39:45 +02:00
psucien
d3ab612bdc shader_recompiler: pretty print for missing shader instructions 2024-06-16 23:11:36 +02:00
psucien
d054c3e0ad shader_recompiler: added V_MAX VOP2 (431, 433) 2024-06-16 21:34:23 +02:00
psucien
be67fdc9c9 shader_recompiler: correct format for SSBO store op 2024-06-16 21:21:19 +02:00
psucien
54f8616d6a shader_recompiler: added MUL_HI VOP2 (896) 2024-06-16 20:39:53 +02:00
psucien
1fc86a6c9d shader_recompiler: added SOPK MOVK (45) 2024-06-16 20:26:24 +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
psucien
cb2cf7d93c recompiler: trivial missing ops (VALU OR and SALU LE, GE) added 2024-06-10 23:49:23 +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
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
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
raphaelthegreat
02a50265f8 shader_recompiler: Better branch detection + more opcodes 2024-06-02 03:05:40 +03:00
raphaelthegreat
dd91456b48 video_core: Moar shader instruction 2024-05-30 18:17:54 +03:00
psucien
0212e68752 shader_recompiler: redundant IR opcode removed 2024-05-30 11:50:42 +02:00
psucien
3741f013a3 shader_recompiler: added NOP and RSQ instructions 2024-05-30 09:43:49 +02:00
raphaelthegreat
58de7ff55a video_core: Implement basic compute shaders and more instructions 2024-05-30 01:39:24 +03: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
TheTurtle
8dfa5782b2
video_core: Add constant buffer support (#147) 2024-05-26 15:51:35 +03: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
TheTurtle
8730968385
video: Import new shader recompiler + display a triangle (#142) 2024-05-22 01:35:12 +03:00