ReinUsesLisp
ecc05bdcb6
shader: Fold UnpackFloat2x16 and PackFloat2x16
Simplifies the code a bit when possible. These instructions should be
no-ops codegen wise.
5 years ago
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.
5 years ago
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
```
5 years ago
ReinUsesLisp
c6e1483e17
shader: Use TryInstRecursive on XMAD multiply folding
Simplify a bit the logic.
5 years ago
ReinUsesLisp
2321666580
shader: Avoid usage of C++20 ranges to build in clang
5 years ago
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
5 years ago
ameerj
f2f16e3a1d
glsl: Fix tracking of info.uses_shadow_lod
5 years ago
ameerj
d54c4880d1
dual_vertex_pass: Clang format
5 years ago
ReinUsesLisp
b1df436cef
shader: Rework varyings and implement passthrough geometry shaders
Put all varyings into a single std::bitset with helpers to access it.
Implement passthrough geometry shaders using host's.
5 years ago
lat9nq
0f092f17af
lower_int64_to_int32: Add missing include
5 years ago
ReinUsesLisp
e3df2285ca
shader: Add int64 to int32 lowering pass
5 years ago
ReinUsesLisp
ba211323ab
shader: Teach global memory base tracker to follow vectors
5 years ago
ReinUsesLisp
f54fa4a1f5
shader: Add constant propagation to integer vectors
5 years ago
ReinUsesLisp
04c1dca457
shader: Move loop safety tests to code emission
5 years ago
ameerj
633c54a202
texture_pass: Fix is_read image qualification
Atomic operations are considered to have both read and write access. This was not being accounted for.
5 years ago
ReinUsesLisp
9c387a270b
shader: Align constant buffer sizes to 16 bytes
WAR for AMD reading zeroes on uniform buffers of size 2.
5 years ago
ReinUsesLisp
c4a71824d5
shader: Properly manage attributes not written from previous stages
5 years ago
ameerj
1d2c13fd7b
glsl: Address rest of feedback
5 years ago
ameerj
50e1ced397
glsl: Conditionally add EXT_texture_shadow_lod
5 years ago
ameerj
3e6f89f964
glsl: Implement legacy varyings
5 years ago
ameerj
748e56e8a2
glsl: Fix ATOM and implement ATOMS
5 years ago
ameerj
c8b2a5a4f3
glsl: Track S32 atomics
5 years ago
ameerj
5fa21197b9
glsl: Revert ssbo aliasing. Storage Atomics impl
5 years ago
ameerj
659eecb295
glsl: Wip storage atomic ops
5 years ago
ReinUsesLisp
574a99b9b3
shader: Fix loop safety to SSA pass
5 years ago
lat9nq
3a70b6c79b
shader: Add shader loop safety check settings
Also add a setting for enable Nsight Aftermath.
5 years ago
FernandoS27
be4d1c9b95
shader: Fix VertexA Shaders.
5 years ago
ReinUsesLisp
535fb4e6b5
buffer_cache: Reduce uniform buffer size from shader usage
Increases performance significantly on certain titles.
5 years ago
ReinUsesLisp
34d1a2ffe5
shader,glasm: Implement legacy texcoord loads
5 years ago
ReinUsesLisp
bebebf3fa8
shader: Track legacy varyings
5 years ago
ReinUsesLisp
74df00415a
shader: Clang-format secondary textures
5 years ago
ReinUsesLisp
f19403bafa
shader: Fix secondary textures
5 years ago
ReinUsesLisp
ca3e927e35
shader: Fix FSwizzleAdd folding when going through phi nodes
5 years ago
ReinUsesLisp
d284ce48e2
glasm: Remove unintentionally committed fmt::prints
5 years ago
ReinUsesLisp
f2ae32fa76
glasm: Initial implementation of phi nodes on GLASM
5 years ago
ReinUsesLisp
03f6d424ce
glasm: Rework control flow introducing a syntax list
This commit regresses VertexA shaders, their transformation pass has to
be adapted to the new control flow.
5 years ago
ReinUsesLisp
7273fcab95
glasm: Implement shuffle and vote instructions on GLASM
5 years ago
FernandoS27
007a11014c
shader: Optimize NVN Fallthrough
5 years ago
ameerj
455872a4af
shader: Implement Int32 SUATOM/SURED
5 years ago
FernandoS27
6aff9b4476
shader: Address feedback
5 years ago
FernandoS27
a2fac91c47
shader: Implement VertexA stage
5 years ago
ameerj
90ff800962
shader: Fix BFE s32 undefined check
Our unit tests were hitting this exception.
5 years ago
ReinUsesLisp
1f54f1ff26
shader: Fix error checking in bitfieldExtract and implement bitfieldInsert folding
5 years ago
ReinUsesLisp
4eec191801
shader: Add more strict validation the pass
5 years ago
ReinUsesLisp
21d50bd9bd
shader: Fix forward referencing identity instructions when inserting phi
5 years ago
ReinUsesLisp
3c80ebf1e2
shader: Remove invalidated blocks in dead code elimination pass
5 years ago
ReinUsesLisp
052317e748
shader: Implement indexed textures
5 years ago
ReinUsesLisp
9f5c43dd53
shader: Intrusively store in a block if it's sealed or not
5 years ago
ReinUsesLisp
6236b611cf
shader: Move microinstruction header to the value header
5 years ago
ReinUsesLisp
7bf134b294
shader: Intrusively store register values in block for SSA pass
5 years ago