summaryrefslogtreecommitdiffstats
path: root/src/shader_recompiler/frontend/maxwell (unfollow)
Commit message (Collapse)AuthorFilesLines
2022-04-02fix: typosAndrea Pappacoda2-2/+2
2022-03-20shader_recompiler: Reduce unused includesameerj27-39/+7
2022-03-18shader_recompiler/EXIT: skip render targets with no outputsLiam1-0/+3
2022-03-18shader_recompiler/EXIT: increment output register on failed enable testLiam1-0/+1
2022-03-16shader_recompiler: Implement LDC.IS address modeLiam1-2/+12
2022-03-13Shader decompiler: do constant propgation before texture pass.Fernando Sahmkow1-2/+2
2022-03-08shader_recompiler/LOP3: Use brute force python results within switch/case.Markus Wick2-52/+620
Thanks to @asLody for optimizing this function. This raised the focus that this function should be optimized more. The current table assumes that the host GPU is able to invert for free, so only AND,OR,XOR are accumulated in the performance metrik. Performance results: Instructions 0: 8 1: 30 2: 114 3: 80 4: 24 Latency 0: 8 1: 30 2: 194 3: 24
2022-01-27video_minimum_maximum: Implement src operand selectorsameerj1-12/+6
Used by Pokemon Legends: Arceus
2022-01-25shader_recompiler: Remove unnecessary [[nodiscard]]Lioncash1-2/+1
Since ConvertLegacyToGeneric has a void return value, there's nothing that is actually returned by the function.
2021-12-18Address format clangvonchenplus1-36/+36
2021-11-19Implement convert legacy to genericFeng Chen2-0/+99
2021-11-16rescaling_pass: Logic simplification and minor style cleanupameerj1-1/+0
2021-11-16Shader: Don't rescale FragCoord if used by ShuffleFernando Sahmkow1-1/+3
2021-11-16spirv: Implement rescaling patchingReinUsesLisp1-0/+3
2021-10-31ShaderCache: Order Phi Arguments from farthest away to nearest.Fernando Sahmkow1-0/+2
2021-08-30structured_control_flow: Skip reordering nested demote branches.ameerj1-0/+11
Nested demote branches add complexity with combining the condition if it has not been initialized yet. Skip them for the time being.
2021-08-30structured_control_flow: Conditionally invoke demote reorder passameerj3-8/+13
This is only needed on select drivers when a fragment shader discards/demotes.
2021-08-28structured_control_flow: Add DemoteCombinationPassameerj1-1/+107
Some drivers misread data when demotes are interleaved in the program. This moves demote branches to be checked at the end of the program. Fixes "wireframe" issue in Pokemon SwSh on some drivers
2021-07-26control_flow: Fix duplicate switch case in OpcodeTokenLioncash1-1/+1
This previously duplicated the case of the PBK case above it.
2021-07-23shader: Support out of bound local memory reads and immediate writesReinUsesLisp1-4/+21
Support ignoring immediate out of bound writes. Writing dynamically out of bounds is not yet supported (e.g. R0+0x4). Reading out of bounds yields zero. This is supported checking for the size from the IR; if the input is immediate, the optimization passes will drop it.
2021-07-23shader: Implement ISETP.Xameerj4-44/+57
2021-07-23shader: Avoid usage of C++20 ranges to build in clangReinUsesLisp3-18/+23
2021-07-23shader_recompiler, video_core: Resolve clang errorslat9nq7-28/+21
Silences the following warnings-turned-errors: -Wsign-conversion -Wunused-private-field -Wbraced-scalar-init -Wunused-variable And some other errors
2021-07-23shader: Manually convert from array<u32> to bitset instead of using bit_castReinUsesLisp1-2/+3
2021-07-23shader: GCC fmt 8.0.0 fixeslat9nq1-1/+1
2021-07-23shader: Account for 33-bit IADD3 scenarioameerj1-2/+10
2021-07-23shader: Only apply shift on register mode for IADD3ReinUsesLisp1-10/+14
2021-07-23shader: Use std::bit_cast instead of Common::BitCast for passthroughReinUsesLisp1-2/+3
2021-07-23shader: Rework varyings and implement passthrough geometry shadersReinUsesLisp1-8/+10
Put all varyings into a single std::bitset with helpers to access it. Implement passthrough geometry shaders using host's.
2021-07-23shader: Only verify shader when graphics debugging is enabledReinUsesLisp1-2/+7
2021-07-23shader: Emulate 64-bit integers when not supportedReinUsesLisp1-0/+3
Useful for mobile and Intel Xe devices.
2021-07-23shader_recompiler: Fix IADD3 input partitioningameerj1-14/+13
2021-07-23shader: Move loop safety tests to code emissionReinUsesLisp1-33/+4
2021-07-23shader: Calibrate loop safety thresholdReinUsesLisp1-1/+1
2021-07-23shader: Simplify MergeDualVertexProgramsReinUsesLisp1-6/+4
2021-07-23shader: Properly manage attributes not written from previous stagesReinUsesLisp1-1/+3
2021-07-23shader: Add support for native 16-bit floatsReinUsesLisp2-4/+7
2021-07-23shader: Rename maxwell/program.h to translate_program.hReinUsesLisp2-7/+2
2021-07-23shader: Fix loop safety to SSA passReinUsesLisp1-1/+3
2021-07-23shader: Add loggingReinUsesLisp3-6/+6
2021-07-23shader: Add shader loop safety check settingslat9nq1-4/+38
Also add a setting for enable Nsight Aftermath.
2021-07-23shader: Comment why the array component is not read in TMMLReinUsesLisp1-0/+2
2021-07-23tmml: Remove index component from coords vecameerj1-4/+3
The lod query functions exposed by the rendering API's do not make use of the texturearray layer indexing.
2021-07-23shader: Fix VertexA Shaders.FernandoS271-5/+14
2021-07-23shader: Add 2D and 3D variants to SUATOM and SUREDReinUsesLisp1-0/+4
Used by Claybook.
2021-07-23shader: Avoid CPU side undefined behavior on I2FReinUsesLisp1-0/+2
2021-07-23shader: Add support for "negative" and unaligned offsetsReinUsesLisp1-2/+2
"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-23shader: Implement ISCADD32IReinUsesLisp1-17/+31
2021-07-23shader: Always initialize up reference in structure control flowReinUsesLisp1-31/+36
Fixes ubsan issue.
2021-07-23shader: Fix ImageWrite indexingReinUsesLisp1-1/+1
2021-07-23shader: Fix TMML queriesReinUsesLisp1-5/+9
2021-07-23shader: Handle host exceptionsReinUsesLisp3-5/+11
2021-07-23shader: Read branch conditions from an instructionReinUsesLisp1-6/+3
Fixes the identity removal pass.
2021-07-23glasm: Implement TEX and TEXS instructionsReinUsesLisp2-12/+11
Remove lod clamp from texture instructions with lod, as this is not needed (nor supported).
2021-07-23shader_recompiler: GCC fixeslat9nq2-25/+25
Fixes members of unnamed union not being accessible, and one function without a declaration.
2021-07-23glasm: Initial implementation of phi nodes on GLASMReinUsesLisp1-3/+3
2021-07-23glasm: Rework control flow introducing a syntax listReinUsesLisp5-119/+161
This commit regresses VertexA shaders, their transformation pass has to be adapted to the new control flow.
2021-07-23shader: Add floating-point rounding to I2FReinUsesLisp1-1/+6
2021-07-23shader: ISET.X implementationameerj1-8/+58
2021-07-23shader: Optimize NVN FallthroughFernandoS271-2/+5
2021-07-23shader: Stub SR_AFFINITYFernandoS271-0/+3
2021-07-23shader: Implement Int32 SUATOM/SUREDameerj4-5/+207
2021-07-23shader: Initial OpenGL implementationReinUsesLisp1-0/+7
2021-07-23shader: Address feedbackFernandoS273-24/+24
2021-07-23shader: Implement VertexA stageFernandoS272-0/+30
2021-07-23shader: Implement delegation of Exit to dispatcher on CFGFernandoS272-3/+47
2021-07-23shader: Fix IADD3.CCameerj1-12/+5
2021-07-23shader: Fix VMNMX selector BReinUsesLisp1-1/+2
2021-07-23shader: Remove identity removal pass for better build timesReinUsesLisp1-1/+0
2021-07-23shader: Refactor atomic_operations_global_memoryameerj1-44/+36
2021-07-23shader: add missing include guard in half_floating_point_helper.hameerj1-0/+2
2021-07-23shader: Fix gcc warningsReinUsesLisp1-1/+1
2021-07-23shader: Improve goto removal algorithm complexityReinUsesLisp1-49/+28
Find sibling node containing a nephew searching from the nephew itself instead of the uncle.
2021-07-23shader: Move microinstruction header to the value headerReinUsesLisp1-1/+1
2021-07-23shader: Move siblings check to a separate function and comment them outReinUsesLisp1-16/+21
2021-07-23shader: Simplify code for local memoryReinUsesLisp1-6/+11
2021-07-23shader: Add NVN storage buffer fallbacksReinUsesLisp1-0/+43
When we can't track the SSBO origin of a global memory instruction, leave it as a global memory operation and assume these pointers are in the NVN storage buffer slots, then apply a linear search in the shader's runtime.
2021-07-23shader: Address feedbackFernandoS272-7/+10
2021-07-23shader: Implement F2F (Imm)FernandoS271-2/+28
2021-07-23shader: Implement IADD3.CC/.XFernandoS271-7/+22
2021-07-23shader: Implement SR_Y_DIRECTIONFernandoS271-0/+2
2021-07-23shader: Fix memory barriersReinUsesLisp1-20/+10
2021-07-23shader: Implement BFE and BFI CCameerj2-12/+16
Fix two bugs in BFI.
2021-07-23shader: Implement SampleMaskReinUsesLisp1-1/+1
2021-07-23shader: Implement PIXLD.MY_INDEXReinUsesLisp2-4/+46
2021-07-23shader: Implement tessellation shaders, polygon mode and invocation idReinUsesLisp3-13/+27
2021-07-23shader: Document and relax cache control on surface instructionsReinUsesLisp1-10/+11
2021-07-23shader: Implement geometry shadersReinUsesLisp2-7/+22
2021-07-23shader: Implement OUTReinUsesLisp3-17/+47
2021-07-23internal_stage_buffer_entry_read: Remove pragma optimize offlat9nq1-2/+0
2021-07-23shader: Stub SR_INVOCATION_INFOReinUsesLisp1-2/+5
2021-07-23shader: Stub ISBERDReinUsesLisp2-4/+55
2021-07-23shader: Fix CC in I2IReinUsesLisp1-0/+2
2021-07-23shader: Simplify FLO and throw on CCReinUsesLisp1-12/+13
2021-07-23shader: Mark blocks with no end branch as unreachableReinUsesLisp1-2/+7
2021-07-23shader: Implement LOP CCReinUsesLisp1-3/+11
2021-07-23shader: Implement SR_THREAD_KILLReinUsesLisp1-0/+2
2021-07-23shader: Apply sign bit in FCMP (imm)ReinUsesLisp1-1/+1
2021-07-23shader: Implement ATOM/S and REDameerj3-12/+332
2021-07-23shader: Implement CC for ISET, FSET, PSET, CSET, and DSETFernandoS2718-13/+136
Throw when other instructions are missing CC.
2021-07-23shader: Remove outdated comment in F2IReinUsesLisp1-4/+0
2021-07-23shader: Implement SULD and SUSTReinUsesLisp10-59/+338
2021-07-23shader: Fix Windows build issuesReinUsesLisp1-1/+1
2021-07-23shader: Address feedback + clang formatlat9nq5-14/+14
2021-07-23shader_recompiler,video_core: Cleanup some GCC and Clang errorslat9nq34-180/+160
Mostly fixing unused *, implicit conversion, braced scalar init, fpermissive, and some others. Some Clang errors likely remain in video_core, and std::ranges is still a pertinent issue in shader_recompiler shader_recompiler: cmake: Force bracket depth to 1024 on Clang Increases the maximum fold expression depth thread_worker: Include condition_variable Don't use list initializers in control flow Co-authored-by: ReinUsesLisp <reinuseslisp@airmail.cc>
2021-07-23shader: Fix FCMP immediate variantReinUsesLisp1-1/+9
2021-07-23shader: Fix dangling labelsReinUsesLisp1-0/+5
2021-07-23shader: Fix F2IReinUsesLisp1-1/+1
2021-07-23shader: Address feedbackFernandoS271-16/+21
2021-07-23shader: Implement indexed attributesFernandoS272-14/+26
2021-07-23shader: Implement AL2PFernandoS272-4/+35
2021-07-23shader: Fix BRX trackingFernandoS272-3/+4
2021-07-23shader: Fix splits on blocks using indirect branchesReinUsesLisp3-17/+38
2021-07-23shader: Eliminate orphan blocks more efficientlyReinUsesLisp1-7/+8
2021-07-23shader: Add subgroup masksReinUsesLisp1-35/+75
2021-07-23shader: Implement BAR and fix memory barriersReinUsesLisp1-2/+56
2021-07-23shader: Reimplement GetCbufU64 as GetCbufU32x2ReinUsesLisp1-6/+6
It may generate better code on some compilers and it's easier to handle.
2021-07-23shader: Remove unused header in VOTEReinUsesLisp1-2/+0
2021-07-23shader: Fix fp16 merge when using native fp16ReinUsesLisp1-3/+3
2021-07-23shader: Fix FADD32IReinUsesLisp1-6/+4
2021-07-23shader: "Implement" NOPFernandoS271-1/+1
2021-07-23shader: Address FeedbackFernandoS273-12/+7
2021-07-23shader: Implement SR_LaneIdFernandoS271-0/+2
2021-07-23shader: Implement MEMBARFernandoS272-11/+56
2021-07-23shader: Improve VOTE.VTG stubFernandoS271-1/+4
2021-07-23shader: Stub VOTE.VTGFernandoS273-4/+8
2021-07-23shader: Fix branches to visited virtual blocksReinUsesLisp1-0/+10
2021-07-23shader: Implement LDG .U.128 as .128ReinUsesLisp1-3/+2
2021-07-23shader: Address feedbackFernandoS273-37/+33
2021-07-23shader: Always pass a lod for TexelFetchReinUsesLisp2-22/+14
2021-07-23shader: Implement TXDFernandoS273-10/+182
2021-07-23shader: Implement TMML partiallyFernandoS272-8/+130
2021-07-23shader: Implement TLDSFernandoS272-4/+252
2021-07-23shader: Implement TLDFernandoS273-10/+167
2021-07-23shader: Fix indirect branches to scheduler instructionsReinUsesLisp3-7/+17
2021-07-23shader: Implement FSWZADDameerj4-4/+49
2021-07-23shader: Implement BRXFernandoS2710-44/+327
2021-07-23shader: Implement I2I CCameerj1-3/+4
2021-07-23shader: Implement I2I SATameerj1-10/+30
2021-07-23shader: Fix ISCADD logic for PO/CCameerj1-7/+8
2021-07-23shader: Implement LDS, STS, LDL, and STS and use SPIR-V 1.4 when availableReinUsesLisp3-16/+199
2021-07-23shader: Implement ISCADD CCameerj1-1/+4
2021-07-23shader: Implement VMAD, VMNMX, VSETPameerj6-13/+301
2021-07-23shader: Add missing I2I exception when CC is usedReinUsesLisp1-0/+4
2021-07-23shader: Better interpolation and disabled attributes supportReinUsesLisp2-9/+36
2021-07-23spirv: Remove dependencies on Environment when generating SPIR-VReinUsesLisp1-0/+3
2021-07-23shader: Fix structured control flow on KIL instructionsReinUsesLisp1-3/+6
This could potentially leave unvisited blocks, leading to illegal phi nodes.
2021-07-23shader: Fix TXQFernandoS271-1/+1
2021-07-23shader: Implement TXQ and fix FragDepthReinUsesLisp2-8/+76
2021-07-23shader: Refactor PTP and other minor changesReinUsesLisp1-15/+13
2021-07-23shader: Implement TLD4.PTPFernandoS272-14/+16
2021-07-23shader: Fix Array Indices in TEX/TLD4FernandoS272-6/+6
2021-07-23shader: Implement FragDepthFernandoS271-1/+1
2021-07-23shader: Implement TLD4S.FernandoS272-4/+133
2021-07-23shader: Implement TLD4 and TLD4_BFernandoS273-10/+211
2021-07-23shader: Implement SHFLameerj3-6/+71
2021-07-23shader: Properly insert Prologue instructionReinUsesLisp1-1/+2
2021-07-23shader: Minor style nitsReinUsesLisp1-2/+4
2021-07-23shader: Fix F2IFernandoS273-5/+102
2021-07-23shader: Implement NDC [-1, 1], attribute types and default varying initializationReinUsesLisp1-1/+6
2021-07-23shader: Implement VOTEameerj2-4/+52
2021-07-23shader: Fix TEX maskReinUsesLisp1-1/+3
2021-07-23shader: Better but still partial interpolation supportReinUsesLisp1-5/+7
2021-07-23shader: Implement DMNMX, DSET, DSETPameerj6-39/+166
2021-07-23shader: Implement FADD32IFernandoS271-2/+15
2021-07-23shader: Implement F2FFernandoS272-12/+180
2021-07-23shader: Implement DMUL and DFMAameerj7-30/+109
Also add a missing const on DADD
2021-07-23shader: Add FP64 register load/store helpersameerj3-21/+24
2021-07-23shader: Add support for fp16 comparisons and misc fixesReinUsesLisp4-7/+4
2021-07-23shader: Fix floating point comparison for FP16FernandoS274-32/+32
2021-07-23shader: Implement HSETP2FernandoS272-12/+116
2021-07-23shader: Implement HSET2FernandoS274-14/+118
2021-07-23shader: Implement HMUL2FernandoS272-16/+143
2021-07-23shader: Implement HFMA2FernandoS274-20/+191
2021-07-23shader: Refactor half floating instructionsFernandoS273-58/+82
2021-07-23shader: Implement I2FReinUsesLisp6-14/+198
2021-07-23shader: Implement ISCADD (imm)ReinUsesLisp1-2/+2
2021-07-23shader: Implement LOP32IReinUsesLisp2-18/+45
2021-07-23shader: Add partial rasterizer integrationReinUsesLisp11-43/+178
2021-07-23shader: Implement DADDameerj4-14/+120
2021-07-23shader: Implement CSET and CSETPameerj2-8/+54
2021-07-23shader: Implement FSET and FSETPameerj7-92/+198
Also fix oversight with adding SignedZeroInfNanPreserve execution mode.
2021-07-23shader: Implement TEXSReinUsesLisp3-4/+262
2021-07-23shader: Implement CAL inlining function callsReinUsesLisp7-99/+869
2021-07-23shader: Implement FMNMXameerj3-13/+58
And add a const in FCMP
2021-07-23shader: Implement FCMPameerj2-16/+116
still need to configure some settings for NV denorm flush and intel NaN
2021-07-23shader: Partial implementation of LDCReinUsesLisp3-8/+97
2021-07-23shader: Initial support for textures and TEXReinUsesLisp4-10/+235
2021-07-23shader: Implement R2Pameerj2-12/+71
2021-07-23shader: Implement SHFameerj2-16/+77
2021-07-23shader: Implement LEAameerj2-20/+100
2021-07-23shader: Deduplicate HADD2 codeReinUsesLisp1-19/+16
2021-07-23shader: Implement I2Iameerj2-12/+99
2021-07-23shader: Implement HADD2ReinUsesLisp3-17/+185
2021-07-23shader: Implement LOP and LOP3ameerj7-31/+225
2021-07-23shader: Implement IADD3ameerj2-12/+103
2021-07-23shader: Implement PSETPameerj3-4/+38
2021-07-23Implement PSET, refactor common comparison funcsameerj8-101/+87
2021-07-23shader: Implement FLOameerj2-12/+46
2021-07-23shader: Implement ISET, add common_funcsameerj7-50/+147
2021-07-23shader: Make IMNMX, SHR, SEL stylistically more consistentameerj3-5/+5
2021-07-23shader: Implement ICMPameerj2-16/+83
2021-07-23shader: Implement IMNMXameerj2-12/+59
2021-07-23shader: Implement BFIameerj2-16/+56
2021-07-23shader: Implement BFEameerj2-12/+66
2021-07-23shader: Implement POPCameerj2-12/+36
2021-07-23shader: Implement SHRameerj2-12/+62
2021-07-23shader: Implement SELameerj2-12/+44
2021-07-23shader: Fix conditional execution of exit instructionsReinUsesLisp2-5/+6
2021-07-23shader: Fix control flowReinUsesLisp3-4/+4
2021-07-23shader: Implement more of XMAD and FFMA32I and fix XMAD.CBCCReinUsesLisp3-22/+70
2021-07-23shader: FMUL, select, RRO, and MUFU fixesReinUsesLisp10-38/+93
2021-07-23shader: Fix MOV(reg), add SHL variants and emit neg and abs instructionsReinUsesLisp2-5/+5
2021-07-23spirv: Fixes and Intel specific workaroundsReinUsesLisp2-9/+9
2021-07-23shader: Rename, implement FADD.SAT and P2R (imm)ReinUsesLisp10-35/+101
2021-07-23shader: Add denorm flush supportReinUsesLisp1-4/+15
2021-07-23spirv: Add lower fp16 to fp32 passReinUsesLisp3-16/+50
2021-07-23shader: Primitive Vulkan integrationReinUsesLisp5-23/+27
2021-07-23shader: Simplify ISCADDReinUsesLisp1-6/+1
2021-07-23spirv: Initial bindings supportReinUsesLisp1-3/+4
2021-07-23shader: Support SSA loops on IRReinUsesLisp1-4/+8
2021-07-23shader: Misc fixesReinUsesLisp2-4/+4
2021-07-23shader: Initial implementation of an ASTReinUsesLisp10-477/+238
2021-07-23spirv: Initial SPIR-V supportReinUsesLisp1-5/+5
2021-07-23shader: Add pools and rename filesReinUsesLisp15-63/+40
2021-07-23shader: Make typed IRReinUsesLisp9-46/+74
2021-07-23shader: Constant propagation and global memory to storage bufferReinUsesLisp1-2/+4
2021-07-23shader: Initial instruction supportReinUsesLisp16-178/+1039
2021-07-23shader: SSA and dominanceReinUsesLisp8-55/+223
2021-07-23shader: Initial recompiler workReinUsesLisp24-0/+3555