Commit Graph

192 Commits

Author SHA1 Message Date
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
ReinUsesLisp 2321666580 shader: Avoid usage of C++20 ranges to build in clang 2021-07-22 21:51:40 -04:00
lat9nq b557314001 shader_recompiler, video_core: Resolve clang errors
Silences the following warnings-turned-errors:
-Wsign-conversion
-Wunused-private-field
-Wbraced-scalar-init
-Wunused-variable

And some other errors
2021-07-22 21:51:40 -04:00
ameerj f2f16e3a1d glsl: Fix tracking of info.uses_shadow_lod 2021-07-22 21:51:40 -04:00
ameerj d54c4880d1 dual_vertex_pass: Clang format 2021-07-22 21:51:40 -04:00