summaryrefslogtreecommitdiff
path: root/src/shader_recompiler/ir_opt
AgeCommit message (Collapse)Author
2021-10-24TexturePass: Fix clamping of images as this allowed negative indices.Fernando Sahmkow
2021-10-17Shader Compiler: avoid overflowed indices on indixed samplers.Fernando Sahmkow
2021-07-30Merge pull request #6767 from ReinUsesLisp/fold-float-packMorph
shader: Fold UnpackFloat2x16 and PackFloat2x16
2021-07-29Merge pull request #6722 from ReinUsesLisp/xmad-optsbunnei
shader: Fold integer FMA from Nvidia's pattern
2021-07-29shader: Fold UnpackFloat2x16 and PackFloat2x16ReinUsesLisp
Simplifies the code a bit when possible. These instructions should be no-ops codegen wise.
2021-07-27shader: Mark ConvertF16F32 and ConvertF32F16 as fp16 instructionsReinUsesLisp
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-26shader: Fold integer FMA from Nvidia's patternReinUsesLisp
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-26shader: Use TryInstRecursive on XMAD multiply foldingReinUsesLisp
Simplify a bit the logic.
2021-07-22shader: Avoid usage of C++20 ranges to build in clangReinUsesLisp
2021-07-22shader_recompiler, video_core: Resolve clang errorslat9nq
Silences the following warnings-turned-errors: -Wsign-conversion -Wunused-private-field -Wbraced-scalar-init -Wunused-variable And some other errors
2021-07-22glsl: Fix tracking of info.uses_shadow_lodameerj
2021-07-22dual_vertex_pass: Clang formatameerj
2021-07-22shader: Rework varyings and implement passthrough geometry shadersReinUsesLisp
Put all varyings into a single std::bitset with helpers to access it. Implement passthrough geometry shaders using host's.
2021-07-22lower_int64_to_int32: Add missing includelat9nq
2021-07-22shader: Add int64 to int32 lowering passReinUsesLisp
2021-07-22shader: Teach global memory base tracker to follow vectorsReinUsesLisp
2021-07-22shader: Add constant propagation to integer vectorsReinUsesLisp
2021-07-22shader: Move loop safety tests to code emissionReinUsesLisp
2021-07-22texture_pass: Fix is_read image qualificationameerj
Atomic operations are considered to have both read and write access. This was not being accounted for.
2021-07-22shader: Align constant buffer sizes to 16 bytesReinUsesLisp
WAR for AMD reading zeroes on uniform buffers of size 2.
2021-07-22shader: Properly manage attributes not written from previous stagesReinUsesLisp
2021-07-22glsl: Address rest of feedbackameerj
2021-07-22glsl: Conditionally add EXT_texture_shadow_lodameerj
2021-07-22glsl: Implement legacy varyingsameerj
2021-07-22glsl: Fix ATOM and implement ATOMSameerj
2021-07-22glsl: Track S32 atomicsameerj
2021-07-22glsl: Revert ssbo aliasing. Storage Atomics implameerj
2021-07-22glsl: Wip storage atomic opsameerj
2021-07-22shader: Fix loop safety to SSA passReinUsesLisp
2021-07-22shader: Add shader loop safety check settingslat9nq
Also add a setting for enable Nsight Aftermath.
2021-07-22shader: Fix VertexA Shaders.FernandoS27
2021-07-22buffer_cache: Reduce uniform buffer size from shader usageReinUsesLisp
Increases performance significantly on certain titles.
2021-07-22shader,glasm: Implement legacy texcoord loadsReinUsesLisp
2021-07-22shader: Track legacy varyingsReinUsesLisp
2021-07-22shader: Clang-format secondary texturesReinUsesLisp
2021-07-22shader: Fix secondary texturesReinUsesLisp
2021-07-22shader: Fix FSwizzleAdd folding when going through phi nodesReinUsesLisp
2021-07-22glasm: Remove unintentionally committed fmt::printsReinUsesLisp
2021-07-22glasm: Initial implementation of phi nodes on GLASMReinUsesLisp
2021-07-22glasm: Rework control flow introducing a syntax listReinUsesLisp
This commit regresses VertexA shaders, their transformation pass has to be adapted to the new control flow.
2021-07-22glasm: Implement shuffle and vote instructions on GLASMReinUsesLisp
2021-07-22shader: Optimize NVN FallthroughFernandoS27
2021-07-22shader: Implement Int32 SUATOM/SUREDameerj
2021-07-22shader: Address feedbackFernandoS27
2021-07-22shader: Implement VertexA stageFernandoS27
2021-07-22shader: Fix BFE s32 undefined checkameerj
Our unit tests were hitting this exception.
2021-07-22shader: Fix error checking in bitfieldExtract and implement bitfieldInsert ↵ReinUsesLisp
folding
2021-07-22shader: Add more strict validation the passReinUsesLisp
2021-07-22shader: Fix forward referencing identity instructions when inserting phiReinUsesLisp
2021-07-22shader: Remove invalidated blocks in dead code elimination passReinUsesLisp