Commit Graph

85 Commits

Author SHA1 Message Date
ameerj 28cecc6cd8 shaders: Track local memory usage 2023-06-25 18:59:33 -04:00
FengChen 348c6e5b28 video_core: Fix few issues in Tess stage 2022-11-07 15:42:42 +08:00
Morph 2b87305d31 general: Convert source file copyright comments over to SPDX
This formats all copyright comments according to SPDX formatting guidelines.
Additionally, this resolves the remaining GPLv2 only licensed files by relicensing them to GPLv2.0-or-later.
2022-04-23 05:55:32 -04:00
Liam 528cba63b6 shader_recompiler: support const buffer indirect addressing on OpenGL SPIR-V 2022-04-01 11:17:54 -04:00
Liam 83b1c9de37 Address review comments 2022-03-17 14:48:18 -04:00
Liam 95b9f62686 shader_recompiler: Use functions for indirect const buffer accesses 2022-03-17 13:30:21 -04:00
Liam 8515dba789 shader: add support for const buffer indirect addressing 2022-03-14 19:43:32 -04:00
ameerj 0c5e641757 shaders: Add U64->U32x2 Atomic fallback functions 2022-01-29 19:55:53 -05:00
ameerj c3d768426c spirv_atomic: Define U32x2 storage buffers for 64-bit storage atomics
Some drivers do not support 64-bit atomics, and fallback to atomically modifying U32x2 vectors. This change ensures that U32x2 storage vectors are defined in the spir-v shader when 64-bit atomics are used.

Fixes a hang on some devices, notably Intel GPUs, when booting Pokemon Legends Arceus
2022-01-28 19:00:04 -05:00
ameerj 22a4d26479 shader: Add integer attribute get optimization pass
Works around an nvidia driver bug, where casting the integer attributes to float and back to an integer always returned 0.
2021-12-29 19:03:49 -05:00
ReinUsesLisp d04e2dac6c shader: Properly scale image reads and add GL SPIR-V support
Thanks for everything!
2021-11-16 22:11:29 +01:00
ReinUsesLisp 7f88938d72 shader: Add IsTextureScaled opcode 2021-11-16 22:11:28 +01:00
ReinUsesLisp 14fb648246 shader: Fix resolution scaling pass 2021-11-16 22:11:27 +01:00
ReinUsesLisp d84b81fdfb shader: Mark ConvertF16F32 and ConvertF32F16 as fp16 instructions
Fixes instances where fp16 types are not declared on SPIR-V but they are
used. This shouldn't happen on master, as it's been uncovered by an
additional optimization pass.
2021-07-27 21:33:05 -03:00
ameerj f2f16e3a1d glsl: Fix tracking of info.uses_shadow_lod 2021-07-22 21:51:40 -04:00
ReinUsesLisp b1df436cef shader: Rework varyings and implement passthrough geometry shaders
Put all varyings into a single std::bitset with helpers to access it.

