summaryrefslogtreecommitdiffstats
path: root/src/shader_recompiler/backend/glasm (unfollow)
Commit message (Collapse)AuthorFilesLines
2021-07-23shader: Split profile and runtime info headersReinUsesLisp4-1/+4
2021-07-23shader: Add loggingReinUsesLisp5-10/+12
2021-07-23shader: Add shader loop safety check settingslat9nq2-0/+10
Also add a setting for enable Nsight Aftermath.
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 offsetsReinUsesLisp1-0/+8
"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-23opengl: Declare fragment outputs even if they are not usedReinUsesLisp2-9/+4
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-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 structsReinUsesLisp4-33/+38
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 instructionReinUsesLisp5-3/+9
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 instructionsReinUsesLisp4-41/+252
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 fixeslat9nq2-9/+9
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-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-23glasm: Initial implementation of phi nodes on GLASMReinUsesLisp3-8/+81
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 listReinUsesLisp4-39/+42
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 GLASMReinUsesLisp6-97/+158
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