Commit Graph

494 Commits (1e1f7b32341f6538fce07d0df415a4d494a2b209)

Author SHA1 Message Date
ameerj 14bd73db36 glsl: Enable early fragment tests 4 years ago
ameerj 3f31a547e0 glsl: Implement more attribute getters and setters 4 years ago
ameerj 8bb8bbf4ae glsl: Implement fswzadd
and wip nv thread shuffle impl
4 years ago
ameerj c542204113 glsl: Implement indexed attribute loads 4 years ago
ameerj 2a504b4765 glsl: Conditionally add GL_ARB_sparse_texture2 4 years ago
ameerj fc0db612ab glsl: Conditionally use GL_EXT_shader_image_load_formatted
Fix for SULD.D
4 years ago
ameerj fb839061fb glsl: Remove output generic indexing for geometry stage 4 years ago
ameerj 258106038e glsl: Allow dynamic tracking of variable allocation 4 years ago
ameerj 465903468e glsl: Implement barriers 4 years ago
ameerj 421847cf1e glsl: Implement image atomics and set layer
along with some more cleanup/oversight fixes
4 years ago
ameerj d41aef03c7 glsl: Fix image gather logic 4 years ago
ameerj 35e78d558d glsl: Add cbuf access workaround for devices with component indexing bug 4 years ago
ameerj 747b8556a4 glsl: Use textureGrad fallback when EXT_texture_shadow_lod is unsupported 4 years ago
ameerj d12f2b8ccf emit_glsl_image: Use immediate offsets when possible 4 years ago
ameerj 0a0b0a73d8 glsl: Fix <32-bit SSBO writes
and more cleanup
4 years ago
ameerj 34fdb6471d glsl: Cleanup and address feedback 4 years ago
ameerj 5355568a2d glsl: Refactor Global memory functions 4 years ago
ameerj a68fabf6d5 glsl: Increase NUM_VARS that can be allocated
needed for HW:AoC.
4 years ago
ameerj 8d8ce24f20 glsl: Implement Load/WriteGlobal
along with some other misc changes and fixes
4 years ago
ameerj af9696059c glsl: Implement Images 4 years ago
ameerj 6577a63d36 glsl: skip gl_ViewportIndex write if device does not support it 4 years ago
ameerj f4799e8fa1 glsl: Implement transform feedback 4 years ago
ameerj 31147ffe69 glsl: Yet another gl_ViewportIndex fix attempt 4 years ago
ameerj 9f3970f837 glsl: Add gl_ViewportIndex out attribute 4 years ago
lat9nq fc29de7d5b emit_glsl_context_get_set: Remove unused function 4 years ago
ameerj 59576b82a8 glsl: Fix precise variable declaration
and add some more separation in the shader for better debugability when dumped
4 years ago
ameerj 8c684b3e23 glsl: Implement tessellation shaders 4 years ago
ameerj c7d085b505 glsl: Implement ImageGradient and other texture function variants 4 years ago
ameerj 68d075d1e8 glsl: Fix atomic SSBO offsets
and implement misc getters
4 years ago
ameerj 19247ba4fa glsl: Implement geometry shaders 4 years ago
ameerj df53046d68 glsl: Use NotImplemented macro with function name output 4 years ago
ameerj 3a024b3026 glsl: Implement gl_ViewportIndex
SSBU now working
4 years ago
ameerj b7561226ed glsl: SHFL fix and prefer shift operations over divide in glsl shader 4 years ago
ameerj e10366974e glsl: Implement precise fp variable allocation 4 years ago
ameerj 14bfb4719a HACK glsl: Write defaults to unused generic attributes 4 years ago
ameerj 4b5a4ea72e glsl: Fix ssbo indexing and name shadowing between shader stages 4 years ago
ameerj 8ec0028e68 glsl: implement set clip distance
and missed a diff in emit_glsl relating to var alloc ref counting
4 years ago
ameerj 9f3ffb996b glsl: Rework var alloc to not assign unused results 4 years ago
ameerj 1269a0cf8b glsl: Rework variable allocator to allow for variable reuse 4 years ago
ameerj 9ccbd74991 glsl: Fix ATOM and implement ATOMS 4 years ago
ameerj 68ef3803bf glsl: Use gl_SubGroupInvocationARB 4 years ago
ameerj e35ffbbeb0 glsl: Implement VOTE for subgroup size potentially larger 4 years ago
ameerj 770b754afd glsl: Implement VOTE 4 years ago
ameerj 181a4ffdc4 glsl: Implement ST{LS} 4 years ago
ameerj 57d354b02c glsl: Implement more instructions used by SMO 4 years ago
ameerj 7df0815117 glsl: Implement more instructions used by SMO 4 years ago
ameerj 80eec85867 glsl: Fix GetAttribute return values
fixes font rendering issues as these were used to index into the ssbos
4 years ago
ameerj 1542f31e79 glsl: minor cleanup 4 years ago
ameerj 005eecffcd glsl: Fix and implement rest of cbuf access 4 years ago
ameerj 3047eb6688 glsl: Implement TXQ and other misc changes 4 years ago
ameerj 5fd92780b2 glsl: TLD4 implementation 4 years ago
ameerj 697eacd095 glsl: Implement TLD instruction 4 years ago
ameerj e4ba755705 glsl: Implement TEXS 4 years ago
ameerj 59a692e9ed glsl: Cleanup texture functions 4 years ago
lat9nq c9a25855bc shader_recompiler: GCC fixes 4 years ago
ameerj 7619b7d427 glsl: Implement TEX depth functions 4 years ago
ameerj 55e0211a5e glsl: Implement TEX ImageSample functions 4 years ago
ameerj b98de76ea8 glsl: Rework Shuffle emit instructions to align with SPIR-V 4 years ago
ameerj 8ba814efb2 glsl: Better Storage access and wip warps 4 years ago
ameerj 86d4a05cec glsl: Fix integer conversions, implement clamp CC 4 years ago
ameerj 21797efa54 glsl: Implement IADD CC 4 years ago
ameerj 453cd25da5 glsl: SSBO access fixes and wip SampleExplicitLod implementation. 4 years ago
ameerj f6bbc76336 glsl: WIP var forward declaration
to fix Loop control flow.
4 years ago
ameerj 2a71333716 glsl: Fix bindings, add some CC ops 4 years ago
ameerj 6674637853 glsl: remove unused headers 4 years ago
ameerj a752ec88d0 glsl: Implement derivatives and YDirection
plus some other misc additions/changed
4 years ago
ameerj ed14d31f66 glsl: Fix non-immediate buffer access
and many other misc implementations
4 years ago
ameerj d171083d53 glsl: textures wip 4 years ago
ameerj 3d086e6130 glsl: Implement some attribute getters and setters 4 years ago
ameerj 5399906c26 glsl: Track S32 atomics 4 years ago
ameerj b95716e543 glsl: Update phi node management 4 years ago
ameerj 67f881e714 glsl: Fix floating point compare ops
Logic for ordered/unordered ops was wrong.
4 years ago
ameerj bd24fa9713 glsl: Query GL Device for FP16 extension support 4 years ago
ameerj 3482df1176 glsl: Simply FP storage atomics 4 years ago
ameerj 9cc1b8a873 glsl: F16x2 storage atomics 4 years ago
ameerj 11ba190462 glsl: Revert ssbo aliasing. Storage Atomics impl 4 years ago
ameerj e99d01ff53 glsl: implement phi nodes 4 years ago
ameerj 3d9ecbe998 glsl: Wip storage atomic ops 4 years ago
ameerj df793fc049 glsl: Implement FCMP 4 years ago
ameerj cdde730219 glsl: Add a more robust fp formatter 4 years ago
ameerj ac7b0ebcb7 glsl: More FP fixes 4 years ago
ameerj 3064bde415 glsl: FP function fixes 4 years ago
ameerj 65c6f73e43 glsl: More FP instructions/fixes 4 years ago
ameerj 5e9095ef22 glsl: Add many FP32/64 instructions 4 years ago
ameerj ef7bd53f18 glsl: Implement more Integer ops 4 years ago
ameerj 266a3d60e3 glsl: Implement BF* 4 years ago
ameerj 0f40b0e61c glsl: Implement a few Integer instructions 4 years ago
ameerj fb75d122a2 glsl: Use std::string_view for Emit function args. 4 years ago
ameerj 115c162b9a glsl: Pass IR::Inst& to Emit functions 4 years ago
ameerj 78f5eb90d7 glsl: INeg and IAdd negate tests 4 years ago
ameerj e221baccdd glsl: Reusable typed variables. IADD32 4 years ago
ameerj faf4cd72c5 glsl: Fix program linking and cbuf 4 years ago
ameerj 64337f004d glsl: Fix "reg" allocing
based on glasm with some tweaks
4 years ago
ameerj eaff1030de glsl: Initial backend 4 years ago
ReinUsesLisp 3d822faea1 spirv: Reduce log severity of mismatching denorm rules 4 years ago
ReinUsesLisp 61cd7dd301 shader: Add logging 4 years ago
lat9nq 373f75d944 shader: Add shader loop safety check settings
Also add a setting for enable Nsight Aftermath.
4 years ago
ameerj d52bacf6f0 spirv/convert: Catch more signed operations oversights
The sign bit on integers of size < 32 was not properly preserved in casts
4 years ago
ReinUsesLisp 8554a644df spirv/convert: Catch more broken signed operations on Nvidia OpenGL
BitCast U32 to S32 before converting to float on drivers with broken
signed operations.
4 years ago
ReinUsesLisp 79f2fe1a39 glasm: Use ARB_derivative_control conditionally 4 years ago
lat9nq 22f0c4f002 emit_glasm_context_get_set: Remove unused variable 4 years ago
ReinUsesLisp 5539b13c5a shader,glasm: Implement legacy texcoord loads 4 years ago
ReinUsesLisp cf9f88e5a7 glasm: Implement legacy varyings 4 years ago
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.
4 years ago
ReinUsesLisp adc43297c5 spirv: Fix output generics with components 4 years ago
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.
4 years ago
ReinUsesLisp d738ad4d0b spirv: Fix image and image buffer descriptor index usage 4 years ago
ReinUsesLisp eb8464cb3d glasm: Fix immediate texture coordinate 4 years ago
ReinUsesLisp b6c087496b glasm: Reduce reg allocation leaks from an exception to a log 4 years ago
ReinUsesLisp 83db7abae6 glasm: Use integer lod for TXQ 4 years ago
ReinUsesLisp e240a62017 glasm: Fix global memory fallbacks 4 years ago
ReinUsesLisp 8f3043c3cf Revert "glasm: Skip phi moves on undefined instructions"
Causes regressions on Bowser's Fury.
4 years ago
ReinUsesLisp 2aa30353b7 glasm: Remove unintentional '\n' on Undef32 4 years ago
ReinUsesLisp adb591a757 glasm: Use storage buffers instead of global memory when possible 4 years ago
ReinUsesLisp f58f79c85d glasm: Implement Y direction 4 years ago
ReinUsesLisp 586c785366 glasm: Skip phi moves on undefined instructions 4 years ago
ReinUsesLisp b9c8814ea9 glasm: Implement undef instructions 4 years ago
ReinUsesLisp 8763cc1ff7 glasm: Fix global memory callbacks 4 years ago
ReinUsesLisp 48aafe0961 glasm: Release phi node registers after they are no longer needed 4 years ago
ReinUsesLisp 70c9281fbf glasm: Fix INeg32 on negative immediates 4 years ago
ReinUsesLisp 75fd0079db glasm: Remove unnecessary value types 4 years ago
ReinUsesLisp 379b305b4b glasm: Throw when there are register leaks 4 years ago
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.
4 years ago
ReinUsesLisp 9fbfe7d676 glasm: Fix usage counting on phi nodes 4 years ago
ReinUsesLisp c721767bcc glasm: Implement global memory fallbacks 4 years ago
ReinUsesLisp 0794273870 glasm: Implement int64 add and subtract 4 years ago
lat9nq 7fdf0d7d33 emit_glasm_context_get_set: Remove unused variable 4 years ago
ReinUsesLisp e30d4fa976 glasm: Implement indirect attribute loads 4 years ago
ReinUsesLisp c8414e686f glasm: Implement image atomics 4 years ago
ReinUsesLisp 3a7ca6a7db glasm: Reorder unreachable image atomic insts
Reorder them to the bottom of the file for readability.
4 years ago
ReinUsesLisp e565eb361a glasm: Implement gl_Layer stores 4 years ago
ReinUsesLisp 89e341d56a glasm: Implement SampleId 4 years ago
ReinUsesLisp 77d8c44b68 glasm: Implement IsHelperInvocation 4 years ago
ReinUsesLisp ddf601919f glasm: Fix EmitVertex's optimization 4 years ago
ReinUsesLisp c31521512f gl_shader_cache,glasm: Conditionally use typeless image reads extension 4 years ago
ReinUsesLisp 84feabac88 glasm: Implement forced early Z 4 years ago
ReinUsesLisp 7dadb2bef3 glasm: Simplify patch reads 4 years ago
ReinUsesLisp b382f57b28 glasm: Fix output patch reads
With this, Luigi's Mansion's sand renders properly.
4 years ago
ReinUsesLisp 9e7b6622c2 shader: Split profile and runtime information in separate structs 4 years ago
ameerj eb15667905 emit_glasm_context_get_and_set.cpp: Add missing semicolons 4 years ago
ReinUsesLisp 781a87175c glasm: Fix patch attribute declarations 4 years ago
ameerj 36d040da70 glasm: Implement FSWZADD 4 years ago
ReinUsesLisp 3da7b98d37 glasm: Implement PrimitiveId attribute read 4 years ago
ReinUsesLisp 394b96a2fe glasm: Implement clip distance stores 4 years ago
ReinUsesLisp a5d978e91e glasm: Fix tessellation input attributes 4 years ago
ReinUsesLisp 0d7d85c81e glasm: Add missing semicolon on tesscoord reading 4 years ago
ReinUsesLisp 48d4e26326 glasm: Fix tessellation headers 4 years ago
ReinUsesLisp 9ec2303ad6 glasm: Add tessellation shader declarations 4 years ago
ReinUsesLisp 2913ca811e glasm: Implement TessellationEvaluationPoint 4 years ago
ReinUsesLisp a569ac418e glasm: Implement patch memory 4 years ago