Implement passthrough geometry shaders using host's.
2021-07-22 21:51:39 -04:00
ReinUsesLisp 9c387a270b shader: Align constant buffer sizes to 16 bytes
WAR for AMD reading zeroes on uniform buffers of size 2.
2021-07-22 21:51:38 -04:00
ReinUsesLisp c4a71824d5 shader: Properly manage attributes not written from previous stages 2021-07-22 21:51:38 -04:00
ameerj 50e1ced397 glsl: Conditionally add EXT_texture_shadow_lod 2021-07-22 21:51:38 -04:00
ameerj 3e6f89f964 glsl: Implement legacy varyings 2021-07-22 21:51:38 -04:00
ameerj 748e56e8a2 glsl: Fix ATOM and implement ATOMS 2021-07-22 21:51:37 -04:00
ameerj c8b2a5a4f3 glsl: Track S32 atomics 2021-07-22 21:51:36 -04:00
ameerj 5fa21197b9 glsl: Revert ssbo aliasing. Storage Atomics impl 2021-07-22 21:51:36 -04:00
ameerj 659eecb295 glsl: Wip storage atomic ops 2021-07-22 21:51:36 -04:00
ReinUsesLisp 535fb4e6b5 buffer_cache: Reduce uniform buffer size from shader usage
Increases performance significantly on certain titles.
2021-07-22 21:51:34 -04:00
ReinUsesLisp 34d1a2ffe5 shader,glasm: Implement legacy texcoord loads 2021-07-22 21:51:34 -04:00
ReinUsesLisp bebebf3fa8 shader: Track legacy varyings 2021-07-22 21:51:34 -04:00
ReinUsesLisp 7273fcab95 glasm: Implement shuffle and vote instructions on GLASM 2021-07-22 21:51:31 -04:00
FernandoS27 007a11014c shader: Optimize NVN Fallthrough 2021-07-22 21:51:30 -04:00
ameerj 455872a4af shader: Implement Int32 SUATOM/SURED 2021-07-22 21:51:30 -04:00
ReinUsesLisp 6236b611cf shader: Move microinstruction header to the value header 2021-07-22 21:51:28 -04:00
ReinUsesLisp e54171c1a9 shader: Add NVN storage buffer fallbacks
When we can't track the SSBO origin of a global memory instruction,
leave it as a global memory operation and assume these pointers are in
the NVN storage buffer slots, then apply a linear search in the shader's
runtime.
2021-07-22 21:51:28 -04:00
FernandoS27 f1a3f449d6 shader: Address feedback 2021-07-22 21:51:28 -04:00
FernandoS27 2f01c7fb62 shader: Add coarse derivatives 2021-07-22 21:51:28 -04:00
FernandoS27 b1e325f317 shader: Implement fine derivates constant propagation 2021-07-22 21:51:28 -04:00
ReinUsesLisp ad1507b4a5 shader: Implement SampleMask 2021-07-22 21:51:28 -04:00
ReinUsesLisp cc96469019 shader: Implement PIXLD.MY_INDEX 2021-07-22 21:51:28 -04:00
ReinUsesLisp b6b541e36a spirv: Implement ViewportMask with NV_viewport_array2 2021-07-22 21:51:28 -04:00
ReinUsesLisp 10c96c7484 shader: Implement PrimitiveId 2021-07-22 21:51:27 -04:00
ReinUsesLisp 38908d0f7e shader: Implement tessellation shaders, polygon mode and invocation id 2021-07-22 21:51:27 -04:00
ReinUsesLisp bba876f192 spirv: Implement Layer stores 2021-07-22 21:51:27 -04:00
ReinUsesLisp c84c2ab88c spirv: Rework storage buffers and shader memory 2021-07-22 21:51:27 -04:00
ReinUsesLisp 1cae8e9a10 spirv: Define StorageImageWriteWithoutFormat capability when used 2021-07-22 21:51:27 -04:00
ReinUsesLisp 879fb08101 shader: Implement SR_THREAD_KILL 2021-07-22 21:51:27 -04:00
ameerj 62c3bef607 shader: Implement ATOM/S and RED 2021-07-22 21:51:27 -04:00
ReinUsesLisp 480ce24b7e spirv: Guard against typeless image reads on unsupported devices 2021-07-22 21:51:27 -04:00
ReinUsesLisp 8ec58e16b2 shader: Move LaneId to the warp emission file and fix AMD 2021-07-22 21:51:27 -04:00
ReinUsesLisp 5ab1ac4f29 shader: Implement SULD and SUST 2021-07-22 21:51:26 -04:00
lat9nq a4e7a41e7f shader_recompiler,video_core: Cleanup some GCC and Clang errors
Mostly fixing unused *, implicit conversion, braced scalar init,
fpermissive, and some others.

Some Clang errors likely remain in video_core, and std::ranges is still
a pertinent issue in shader_recompiler

shader_recompiler: cmake: Force bracket depth to 1024 on Clang
Increases the maximum fold expression depth

thread_worker: Include condition_variable

Don't use list initializers in control flow

Co-authored-by: ReinUsesLisp <reinuseslisp@airmail.cc>
2021-07-22 21:51:26 -04:00
FernandoS27 0ef887fa6f shader: Address feedback 2021-07-22 21:51:26 -04:00