Commit Graph

455 Commits

Author SHA1 Message Date
ReinUsesLisp 4f8b68fb04 shader: Avoid CPU side undefined behavior on I2F 2021-07-22 21:51:34 -04:00
ReinUsesLisp 79f2fe1a39 glasm: Use ARB_derivative_control conditionally 2021-07-22 21:51:34 -04:00
ReinUsesLisp 4a2361a1e2 buffer_cache: Reduce uniform buffer size from shader usage
Increases performance significantly on certain titles.
2021-07-22 21:51:34 -04:00
lat9nq 22f0c4f002 emit_glasm_context_get_set: Remove unused variable 2021-07-22 21:51:34 -04:00
ReinUsesLisp 5539b13c5a shader,glasm: Implement legacy texcoord loads 2021-07-22 21:51:34 -04:00
ReinUsesLisp cf9f88e5a7 glasm: Implement legacy varyings 2021-07-22 21:51:34 -04:00
ReinUsesLisp ac0f5d2ab6 shader: Track legacy varyings 2021-07-22 21:51:34 -04:00
ReinUsesLisp 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
ReinUsesLisp 5d170de0b5 shader: Implement ISCADD32I 2021-07-22 21:51:34 -04:00
ReinUsesLisp adc43297c5 spirv: Fix output generics with components 2021-07-22 21:51:34 -04:00
ReinUsesLisp 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
ReinUsesLisp 329dea217d shader: Always initialize up reference in structure control flow
Fixes ubsan issue.
2021-07-22 21:51:34 -04:00
ReinUsesLisp d093522fac shader: Fix ImageWrite indexing 2021-07-22 21:51:34 -04:00
ReinUsesLisp d738ad4d0b spirv: Fix image and image buffer descriptor index usage 2021-07-22 21:51:34 -04:00
ReinUsesLisp eb8464cb3d glasm: Fix immediate texture coordinate 2021-07-22 21:51:34 -04:00
ReinUsesLisp 457dda69cc shader: Clang-format secondary textures 2021-07-22 21:51:34 -04:00
ReinUsesLisp 627161c38e shader: Fix secondary textures 2021-07-22 21:51:34 -04:00
ReinUsesLisp b659212dbd shader: Fix TMML queries 2021-07-22 21:51:34 -04:00
ReinUsesLisp fbf5cdcba0 shader: Fix FSwizzleAdd folding when going through phi nodes 2021-07-22 21:51:34 -04:00
ReinUsesLisp 871c9f1ced shader/exception: Fix compilation errors on gcc 2021-07-22 21:51:34 -04:00
ReinUsesLisp b6c087496b glasm: Reduce reg allocation leaks from an exception to a log 2021-07-22 21:51:34 -04:00
ReinUsesLisp b7764c3a79 shader: Handle host exceptions 2021-07-22 21:51:34 -04:00
ReinUsesLisp 83db7abae6 glasm: Use integer lod for TXQ 2021-07-22 21:51:33 -04:00
ReinUsesLisp e240a62017 glasm: Fix global memory fallbacks 2021-07-22 21:51:33 -04:00
ReinUsesLisp 8f3043c3cf Revert "glasm: Skip phi moves on undefined instructions"
Causes regressions on Bowser's Fury.
2021-07-22 21:51:33 -04:00
ReinUsesLisp 2aa30353b7 glasm: Remove unintentional '\n' on Undef32 2021-07-22 21:51:33 -04:00
ReinUsesLisp adb591a757 glasm: Use storage buffers instead of global memory when possible 2021-07-22 21:51:33 -04:00
ReinUsesLisp f58f79c85d glasm: Implement Y direction 2021-07-22 21:51:33 -04:00
ReinUsesLisp 586c785366 glasm: Skip phi moves on undefined instructions 2021-07-22 21:51:33 -04:00
ReinUsesLisp b9c8814ea9 glasm: Implement undef instructions 2021-07-22 21:51:33 -04:00
ReinUsesLisp 8763cc1ff7 glasm: Fix global memory callbacks 2021-07-22 21:51:33 -04:00
ReinUsesLisp a49532c8eb video_core,shader: Clang-format fixes 2021-07-22 21:51:33 -04:00
ReinUsesLisp 48aafe0961 glasm: Release phi node registers after they are no longer needed 2021-07-22 21:51:33 -04:00
ReinUsesLisp 77ee733c3a glasm: Remove unintentionally committed fmt::prints 2021-07-22 21:51:33 -04:00
ReinUsesLisp 70c9281fbf glasm: Fix INeg32 on negative immediates 2021-07-22 21:51:33 -04:00
ReinUsesLisp 75fd0079db glasm: Remove unnecessary value types 2021-07-22 21:51:33 -04:00
ReinUsesLisp 379b305b4b glasm: Throw when there are register leaks 2021-07-22 21:51:33 -04:00
ReinUsesLisp 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
ReinUsesLisp 9fbfe7d676 glasm: Fix usage counting on phi nodes 2021-07-22 21:51:33 -04:00
ReinUsesLisp c721767bcc glasm: Implement global memory fallbacks 2021-07-22 21:51:33 -04:00
ReinUsesLisp 0794273870 glasm: Implement int64 add and subtract 2021-07-22 21:51:33 -04:00
lat9nq 7fdf0d7d33 emit_glasm_context_get_set: Remove unused variable 2021-07-22 21:51:33 -04:00
ReinUsesLisp e30d4fa976 glasm: Implement indirect attribute loads 2021-07-22 21:51:33 -04:00
ReinUsesLisp c8414e686f glasm: Implement image atomics 2021-07-22 21:51:33 -04:00
ReinUsesLisp 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
ReinUsesLisp e565eb361a glasm: Implement gl_Layer stores 2021-07-22 21:51:33 -04:00
ReinUsesLisp 89e341d56a glasm: Implement SampleId 2021-07-22 21:51:33 -04:00
ReinUsesLisp 77d8c44b68 glasm: Implement IsHelperInvocation 2021-07-22 21:51:33 -04:00
ReinUsesLisp ddf601919f glasm: Fix EmitVertex's optimization 2021-07-22 21:51:33 -04:00
ReinUsesLisp c31521512f gl_shader_cache,glasm: Conditionally use typeless image reads extension 2021-07-22 21:51:33 -04:00