summaryrefslogtreecommitdiffstats
path: root/src/shader_recompiler/backend (follow)
Commit message (Collapse)AuthorAgeFilesLines
* glasm: Implement Storage atomicsameerj2021-07-235-109/+156
| | | | | StorageAtomicExchangeU64 is failing test seemingly due to failure storing 64-bit result into the register
* glasm: Ensure reg alloc order across compilers on GLASMReinUsesLisp2021-07-231-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.
* glasm: Enable unintentionally disabled register aliasing on GLASMReinUsesLisp2021-07-231-16/+11
|
* glasm: Review all GLASM insts to be aware of register aliasingReinUsesLisp2021-07-234-20/+51
|
* glasm: Implement shuffle and vote instructions on GLASMReinUsesLisp2021-07-238-99/+162
|
* glasm: Add MUFU instructions to GLASMReinUsesLisp2021-07-232-21/+22
|
* glasm: Implement IAbs64 and INeg64 on GLASMReinUsesLisp2021-07-232-6/+6
|
* glasm: Properly clamp Fp64 on GLASMReinUsesLisp2021-07-231-6/+6
|
* glasm: Fix register allocation when moving immediate on GLASMReinUsesLisp2021-07-233-42/+89
|
* glasm: Implement SelectU64 on GLASMReinUsesLisp2021-07-232-4/+20
|
* glasm: Fix clamps so the min value has priority on NAN on GLASMReinUsesLisp2021-07-231-12/+15
|
* glasm: Fix moving U64 immediates to registers in GLASMReinUsesLisp2021-07-232-3/+4
|
* glasm: Implement storage atomic opsameerj2021-07-234-305/+358
|
* glasm: Add conversion instructions to GLASMReinUsesLisp2021-07-239-282/+351
|
* glasm: Add fp min/max insts and fix store for fp64 on GLASMReinUsesLisp2021-07-232-10/+8
|
* glasm: Add logical instructions on GLASMReinUsesLisp2021-07-232-12/+12
|
* glasm: Remove duplicated Fp64 pack instructions on GLASMReinUsesLisp2021-07-231-8/+0
|
* glasm: Remove unnecesary new white space on Clamp GLASMReinUsesLisp2021-07-231-4/+4
|
* glasm: Add floating-point comparisons on GLASMReinUsesLisp2021-07-233-120/+116
|
* emit_glasm: Implement more integer alu opsameerj2021-07-232-47/+41
|
* glasm: Reimplement bitwise ops and BFI/BFEameerj2021-07-234-88/+108
|
* glasm: Initial GLASM fp64 supportReinUsesLisp2021-07-239-55/+152
|
* glasm: Implement GLASM fp16 packing and move bitwise insnsReinUsesLisp2021-07-234-66/+77
|
* glasm: Remove unused functions left from rebaseReinUsesLisp2021-07-231-12/+0
|
* glasm: Specify namespace when using FormatToReinUsesLisp2021-07-231-6/+6
|
* glasm: Implement more GLASM composite instructionsReinUsesLisp2021-07-232-54/+63
|
* glasm: Make GLASM aware of typesReinUsesLisp2021-07-2312-1244/+1380
|
* glasm: Use CMP.S for Select32ameerj2021-07-233-12/+8
| | | | also fixes ADD and SUB to use U modifier
* glasm: Implement more logical opsameerj2021-07-232-5/+5
|
* glasm: Implement BFI, BFEameerj2021-07-234-138/+164
| | | | Along with implementations of common instructions along the way
* glasm: Use BitField instead of C bitfieldsReinUsesLisp2021-07-232-8/+12
|
* glasm: Remove unused argument in identity instructions on GLASMReinUsesLisp2021-07-231-7/+7
|
* glasm: Implement basic GLASM instructionsReinUsesLisp2021-07-239-840/+1167
|
* glasm: Changes to GLASM register allocator and emit contextReinUsesLisp2021-07-234-26/+64
|
* glasm: Add GLASM backend infrastructureReinUsesLisp2021-07-2326-0/+3079
|
* shader: Fixup SPIR-V emit header namespacesReinUsesLisp2021-07-231-2/+2
|
* Move SPIR-V emission functions to their own headerReinUsesLisp2021-07-2323-572/+629
|
* shader: Optimize NVN FallthroughFernandoS272021-07-231-0/+3
|
* shader: Implement Int32 SUATOM/SUREDameerj2021-07-235-0/+233
|
* spirv: Be aware of NAN unaware driversReinUsesLisp2021-07-231-18/+40
|
* spirv: Add SSBO read fallbacks when no aliasing is availableReinUsesLisp2021-07-231-37/+99
|
* spirv: Add OpKill fallback to demoteReinUsesLisp2021-07-231-2/+6
|
* spirv: Do not enable ShaderLayerReinUsesLisp2021-07-231-3/+0
| | | | This is enabled by an extension instead of the capability.
* spirv: Enable DemoteToHelperInvocationEXT only when supportedReinUsesLisp2021-07-231-1/+1
|
* spirv: Use OriginLowerLeft when requestedReinUsesLisp2021-07-231-1/+5
|
* spirv: Only add image operands mask when neededReinUsesLisp2021-07-231-5/+9
|
* spirv: Workaround image unsigned offset bugReinUsesLisp2021-07-232-9/+26
| | | | | Workaround bug on Nvidia's OpenGL SPIR-V compiler when using unsigned texture offsets.
* spirv: Add int8 and int16 capabilities only when supportedReinUsesLisp2021-07-231-2/+2
|
* spirv: Add integer clamping workaroundsReinUsesLisp2021-07-231-4/+34
| | | | Workaround more bugs on Nvidia's OpenGL SPIR-V compiler.
* spirv: Implement int8 and int16 conversion fallbacksReinUsesLisp2021-07-231-19/+80
|
* spirv: Support OpenGL uniform buffers and change bindingsReinUsesLisp2021-07-235-56/+163
|
* spirv: Desambiguate descriptor namesReinUsesLisp2021-07-231-9/+37
| | | | | Worksaround a bug on Nvidia's OpenGL SPIR-V compiler where names are used for name matching.
* shader: Implement VertexA stageFernandoS272021-07-232-0/+5
|
* shader: Fix storage type when reading patches on tess controlReinUsesLisp2021-07-231-1/+2
|
* shader: Implement indexed texturesReinUsesLisp2021-07-233-56/+92
|
* shader: Move microinstruction header to the value headerReinUsesLisp2021-07-232-2/+0
|
* shader: Add NVN storage buffer fallbacksReinUsesLisp2021-07-235-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.
* spirv: Fix ViewportMaskReinUsesLisp2021-07-231-1/+2
|
* spirv: Replace Constant/ConstantComposite with Const helperameerj2021-07-2312-112/+101
|
* shader: Address feedbackFernandoS272021-07-232-5/+2
|
* shader: Add coarse derivativesFernandoS272021-07-232-0/+12
|
* shader: Implement fine derivates constant propagationFernandoS272021-07-233-0/+15
|
* shader: Implement SR_Y_DIRECTIONFernandoS272021-07-232-0/+8
|
* shader: Fix memory barriersReinUsesLisp2021-07-232-12/+7
|
* spirv: Fix implicit lod typeReinUsesLisp2021-07-232-1/+5
|
* spirv: Use explicit lods outside of fragment shadersReinUsesLisp2021-07-231-5/+16
|
* spirv: Use ConstOffset instead of Offset when possibleReinUsesLisp2021-07-233-21/+67
|
* shader: Implement BFE and BFI CCameerj2021-07-231-2/+1
| | | | Fix two bugs in BFI.
* shader: Implement SampleMaskReinUsesLisp2021-07-234-1/+10
|
* shader: Implement PIXLD.MY_INDEXReinUsesLisp2021-07-235-0/+12
|
* spirv: Bitcast non-F32 output attributes to their type before storeReinUsesLisp2021-07-231-13/+28
|
* spirv: Implement ViewportMask with NV_viewport_array2ReinUsesLisp2021-07-234-0/+15
|
* spirv: Bitcast non-F32 attributes to F32ReinUsesLisp2021-07-231-7/+9
|
* shader: Implement PrimitiveIdReinUsesLisp2021-07-233-0/+6
|
* shader: Implement tessellation shaders, polygon mode and invocation idReinUsesLisp2021-07-235-55/+232
|
* spirv: Implement image buffersReinUsesLisp2021-07-233-22/+58
|
* spirv: Implement Layer storesReinUsesLisp2021-07-234-9/+26
|
* spirv: Fix alpha testFernandoS272021-07-231-0/+5
|
* spirv: Fix non-atomic 64-bit storeameerj2021-07-231-1/+1
|
* spirv: Implement alpha testameerj2021-07-231-0/+45
|
* shader: Implement transform feedbacks and define file formatReinUsesLisp2021-07-235-16/+97
|
* shader: Implement early Z testsReinUsesLisp2021-07-231-0/+3
|
* spirv: Rework storage buffers and shader memoryReinUsesLisp2021-07-236-492/+487
|
* shader: Fix fixed pipeline point size on geometry shadersReinUsesLisp2021-07-231-10/+18
|
* shader: Implement geometry shadersReinUsesLisp2021-07-235-65/+163
|
* shader: Implement OUTReinUsesLisp2021-07-232-0/+10
|
* spirv: Define StorageImageWriteWithoutFormat capability when usedReinUsesLisp2021-07-231-0/+3
|
* shader: Implement LOP CCReinUsesLisp2021-07-232-9/+18
|
* shader: Implement SR_THREAD_KILLReinUsesLisp2021-07-234-0/+9
|
* shader: Implement ATOM/S and REDameerj2021-07-235-4/+800
|
* spirv: Move phi node patching to a separate functionReinUsesLisp2021-07-231-13/+16
|
* spirv: Guard against typeless image reads on unsupported devicesReinUsesLisp2021-07-232-1/+7
|
* shader: Move LaneId to the warp emission file and fix AMDReinUsesLisp2021-07-233-5/+9
|
* spirv: Fix forward declarations on phi nodesReinUsesLisp2021-07-231-47/+25
|
* shader: Implement SULD and SUSTReinUsesLisp2021-07-235-29/+130
|
* shader: Address feedback + clang formatlat9nq2021-07-232-5/+0
|
* shader_recompiler,video_core: Cleanup some GCC and Clang errorslat9nq2021-07-234-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>
* shader: Interact texture buffers with buffer cacheReinUsesLisp2021-07-232-28/+28
|
* shader: Fix TextureGradReinUsesLisp2021-07-231-1/+1
|
* shader: Implement texture buffersReinUsesLisp2021-07-234-5/+54
|
* shader: Address feedbackFernandoS272021-07-231-20/+20
|
* shader: Implement indexed Position and ClipDistancesFernandoS272021-07-231-0/+40
|
* shader: Implement indexed attributesFernandoS272021-07-234-6/+134
|
* shader: Fix ShadowCube declaration type, set number of pipeline threads based on hardwareFernandoS272021-07-231-1/+1
|
* shader: Add subgroup masksReinUsesLisp2021-07-234-10/+56
|
* shader: Implement BAR and fix memory barriersReinUsesLisp2021-07-232-3/+13
|
* shader: Reimplement GetCbufU64 as GetCbufU32x2ReinUsesLisp2021-07-234-6/+6
| | | | It may generate better code on some compilers and it's easier to handle.
* shader: Address FeedbackFernandoS272021-07-236-71/+26
|
* shader: Implement SR_LaneIdFernandoS272021-07-232-0/+5
|
* shader: Fix shared memory on cool driversFernandoS272021-07-231-0/+1
|
* shader: Implement MEMBARFernandoS272021-07-232-0/+41
|
* shader: Improve VOTE.VTG stubFernandoS272021-07-232-0/+40
|
* shader: Implement ViewportIndexFernandoS272021-07-234-2/+27
|
* shader: Stub TLD4's PTP when it isn't constantFernandoS272021-07-231-1/+2
|
* shader: Fix branches to visited virtual blocksReinUsesLisp2021-07-231-0/+2
|
* shader: Fix dependency on identity removal passReinUsesLisp2021-07-232-3/+8
|
* spirv: Remove unnecesary variable for clip distancesReinUsesLisp2021-07-232-6/+2
|
* shader: Implement ClipDistanceFernandoS272021-07-233-0/+25
|
* shader: Fix TXDFernandoS272021-07-231-1/+1
|
* shader: Address feedbackFernandoS272021-07-231-15/+15
|
* shader: Implement ImageGradientFernandoS272021-07-232-1/+54
|
* shader: Implement TMML partiallyFernandoS272021-07-231-2/+2
|
* shader,spirv: Implement ImageQueryLod.FernandoS272021-07-234-0/+20
|
* shader: Implement TLDFernandoS272021-07-231-1/+1
|
* spirv: Add fixed pipeline point sizeReinUsesLisp2021-07-232-1/+5
|
* shader: Add PointCoord attributeFernandoS272021-07-233-0/+11
|
* shader: Add PointSize attributeameerj2021-07-233-0/+9
|
* shader: Store type of phi nodes in flagsReinUsesLisp2021-07-231-1/+2
| | | | This is needed because pseudo-instructions where invalidated.
* spirv: Fix default output attribute initializationReinUsesLisp2021-07-231-3/+3
|
* shader: Implement FSWZADDameerj2021-07-234-0/+27
|
* shader: Implement BRXFernandoS272021-07-233-2/+15
|
* shader: Implement I2I CCameerj2021-07-232-21/+41
|
* shader: Implement I2I SATameerj2021-07-232-0/+10
|
* shader: Implement LDS, STS, LDL, and STS and use SPIR-V 1.4 when availableReinUsesLisp2021-07-235-1/+334
|
* shader: Better interpolation and disabled attributes supportReinUsesLisp2021-07-232-12/+46
|
* spirv: Remove dependencies on Environment when generating SPIR-VReinUsesLisp2021-07-232-9/+7
|
* shader: Implement front faceReinUsesLisp2021-07-233-0/+8
|
* shader: Implement TXQ and fix FragDepthReinUsesLisp2021-07-235-8/+64
|
* shader: Refactor PTP and other minor changesReinUsesLisp2021-07-235-56/+46
|
* shader: Add IR opcode for ImageFetchFernandoS272021-07-233-3/+35
|
* shader: Implement TLD4.PTPFernandoS272021-07-235-9/+40
|
* shader: Implement FragDepthFernandoS272021-07-231-0/+6
|
* shader: Implement TLD4 and TLD4_BFernandoS272021-07-232-0/+48
|
* shader: Implement SHFLameerj2021-07-235-60/+151
|
* shader: Fix F2IFernandoS272021-07-232-4/+19
|
* shader: Implement NDC [-1, 1], attribute types and default varying initializationReinUsesLisp2021-07-235-39/+112
|
* shader: Implement VOTEameerj2021-07-235-1/+77
|
* shader: Implement DMNMX, DSET, DSETPameerj2021-07-233-18/+26
|
* shader: Add support for fp16 comparisons and misc fixesReinUsesLisp2021-07-232-0/+10
|
* spirv: Implement VertexId and InstanceId, refactor codeReinUsesLisp2021-07-236-144/+234
|
* shader: Implement I2FReinUsesLisp2021-07-234-0/+67
|
* shader: Add partial rasterizer integrationReinUsesLisp2021-07-236-50/+172
|
* shader: Implement DADDameerj2021-07-231-0/+2
|
* shader: Implement FSET and FSETPameerj2021-07-231-2/+4
| | | | Also fix oversight with adding SignedZeroInfNanPreserve execution mode.
* shader: Implement TEXSReinUsesLisp2021-07-231-1/+10
|
* shader: Implement CAL inlining function callsReinUsesLisp2021-07-232-15/+8
|
* spirv: Add SignedZeroInfNanPreserve logicameerj2021-07-231-0/+6
|
* shader: Implement FMNMXameerj2021-07-232-12/+12
| | | | And add a const in FCMP
* shader: Implement FCMPameerj2021-07-232-0/+5
| | | | still need to configure some settings for NV denorm flush and intel NaN
* shader: Partial implementation of LDCReinUsesLisp2021-07-234-25/+124
|
* shader: Initial support for textures and TEXReinUsesLisp2021-07-237-5/+327
|
* shader: Implement R2Pameerj2021-07-233-3/+13
|
* shader: Implement SHFameerj2021-07-232-9/+19
|
* shader: Implement LEAameerj2021-07-233-3/+13
|
* shader: Implement HADD2ReinUsesLisp2021-07-233-18/+98
|
* shader: Implement FLOameerj2021-07-232-3/+13
|
* shader: Implement IMNMXameerj2021-07-232-0/+20
|
* shader: Implement POPCameerj2021-07-232-0/+10
|
* shader: Implement SHRameerj2021-07-232-6/+11
|
* spirv: Move phi arguments emit to a separate functionReinUsesLisp2021-07-231-27/+27
|
* spirv: Add support for self-referencing phi nodesReinUsesLisp2021-07-231-3/+10
|
* shader: Implement more of XMAD and FFMA32I and fix XMAD.CBCCReinUsesLisp2021-07-232-6/+6
|
* shader: FMUL, select, RRO, and MUFU fixesReinUsesLisp2021-07-233-52/+228
|
* shader: Fix MOV(reg), add SHL variants and emit neg and abs instructionsReinUsesLisp2021-07-232-6/+6
|
* spirv: Fixes and Intel specific workaroundsReinUsesLisp2021-07-236-20/+31
|
* shader: Rename, implement FADD.SAT and P2R (imm)ReinUsesLisp2021-07-234-79/+98
|
* shader: Add denorm flush supportReinUsesLisp2021-07-233-9/+64
|
* spirv: Add lower fp16 to fp32 passReinUsesLisp2021-07-2312-210/+255
|
* shader: Primitive Vulkan integrationReinUsesLisp2021-07-2313-467/+461
|
* spirv: Implement EmitIdentityReinUsesLisp2021-07-232-3/+3
|
* spirv: Initial bindings supportReinUsesLisp2021-07-2312-218/+408
|
* shader: Add support for forward declarationsReinUsesLisp2021-07-232-52/+49
|
* shader: Support SSA loops on IRReinUsesLisp2021-07-233-15/+15
|
* shader: Misc fixesReinUsesLisp2021-07-232-0/+11
|
* shader: Initial implementation of an ASTReinUsesLisp2021-07-235-41/+67
|
* spirv: Initial SPIR-V supportReinUsesLisp2021-07-2312-3/+1359
|
* shader: Add pools and rename filesReinUsesLisp2021-07-231-0/+21