summaryrefslogtreecommitdiff
path: root/src/shader_recompiler
AgeCommit message (Collapse)Author
2021-07-26emit_spirv_instructions: Add missing header guardLioncash
2021-07-26shader_recompiler: Remove unnecessary [[nodiscard]] instancesLioncash
[[nodiscard]] doesn't do anything on functions with a void return type and causes superfluous warnings.
2021-07-26control_flow: Fix duplicate switch case in OpcodeTokenLioncash
This previously duplicated the case of the PBK case above it.
2021-07-26object_pool: Add missing return in Chunk move assignment operatorLioncash
Prevents undefined behavior from occurring.
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-26shader: Add TryInstRecursive utility to valuesReinUsesLisp
2021-07-22shader: Support out of bound local memory reads and immediate writesReinUsesLisp
Support ignoring immediate out of bound writes. Writing dynamically out of bounds is not yet supported (e.g. R0+0x4). Reading out of bounds yields zero. This is supported checking for the size from the IR; if the input is immediate, the optimization passes will drop it.
2021-07-22shader: Fix disabled attribute default valuesameerj
2021-07-22glsl: Simplify FCMP emissionameerj
2021-07-22glsl: Update TessellationControl gl_inameerj
Adheres to GL_ARB_separate_shader_objects requirements
2021-07-22shader: Implement ISETP.Xameerj
2021-07-22shader: Avoid usage of C++20 ranges to build in clangReinUsesLisp
2021-07-22glsl: Clamp shared mem size to GL_MAX_COMPUTE_SHARED_MEMORY_SIZEameerj
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-22shader: Manually convert from array<u32> to bitset instead of using bit_castReinUsesLisp
2021-07-22glsl: Fix tracking of info.uses_shadow_lodameerj
2021-07-22shader: Ignore global memory ops on devices lacking int64 supportameerj
2021-07-22dual_vertex_pass: Clang formatameerj
2021-07-22emit_spirv: Workaround VK_KHR_shader_float_controls on fp16 NvidiaReinUsesLisp
Fix regression on Fire Emblem: Three Houses when using native fp16.
2021-07-22shader: GCC fmt 8.0.0 fixeslat9nq
2021-07-22shader: Account for 33-bit IADD3 scenarioameerj
2021-07-22shader: Only apply shift on register mode for IADD3ReinUsesLisp
2021-07-22shader: Fix disabled and unwritten attributes and varyingsReinUsesLisp
2021-07-22glsl: Fix shared and local memory declarationsameerj
account for the fact that program.*memory_size is in units of bytes.
2021-07-22opengl: Implement LOP.CCameerj
Used by MH:Rise
2021-07-22spirv: Fix code emission when descriptor aliasing is unsupportedReinUsesLisp
Fixes OpenGL.
2021-07-22glsl: Declare local memory in mainameerj
2021-07-22glsl: Add passthrough geometry shader supportameerj
2021-07-22shader: Use std::bit_cast instead of Common::BitCast for passthroughReinUsesLisp
2021-07-22glasm: Add passthrough geometry shader supportReinUsesLisp
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-22shader: Only verify shader when graphics debugging is enabledReinUsesLisp
2021-07-22shader: Unify shader stage typesReinUsesLisp
2021-07-22lower_int64_to_int32: Add missing includelat9nq
2021-07-22shader: Emulate 64-bit integers when not supportedReinUsesLisp
Useful for mobile and Intel Xe devices.
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-22glsl: Better IAdd Overflow CC fixameerj
This ensures the original operand values are not overwritten when being used in the overflow detection.
2021-07-22shader: Remove IAbs64ReinUsesLisp
2021-07-22glsl: Fix IADD CCameerj
2021-07-22shader_recompiler: Fix IADD3 input partitioningameerj
2021-07-22shader: Move loop safety tests to code emissionReinUsesLisp
2021-07-22glsl: Remove frag color initializationameerj
2021-07-22glasm: Implement SetAttribute ViewportMaskameerj
2021-07-22emit_glsl_special: Skip initialization of frag_color0ameerj
Fixes rendering in Devil May Cry without regressing Ori and the Blind Forest.
2021-07-22shader: Calibrate loop safety thresholdReinUsesLisp
2021-07-22glsl: Add missing ; in EmitSetSampleMaskMorph
Fixes shader compilation in Okami HD
2021-07-22glsl: Fix output varying initialization when transform feedback is usedameerj