Commit graph

16788 commits

Author SHA1 Message Date
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
ameerj dd39b87b0c shader: Adhere to disk shader cache setting 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 56d4a9ebde texture_cache: Reduce invalid image/sampler error severity 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 3b595fe8b2 glasm: Prepare XFB from state instead of global registers 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 a41b2ed391 gl_shader_cache: Add disk shader cache 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 eacf18cce9 gl_shader_cache: Rename Program abstractions into Pipeline 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 4017928213 gl_shader_cache: Do not flip tessellation on OpenGL 2021-07-22 21:51:33 -04:00
ReinUsesLisp 80884e3270 gl_graphics_program: Fix texture buffer bindings 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 1bccb43cbe gl_shader_cache: Conditionally use viewport mask 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
ReinUsesLisp df406246d9 gl_shader_cache: Improve GLASM error print logic 2021-07-22 21:51:33 -04:00
ReinUsesLisp 84feabac88 glasm: Implement forced early Z 2021-07-22 21:51:33 -04:00
ReinUsesLisp 6bc54e12a0 glasm: Set transform feedback state 2021-07-22 21:51:33 -04:00
ReinUsesLisp 69b910e9e7 video_core: Abstract transform feedback translation utility 2021-07-22 21:51:33 -04:00
ReinUsesLisp 7dadb2bef3 glasm: Simplify patch reads 2021-07-22 21:51:33 -04:00
ReinUsesLisp b382f57b28 glasm: Fix output patch reads
With this, Luigi's Mansion's sand renders properly.
2021-07-22 21:51:33 -04:00
ReinUsesLisp c07cc9d6a5 gl_shader_cache: Pass shader runtime information 2021-07-22 21:51:33 -04:00
ReinUsesLisp 9e7b6622c2 shader: Split profile and runtime information in separate structs 2021-07-22 21:51:33 -04:00
ameerj eb15667905 emit_glasm_context_get_and_set.cpp: Add missing semicolons 2021-07-22 21:51:33 -04:00
ReinUsesLisp 781a87175c glasm: Fix patch attribute declarations 2021-07-22 21:51:33 -04:00
ameerj 36d040da70 glasm: Implement FSWZADD 2021-07-22 21:51:33 -04:00
ReinUsesLisp 3da7b98d37 glasm: Implement PrimitiveId attribute read 2021-07-22 21:51:33 -04:00
ReinUsesLisp 394b96a2fe glasm: Implement clip distance stores 2021-07-22 21:51:32 -04:00
ReinUsesLisp a5d978e91e glasm: Fix tessellation input attributes 2021-07-22 21:51:32 -04:00
ReinUsesLisp 0d7d85c81e glasm: Add missing semicolon on tesscoord reading 2021-07-22 21:51:32 -04:00
ReinUsesLisp 48d4e26326 glasm: Fix tessellation headers 2021-07-22 21:51:32 -04:00
ReinUsesLisp 9ec2303ad6 glasm: Add tessellation shader declarations 2021-07-22 21:51:32 -04:00
ReinUsesLisp 2913ca811e glasm: Implement TessellationEvaluationPoint 2021-07-22 21:51:32 -04:00
ReinUsesLisp 54decced92 gl_shader_manager: Zero initialize current assembly programs 2021-07-22 21:51:32 -04:00
ReinUsesLisp c0e4074721 gl_shader_manager: Remove unintentionally committed #pragma 2021-07-22 21:51:32 -04:00
ReinUsesLisp a569ac418e glasm: Implement patch memory 2021-07-22 21:51:32 -04:00
ReinUsesLisp 164b8c1ec5 glasm: Fix InvocationId declaration 2021-07-22 21:51:32 -04:00
ReinUsesLisp d5db96386d glasm: Implement InvocationId 2021-07-22 21:51:32 -04:00
ReinUsesLisp 679e7146a7 glasm: Optimize EmitVertex into EMIT 2021-07-22 21:51:32 -04:00
ReinUsesLisp 79929be833 glasm: Implement geometry shader attribute reads 2021-07-22 21:51:32 -04:00
ReinUsesLisp 83cef0426b glasm: Properly declare attributes on geometry programs 2021-07-22 21:51:32 -04:00
ReinUsesLisp fad139a3e6 glasm: Declare geometry program headers 2021-07-22 21:51:32 -04:00
ReinUsesLisp 690b1841e6 renderer_opengl: State track compute assembly programs 2021-07-22 21:51:32 -04:00
ReinUsesLisp c5ca4fe451 renderer_opengl: State track assembly programs 2021-07-22 21:51:32 -04:00
ReinUsesLisp 0a54291c9c glasm: Fix potential aliasing bug on cube array samples 2021-07-22 21:51:32 -04:00
ReinUsesLisp 8fdb00a2b5 glasm: Implement ImageWrite 2021-07-22 21:51:32 -04:00
ReinUsesLisp dadd192b30 glasm: Implement ImageRead 2021-07-22 21:51:32 -04:00
ReinUsesLisp 3d0ffc6ad0 glasm: Implement EmitVertex and EndPrimitive 2021-07-22 21:51:32 -04:00
ReinUsesLisp f79cbbf814 glasm: Implement ImageGradient 2021-07-22 21:51:32 -04:00
ReinUsesLisp 291f220be3 glasm: Implement 64-bit shifts 2021-07-22 21:51:32 -04:00
ReinUsesLisp d957b3a8fe glasm: Implement barriers 2021-07-22 21:51:32 -04:00
ReinUsesLisp b60b3fa113 glasm: Fix compute stage name 2021-07-22 21:51:32 -04:00
ReinUsesLisp 96962c1d3c glasm: Fix phi instruction types 2021-07-22 21:51:32 -04:00
ReinUsesLisp 91a3c2c1c0 glasm: Implement PREC on relevant instructions 2021-07-22 21:51:32 -04:00
ReinUsesLisp accad56ee7 glasm: Implement stores to gl_ViewportIndex 2021-07-22 21:51:32 -04:00
ReinUsesLisp 2494dbe183 glasm: Implement gl_PointSize stores 2021-07-22 21:51:32 -04:00
ReinUsesLisp 9415c435fc glasm: Implement gl_PointCoord 2021-07-22 21:51:32 -04:00
ReinUsesLisp 12dcb9fcc2 glasm: Implement ImageQueryLod 2021-07-22 21:51:32 -04:00
ReinUsesLisp 4a22942f45 glasm: Implement ImageFetch 2021-07-22 21:51:32 -04:00
ameerj 3777592ada glasm: Implement IADD.CC 2021-07-22 21:51:32 -04:00
ReinUsesLisp 98ed8ff103 glasm: Implement BFE.CC 2021-07-22 21:51:32 -04:00
ReinUsesLisp 2e0d56da7e glasm: Implement SelectU1 2021-07-22 21:51:32 -04:00
ReinUsesLisp 85fc7e584e HACK: Bind stages before and after bindings
Works around a bug where program parameters are only applied to the
current stage, and this one wasn't bound at the moment.

Affects all SSBO usages on GLASM.
2021-07-22 21:51:32 -04:00
ReinUsesLisp e8ed904805 glasm: Implement gl_WorkGroupID 2021-07-22 21:51:32 -04:00
ReinUsesLisp 0a42277a4f glasm: Implement TXQ and improve texture info reads 2021-07-22 21:51:32 -04:00
ReinUsesLisp c560bf99c2 glasm: Implement gl_FrongFacing attribute 2021-07-22 21:51:32 -04:00
ReinUsesLisp 8b7d5912d6 glasm: Support textures used in more than one stage 2021-07-22 21:51:32 -04:00
ReinUsesLisp 3d3ed53511 glasm: Implement textureGather instructions 2021-07-22 21:51:32 -04:00
ReinUsesLisp 0fa421f82f glasm: Implement gl_FragDepth and gl_SampleMask stores 2021-07-22 21:51:32 -04:00
ReinUsesLisp 1ee7f8b943 glasm: Do not alias ConditionRef for now
Immediate condition refs where not handled correctly. Just move the
value for now.
2021-07-22 21:51:32 -04:00