summaryrefslogtreecommitdiffstats
path: root/src/shader_recompiler/backend (unfollow)
Commit message (Collapse)AuthorFilesLines
2021-07-23glasm: Support textures used in more than one stageReinUsesLisp3-4/+24
2021-07-23glasm: Implement textureGather instructionsReinUsesLisp2-15/+97
2021-07-23glasm: Implement gl_FragDepth and gl_SampleMask storesReinUsesLisp2-5/+5
2021-07-23glasm: Do not alias ConditionRef for nowReinUsesLisp2-3/+2
Immediate condition refs where not handled correctly. Just move the value for now.
2021-07-23shader: Read branch conditions from an instructionReinUsesLisp7-5/+20
Fixes the identity removal pass.
2021-07-23glasm: Implement InstanceId and VertexIdReinUsesLisp1-0/+6
2021-07-23glasm: Add missing return value on move assignmentReinUsesLisp1-0/+1
2021-07-23glasm: Fix aliased bitcasts ref countingReinUsesLisp3-13/+42
2021-07-23glasm: Remove unintentional comma on vector insertReinUsesLisp1-1/+1
2021-07-23glasm: Implement TEX and TEXS instructionsReinUsesLisp6-47/+258
Remove lod clamp from texture instructions with lod, as this is not needed (nor supported).
2021-07-23glasm: Add support for non-2D texture samplesReinUsesLisp1-4/+26
2021-07-23glasm: Reorder unreachable image instructions to the bottomReinUsesLisp1-97/+97
2021-07-23glasm: Add support for texture offsetsReinUsesLisp1-11/+15
2021-07-23glasm: Improve texture sampling instructionsReinUsesLisp2-50/+70
2021-07-23emit_glasm: Enable ARB_draw_buffers when neededReinUsesLisp2-1/+5
2021-07-23emit_glasm: Add support for reading position attributesReinUsesLisp1-3/+13
2021-07-23shader_recompiler: GCC fixeslat9nq3-25/+25
Fixes members of unnamed union not being accessible, and one function without a declaration.
2021-07-23glasm: Implement rest of shared memameerj2-35/+29
2021-07-23emit_spirv: Jump to loop body with local variableReinUsesLisp1-1/+1
Silence unused variable warning
2021-07-23glasm: Implement derivative instructions on GLASMReinUsesLisp2-12/+12
2021-07-23glasm: Initial (broken) implementation of TEX on GLASMReinUsesLisp3-299/+386
2021-07-23glasm: Implement some graphics instructions on GLASMReinUsesLisp2-6/+5
2021-07-23glasm: Add Void type to GLASM valuesReinUsesLisp3-0/+15
2021-07-23glasm: Add graphics specific shader declarations to GLASMReinUsesLisp2-6/+63
2021-07-23glasm: Implement local memory for glasmameerj4-9/+12
2021-07-23emit_spirv: Add missing block in caseReinUsesLisp1-1/+2
2021-07-23glasm: Initial implementation of phi nodes on GLASMReinUsesLisp5-10/+88
2021-07-23glasm: Write result to scalar on integer comparison instructionsReinUsesLisp1-10/+10
2021-07-23glasm: Declare NV_shader_thread_group when neededReinUsesLisp1-3/+4
2021-07-23glasm: Rework control flow introducing a syntax listReinUsesLisp9-88/+116
This commit regresses VertexA shaders, their transformation pass has to be adapted to the new control flow.
2021-07-23glasm: Implement Storage atomicsameerj5-109/+156
StorageAtomicExchangeU64 is failing test seemingly due to failure storing 64-bit result into the register
2021-07-23glasm: Ensure reg alloc order across compilers on GLASMReinUsesLisp1-11/+14
Use a struct constructor to serialize register allocation arguments to ensure registers are allocated in the same order regardless of the compiler used. The A and B functions can be called in any order when passed as arguments to "foo": foo(A(), B()) But the order is guaranteed for curly-braced constructor calls in classes: Foo{A(), B()} Use this to get consistent behavior.
2021-07-23glasm: Enable unintentionally disabled register aliasing on GLASMReinUsesLisp1-16/+11
2021-07-23glasm: Review all GLASM insts to be aware of register aliasingReinUsesLisp4-20/+51
2021-07-23glasm: Implement shuffle and vote instructions on GLASMReinUsesLisp8-99/+162
2021-07-23glasm: Add MUFU instructions to GLASMReinUsesLisp2-21/+22
2021-07-23glasm: Implement IAbs64 and INeg64 on GLASMReinUsesLisp2-6/+6
2021-07-23glasm: Properly clamp Fp64 on GLASMReinUsesLisp1-6/+6
2021-07-23glasm: Fix register allocation when moving immediate on GLASMReinUsesLisp3-42/+89
2021-07-23glasm: Implement SelectU64 on GLASMReinUsesLisp2-4/+20
2021-07-23glasm: Fix clamps so the min value has priority on NAN on GLASMReinUsesLisp1-12/+15
2021-07-23glasm: Fix moving U64 immediates to registers in GLASMReinUsesLisp2-3/+4
2021-07-23glasm: Implement storage atomic opsameerj4-305/+358
2021-07-23glasm: Add conversion instructions to GLASMReinUsesLisp9-282/+351
2021-07-23glasm: Add fp min/max insts and fix store for fp64 on GLASMReinUsesLisp2-10/+8
2021-07-23glasm: Add logical instructions on GLASMReinUsesLisp2-12/+12
2021-07-23glasm: Remove duplicated Fp64 pack instructions on GLASMReinUsesLisp1-8/+0
2021-07-23glasm: Remove unnecesary new white space on Clamp GLASMReinUsesLisp1-4/+4
2021-07-23glasm: Add floating-point comparisons on GLASMReinUsesLisp3-120/+116
2021-07-23emit_glasm: Implement more integer alu opsameerj2-47/+41
2021-07-23glasm: Reimplement bitwise ops and BFI/BFEameerj4-88/+108
2021-07-23glasm: Initial GLASM fp64 supportReinUsesLisp9-55/+152
2021-07-23glasm: Implement GLASM fp16 packing and move bitwise insnsReinUsesLisp4-66/+77
2021-07-23glasm: Remove unused functions left from rebaseReinUsesLisp1-12/+0
2021-07-23glasm: Specify namespace when using FormatToReinUsesLisp1-6/+6
2021-07-23glasm: Implement more GLASM composite instructionsReinUsesLisp2-54/+63
2021-07-23glasm: Make GLASM aware of typesReinUsesLisp12-1244/+1380
2021-07-23glasm: Use CMP.S for Select32ameerj3-12/+8
also fixes ADD and SUB to use U modifier
2021-07-23glasm: Implement more logical opsameerj2-5/+5
2021-07-23glasm: Implement BFI, BFEameerj4-138/+164
Along with implementations of common instructions along the way
2021-07-23glasm: Use BitField instead of C bitfieldsReinUsesLisp2-8/+12
2021-07-23glasm: Remove unused argument in identity instructions on GLASMReinUsesLisp1-7/+7
2021-07-23glasm: Implement basic GLASM instructionsReinUsesLisp9-840/+1167
2021-07-23glasm: Changes to GLASM register allocator and emit contextReinUsesLisp4-26/+64
2021-07-23glasm: Add GLASM backend infrastructureReinUsesLisp26-0/+3079
2021-07-23shader: Fixup SPIR-V emit header namespacesReinUsesLisp1-2/+2
2021-07-23Move SPIR-V emission functions to their own headerReinUsesLisp23-572/+629
2021-07-23shader: Optimize NVN FallthroughFernandoS271-0/+3
2021-07-23shader: Implement Int32 SUATOM/SUREDameerj5-0/+233
2021-07-23spirv: Be aware of NAN unaware driversReinUsesLisp1-18/+40
2021-07-23spirv: Add SSBO read fallbacks when no aliasing is availableReinUsesLisp1-37/+99
2021-07-23spirv: Add OpKill fallback to demoteReinUsesLisp1-2/+6
2021-07-23spirv: Do not enable ShaderLayerReinUsesLisp1-3/+0
This is enabled by an extension instead of the capability.
2021-07-23spirv: Enable DemoteToHelperInvocationEXT only when supportedReinUsesLisp1-1/+1
2021-07-23spirv: Use OriginLowerLeft when requestedReinUsesLisp1-1/+5
2021-07-23spirv: Only add image operands mask when neededReinUsesLisp1-5/+9
2021-07-23spirv: Workaround image unsigned offset bugReinUsesLisp2-9/+26
Workaround bug on Nvidia's OpenGL SPIR-V compiler when using unsigned texture offsets.
2021-07-23spirv: Add int8 and int16 capabilities only when supportedReinUsesLisp1-2/+2
2021-07-23spirv: Add integer clamping workaroundsReinUsesLisp1-4/+34
Workaround more bugs on Nvidia's OpenGL SPIR-V compiler.
2021-07-23spirv: Implement int8 and int16 conversion fallbacksReinUsesLisp1-19/+80
2021-07-23spirv: Support OpenGL uniform buffers and change bindingsReinUsesLisp5-56/+163
2021-07-23spirv: Desambiguate descriptor namesReinUsesLisp1-9/+37
Worksaround a bug on Nvidia's OpenGL SPIR-V compiler where names are used for name matching.
2021-07-23shader: Implement VertexA stageFernandoS272-0/+5
2021-07-23shader: Fix storage type when reading patches on tess controlReinUsesLisp1-1/+2
2021-07-23shader: Implement indexed texturesReinUsesLisp3-56/+92
2021-07-23shader: Move microinstruction header to the value headerReinUsesLisp2-2/+0
2021-07-23shader: Add NVN storage buffer fallbacksReinUsesLisp5-24/+109
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-23spirv: Fix ViewportMaskReinUsesLisp1-1/+2
2021-07-23spirv: Replace Constant/ConstantComposite with Const helperameerj12-112/+101
2021-07-23shader: Address feedbackFernandoS272-5/+2
2021-07-23shader: Add coarse derivativesFernandoS272-0/+12
2021-07-23shader: Implement fine derivates constant propagationFernandoS273-0/+15
2021-07-23shader: Implement SR_Y_DIRECTIONFernandoS272-0/+8
2021-07-23shader: Fix memory barriersReinUsesLisp2-12/+7
2021-07-23spirv: Fix implicit lod typeReinUsesLisp2-1/+5
2021-07-23spirv: Use explicit lods outside of fragment shadersReinUsesLisp1-5/+16
2021-07-23spirv: Use ConstOffset instead of Offset when possibleReinUsesLisp3-21/+67
2021-07-23shader: Implement BFE and BFI CCameerj1-2/+1
Fix two bugs in BFI.
2021-07-23shader: Implement SampleMaskReinUsesLisp4-1/+10
2021-07-23shader: Implement PIXLD.MY_INDEXReinUsesLisp5-0/+12
2021-07-23spirv: Bitcast non-F32 output attributes to their type before storeReinUsesLisp1-13/+28
2021-07-23spirv: Implement ViewportMask with NV_viewport_array2ReinUsesLisp4-0/+15
2021-07-23spirv: Bitcast non-F32 attributes to F32ReinUsesLisp1-7/+9
2021-07-23shader: Implement PrimitiveIdReinUsesLisp3-0/+6
2021-07-23shader: Implement tessellation shaders, polygon mode and invocation idReinUsesLisp5-55/+232
2021-07-23spirv: Implement image buffersReinUsesLisp3-22/+58
2021-07-23spirv: Implement Layer storesReinUsesLisp4-9/+26
2021-07-23spirv: Fix alpha testFernandoS271-0/+5
2021-07-23spirv: Fix non-atomic 64-bit storeameerj1-1/+1
2021-07-23spirv: Implement alpha testameerj1-0/+45
2021-07-23shader: Implement transform feedbacks and define file formatReinUsesLisp5-16/+97
2021-07-23shader: Implement early Z testsReinUsesLisp1-0/+3
2021-07-23spirv: Rework storage buffers and shader memoryReinUsesLisp6-492/+487
2021-07-23shader: Fix fixed pipeline point size on geometry shadersReinUsesLisp1-10/+18
2021-07-23shader: Implement geometry shadersReinUsesLisp5-65/+163
2021-07-23shader: Implement OUTReinUsesLisp2-0/+10
2021-07-23spirv: Define StorageImageWriteWithoutFormat capability when usedReinUsesLisp1-0/+3
2021-07-23shader: Implement LOP CCReinUsesLisp2-9/+18
2021-07-23shader: Implement SR_THREAD_KILLReinUsesLisp4-0/+9
2021-07-23shader: Implement ATOM/S and REDameerj5-4/+800
2021-07-23spirv: Move phi node patching to a separate functionReinUsesLisp1-13/+16
2021-07-23spirv: Guard against typeless image reads on unsupported devicesReinUsesLisp2-1/+7
2021-07-23shader: Move LaneId to the warp emission file and fix AMDReinUsesLisp3-5/+9
2021-07-23spirv: Fix forward declarations on phi nodesReinUsesLisp1-47/+25
2021-07-23shader: Implement SULD and SUSTReinUsesLisp5-29/+130
2021-07-23shader: Address feedback + clang formatlat9nq2-5/+0
2021-07-23shader_recompiler,video_core: Cleanup some GCC and Clang errorslat9nq4-14/+22
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: Interact texture buffers with buffer cacheReinUsesLisp2-28/+28
2021-07-23shader: Fix TextureGradReinUsesLisp1-1/+1
2021-07-23shader: Implement texture buffersReinUsesLisp4-5/+54
2021-07-23shader: Address feedbackFernandoS271-20/+20
2021-07-23shader: Implement indexed Position and ClipDistancesFernandoS271-0/+40
2021-07-23shader: Implement indexed attributesFernandoS274-6/+134
2021-07-23shader: Fix ShadowCube declaration type, set number of pipeline threads based on hardwareFernandoS271-1/+1
2021-07-23shader: Add subgroup masksReinUsesLisp4-10/+56
2021-07-23shader: Implement BAR and fix memory barriersReinUsesLisp2-3/+13
2021-07-23shader: Reimplement GetCbufU64 as GetCbufU32x2ReinUsesLisp4-6/+6
It may generate better code on some compilers and it's easier to handle.
2021-07-23shader: Address FeedbackFernandoS276-71/+26
2021-07-23shader: Implement SR_LaneIdFernandoS272-0/+5
2021-07-23shader: Fix shared memory on cool driversFernandoS271-0/+1
2021-07-23shader: Implement MEMBARFernandoS272-0/+41
2021-07-23shader: Improve VOTE.VTG stubFernandoS272-0/+40
2021-07-23shader: Implement ViewportIndexFernandoS274-2/+27
2021-07-23shader: Stub TLD4's PTP when it isn't constantFernandoS271-1/+2
2021-07-23shader: Fix branches to visited virtual blocksReinUsesLisp1-0/+2
2021-07-23shader: Fix dependency on identity removal passReinUsesLisp2-3/+8
2021-07-23spirv: Remove unnecesary variable for clip distancesReinUsesLisp2-6/+2
2021-07-23shader: Implement ClipDistanceFernandoS273-0/+25
2021-07-23shader: Fix TXDFernandoS271-1/+1
2021-07-23shader: Address feedbackFernandoS271-15/+15
2021-07-23shader: Implement ImageGradientFernandoS272-1/+54
2021-07-23shader: Implement TMML partiallyFernandoS271-2/+2
2021-07-23shader,spirv: Implement ImageQueryLod.FernandoS274-0/+20
2021-07-23shader: Implement TLDFernandoS271-1/+1
2021-07-23spirv: Add fixed pipeline point sizeReinUsesLisp2-1/+5
2021-07-23shader: Add PointCoord attributeFernandoS273-0/+11
2021-07-23shader: Add PointSize attributeameerj3-0/+9
2021-07-23shader: Store type of phi nodes in flagsReinUsesLisp1-1/+2
This is needed because pseudo-instructions where invalidated.
2021-07-23spirv: Fix default output attribute initializationReinUsesLisp1-3/+3
2021-07-23shader: Implement FSWZADDameerj4-0/+27
2021-07-23shader: Implement BRXFernandoS273-2/+15
2021-07-23shader: Implement I2I CCameerj2-21/+41
2021-07-23shader: Implement I2I SATameerj2-0/+10
2021-07-23shader: Implement LDS, STS, LDL, and STS and use SPIR-V 1.4 when availableReinUsesLisp5-1/+334
2021-07-23shader: Better interpolation and disabled attributes supportReinUsesLisp2-12/+46
2021-07-23spirv: Remove dependencies on Environment when generating SPIR-VReinUsesLisp2-9/+7
2021-07-23shader: Implement front faceReinUsesLisp3-0/+8
2021-07-23shader: Implement TXQ and fix FragDepthReinUsesLisp5-8/+64
2021-07-23shader: Refactor PTP and other minor changesReinUsesLisp5-56/+46
2021-07-23shader: Add IR opcode for ImageFetchFernandoS273-3/+35
2021-07-23shader: Implement TLD4.PTPFernandoS275-9/+40
2021-07-23shader: Implement FragDepthFernandoS271-0/+6
2021-07-23shader: Implement TLD4 and TLD4_BFernandoS272-0/+48
2021-07-23shader: Implement SHFLameerj5-60/+151
2021-07-23shader: Fix F2IFernandoS272-4/+19
2021-07-23shader: Implement NDC [-1, 1], attribute types and default varying initializationReinUsesLisp5-39/+112
2021-07-23shader: Implement VOTEameerj5-1/+77
2021-07-23shader: Implement DMNMX, DSET, DSETPameerj3-18/+26
2021-07-23shader: Add support for fp16 comparisons and misc fixesReinUsesLisp2-0/+10
2021-07-23spirv: Implement VertexId and InstanceId, refactor codeReinUsesLisp6-144/+234
2021-07-23shader: Implement I2FReinUsesLisp4-0/+67
2021-07-23shader: Add partial rasterizer integrationReinUsesLisp6-50/+172
2021-07-23shader: Implement DADDameerj1-0/+2
2021-07-23shader: Implement FSET and FSETPameerj1-2/+4
Also fix oversight with adding SignedZeroInfNanPreserve execution mode.
2021-07-23shader: Implement TEXSReinUsesLisp1-1/+10
2021-07-23shader: Implement CAL inlining function callsReinUsesLisp2-15/+8
2021-07-23spirv: Add SignedZeroInfNanPreserve logicameerj1-0/+6
2021-07-23shader: Implement FMNMXameerj2-12/+12
And add a const in FCMP
2021-07-23shader: Implement FCMPameerj2-0/+5
still need to configure some settings for NV denorm flush and intel NaN
2021-07-23shader: Partial implementation of LDCReinUsesLisp4-25/+124
2021-07-23shader: Initial support for textures and TEXReinUsesLisp7-5/+327
2021-07-23shader: Implement R2Pameerj3-3/+13
2021-07-23shader: Implement SHFameerj2-9/+19
2021-07-23shader: Implement LEAameerj3-3/+13
2021-07-23shader: Implement HADD2ReinUsesLisp3-18/+98
2021-07-23shader: Implement FLOameerj2-3/+13
2021-07-23shader: Implement IMNMXameerj2-0/+20
2021-07-23shader: Implement POPCameerj2-0/+10
2021-07-23shader: Implement SHRameerj2-6/+11
2021-07-23spirv: Move phi arguments emit to a separate functionReinUsesLisp1-27/+27
2021-07-23spirv: Add support for self-referencing phi nodesReinUsesLisp1-3/+10
2021-07-23shader: Implement more of XMAD and FFMA32I and fix XMAD.CBCCReinUsesLisp2-6/+6
2021-07-23shader: FMUL, select, RRO, and MUFU fixesReinUsesLisp3-52/+228
2021-07-23shader: Fix MOV(reg), add SHL variants and emit neg and abs instructionsReinUsesLisp2-6/+6
2021-07-23spirv: Fixes and Intel specific workaroundsReinUsesLisp6-20/+31
2021-07-23shader: Rename, implement FADD.SAT and P2R (imm)ReinUsesLisp4-79/+98
2021-07-23shader: Add denorm flush supportReinUsesLisp3-9/+64
2021-07-23spirv: Add lower fp16 to fp32 passReinUsesLisp12-210/+255
2021-07-23shader: Primitive Vulkan integrationReinUsesLisp13-467/+461
2021-07-23spirv: Implement EmitIdentityReinUsesLisp2-3/+3
2021-07-23spirv: Initial bindings supportReinUsesLisp12-218/+408
2021-07-23shader: Add support for forward declarationsReinUsesLisp2-52/+49
2021-07-23shader: Support SSA loops on IRReinUsesLisp3-15/+15
2021-07-23shader: Misc fixesReinUsesLisp2-0/+11
2021-07-23shader: Initial implementation of an ASTReinUsesLisp5-41/+67
2021-07-23spirv: Initial SPIR-V supportReinUsesLisp12-3/+1359
2021-07-23shader: Add pools and rename filesReinUsesLisp1-0/+21