summaryrefslogtreecommitdiffstats
path: root/src/shader_recompiler/backend (unfollow)
Commit message (Collapse)AuthorFilesLines
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-25emit_glasm_context_get_set: Fix GetAttribute return value type.ameerj1-4/+4
GetAttribute expects an F32 result type at the IR level, this fixes the return value of attributes which were not returning an F32
2021-12-18Remove spirv handle legacy related codevonchenplus3-189/+0
2021-12-18Remove glsl handle legacy related codevonchenplus3-103/+1
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-06glasm: Move implemented instructions from not_implemented.cppameerj7-169/+220
2021-12-06shader_recompiler: Adjust emit_context includesameerj37-37/+37
2021-12-05shader_recompiler: Rename backend emit_context filesameerj6-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 supportReinUsesLisp14-47/+163
Thanks for everything!
2021-11-16glsl/glasm: Pass and use scaling parameters in shadersReinUsesLisp6-7/+11
2021-11-16gl_graphics_pipeline: Add downscale factor to shader uniformsameerj3-4/+5
2021-11-16spirv: Implement rescaling patchingReinUsesLisp5-5/+72
2021-11-16shader: Add IsTextureScaled opcodeReinUsesLisp6-0/+24
2021-11-16shader: Add integer division opcodesReinUsesLisp6-0/+30
2021-11-16shader: Add resolution down factor opcodeReinUsesLisp6-0/+18
2021-11-04Simply legacy attribute implementFeng Chen3-152/+125
2021-11-02Shader Cahe: Fix Phi Nodes on GLASM.Fernando Sahmkow1-1/+1
2021-11-01ShaderCache: Fix Phi Nodes Type on OGL.Fernando Sahmkow1-2/+2
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-29style: Remove extra space preceding the :: operatorMorph1-2/+2
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_glsl_warp: Fix shuffle ops for 64-thread warp sizesameerj1-24/+36
2021-08-31emit_glsl_warp: Fix ballot related ops for 64-thread warp sizesameerj1-24/+38
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_glasm: Fix LINESS_ADJACENCY typo in InputPrimitive()Lioncash1-1/+1
This should be LINES_ADJACENCY
2021-07-26emit_spirv_instructions: Add missing header guardLioncash1-0/+2
2021-07-23shader: Fix disabled attribute default valuesameerj1-1/+1
2021-07-23glsl: Simplify FCMP emissionameerj1-6/+4
2021-07-23glsl: Update TessellationControl gl_inameerj1-0/+28
Adheres to GL_ARB_separate_shader_objects requirements
2021-07-23shader: Avoid usage of C++20 ranges to build in clangReinUsesLisp2-4/+12
2021-07-23glsl: Clamp shared mem size to GL_MAX_COMPUTE_SHARED_MEMORY_SIZEameerj1-2/+9
2021-07-23shader_recompiler, video_core: Resolve clang errorslat9nq4-9/+13
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 supportameerj4-16/+62
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 fixeslat9nq5-11/+14
2021-07-23shader: Fix disabled and unwritten attributes and varyingsReinUsesLisp2-3/+11
2021-07-23glsl: Fix shared and local memory declarationsameerj1-3/+3
account for the fact that program.*memory_size is in units of bytes.
2021-07-23opengl: Implement LOP.CCameerj2-6/+38
Used by MH:Rise
2021-07-23spirv: Fix code emission when descriptor aliasing is unsupportedReinUsesLisp1-1/+2
Fixes OpenGL.
2021-07-23glsl: Declare local memory in mainameerj1-3/+3
2021-07-23glsl: Add passthrough geometry shader supportameerj3-7/+27
2021-07-23glasm: Add passthrough geometry shader supportReinUsesLisp2-7/+26
2021-07-23shader: Rework varyings and implement passthrough geometry shadersReinUsesLisp11-97/+116
Put all varyings into a single std::bitset with helpers to access it. Implement passthrough geometry shaders using host's.
2021-07-23glsl: Better IAdd Overflow CC fixameerj2-11/+13
This ensures the original operand values are not overwritten when being used in the overflow detection.
2021-07-23shader: Remove IAbs64ReinUsesLisp6-15/+0
2021-07-23glsl: Fix IADD CCameerj2-5/+7
2021-07-23shader: Move loop safety tests to code emissionReinUsesLisp11-32/+48
2021-07-23glsl: Remove frag color initializationameerj1-9/+0
2021-07-23glasm: Implement SetAttribute ViewportMaskameerj2-1/+10
2021-07-23emit_glsl_special: Skip initialization of frag_color0ameerj1-1/+1
Fixes rendering in Devil May Cry without regressing Ori and the Blind Forest.
2021-07-23glsl: Add missing ; in EmitSetSampleMaskMorph1-1/+1
Fixes shader compilation in Okami HD
2021-07-23glsl: Fix output varying initialization when transform feedback is usedameerj1-3/+37
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-23glsl: Fix cbuf component indexing bug falbackameerj1-7/+6
2021-07-23shader: Properly manage attributes not written from previous stagesReinUsesLisp6-30/+26
2021-07-23glsl: Only declare fragment outputs on fragment shadersReinUsesLisp1-4/+6
2021-07-23shader: Split profile and runtime info headersReinUsesLisp8-4/+7
2021-07-23glsl: Obey need_declared_frag_colors to declare and initialize all frag_colorameerj2-1/+10
Fixes Ori and the blind forest title screen
2021-07-23glsl: Address rest of feedbackameerj4-19/+51
2021-07-23glsl: Move gl_Position/generic attribute initialization to EmitProlgueameerj2-14/+12
2021-07-23glsl: Conditionally use fine/coarse derivatives based on device supportameerj2-4/+27
2021-07-23glsl: Cleanup/Address feedbackameerj8-28/+20
2021-07-23glsl: Add Shader_GLSL loggingameerj3-28/+32
2021-07-23glsl: Add LoopSafety instructionsameerj2-0/+10
2021-07-23glsl: Conditionally add EXT_texture_shadow_lodameerj1-3/+5
2021-07-23glsl: Add stubs for sparse queries and variable aoffi when not supportedameerj3-13/+37
2021-07-23glsl: Implement legacy varyingsameerj4-7/+71
2021-07-23glsl: Minor cleanupameerj2-19/+15
2021-07-23glsl: Fix Cbuf getters for F32 typeameerj1-12/+15
2021-07-23glsl: Add immediate index oob checking for Cbuf gettersameerj1-0/+16
2021-07-23glsl: Refactor GetCbuf functions to reduce code duplicationameerj1-104/+66
2021-07-23glsl: Address more feedback. Implement indexed texture readsameerj5-111/+109
2021-07-23glsl: Remove Signed Integer variablesameerj8-43/+13
2021-07-23glsl: Address Rodrigo's feedbackameerj13-75/+87
2021-07-23glsl: Reorganize backend code, remove unneeded [[maybe_unused]]ameerj11-314/+251
2021-07-23glsl: Implement SampleId and SetSampleMaskameerj3-30/+35
plus some minor refactoring of implementations
2021-07-23glsl: Add gl_PerVertex in for GSameerj1-1/+2
2021-07-23glsl: Use existing tracking for enabling EXT_shader_image_load_formattedameerj1-15/+1
2021-07-23glsl: Enable early fragment testsameerj2-4/+7
2021-07-23glsl: Implement more attribute getters and settersameerj2-12/+60
2021-07-23glsl: Implement fswzaddameerj3-5/+43
and wip nv thread shuffle impl
2021-07-23glsl: Implement indexed attribute loadsameerj5-29/+64
2021-07-23glsl: Conditionally add GL_ARB_sparse_texture2ameerj1-2/+3
2021-07-23glsl: Conditionally use GL_EXT_shader_image_load_formattedameerj1-2/+18
Fix for SULD.D
2021-07-23glsl: Remove output generic indexing for geometry stageameerj1-5/+3
2021-07-23glsl: Allow dynamic tracking of variable allocationameerj3-21/+35
2021-07-23glsl: Implement barriersameerj3-13/+21
2021-07-23glsl: Implement image atomics and set layerameerj4-152/+202
along with some more cleanup/oversight fixes
2021-07-23glsl: Fix image gather logicameerj1-0/+4
2021-07-23glsl: Add cbuf access workaround for devices with component indexing bugameerj1-51/+110
2021-07-23glsl: Use textureGrad fallback when EXT_texture_shadow_lod is unsupportedameerj2-8/+40
2021-07-23emit_glsl_image: Use immediate offsets when possibleameerj1-12/+33
2021-07-23glsl: Fix <32-bit SSBO writesameerj4-50/+43
and more cleanup
2021-07-23glsl: Cleanup and address feedbackameerj10-86/+69
2021-07-23glsl: Refactor Global memory functionsameerj2-71/+73
2021-07-23glsl: Increase NUM_VARS that can be allocatedameerj1-1/+1
needed for HW:AoC.
2021-07-23glsl: Implement Load/WriteGlobalameerj9-98/+185
along with some other misc changes and fixes
2021-07-23glsl: Implement Imagesameerj2-9/+74
2021-07-23glsl: skip gl_ViewportIndex write if device does not support itameerj3-8/+16
2021-07-23glsl: Implement transform feedbackameerj3-13/+63
2021-07-23glsl: Yet another gl_ViewportIndex fix attemptameerj1-3/+19
2021-07-23glsl: Add gl_ViewportIndex out attributeameerj1-1/+3
2021-07-23emit_glsl_context_get_set: Remove unused functionlat9nq1-4/+0
2021-07-23glsl: Fix precise variable declarationameerj3-24/+25
and add some more separation in the shader for better debugability when dumped
2021-07-23glsl: Implement tessellation shadersameerj5-27/+146
2021-07-23glsl: Implement ImageGradient and other texture function variantsameerj2-32/+73
2021-07-23glsl: Fix atomic SSBO offsetsameerj4-67/+74
and implement misc getters
2021-07-23glsl: Implement geometry shadersameerj4-9/+62
2021-07-23glsl: Use NotImplemented macro with function name outputameerj10-104/+103
2021-07-23glsl: Implement gl_ViewportIndexameerj3-5/+14
SSBU now working
2021-07-23glsl: SHFL fix and prefer shift operations over divide in glsl shaderameerj5-63/+64
2021-07-23glsl: Implement precise fp variable allocationameerj4-8/+67
2021-07-23HACK glsl: Write defaults to unused generic attributesameerj2-2/+11
2021-07-23glsl: Fix ssbo indexing and name shadowing between shader stagesameerj3-77/+101
2021-07-23glsl: implement set clip distanceameerj2-0/+15
and missed a diff in emit_glsl relating to var alloc ref counting
2021-07-23glsl: Rework var alloc to not assign unused resultsameerj9-49/+91
2021-07-23glsl: Rework variable allocator to allow for variable reuseameerj13-351/+480
2021-07-23glsl: Fix ATOM and implement ATOMSameerj4-114/+130
2021-07-23glsl: Use gl_SubGroupInvocationARBameerj2-8/+7
2021-07-23glsl: Implement VOTE for subgroup size potentially largerameerj2-19/+36
2021-07-23glsl: Implement VOTEameerj4-50/+64
2021-07-23glsl: Implement ST{LS}ameerj6-69/+106
2021-07-23glsl: Implement more instructions used by SMOameerj1-3/+3
2021-07-23glsl: Implement more instructions used by SMOameerj5-10/+16
2021-07-23glsl: Fix GetAttribute return valuesameerj2-7/+9
fixes font rendering issues as these were used to index into the ssbos
2021-07-23glsl: minor cleanupameerj4-20/+19
2021-07-23glsl: Fix and implement rest of cbuf accessameerj1-7/+43
2021-07-23glsl: Implement TXQ and other misc changesameerj5-6/+36
2021-07-23glsl: TLD4 implementationameerj1-2/+89
2021-07-23glsl: Implement TLD instructionameerj1-1/+55
2021-07-23glsl: Implement TEXSameerj1-1/+29
2021-07-23glsl: Cleanup texture functionsameerj1-13/+11
2021-07-23shader_recompiler: GCC fixeslat9nq14-3/+13
2021-07-23glsl: Implement TEX depth functionsameerj2-4/+46
2021-07-23glsl: Implement TEX ImageSample functionsameerj3-11/+71
2021-07-23glsl: Rework Shuffle emit instructions to align with SPIR-Vameerj1-19/+40
2021-07-23glsl: Better Storage access and wip warpsameerj8-62/+133
2021-07-23glsl: Fix integer conversions, implement clamp CCameerj2-27/+36
2021-07-23glsl: Implement IADD CCameerj2-2/+17
2021-07-23glsl: SSBO access fixes and wip SampleExplicitLod implementation.ameerj2-4/+19
2021-07-23glsl: WIP var forward declarationameerj6-49/+60
to fix Loop control flow.
2021-07-23glsl: Fix bindings, add some CC opsameerj8-57/+91
2021-07-23glsl: remove unused headersameerj14-34/+10
2021-07-23glsl: Implement derivatives and YDirectionameerj8-81/+87
plus some other misc additions/changed
2021-07-23glsl: Fix non-immediate buffer accessameerj12-72/+133
and many other misc implementations
2021-07-23glsl: textures wipameerj9-75/+139
2021-07-23glsl: Implement some attribute getters and settersameerj9-191/+337
2021-07-23glsl: Track S32 atomicsameerj1-3/+6
2021-07-23glsl: Update phi node managementameerj4-21/+53
2021-07-23glsl: Fix floating point compare opsameerj1-28/+28
Logic for ordered/unordered ops was wrong.
2021-07-23glsl: Query GL Device for FP16 extension supportameerj1-2/+7
2021-07-23glsl: Simply FP storage atomicsameerj2-48/+28
2021-07-23glsl: F16x2 storage atomicsameerj7-58/+64
2021-07-23glsl: Revert ssbo aliasing. Storage Atomics implameerj4-68/+132
2021-07-23glsl: implement phi nodesameerj4-20/+54
2021-07-23glsl: Wip storage atomic opsameerj8-325/+406
2021-07-23glsl: Implement FCMPameerj3-242/+185
2021-07-23glsl: Add a more robust fp formatterameerj4-9/+14
2021-07-23glsl: More FP fixesameerj2-9/+16
2021-07-23glsl: FP function fixesameerj7-17/+25
2021-07-23glsl: More FP instructions/fixesameerj5-28/+41
2021-07-23glsl: Add many FP32/64 instructionsameerj12-765/+1011
2021-07-23glsl: Implement more Integer opsameerj3-119/+72
2021-07-23glsl: Implement BF*ameerj3-9/+10
2021-07-23glsl: Implement a few Integer instructionsameerj10-260/+398
2021-07-23glsl: Use std::string_view for Emit function args.ameerj6-760/+838
2021-07-23glsl: Pass IR::Inst& to Emit functionsameerj6-171/+169
2021-07-23glsl: INeg and IAdd negate testsameerj3-94/+106
2021-07-23glsl: Reusable typed variables. IADD32ameerj6-203/+311
2021-07-23glsl: Fix program linking and cbufameerj2-3/+5
2021-07-23glsl: Fix "reg" allocingameerj10-898/+938
based on glasm with some tweaks
2021-07-23glsl: Initial backendameerj26-0/+3266
2021-07-23spirv: Reduce log severity of mismatching denorm rulesReinUsesLisp1-2/+2
2021-07-23shader: Add loggingReinUsesLisp9-21/+23
2021-07-23shader: Add shader loop safety check settingslat9nq4-8/+28
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-23glasm: Use ARB_derivative_control conditionallyReinUsesLisp2-7/+29
2021-07-23emit_glasm_context_get_set: Remove unused variablelat9nq1-1/+0
2021-07-23shader,glasm: Implement legacy texcoord loadsReinUsesLisp1-2/+10
2021-07-23glasm: Implement legacy varyingsReinUsesLisp1-17/+56
2021-07-23shader: Add support for "negative" and unaligned offsetsReinUsesLisp2-6/+11
"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 usedReinUsesLisp3-10/+5
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-23glasm: Fix immediate texture coordinateReinUsesLisp1-0/+1
2021-07-23glasm: Reduce reg allocation leaks from an exception to a logReinUsesLisp1-1/+1
2021-07-23glasm: Use integer lod for TXQReinUsesLisp2-2/+2
2021-07-23glasm: Fix global memory fallbacksReinUsesLisp1-9/+10
2021-07-23Revert "glasm: Skip phi moves on undefined instructions"ReinUsesLisp1-3/+1
Causes regressions on Bowser's Fury.
2021-07-23glasm: Remove unintentional '\n' on Undef32ReinUsesLisp1-1/+1
2021-07-23glasm: Use storage buffers instead of global memory when possibleReinUsesLisp4-369/+380
2021-07-23glasm: Implement Y directionReinUsesLisp4-3/+9
2021-07-23glasm: Skip phi moves on undefined instructionsReinUsesLisp1-1/+3
2021-07-23glasm: Implement undef instructionsReinUsesLisp2-15/+15
2021-07-23glasm: Fix global memory callbacksReinUsesLisp1-5/+6
2021-07-23glasm: Release phi node registers after they are no longer neededReinUsesLisp2-38/+54
2021-07-23glasm: Fix INeg32 on negative immediatesReinUsesLisp1-1/+5
2021-07-23glasm: Remove unnecessary value typesReinUsesLisp3-47/+6
2021-07-23glasm: Throw when there are register leaksReinUsesLisp2-0/+7
2021-07-23glasm: Catch more register leaksReinUsesLisp8-41/+114
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.
2021-07-23glasm: Fix usage counting on phi nodesReinUsesLisp3-8/+22
2021-07-23glasm: Implement global memory fallbacksReinUsesLisp2-50/+89
2021-07-23glasm: Implement int64 add and subtractReinUsesLisp2-8/+6
2021-07-23emit_glasm_context_get_set: Remove unused variablelat9nq1-1/+0
2021-07-23glasm: Implement indirect attribute loadsReinUsesLisp4-6/+65
2021-07-23glasm: Implement image atomicsReinUsesLisp2-165/+153
2021-07-23glasm: Reorder unreachable image atomic instsReinUsesLisp1-66/+66
Reorder them to the bottom of the file for readability.
2021-07-23glasm: Implement gl_Layer storesReinUsesLisp1-0/+7
2021-07-23glasm: Implement SampleIdReinUsesLisp2-3/+3
2021-07-23glasm: Implement IsHelperInvocationReinUsesLisp2-3/+3
2021-07-23glasm: Fix EmitVertex's optimizationReinUsesLisp1-1/+1
2021-07-23gl_shader_cache,glasm: Conditionally use typeless image reads extensionReinUsesLisp1-2/+4
2021-07-23glasm: Implement forced early ZReinUsesLisp1-2/+6
2021-07-23glasm: Simplify patch readsReinUsesLisp1-5/+2
2021-07-23glasm: Fix output patch readsReinUsesLisp2-13/+22
With this, Luigi's Mansion's sand renders properly.
2021-07-23shader: Split profile and runtime information in separate structsReinUsesLisp10-66/+80
2021-07-23emit_glasm_context_get_and_set.cpp: Add missing semicolonsameerj1-2/+2
2021-07-23glasm: Fix patch attribute declarationsReinUsesLisp1-1/+1
2021-07-23glasm: Implement FSWZADDameerj3-4/+28
2021-07-23glasm: Implement PrimitiveId attribute readReinUsesLisp1-0/+3
2021-07-23glasm: Implement clip distance storesReinUsesLisp2-0/+15
2021-07-23glasm: Fix tessellation input attributesReinUsesLisp1-2/+5
2021-07-23glasm: Add missing semicolon on tesscoord readingReinUsesLisp1-1/+1
2021-07-23glasm: Fix tessellation headersReinUsesLisp1-2/+2
2021-07-23glasm: Add tessellation shader declarationsReinUsesLisp1-0/+35
2021-07-23glasm: Implement TessellationEvaluationPointReinUsesLisp1-0/+4
2021-07-23glasm: Implement patch memoryReinUsesLisp3-6/+51
2021-07-23glasm: Fix InvocationId declarationReinUsesLisp1-1/+1
2021-07-23glasm: Implement InvocationIdReinUsesLisp2-2/+5
2021-07-23glasm: Optimize EmitVertex into EMITReinUsesLisp1-1/+5
2021-07-23glasm: Implement geometry shader attribute readsReinUsesLisp2-4/+18
2021-07-23glasm: Properly declare attributes on geometry programsReinUsesLisp3-6/+14
2021-07-23glasm: Declare geometry program headersReinUsesLisp1-0/+35
2021-07-23glasm: Fix potential aliasing bug on cube array samplesReinUsesLisp2-35/+44
2021-07-23glasm: Implement ImageWriteReinUsesLisp1-4/+7
2021-07-23glasm: Implement ImageReadReinUsesLisp4-4/+56
2021-07-23glasm: Implement EmitVertex and EndPrimitiveReinUsesLisp2-4/+8
2021-07-23glasm: Implement ImageGradientReinUsesLisp2-7/+65
2021-07-23glasm: Implement 64-bit shiftsReinUsesLisp2-12/+14
2021-07-23glasm: Implement barriersReinUsesLisp1-3/+3
2021-07-23glasm: Fix compute stage nameReinUsesLisp1-1/+1
2021-07-23glasm: Fix phi instruction typesReinUsesLisp1-1/+1
2021-07-23glasm: Implement PREC on relevant instructionsReinUsesLisp1-6/+12
2021-07-23glasm: Implement stores to gl_ViewportIndexReinUsesLisp4-7/+29
2021-07-23glasm: Implement gl_PointSize storesReinUsesLisp1-0/+3
2021-07-23glasm: Implement gl_PointCoordReinUsesLisp1-0/+4
2021-07-23glasm: Implement ImageQueryLodReinUsesLisp1-3/+5
2021-07-23glasm: Implement ImageFetchReinUsesLisp4-13/+38
2021-07-23glasm: Implement IADD.CCameerj1-1/+26
2021-07-23glasm: Implement BFE.CCReinUsesLisp1-0/+8
2021-07-23glasm: Implement SelectU1ReinUsesLisp2-4/+5
2021-07-23glasm: Implement gl_WorkGroupIDReinUsesLisp2-3/+3
2021-07-23glasm: Implement TXQ and improve texture info readsReinUsesLisp2-50/+51
2021-07-23glasm: Implement gl_FrongFacing attributeReinUsesLisp1-0/+3
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