Commit Graph

777 Commits

Author SHA1 Message Date
Mai M 4ea04b5b56 Merge pull request #8095 from bylaws/master
shader_recompiler: Include <bit> header when std::count{r,l}_zero is used
2022-03-27 12:36:19 -04:00
ameerj 6091af472a dead_code_elimination_pass: Remove unreachable Phi arguments 2022-03-23 17:57:22 -04:00
Billy Laws ef9b177ecb Include <bit> header when std::count{r,l}_zero is used
Needed for compilation with older libc++ releases
2022-03-22 21:11:24 +00:00
ameerj 09128c9106 shader_recompiler/dead_code_elimination: Add DeadBranchElimination pass
This adds a pass to eliminate if(false) branches within the shader code
2022-03-22 02:39:31 -04:00
Ameer J 3b77361456 Merge pull request #8038 from liamwhite/exit-register-detection
shader_recompiler/EXIT: increment output register on failed enable test
2022-03-21 21:24:07 -04:00
ameerj f9709bb9e9 general: Fix clang/gcc build errors 2022-03-20 02:25:09 -04:00
ameerj 0df188787a shader_recompiler: Reduce unused includes 2022-03-20 02:25:08 -04:00
Liam 35e3d7bef0 Address review comments 2022-03-18 15:55:46 -04:00
Liam da3be7513b shader_recompiler/EXIT: skip render targets with no outputs 2022-03-18 09:26:25 -04:00
Liam 9809829a6e shader_recompiler/EXIT: increment output register on failed enable test 2022-03-17 22:09:31 -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 f3382e6339 Address review comments 2022-03-17 09:30:41 -04:00
Liam 63cc9a9ceb shader_recompiler: Implement LDC.IS address mode 2022-03-16 11:05:04 -04:00
Liam 8515dba789 shader: add support for const buffer indirect addressing 2022-03-14 19:43:32 -04:00
Fernando S 1077f95f7c Merge pull request #8008 from ameerj/rescale-offsets-array
rescaling_pass: Fix rescaling Color2DArray ImageFetch offsets
2022-03-15 00:08:22 +01:00
Fernando Sahmkow 05054d1dc2 Shader decompiler: do constant propgation before texture pass. 2022-03-13 21:49:40 +01:00
Fernando Sahmkow fc8251e043 Shader decompiler: Fix storage tracking in deko3d. 2022-03-13 17:41:16 +01:00
ameerj 1888b552e3 rescaling_pass: Fix rescaling Color2DArray ImageFetch offsets
ImageFetch offsets for 2D array coordinates have a different composite size than the coordinates. The rescaling pass was not taking this into account.

Fixes broken shaders when scaling is enabled in Astral Chain, and likely other titles.
2022-03-12 03:31:56 -05:00
ameerj 048522e98b emit_spirv, vk_compute_pass: Resolve VS2022 compiler errors 2022-03-12 02:54:33 -05:00
Markus Wick 062d95753f shader_recompiler/LOP3: Use brute force python results within switch/case.
Thanks to @asLody for optimizing this function. This raised the focus that this function should be optimized more.

The current table assumes that the host GPU is able to invert for free, so only AND,OR,XOR are accumulated in the performance metrik.

Performance results:

Instructions
0: 8
1: 30
2: 114
3: 80
4: 24

Latency
0: 8
1: 30
2: 194
3: 24
2022-03-08 09:44:28 +01:00
ameerj 092771e9c8 emit_glsl_atomic: Implement 32x2 fallback atomic ops 2022-01-29 19:56:03 -05:00
ameerj 94b86a8ada lower_int64_to_int32: Add 64-bit atomic fallbacks 2022-01-29 19:56:02 -05: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
Morph 693d982a0f Merge pull request #7786 from ameerj/vmnmx-sel
video_minimum_maximum: Implement src operand selectors
2022-01-28 18:24:56 -05:00
ameerj 712b7883be emit_spirv: Add Xfb execution mode when transform feedback is used
Fixes Transform Feedback on Vulkan AMD drivers.
2022-01-28 16:32:48 -05:00
ameerj 4ee80ce807 video_minimum_maximum: Implement src operand selectors
Used by Pokemon Legends: Arceus
2022-01-27 14:55:08 -05:00
Lioncash 4ea21f074d shader_recompiler: Remove unnecessary [[nodiscard]]
Since ConvertLegacyToGeneric has a void return value, there's nothing
that is actually returned by the function.
2022-01-25 12:16:09 -05:00
v1993 970b362ca1 shader_recompiler: fix potential OOB access
Found by static analysis with PVS-Studio. Original check wasn't actually checking for OOB and would segfault in case of it.
2022-01-17 21:50:51 +03:00
liushuyu 479d57987c logging/log.h: move enum class formatter to a separate file ...
... to common/logging/formatter.h
2022-01-09 17:35:33 -07:00
liushuyu 682ea0f431 logging: adapt to changes in fmt 8.1 2022-01-08 01:49:26 -07:00
Narr the Reg 0646512a9c glsl: Remove unreachable return 2022-01-04 20:23:39 -06:00
Fernando Sahmkow 65387dd0a0 ShaderDecompiler: Add a debug option to dump the game's shaders. 2022-01-04 02:39:00 +01:00
Fernando S 8a790b09a7 Merge pull request #7629 from ameerj/nv-driver-fixes
shaders: Add fixes for NVIDIA drivers 495+
2022-01-03 00:39:59 +01:00
ameerj c5c13369fa glsl: Add boolean reference workaround 2021-12-29 19:03:50 -05:00
ameerj a57dc3509a glsl_context_get_set: Add alternative cbuf type for broken drivers
some drivers have a bug bitwise converting floating point cbuf values to uint variables. This adds a workaround for these drivers to make all cbufs uint and convert to floating point as needed.
2021-12-29 19:03:50 -05:00
ameerj 0918d673a3 emit_glsl_integer: Use negation work around 2021-12-29 19:03:50 -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
bunnei ecc0a7140c Merge pull request #7618 from goldenx86/patch-4
Increase boost requirement to 1.78.0
2021-12-28 16:25:37 -08:00
Matías Locatti 244dff4e6e Empty spaces 2021-12-28 18:50:51 -03:00
Matías Locatti 1a30c0a125 Changes to avoid warnings in SSE4.2 optimized SPIR-V 2021-12-28 17:35:55 -03:00
ameerj 44832be5d2 emit_glasm_context_get_set: Fix GetAttribute return value type.
GetAttribute expects an F32 result type at the IR level, this fixes the return value of attributes which were not returning an F32
2021-12-24 20:45:07 -05:00
ameerj fbb33df96f emit_glsl_floating_point: Fix FPNeg on newer Nvidia drivers 2021-12-24 20:03:54 -05:00
vonchenplus 8fe519b656 Address format clang 2021-12-18 14:27:07 +08:00
vonchenplus 8ea541bc11 Remove spirv handle legacy related code 2021-12-18 14:08:50 +08:00
vonchenplus ac51211ce4 Remove glsl handle legacy related code 2021-12-18 14:03:40 +08:00
Feng Chen c8dab19f32 Merge branch 'yuzu-emu:master' into convert_legacy 2021-12-18 13:57:14 +08:00
Mai M 5a19374ea8 Merge pull request #7522 from ameerj/shader-recompiler-filenames
shader_recompiler/backend: Minor organization and refactoring to reduce compile time overhead
2021-12-07 18:27:50 -05:00
ameerj 3f06a447fb emit_spirv: Reduce emit_spirv.h include overhead
emit_spirv.h is included in video_core, which was propagating further includes that video_core did not depend on.
2021-12-05 18:11:19 -05:00