Commit Graph

833 Commits

Author SHA1 Message Date
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
c31521512f gl_shader_cache,glasm: Conditionally use typeless image reads extension 2021-07-22 21:51:33 -04:00
84feabac88 glasm: Implement forced early Z 2021-07-22 21:51:33 -04:00
7dadb2bef3 glasm: Simplify patch reads 2021-07-22 21:51:33 -04:00
b382f57b28 glasm: Fix output patch reads
With this, Luigi's Mansion's sand renders properly.
2021-07-22 21:51:33 -04:00
9e7b6622c2 shader: Split profile and runtime information in separate structs 2021-07-22 21:51:33 -04:00
eb15667905 emit_glasm_context_get_and_set.cpp: Add missing semicolons 2021-07-22 21:51:33 -04:00
781a87175c glasm: Fix patch attribute declarations 2021-07-22 21:51:33 -04:00
36d040da70 glasm: Implement FSWZADD 2021-07-22 21:51:33 -04:00
3da7b98d37 glasm: Implement PrimitiveId attribute read 2021-07-22 21:51:33 -04:00
394b96a2fe glasm: Implement clip distance stores 2021-07-22 21:51:32 -04:00
a5d978e91e glasm: Fix tessellation input attributes 2021-07-22 21:51:32 -04:00
0d7d85c81e glasm: Add missing semicolon on tesscoord reading 2021-07-22 21:51:32 -04:00
48d4e26326 glasm: Fix tessellation headers 2021-07-22 21:51:32 -04:00
9ec2303ad6 glasm: Add tessellation shader declarations 2021-07-22 21:51:32 -04:00
2913ca811e glasm: Implement TessellationEvaluationPoint 2021-07-22 21:51:32 -04:00
a569ac418e glasm: Implement patch memory 2021-07-22 21:51:32 -04:00
164b8c1ec5 glasm: Fix InvocationId declaration 2021-07-22 21:51:32 -04:00
d5db96386d glasm: Implement InvocationId 2021-07-22 21:51:32 -04:00
679e7146a7 glasm: Optimize EmitVertex into EMIT 2021-07-22 21:51:32 -04:00
79929be833 glasm: Implement geometry shader attribute reads 2021-07-22 21:51:32 -04:00
83cef0426b glasm: Properly declare attributes on geometry programs 2021-07-22 21:51:32 -04:00
fad139a3e6 glasm: Declare geometry program headers 2021-07-22 21:51:32 -04:00
0a54291c9c glasm: Fix potential aliasing bug on cube array samples 2021-07-22 21:51:32 -04:00