summaryrefslogtreecommitdiff
path: root/src/shader_recompiler/ir_opt (follow)
Commit message (Collapse)AuthorAgeFilesLines
...
* dead_code_elimination_pass: Remove unreachable Phi argumentsGravatar ameerj2022-03-231-0/+27
|
* shader_recompiler/dead_code_elimination: Add DeadBranchElimination passGravatar ameerj2022-03-221-9/+62
| | | | This adds a pass to eliminate if(false) branches within the shader code
* shader_recompiler: Reduce unused includesGravatar ameerj2022-03-206-12/+0
|
* Address review commentsGravatar Liam2022-03-171-33/+28
|
* shader_recompiler: Use functions for indirect const buffer accessesGravatar Liam2022-03-171-0/+2
|
* shader: add support for const buffer indirect addressingGravatar Liam2022-03-141-8/+27
|
* Merge pull request #8008 from ameerj/rescale-offsets-arrayGravatar Fernando S2022-03-151-2/+27
|\ | | | | rescaling_pass: Fix rescaling Color2DArray ImageFetch offsets
| * rescaling_pass: Fix rescaling Color2DArray ImageFetch offsetsGravatar ameerj2022-03-121-2/+27
| | | | | | | | | | | | 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.
* | Shader decompiler: Fix storage tracking in deko3d.Gravatar Fernando Sahmkow2022-03-131-1/+2
|/
* lower_int64_to_int32: Add 64-bit atomic fallbacksGravatar ameerj2022-01-292-2/+67
|
* shaders: Add U64->U32x2 Atomic fallback functionsGravatar ameerj2022-01-291-0/+18
|
* spirv_atomic: Define U32x2 storage buffers for 64-bit storage atomicsGravatar ameerj2022-01-281-1/+1
| | | | | | 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
* shader: Add integer attribute get optimization passGravatar ameerj2021-12-292-0/+24
| | | | Works around an nvidia driver bug, where casting the integer attributes to float and back to an integer always returned 0.
* ShaderCache: Better fix for Shuffling gl_FragCoordGravatar Fernando Sahmkow2021-11-161-2/+13
|
* Texture Cahe/Shader decompiler: Resize PointSize on rescaling, refactor and ↵Gravatar FernandoS272021-11-161-0/+21
| | | | make reaper more agressive on 4Gb GPUs.
* rescaling_pass: Fix IR errors when unscalable texture types are encounteredGravatar ameerj2021-11-161-0/+28
|
* rescaling_pass: Logic simplification and minor style cleanupGravatar ameerj2021-11-161-32/+17
|
* rescaling_pass: Scale ImageFetch offset if it existsGravatar ameerj2021-11-161-59/+37
| | | | Plus some code deduplication
* rescaling_pass: Enable PatchImageQueryDimensions on fragment stagesGravatar ameerj2021-11-161-5/+4
|
* gl_texture_cache/rescaling_pass: minor cleanupGravatar ameerj2021-11-161-12/+8
|
* rescaling_pass: Fix and simplify shuffle/fragcoord passGravatar ameerj2021-11-161-26/+20
|
* Shader: Don't rescale FragCoord if used by ShuffleGravatar Fernando Sahmkow2021-11-161-1/+52
|
* RescalingPass: Agregate pixels on texelFetch while on Fragment ShaderGravatar Fernando Sahmkow2021-11-161-3/+97
|
* shader: Fix TextureSize check on rescaling.Gravatar Fernando Sahmkow2021-11-161-27/+21
|
* shader: Properly scale image reads and add GL SPIR-V supportGravatar ReinUsesLisp2021-11-162-2/+2
| | | | Thanks for everything!
* shader: Properly blacklist and scale image loadsGravatar ReinUsesLisp2021-11-161-3/+19
|
* shader/rescaling_pass: Patch more instructionsGravatar ReinUsesLisp2021-11-161-4/+101
|
* shader: Add IsTextureScaled opcodeGravatar ReinUsesLisp2021-11-161-0/+1
|
* shader: Fix rescaling passGravatar ReinUsesLisp2021-11-161-1/+1
|
* shader: Fix resolution scaling passGravatar ReinUsesLisp2021-11-163-34/+30
|
* ShaderDecompiler: Add initial support for rescaling.Gravatar Fernando Sahmkow2021-11-161-0/+72
|
* ShaderCache: Fix Phi Nodes Type on OGL.Gravatar Fernando Sahmkow2021-11-011-0/+24
|
* ShaderCache: Order Phi Arguments from farthest away to nearest.Gravatar Fernando Sahmkow2021-10-311-0/+7
|
* TexturePass: Fix clamping of images as this allowed negative indices.Gravatar Fernando Sahmkow2021-10-241-1/+1
|
* Shader Compiler: avoid overflowed indices on indixed samplers.Gravatar Fernando Sahmkow2021-10-171-1/+2
|
* Merge pull request #6767 from ReinUsesLisp/fold-float-packGravatar Morph2021-07-301-0/+4
|\ | | | | shader: Fold UnpackFloat2x16 and PackFloat2x16
| * shader: Fold UnpackFloat2x16 and PackFloat2x16Gravatar ReinUsesLisp2021-07-291-0/+4
| | | | | | | | | | Simplifies the code a bit when possible. These instructions should be no-ops codegen wise.
* | Merge pull request #6722 from ReinUsesLisp/xmad-optsGravatar bunnei2021-07-291-14/+187
|\ \ | |/ |/| shader: Fold integer FMA from Nvidia's pattern
| * shader: Fold integer FMA from Nvidia's patternGravatar ReinUsesLisp2021-07-261-0/+175
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 ```
| * shader: Use TryInstRecursive on XMAD multiply foldingGravatar ReinUsesLisp2021-07-261-14/+12
| | | | | | | | Simplify a bit the logic.
* | shader: Mark ConvertF16F32 and ConvertF32F16 as fp16 instructionsGravatar ReinUsesLisp2021-07-271-0/+2
|/ | | | | | 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.
* shader: Avoid usage of C++20 ranges to build in clangGravatar ReinUsesLisp2021-07-226-17/+12
|
* shader_recompiler, video_core: Resolve clang errorsGravatar lat9nq2021-07-221-3/+3
| | | | | | | | | | Silences the following warnings-turned-errors: -Wsign-conversion -Wunused-private-field -Wbraced-scalar-init -Wunused-variable And some other errors
* glsl: Fix tracking of info.uses_shadow_lodGravatar ameerj2021-07-221-4/+4
|
* dual_vertex_pass: Clang formatGravatar ameerj2021-07-221-14/+14
|
* shader: Rework varyings and implement passthrough geometry shadersGravatar ReinUsesLisp2021-07-221-137/+65
| | | | | | Put all varyings into a single std::bitset with helpers to access it. Implement passthrough geometry shaders using host's.
* lower_int64_to_int32: Add missing includeGravatar lat9nq2021-07-221-0/+1
|
* shader: Add int64 to int32 lowering passGravatar ReinUsesLisp2021-07-222-0/+217
|
* shader: Teach global memory base tracker to follow vectorsGravatar ReinUsesLisp2021-07-221-15/+14
|
* shader: Add constant propagation to integer vectorsGravatar ReinUsesLisp2021-07-221-0/+9
|