summaryrefslogtreecommitdiffstats
path: root/src/shader_recompiler/backend/spirv (unfollow)
Commit message (Collapse)AuthorFilesLines
2022-03-22Include <bit> header when std::count{r,l}_zero is usedBilly Laws3-0/+4
Needed for compilation with older libc++ releases
2022-03-20shader_recompiler: Reduce unused includesameerj16-18/+0
2022-03-17Address review commentsLiam2-19/+7
2022-03-17shader_recompiler: Use functions for indirect const buffer accessesLiam3-39/+91
2022-03-17Address review commentsLiam1-16/+15
2022-03-15shader: add support for const buffer indirect addressingLiam1-10/+41
2022-03-12emit_spirv, vk_compute_pass: Resolve VS2022 compiler errorsameerj1-1/+1
2022-01-30shaders: Add U64->U32x2 Atomic fallback functionsameerj2-1/+148
2022-01-29spirv_atomic: Define U32x2 storage buffers for 64-bit storage atomicsameerj1-2/+2
Some drivers do not support 64-bit atomics, and fallback to atomically modifying U32x2 vectors. This change ensures that U32x2 storage vectors are defined in the spir-v shader when 64-bit atomics are used. Fixes a hang on some devices, notably Intel GPUs, when booting Pokemon Legends Arceus
2022-01-28emit_spirv: Add Xfb execution mode when transform feedback is usedameerj1-3/+9
Fixes Transform Feedback on Vulkan AMD drivers.
2022-01-17shader_recompiler: fix potential OOB accessv19931-3/+4
Found by static analysis with PVS-Studio. Original check wasn't actually checking for OOB and would segfault in case of it.
2021-12-30shader: Add integer attribute get optimization passameerj2-0/+26
Works around an nvidia driver bug, where casting the integer attributes to float and back to an integer always returned 0.
2021-12-28Empty spacesMatías Locatti1-1/+1
2021-12-28Changes to avoid warnings in SSE4.2 optimized SPIR-VMatías Locatti1-0/+9
2021-12-18Remove spirv handle legacy related codevonchenplus3-189/+0
2021-12-06emit_spirv: Reduce emit_spirv.h include overheadameerj20-3/+20
emit_spirv.h is included in video_core, which was propagating further includes that video_core did not depend on.
2021-12-06shader_recompiler: Adjust emit_context includesameerj2-2/+2
2021-12-05shader_recompiler: Rename backend emit_context filesameerj2-0/+0
2021-11-16vulkan: Fix rescaling push constant usageameerj4-34/+36
2021-11-16shader, video_core: Fix GCC build errorsameerj1-4/+0
2021-11-16emit_spirv: Fix RescalingLayout alignmentameerj1-0/+1
2021-11-16emit_spirv: Fix RescalingLayout alignmentameerj1-2/+2
2021-11-16shader: Properly scale image reads and add GL SPIR-V supportReinUsesLisp6-44/+136
Thanks for everything!
2021-11-16spirv: Implement rescaling patchingReinUsesLisp5-5/+72
2021-11-16shader: Add IsTextureScaled opcodeReinUsesLisp2-0/+5
2021-11-16shader: Add integer division opcodesReinUsesLisp2-0/+10
2021-11-16shader: Add resolution down factor opcodeReinUsesLisp2-0/+6
2021-11-04Simply legacy attribute implementFeng Chen3-152/+125
2021-10-31Support gl_FogFragCoord attributevonchenplus3-48/+58
2021-10-26Support gl_BackSecondaryColor attributevonchenplus3-0/+33
2021-10-26Support gl_FrontSecondaryColor attributevonchenplus3-0/+33
2021-10-26Support gl_BackColor attributevonchenplus3-0/+33
2021-10-17emit_spirv_image: Fix depth image implicit lod sample in computeameerj1-5/+16
Ensures all drivers behave the same way in this case.
2021-09-15Spir-V: Rescale the frag depth to 0,1 mode when -1,1 mode is used in Vulkan.Fernando Sahmkow1-1/+7
2021-09-08Detail adjustmentFeng Chen1-13/+14
2021-09-08Detail adjustmentFeng Chen2-28/+35
2021-09-07Re-implement get unused locationFeng Chen1-30/+30
2021-09-07Move attribute related definitions to spirv anonymous namespaceFeng Chen2-5/+26
2021-09-06Dynamic get unused locationFeng Chen1-27/+49
2021-09-06Implement intput and output fixed fnc texturesFeng Chen3-19/+23
2021-09-03Rename parametersFeng Chen3-9/+9
2021-09-03Fix create GraphicsPipelines crashFeng Chen1-5/+5
2021-09-02Add input/output locationFeng Chen1-5/+13
2021-08-31emit_spirv_warp: Fix shuffle ops for 64-thread warp sizesameerj1-1/+29
2021-08-31emit_spirv_warp: Fix ballot related ops for 64-thread warp sizesameerj1-10/+11
2021-08-31Add colorfront and txtcoord supportFeng Chen3-0/+44
2021-08-27emit_spirv_context_get_set: Fix Get FrontFace return valueameerj1-2/+3
The IR expects GetAttribute to return an F32 value. This case was returning a U32 instead.
2021-08-19SPIR-V: Merge two ifs in EmitGetAttributeValeri1-6/+2
2021-07-26emit_spirv_instructions: Add missing header guardLioncash1-0/+2
2021-07-23shader: Fix disabled attribute default valuesameerj1-1/+1
2021-07-23shader_recompiler, video_core: Resolve clang errorslat9nq1-5/+10
Silences the following warnings-turned-errors: -Wsign-conversion -Wunused-private-field -Wbraced-scalar-init -Wunused-variable And some other errors
2021-07-23shader: Ignore global memory ops on devices lacking int64 supportameerj2-7/+31
2021-07-23emit_spirv: Workaround VK_KHR_shader_float_controls on fp16 NvidiaReinUsesLisp1-5/+8
Fix regression on Fire Emblem: Three Houses when using native fp16.
2021-07-23shader: GCC fmt 8.0.0 fixeslat9nq1-2/+3
2021-07-23shader: Fix disabled and unwritten attributes and varyingsReinUsesLisp1-1/+5
2021-07-23spirv: Fix code emission when descriptor aliasing is unsupportedReinUsesLisp1-1/+2
Fixes OpenGL.
2021-07-23shader: Rework varyings and implement passthrough geometry shadersReinUsesLisp4-50/+70
Put all varyings into a single std::bitset with helpers to access it. Implement passthrough geometry shaders using host's.
2021-07-23shader: Remove IAbs64ReinUsesLisp2-5/+0
2021-07-23shader: Move loop safety tests to code emissionReinUsesLisp3-11/+18
2021-07-23spirv: Properly handle devices without int8 and int16ReinUsesLisp2-39/+67
2021-07-23spirv: Handle small storage buffer loads on devices with no supportReinUsesLisp2-6/+6
2021-07-23shader: Properly manage attributes not written from previous stagesReinUsesLisp2-1/+4
2021-07-23shader: Split profile and runtime info headersReinUsesLisp1-0/+1
2021-07-23spirv: Reduce log severity of mismatching denorm rulesReinUsesLisp1-2/+2
2021-07-23shader: Add loggingReinUsesLisp4-11/+11
2021-07-23shader: Add shader loop safety check settingslat9nq2-8/+18
Also add a setting for enable Nsight Aftermath.
2021-07-23spirv/convert: Catch more signed operations oversightsameerj1-5/+5
The sign bit on integers of size < 32 was not properly preserved in casts
2021-07-23spirv/convert: Catch more broken signed operations on Nvidia OpenGLReinUsesLisp1-0/+6
BitCast U32 to S32 before converting to float on drivers with broken signed operations.
2021-07-23shader: Add support for "negative" and unaligned offsetsReinUsesLisp1-6/+3
"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-23spirv: Fix output generics with componentsReinUsesLisp1-1/+1
2021-07-23opengl: Declare fragment outputs even if they are not usedReinUsesLisp1-1/+1
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.
2021-07-23spirv: Fix image and image buffer descriptor index usageReinUsesLisp1-5/+7
2021-07-23shader: Split profile and runtime information in separate structsReinUsesLisp6-33/+42
2021-07-23shader: Read branch conditions from an instructionReinUsesLisp2-2/+11
Fixes the identity removal pass.
2021-07-23glasm: Implement TEX and TEXS instructionsReinUsesLisp2-6/+6
Remove lod clamp from texture instructions with lod, as this is not needed (nor supported).
2021-07-23shader_recompiler: GCC fixeslat9nq1-16/+16
Fixes members of unnamed union not being accessible, and one function without a declaration.
2021-07-23emit_spirv: Jump to loop body with local variableReinUsesLisp1-1/+1
Silence unused variable warning
2021-07-23emit_spirv: Add missing block in caseReinUsesLisp1-1/+2
2021-07-23glasm: Initial implementation of phi nodes on GLASMReinUsesLisp2-2/+7
2021-07-23glasm: Rework control flow introducing a syntax listReinUsesLisp5-49/+74
This commit regresses VertexA shaders, their transformation pass has to be adapted to the new control flow.
2021-07-23glasm: Implement shuffle and vote instructions on GLASMReinUsesLisp2-2/+4
2021-07-23shader: Fixup SPIR-V emit header namespacesReinUsesLisp1-2/+2
2021-07-23Move SPIR-V emission functions to their own headerReinUsesLisp22-572/+610
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