Feng Chen
33514a0d94
Revert "shader_recompiler/dead_code_elimination: Add DeadBranchElimination pass"
2022-10-25 12:57:25 +08:00
Liam White
6df0663a57
General: Fix compilation for GCC
2022-10-06 21:00:53 +02:00
Fernando Sahmkow
3c4e05745f
Shader Decompiler: implement better tracking for Vulkan samplers.
2022-10-06 21:00:53 +02:00
Fernando Sahmkow
dc74837ac9
Shader Decompiler: Check for shift when deriving composite samplers.
2022-10-06 21:00:52 +02:00
Morph
649c49525d
style: General style changes to match with the rest of the codebase
2022-08-31 08:51:47 -04:00
FengChen
98656c14a8
video_code: support rectangle texture
2022-08-25 12:45:58 +08:00
Liam
ee4d63cee5
GCC 12 fixes
2022-04-28 16:50:34 -04: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
ameerj
6091af472a
dead_code_elimination_pass: Remove unreachable Phi arguments
2022-03-23 17:57:22 -04: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
ameerj
0df188787a
shader_recompiler: Reduce unused includes
2022-03-20 02:25:08 -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
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
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
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
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
Fernando Sahmkow
04b8e6c834
ShaderCache: Better fix for Shuffling gl_FragCoord
2021-11-16 22:11:33 +01:00
FernandoS27
b3494533e5
Texture Cahe/Shader decompiler: Resize PointSize on rescaling, refactor and make reaper more agressive on 4Gb GPUs.
2021-11-16 22:11:33 +01:00
ameerj
1ce6cd119d
rescaling_pass: Fix IR errors when unscalable texture types are encountered
2021-11-16 22:11:30 +01:00
ameerj
63465c24e1
rescaling_pass: Logic simplification and minor style cleanup
2021-11-16 22:11:30 +01:00
ameerj
746d27372f
rescaling_pass: Scale ImageFetch offset if it exists
...
Plus some code deduplication
2021-11-16 22:11:30 +01:00
ameerj
b5ba8bec0e
rescaling_pass: Enable PatchImageQueryDimensions on fragment stages
2021-11-16 22:11:30 +01:00
ameerj
e2f0f51295
gl_texture_cache/rescaling_pass: minor cleanup
2021-11-16 22:11:30 +01:00
ameerj
54ecf7c8c1
rescaling_pass: Fix and simplify shuffle/fragcoord pass
2021-11-16 22:11:30 +01:00
Fernando Sahmkow
4535feac87
Shader: Don't rescale FragCoord if used by Shuffle
2021-11-16 22:11:30 +01:00
Fernando Sahmkow
2549ee33ee
RescalingPass: Agregate pixels on texelFetch while on Fragment Shader
2021-11-16 22:11:29 +01:00
Fernando Sahmkow
dc6f13060b
shader: Fix TextureSize check on rescaling.
2021-11-16 22:11:29 +01: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
928ff21aae
shader: Properly blacklist and scale image loads
2021-11-16 22:11:29 +01:00
ReinUsesLisp
403633afcc
shader/rescaling_pass: Patch more instructions
2021-11-16 22:11:28 +01:00
ReinUsesLisp
7f88938d72
shader: Add IsTextureScaled opcode
2021-11-16 22:11:28 +01:00
ReinUsesLisp
952c65ae54
shader: Fix rescaling pass
2021-11-16 22:11:28 +01:00
ReinUsesLisp
14fb648246
shader: Fix resolution scaling pass
2021-11-16 22:11:27 +01:00
Fernando Sahmkow
a638ce0388
ShaderDecompiler: Add initial support for rescaling.
2021-11-16 22:11:27 +01:00
Fernando Sahmkow
6f94c9a9fe
ShaderCache: Fix Phi Nodes Type on OGL.
2021-11-01 22:26:17 +01:00
Fernando Sahmkow
c9bee9e96e
ShaderCache: Order Phi Arguments from farthest away to nearest.
2021-10-31 19:34:15 +01:00
Fernando Sahmkow
6e19b9f5ff
TexturePass: Fix clamping of images as this allowed negative indices.
2021-10-24 20:46:36 +02:00
Fernando Sahmkow
1a0006ef55
Shader Compiler: avoid overflowed indices on indixed samplers.
2021-10-17 03:38:09 +02:00
Morph
bef5d608a9
Merge pull request #6767 from ReinUsesLisp/fold-float-pack
...
shader: Fold UnpackFloat2x16 and PackFloat2x16
2021-07-30 02:07:52 -04:00
bunnei
9a7c2869d8
Merge pull request #6722 from ReinUsesLisp/xmad-opts
...
shader: Fold integer FMA from Nvidia's pattern
2021-07-29 18:45:37 -07:00
ReinUsesLisp
ecc05bdcb6
shader: Fold UnpackFloat2x16 and PackFloat2x16
...
Simplifies the code a bit when possible. These instructions should be
no-ops codegen wise.
2021-07-29 21:22:52 -03: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
ReinUsesLisp
4f19303fe0
shader: Fold integer FMA from Nvidia's pattern
...
Fold shaders doing "a * b + c" on integers from the pattern generated by
Nvidia's GL compiler.
On a somewhat complex compute shader it reduces the code size by 16
instructions from 2 matches on Turing GPUs.
On Intel as extracted from KHR_pipeline_executable_properties:
Before the optimization:
```
Instruction Count: 2057
Basic Block Count: 45
Scratch Memory Size: 14752
Spill Count: 232
Fill Count: 261
SEND Count: 610
Cycle Count: 11325
```
After the optimization:
```
Instruction Count: 2046
Basic Block Count: 44
Scratch Memory Size: 13728
Spill Count: 219
Fill Count: 268
SEND Count: 604
Cycle Count: 11367
```
2021-07-26 04:58:02 -03:00
ReinUsesLisp
c6e1483e17
shader: Use TryInstRecursive on XMAD multiply folding
...
Simplify a bit the logic.
2021-07-26 04:15:27 -03:00