ec9a78885e
shader: Add 2D and 3D variants to SUATOM and SURED
...
Used by Claybook.
2021-07-22 21:51:34 -04:00
4f8b68fb04
shader: Avoid CPU side undefined behavior on I2F
2021-07-22 21:51:34 -04:00
79f2fe1a39
glasm: Use ARB_derivative_control conditionally
2021-07-22 21:51:34 -04:00
4a2361a1e2
buffer_cache: Reduce uniform buffer size from shader usage
...
Increases performance significantly on certain titles.
2021-07-22 21:51:34 -04:00
22f0c4f002
emit_glasm_context_get_set: Remove unused variable
2021-07-22 21:51:34 -04:00
5539b13c5a
shader,glasm: Implement legacy texcoord loads
2021-07-22 21:51:34 -04:00
cf9f88e5a7
glasm: Implement legacy varyings
2021-07-22 21:51:34 -04:00
ac0f5d2ab6
shader: Track legacy varyings
2021-07-22 21:51:34 -04:00
05d41fa9b7
shader: Add support for "negative" and unaligned offsets
...
"Negative" offsets don't exist. They are shown as such due to a bug in
nvdisasm.
Unaligned offsets have been proved to read the aligned offset. For
example, when reading an U32, if the offset is 6, the offset read will
be 4.
2021-07-22 21:51:34 -04:00
5d170de0b5
shader: Implement ISCADD32I
2021-07-22 21:51:34 -04:00
adc43297c5
spirv: Fix output generics with components
2021-07-22 21:51:34 -04:00
916ca74324
opengl: Declare fragment outputs even if they are not used
...
Fixes Ori and the Blind Forest's menu on GLASM. For some reason
(probably high level optimizations) it is not sanitized on SPIR-V for
OpenGL. Vulkan is unaffected by this change.
2021-07-22 21:51:34 -04:00
329dea217d
shader: Always initialize up reference in structure control flow
...
Fixes ubsan issue.
2021-07-22 21:51:34 -04:00
d093522fac
shader: Fix ImageWrite indexing
2021-07-22 21:51:34 -04:00
d738ad4d0b
spirv: Fix image and image buffer descriptor index usage
2021-07-22 21:51:34 -04:00
eb8464cb3d
glasm: Fix immediate texture coordinate
2021-07-22 21:51:34 -04:00
457dda69cc
shader: Clang-format secondary textures
2021-07-22 21:51:34 -04:00
627161c38e
shader: Fix secondary textures
2021-07-22 21:51:34 -04:00
b659212dbd
shader: Fix TMML queries
2021-07-22 21:51:34 -04:00
fbf5cdcba0
shader: Fix FSwizzleAdd folding when going through phi nodes
2021-07-22 21:51:34 -04:00
871c9f1ced
shader/exception: Fix compilation errors on gcc
2021-07-22 21:51:34 -04:00
b6c087496b
glasm: Reduce reg allocation leaks from an exception to a log
2021-07-22 21:51:34 -04:00
b7764c3a79
shader: Handle host exceptions
2021-07-22 21:51:34 -04:00
83db7abae6
glasm: Use integer lod for TXQ
2021-07-22 21:51:33 -04:00
e240a62017
glasm: Fix global memory fallbacks
2021-07-22 21:51:33 -04:00
8f3043c3cf
Revert "glasm: Skip phi moves on undefined instructions"
...
Causes regressions on Bowser's Fury.
2021-07-22 21:51:33 -04:00
2aa30353b7
glasm: Remove unintentional '\n' on Undef32
2021-07-22 21:51:33 -04:00
adb591a757
glasm: Use storage buffers instead of global memory when possible
2021-07-22 21:51:33 -04:00
f58f79c85d
glasm: Implement Y direction
2021-07-22 21:51:33 -04:00
586c785366
glasm: Skip phi moves on undefined instructions
2021-07-22 21:51:33 -04:00
b9c8814ea9
glasm: Implement undef instructions
2021-07-22 21:51:33 -04:00
8763cc1ff7
glasm: Fix global memory callbacks
2021-07-22 21:51:33 -04:00
a49532c8eb
video_core,shader: Clang-format fixes
2021-07-22 21:51:33 -04:00
48aafe0961
glasm: Release phi node registers after they are no longer needed
2021-07-22 21:51:33 -04:00
77ee733c3a
glasm: Remove unintentionally committed fmt::prints
2021-07-22 21:51:33 -04:00
70c9281fbf
glasm: Fix INeg32 on negative immediates
2021-07-22 21:51:33 -04:00
75fd0079db
glasm: Remove unnecessary value types
2021-07-22 21:51:33 -04:00
379b305b4b
glasm: Throw when there are register leaks
2021-07-22 21:51:33 -04:00
ca05a13c62
glasm: Catch more register leaks
...
Add support for null registers. These are used when an instruction has
no usages.
This comes handy when an instruction is only used for its CC value, with
the caveat of having to invalidate all pseudo-instructions before
defining the instruction itself in the register allocator. This commits
changes this.
Workaround a bug on Nvidia's condition codes conditional execution using
branches.
2021-07-22 21:51:33 -04:00
9fbfe7d676
glasm: Fix usage counting on phi nodes
2021-07-22 21:51:33 -04:00
c721767bcc
glasm: Implement global memory fallbacks
2021-07-22 21:51:33 -04:00
0794273870
glasm: Implement int64 add and subtract
2021-07-22 21:51:33 -04:00
7fdf0d7d33
emit_glasm_context_get_set: Remove unused variable
2021-07-22 21:51:33 -04:00
e30d4fa976
glasm: Implement indirect attribute loads
2021-07-22 21:51:33 -04:00
c8414e686f
glasm: Implement image atomics
2021-07-22 21:51:33 -04:00
3a7ca6a7db
glasm: Reorder unreachable image atomic insts
...
Reorder them to the bottom of the file for readability.
2021-07-22 21:51:33 -04:00
e565eb361a
glasm: Implement gl_Layer stores
2021-07-22 21:51:33 -04:00
89e341d56a
glasm: Implement SampleId
2021-07-22 21:51:33 -04:00
77d8c44b68
glasm: Implement IsHelperInvocation
2021-07-22 21:51:33 -04:00
ddf601919f
glasm: Fix EmitVertex's optimization
2021-07-22 21:51:33 -04:00