summaryrefslogtreecommitdiffstats
path: root/src/shader_recompiler/backend/glasm (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Merge pull request #7629 from ameerj/nv-driver-fixesFernando S2022-01-032-0/+17
|\ | | | | shaders: Add fixes for NVIDIA drivers 495+
| * shader: Add integer attribute get optimization passameerj2021-12-302-0/+17
| | | | | | | | Works around an nvidia driver bug, where casting the integer attributes to float and back to an integer always returned 0.
* | emit_glasm_context_get_set: Fix GetAttribute return value type.ameerj2021-12-251-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
* glasm: Move implemented instructions from not_implemented.cppameerj2021-12-067-169/+220
|
* shader_recompiler: Adjust emit_context includesameerj2021-12-0615-15/+15
|
* shader_recompiler: Rename backend emit_context filesameerj2021-12-052-0/+0
|
* shader: Properly scale image reads and add GL SPIR-V supportReinUsesLisp2021-11-165-2/+16
| | | | Thanks for everything!
* glsl/glasm: Pass and use scaling parameters in shadersReinUsesLisp2021-11-163-3/+7
|
* gl_graphics_pipeline: Add downscale factor to shader uniformsameerj2021-11-161-2/+1
|
* shader: Add IsTextureScaled opcodeReinUsesLisp2021-11-162-0/+9
|
* shader: Add integer division opcodesReinUsesLisp2021-11-162-0/+10
|
* shader: Add resolution down factor opcodeReinUsesLisp2021-11-162-0/+6
|
* Shader Cahe: Fix Phi Nodes on GLASM.Fernando Sahmkow2021-11-021-1/+1
|
* emit_glasm: Fix LINESS_ADJACENCY typo in InputPrimitive()Lioncash2021-07-261-1/+1
| | | | This should be LINES_ADJACENCY
* shader: Avoid usage of C++20 ranges to build in clangReinUsesLisp2021-07-231-2/+5
|
* shader_recompiler, video_core: Resolve clang errorslat9nq2021-07-232-3/+2
| | | | | | | | | | Silences the following warnings-turned-errors: -Wsign-conversion -Wunused-private-field -Wbraced-scalar-init -Wunused-variable And some other errors
* shader: GCC fmt 8.0.0 fixeslat9nq2021-07-231-3/+5
|
* opengl: Implement LOP.CCameerj2021-07-231-3/+27
| | | | Used by MH:Rise
* glasm: Add passthrough geometry shader supportReinUsesLisp2021-07-232-7/+26
|
* shader: Rework varyings and implement passthrough geometry shadersReinUsesLisp2021-07-233-13/+14
| | | | | | Put all varyings into a single std::bitset with helpers to access it. Implement passthrough geometry shaders using host's.
* shader: Remove IAbs64ReinUsesLisp2021-07-232-5/+0
|
* shader: Move loop safety tests to code emissionReinUsesLisp2021-07-234-10/+18
|
* glasm: Implement SetAttribute ViewportMaskameerj2021-07-232-1/+10
|
* shader: Split profile and runtime info headersReinUsesLisp2021-07-234-1/+4
|
* shader: Add loggingReinUsesLisp2021-07-235-10/+12
|
* shader: Add shader loop safety check settingslat9nq2021-07-232-0/+10
| | | | Also add a setting for enable Nsight Aftermath.
* glasm: Use ARB_derivative_control conditionallyReinUsesLisp2021-07-232-7/+29
|
* emit_glasm_context_get_set: Remove unused variablelat9nq2021-07-231-1/+0
|
* shader,glasm: Implement legacy texcoord loadsReinUsesLisp2021-07-231-2/+10
|
* glasm: Implement legacy varyingsReinUsesLisp2021-07-231-17/+56
|
* shader: Add support for "negative" and unaligned offsetsReinUsesLisp2021-07-231-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.
* opengl: Declare fragment outputs even if they are not usedReinUsesLisp2021-07-232-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.
* glasm: Fix immediate texture coordinateReinUsesLisp2021-07-231-0/+1
|
* glasm: Reduce reg allocation leaks from an exception to a logReinUsesLisp2021-07-231-1/+1
|
* glasm: Use integer lod for TXQReinUsesLisp2021-07-232-2/+2
|
* glasm: Fix global memory fallbacksReinUsesLisp2021-07-231-9/+10
|
* Revert "glasm: Skip phi moves on undefined instructions"ReinUsesLisp2021-07-231-3/+1
| | | | Causes regressions on Bowser's Fury.
* glasm: Remove unintentional '\n' on Undef32ReinUsesLisp2021-07-231-1/+1
|
* glasm: Use storage buffers instead of global memory when possibleReinUsesLisp2021-07-234-369/+380
|
* glasm: Implement Y directionReinUsesLisp2021-07-234-3/+9
|
* glasm: Skip phi moves on undefined instructionsReinUsesLisp2021-07-231-1/+3
|
* glasm: Implement undef instructionsReinUsesLisp2021-07-232-15/+15
|
* glasm: Fix global memory callbacksReinUsesLisp2021-07-231-5/+6
|
* glasm: Release phi node registers after they are no longer neededReinUsesLisp2021-07-232-38/+54
|
* glasm: Fix INeg32 on negative immediatesReinUsesLisp2021-07-231-1/+5
|
* glasm: Remove unnecessary value typesReinUsesLisp2021-07-233-47/+6
|
* glasm: Throw when there are register leaksReinUsesLisp2021-07-232-0/+7
|
* glasm: Catch more register leaksReinUsesLisp2021-07-238-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.
* glasm: Fix usage counting on phi nodesReinUsesLisp2021-07-233-8/+22
|
* glasm: Implement global memory fallbacksReinUsesLisp2021-07-232-50/+89
|
* glasm: Implement int64 add and subtractReinUsesLisp2021-07-232-8/+6
|
* emit_glasm_context_get_set: Remove unused variablelat9nq2021-07-231-1/+0
|
* glasm: Implement indirect attribute loadsReinUsesLisp2021-07-234-6/+65
|
* glasm: Implement image atomicsReinUsesLisp2021-07-232-165/+153
|
* glasm: Reorder unreachable image atomic instsReinUsesLisp2021-07-231-66/+66
| | | | Reorder them to the bottom of the file for readability.
* glasm: Implement gl_Layer storesReinUsesLisp2021-07-231-0/+7
|
* glasm: Implement SampleIdReinUsesLisp2021-07-232-3/+3
|
* glasm: Implement IsHelperInvocationReinUsesLisp2021-07-232-3/+3
|
* glasm: Fix EmitVertex's optimizationReinUsesLisp2021-07-231-1/+1
|
* gl_shader_cache,glasm: Conditionally use typeless image reads extensionReinUsesLisp2021-07-231-2/+4
|
* glasm: Implement forced early ZReinUsesLisp2021-07-231-2/+6
|
* glasm: Simplify patch readsReinUsesLisp2021-07-231-5/+2
|
* glasm: Fix output patch readsReinUsesLisp2021-07-232-13/+22
| | | | With this, Luigi's Mansion's sand renders properly.
* shader: Split profile and runtime information in separate structsReinUsesLisp2021-07-234-33/+38
|
* emit_glasm_context_get_and_set.cpp: Add missing semicolonsameerj2021-07-231-2/+2
|
* glasm: Fix patch attribute declarationsReinUsesLisp2021-07-231-1/+1
|
* glasm: Implement FSWZADDameerj2021-07-233-4/+28
|
* glasm: Implement PrimitiveId attribute readReinUsesLisp2021-07-231-0/+3
|
* glasm: Implement clip distance storesReinUsesLisp2021-07-232-0/+15
|
* glasm: Fix tessellation input attributesReinUsesLisp2021-07-231-2/+5
|
* glasm: Add missing semicolon on tesscoord readingReinUsesLisp2021-07-231-1/+1
|
* glasm: Fix tessellation headersReinUsesLisp2021-07-231-2/+2
|
* glasm: Add tessellation shader declarationsReinUsesLisp2021-07-231-0/+35
|
* glasm: Implement TessellationEvaluationPointReinUsesLisp2021-07-231-0/+4
|
* glasm: Implement patch memoryReinUsesLisp2021-07-233-6/+51
|
* glasm: Fix InvocationId declarationReinUsesLisp2021-07-231-1/+1
|
* glasm: Implement InvocationIdReinUsesLisp2021-07-232-2/+5
|
* glasm: Optimize EmitVertex into EMITReinUsesLisp2021-07-231-1/+5
|
* glasm: Implement geometry shader attribute readsReinUsesLisp2021-07-232-4/+18
|
* glasm: Properly declare attributes on geometry programsReinUsesLisp2021-07-233-6/+14
|
* glasm: Declare geometry program headersReinUsesLisp2021-07-231-0/+35
|
* glasm: Fix potential aliasing bug on cube array samplesReinUsesLisp2021-07-232-35/+44
|
* glasm: Implement ImageWriteReinUsesLisp2021-07-231-4/+7
|
* glasm: Implement ImageReadReinUsesLisp2021-07-234-4/+56
|
* glasm: Implement EmitVertex and EndPrimitiveReinUsesLisp2021-07-232-4/+8
|
* glasm: Implement ImageGradientReinUsesLisp2021-07-232-7/+65
|
* glasm: Implement 64-bit shiftsReinUsesLisp2021-07-232-12/+14
|
* glasm: Implement barriersReinUsesLisp2021-07-231-3/+3
|
* glasm: Fix compute stage nameReinUsesLisp2021-07-231-1/+1
|
* glasm: Fix phi instruction typesReinUsesLisp2021-07-231-1/+1
|
* glasm: Implement PREC on relevant instructionsReinUsesLisp2021-07-231-6/+12
|
* glasm: Implement stores to gl_ViewportIndexReinUsesLisp2021-07-234-7/+29
|
* glasm: Implement gl_PointSize storesReinUsesLisp2021-07-231-0/+3
|
* glasm: Implement gl_PointCoordReinUsesLisp2021-07-231-0/+4
|
* glasm: Implement ImageQueryLodReinUsesLisp2021-07-231-3/+5
|
* glasm: Implement ImageFetchReinUsesLisp2021-07-234-13/+38
|
* glasm: Implement IADD.CCameerj2021-07-231-1/+26
|
* glasm: Implement BFE.CCReinUsesLisp2021-07-231-0/+8
|
* glasm: Implement SelectU1ReinUsesLisp2021-07-232-4/+5
|
* glasm: Implement gl_WorkGroupIDReinUsesLisp2021-07-232-3/+3
|
* glasm: Implement TXQ and improve texture info readsReinUsesLisp2021-07-232-50/+51
|
* glasm: Implement gl_FrongFacing attributeReinUsesLisp2021-07-231-0/+3
|
* glasm: Support textures used in more than one stageReinUsesLisp2021-07-233-4/+24
|
* glasm: Implement textureGather instructionsReinUsesLisp2021-07-232-15/+97
|
* glasm: Implement gl_FragDepth and gl_SampleMask storesReinUsesLisp2021-07-232-5/+5
|
* glasm: Do not alias ConditionRef for nowReinUsesLisp2021-07-232-3/+2
| | | | | Immediate condition refs where not handled correctly. Just move the value for now.
* shader: Read branch conditions from an instructionReinUsesLisp2021-07-235-3/+9
| | | | Fixes the identity removal pass.
* glasm: Implement InstanceId and VertexIdReinUsesLisp2021-07-231-0/+6
|
* glasm: Add missing return value on move assignmentReinUsesLisp2021-07-231-0/+1
|
* glasm: Fix aliased bitcasts ref countingReinUsesLisp2021-07-233-13/+42
|
* glasm: Remove unintentional comma on vector insertReinUsesLisp2021-07-231-1/+1
|
* glasm: Implement TEX and TEXS instructionsReinUsesLisp2021-07-234-41/+252
| | | | | Remove lod clamp from texture instructions with lod, as this is not needed (nor supported).
* glasm: Add support for non-2D texture samplesReinUsesLisp2021-07-231-4/+26
|
* glasm: Reorder unreachable image instructions to the bottomReinUsesLisp2021-07-231-97/+97
|
* glasm: Add support for texture offsetsReinUsesLisp2021-07-231-11/+15
|
* glasm: Improve texture sampling instructionsReinUsesLisp2021-07-232-50/+70
|
* emit_glasm: Enable ARB_draw_buffers when neededReinUsesLisp2021-07-232-1/+5
|
* emit_glasm: Add support for reading position attributesReinUsesLisp2021-07-231-3/+13
|
* shader_recompiler: GCC fixeslat9nq2021-07-232-9/+9
| | | | | Fixes members of unnamed union not being accessible, and one function without a declaration.
* glasm: Implement rest of shared memameerj2021-07-232-35/+29
|
* glasm: Implement derivative instructions on GLASMReinUsesLisp2021-07-232-12/+12
|
* glasm: Initial (broken) implementation of TEX on GLASMReinUsesLisp2021-07-233-299/+386
|
* glasm: Implement some graphics instructions on GLASMReinUsesLisp2021-07-232-6/+5
|
* glasm: Add Void type to GLASM valuesReinUsesLisp2021-07-233-0/+15
|
* glasm: Add graphics specific shader declarations to GLASMReinUsesLisp2021-07-232-6/+63
|
* glasm: Implement local memory for glasmameerj2021-07-234-9/+12
|
* glasm: Initial implementation of phi nodes on GLASMReinUsesLisp2021-07-233-8/+81
|
* glasm: Write result to scalar on integer comparison instructionsReinUsesLisp2021-07-231-10/+10
|
* glasm: Declare NV_shader_thread_group when neededReinUsesLisp2021-07-231-3/+4
|
* glasm: Rework control flow introducing a syntax listReinUsesLisp2021-07-234-39/+42
| | | | | This commit regresses VertexA shaders, their transformation pass has to be adapted to the new control flow.
* 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-236-97/+158
|
* 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