summaryrefslogtreecommitdiffstats
path: root/src/shader_recompiler (unfollow)
Commit message (Collapse)AuthorFilesLines
2024-01-08Fix "Propietary" typo elsewhereViktor Szépe2-4/+4
2023-12-27shader_recompiler: use default value for clip distances arrayLiam1-7/+13
2023-12-27shader_recompiler: respect clip distance limits in indexed storeLiam1-18/+28
2023-12-22spirv_emit_context: Fix BaseInstance for OGL spirvAmeer J1-1/+1
2023-12-22shader_recompiler: ensure derivatives for textureGrad are f32Liam1-1/+11
2023-12-21shader_recompiler: use float image operations on load/store when requiredLiam6-20/+158
2023-12-21emit_glsl_image: Use inlined texelFetch offsetsAmeer J2-7/+7
2023-12-19shader_recompiler: use minimal clip distance arrayLiam3-2/+9
2023-12-19shader_recompiler: ignore clip distances beyond driver support levelLiam3-1/+8
2023-11-27GLSL: Prefer known used cbuf sizesAmeer J1-1/+4
2023-11-19renderer_vulkan: ignore viewport stores on non-supporting driversLiam3-1/+6
2023-11-18shader_recompiler: Fix spelling of "derivate" (#12067)Ameer J9-58/+59
2023-11-18shader_recompiler: add byteswap pattern workaround for NvidiaAmeer J4-0/+82
2023-11-01shader_recompiler: Align SSBO offsets in GlobalMemory functionsAmeer J4-5/+15
2023-11-01shader_recompiler: Align SSBO offsets to meet host requirementsAmeer J4-6/+12
Co-Authored-By: Billy Laws <blaws05@gmail.com>
2023-10-22emit_glsl_warp: Fix shfl_in_bounds conditionalAmeer J2-4/+9
2023-10-19Manually robust on Maxwell and earlierKelebek13-4/+59
2023-10-03ci: fix new codespell errorsLiam1-1/+1
2023-09-22emit_spirv: fix incorrect use of descriptor index in image atomicsLiam2-13/+9
2023-09-14shader_recompiler: skip sampler for buffer textures (#11435)liamwhite3-6/+2
2023-09-03msvc: set warning level to /W4 globallyDanila Malyutin1-2/+0
And fix a bunch of warnings
2023-09-02shader_recompiler: always declare image format for image buffersLiam1-1/+6
2023-09-02shader_recompiler: fix emulation of 3D textureGradLiam2-3/+34
2023-08-27Shader Recompiler: Auto stub special registers and dump pipelines on exception.Fernando Sahmkow1-1/+2
2023-08-19Shader Recomnpiler: implement textuzreGrad 3D emulation constant propagationFernando Sahmkow8-11/+261
2023-08-03Fix shader dumps with nvdisasmKelebek11-1/+1
skip fragment shaders when rasterizer is disabled initialize env_ptrs
2023-07-23ssa_rewrite_pass: use proper mapsLiam1-6/+5
2023-06-26shaders: Track local memory usageameerj2-0/+5
2023-06-26emit_glasm: Fix lmem size computationameerj1-1/+1
2023-06-22Remove memory allocations in some hot pathsKelebek14-4/+5
2023-06-10shader_recompiler: translate f64 to f32 when unsupported on hostLiam5-0/+191
2023-06-10shader_recompiler: remove barriers in conditional control flow when device lacks supportLiam5-0/+51
2023-06-03video_core: Enable support_descriptor_aliasing on Turnip, disable storage atomic otherwise.bunnei1-0/+10
2023-06-03Avoid using VectorExtractDynamic for subgroup mask on Adreno GPUsBilly Laws2-1/+18
This crashes their shader compiler for some reason.
2023-06-03Implement scaled vertex buffer format emulationBilly Laws5-49/+75
These formats are unsupported by mobile GPUs so they need to be emulated in shaders instead.
2023-05-26shader_recompiler: fix copy-paste errorLiam1-1/+1
2023-05-11Fix Tears of the Kingdom flickering clouds and depths.Kelebek12-12/+3
2023-04-30Define SampleMask as an arrayKelebek12-2/+4
2023-04-08shader_recompiler: Use vector arithmetic rather than component-wise in ImageGatherSubpixelOffsetWollnashorn1-18/+9
Should be more efficient and better readable
2023-04-08video_core: Enable ImageGather with subpixel offset on IntelWollnashorn1-3/+3
2023-04-08shader_recompiler: Add subpixel offset for correct rounding at `ImageGather`Wollnashorn3-0/+72
On AMD a subpixel offset of 1/512 of the texel size is applied to the texture coordinates at a ImageGather call to ensure the rounding at the texel centers is done the same way as in Maxwell or other Nvidia architectures. See https://www.reedbeta.com/blog/texture-gathers-and-coordinate-precision/ for more details why this might be necessary. This should fix shadow artifacts at object edges in Zelda: Breath of the Wild (#9957, #6956).
2023-03-12general: fix spelling mistakesLiam2-41/+41
2023-02-25buffer_cache: Add logic for non-NVN storage buffer trackingameerj1-1/+7
2023-02-14remove static from pointer sized or smaller types for aesthetics, change constexpr static to static constexpr for consistencyarades795-6/+6
Signed-off-by: arades79 <scravers@protonmail.com>
2023-02-14add static lifetime to constexpr values to force compile time evaluation where possiblearades795-6/+6
Signed-off-by: arades79 <scravers@protonmail.com>
2023-02-09glsl_emit_context: Remove redeclarations of gl_SampleID and gl_SampleMaskameerj1-6/+0
These built-ins seem to be available without needing to be declared for fragment shaders, similar i.e. to gl_FragDepth
2023-02-04shader_recompiler/value.h: Remove lingering references to S32ameerj1-11/+0
2023-01-30Move to Clang Format 15Levi Behunin3-10/+10
Depends on https://github.com/yuzu-emu/build-environments/pull/69 clang-15 primary run
2023-01-29spirv: Fix TXQ with MSAA texturesameerj3-8/+19
2023-01-29emit_glasm_image: Fix TXQ with MSAA texturesameerj1-1/+9
2023-01-29emit_glsl_image: Implement TXQ with MSAA texturesameerj1-9/+23
Also fixes for texture buffers, which do not have mips eithers.
2023-01-29texture_pass: Fix texture descriptors comparisonsameerj1-2/+9
2023-01-29texture_pass: Refactor texture handle retrievalameerj1-7/+7
2023-01-28shader_recompiler: TXQ: Skip QueryLevels when possibleameerj11-29/+37
2023-01-28emit_glsl_image: Fix ImageFetch for MSAA texturesameerj1-6/+11
2023-01-27glasm: Add MS sampler typesameerj2-5/+8
2023-01-27glsl: Add MS sampler typesameerj1-22/+27
2023-01-26shader_recompiler: Remove S32 IR typeameerj13-46/+19
The frontend IR opcodes do not distinguish between signed and unsigned integer types. Fixes broken shaders when IR validation/graphics debugging is enabled for shaders that used BitCastS32F32
2023-01-23spirv: fix multisampled image fetchLiam4-2/+16
2023-01-07Revert "shader_recompiler: Align SSBO offsets to meet host requirements"Liam4-12/+6
This reverts commit 8804a4eb23e0c4f3e4bab03dee7c204bd38bf21e.
2023-01-07Avoid OOB array access reading passthrough attr maskBilly Laws1-1/+1
YFC 1.5 extended the size of the varying mask used to hold passthrough attrs without considering this
2023-01-05Run clang-formatBilly Laws5-23/+33
2023-01-05shader_recompiler: Fix shuffle partitioning for >64 invoc-per-subgroup GPUsBilly Laws1-30/+28
The existing implementation only supports 64 invoc-per-subgroup GPUs, and misbehaves on adreno when invocations need to be split into 4 emulated subgroups.
2023-01-05shader_recompiler: Add support for lowering geometry passthroughBilly Laws2-40/+67
Reuses most of the existing code for generating the gl_Layer passthrough. Fixes geometry in Nier: Automata on GPUs without HW passthrough support.
2023-01-05shader_recompiler: Align SSBO offsets to meet host requirementsBilly Laws4-6/+11
We can take advantage of SSBO addresses being passed in a constant bufer to account for the extra alignment requirements in the shader itself.
2023-01-05shader_recompiler: SPIRV: Only enable int64 feature when supportedBilly Laws1-1/+1
2023-01-05shader_recompiler: Add comparison operators to descriptor typesBilly Laws1-0/+12
2023-01-05Vulkan: Add a workaround for input_position on Adreno driversBilly Laws4-11/+41
Adreno drivers will crash compiling geometry shaders if the input position is not wrapped in a gl_in struct.
2023-01-04Video_core: Address feedbackFernando Sahmkow9-0/+39
2023-01-03ShaderCompiler: Inline driver specific constants.Fernando Sahmkow2-1/+34
2023-01-01MacroHLE: Final cleanup and fixes.Fernando Sahmkow1-2/+2
2023-01-01MacroHLE: Add OpenGL SupportFernando Sahmkow2-1/+13
2023-01-01MacroHLE: Add HLE replacement for base vertex and base instance.Fernando Sahmkow12-6/+91
2022-12-14Vulkan: Add support for VK_EXT_depth_clip_control.FernandoS273-3/+5
2022-12-14spirv_emit_context: declare GroupNonUniform capability for SubgroupLocalInvocationIdLiam1-0/+2
2022-12-01shader_recompiler: add gl_Layer translation GS for older hardwareLiam7-1/+165
2022-12-01CMake: Consolidate common PCH headersameerj1-7/+1
2022-11-30CMake: Use precompiled headersameerj2-0/+18
2022-11-30value.h: remove recursive includeameerj1-1/+0
2022-11-27Vulkan: update initializationLiam3-19/+31
Co-authored-by: bylaws <bylaws@users.noreply.github.com>
2022-11-23general: fix compile for Apple ClangLiam6-3/+9
2022-11-19spirv_emit_context: add missing flat decorationLiam1-0/+1
2022-11-17shader: Implement miss attribute layerFengChen5-0/+13
2022-11-11ir/texture_pass: Use host_info instead of querying Settings::values (#9176)Morph4-8/+13
2022-11-07video_core: Fix few issues in Tess stageFengChen16-5/+60
2022-11-04video_core: Fix SNORM texture buffer emulating error (#9001)Feng Chen15-16/+115
2022-10-25Revert "shader_recompiler/dead_code_elimination: Add DeadBranchElimination pass"Feng Chen3-98/+9
2022-10-22CMakeLists: Disable C4100 and C4324Morph2-8/+0
Disabling C4100 is similar to -Wno-unused-parameter
2022-10-22CMakeLists: Remove redundant warningsMorph1-2/+0
These warnings are already included in /W3.
2022-10-22CMakeLists: Treat MSVC warnings as errorsMorph1-1/+0
2022-10-22general: Enforce C4800 everywhere except in video_coreMorph1-1/+0
2022-10-22CMakeLists: Remove all redundant warningsMorph1-8/+2
These are already explicitly or implicitly set in src/CMakeLists.txt
2022-10-17Address feedbackFengChen1-6/+6
2022-10-06General: Fix compilation for GCCLiam White1-1/+1
2022-10-06Shader Decompiler: implement better tracking for Vulkan samplers.Fernando Sahmkow1-9/+59
2022-10-06Shader Decompiler: Check for shift when deriving composite samplers.Fernando Sahmkow2-3/+35
2022-10-06Shader Decompiler: Fix dangerous behavior of invalid iterator insertion.Fernando Sahmkow1-3/+3
2022-10-02shader_recompiler: add extended LDC to GLASM backendLiam1-4/+21
2022-09-23chore: fix some typosAndrea Pappacoda2-2/+2
Fix some typos reported by Lintian
2022-09-20video_core: Fix legacy to generic location unpairedFengChen3-15/+29
2022-09-20video_core: Generate mipmap texture by drawingFengChen20-1/+163
2022-08-31style: General style changes to match with the rest of the codebaseMorph1-5/+5
2022-08-25video_code: support rectangle textureFengChen10-2/+44
2022-07-29Add missed shader defines. Fixes Xenoblade Chronicles 3 booting with Vulkan.Kelebek11-2/+3
2022-07-27chore: make yuzu REUSE compliantAndrea Pappacoda2-4/+5
[REUSE] is a specification that aims at making file copyright information consistent, so that it can be both human and machine readable. It basically requires that all files have a header containing copyright and licensing information. When this isn't possible, like when dealing with binary assets, generated files or embedded third-party dependencies, it is permitted to insert copyright information in the `.reuse/dep5` file. Oh, and it also requires that all the licenses used in the project are present in the `LICENSES` folder, that's why the diff is so huge. This can be done automatically with `reuse download --all`. The `reuse` tool also contains a handy subcommand that analyzes the project and tells whether or not the project is (still) compliant, `reuse lint`. Following REUSE has a few advantages over the current approach: - Copyright information is easy to access for users / downstream - Files like `dist/license.md` do not need to exist anymore, as `.reuse/dep5` is used instead - `reuse lint` makes it easy to ensure that copyright information of files like binary assets / images is always accurate and up to date To add copyright information of files that didn't have it I looked up who committed what and when, for each file. As yuzu contributors do not have to sign a CLA or similar I couldn't assume that copyright ownership was of the "yuzu Emulator Project", so I used the name and/or email of the commit author instead. [REUSE]: https://reuse.software Follow-up to 01cf05bc75b1e47beb08937439f3ed9339e7b254
2022-06-14general: fix compilation on GCC 12Liam1-1/+1
2022-06-14structured_control_flow: Remove constexpr Flow::Blocklat9nq1-6/+0
This seems to be unsupported in newer libstdc++ versions due to Flow::Block's base class being a non-literal type. It's not clear to me why this was permitted in earlier versions.
2022-06-14CMakeLists: Make variable shadowing a compile-time errorMorph1-3/+0
Now that the entire project is free of variable shadowing, we can enforce this as a compile time error to prevent any further introduction of this logic bug.
2022-05-14general: Avoid ambiguous format_to compilation errorsLioncash2-2/+2
Ensures that we're using the fmt version of format_to. These are also the only three outliers. All of the other formatters we have are properly qualified.
2022-04-28GCC 12 fixesLiam1-1/+1
2022-04-23general: Convert source file copyright comments over to SPDXMorph233-699/+466
This formats all copyright comments according to SPDX formatting guidelines. Additionally, this resolves the remaining GPLv2 only licensed files by relicensing them to GPLv2.0-or-later.
2022-04-04shader_recompiler: Decrease indirect cbuf limit to match hardwareLiam1-1/+1
2022-04-02fix: typosAndrea Pappacoda2-2/+2
2022-04-01shader_compiler: support const buffer indirect addressing in GLSLLiam4-9/+38
2022-04-01shader_recompiler: support const buffer indirect addressing on OpenGL SPIR-VLiam3-17/+14
2022-03-23dead_code_elimination_pass: Remove unreachable Phi argumentsameerj3-0/+36
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-22shader_recompiler/dead_code_elimination: Add DeadBranchElimination passameerj1-9/+62
This adds a pass to eliminate if(false) branches within the shader code
2022-03-20general: Fix clang/gcc build errorsameerj1-0/+1
2022-03-20shader_recompiler: Reduce unused includesameerj69-106/+7
2022-03-18Address review commentsLiam1-1/+1
2022-03-18shader_recompiler/EXIT: skip render targets with no outputsLiam2-0/+8
2022-03-18shader_recompiler/EXIT: increment output register on failed enable testLiam1-0/+1
2022-03-17Address review commentsLiam4-52/+36
2022-03-17shader_recompiler: Use functions for indirect const buffer accessesLiam5-39/+94
2022-03-17Address review commentsLiam1-16/+15
2022-03-16shader_recompiler: Implement LDC.IS address modeLiam1-2/+12
2022-03-15shader: add support for const buffer indirect addressingLiam2-18/+68
2022-03-13Shader decompiler: do constant propgation before texture pass.Fernando Sahmkow1-2/+2
2022-03-13Shader decompiler: Fix storage tracking in deko3d.Fernando Sahmkow1-1/+2
2022-03-12rescaling_pass: Fix rescaling Color2DArray ImageFetch offsetsameerj1-2/+27
ImageFetch offsets for 2D array coordinates have a different composite size than the coordinates. The rescaling pass was not taking this into account. Fixes broken shaders when scaling is enabled in Astral Chain, and likely other titles.
2022-03-12emit_spirv, vk_compute_pass: Resolve VS2022 compiler errorsameerj1-1/+1
2022-03-08shader_recompiler/LOP3: Use brute force python results within switch/case.Markus Wick2-52/+620
Thanks to @asLody for optimizing this function. This raised the focus that this function should be optimized more. The current table assumes that the host GPU is able to invert for free, so only AND,OR,XOR are accumulated in the performance metrik. Performance results: Instructions 0: 8 1: 30 2: 114 3: 80 4: 24 Latency 0: 8 1: 30 2: 194 3: 24
2022-01-30emit_glsl_atomic: Implement 32x2 fallback atomic opsameerj1-9/+55
2022-01-30lower_int64_to_int32: Add 64-bit atomic fallbacksameerj3-11/+76
2022-01-30shaders: Add U64->U32x2 Atomic fallback functionsameerj9-1/+469
2022-01-29spirv_atomic: Define U32x2 storage buffers for 64-bit storage atomicsameerj2-3/+3
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-27video_minimum_maximum: Implement src operand selectorsameerj1-12/+6
Used by Pokemon Legends: Arceus
2022-01-25shader_recompiler: Remove unnecessary [[nodiscard]]Lioncash1-2/+1
Since ConvertLegacyToGeneric has a void return value, there's nothing that is actually returned by the function.
2022-01-17shader_recompiler: fix potential OOB accessv19932-6/+8
Found by static analysis with PVS-Studio. Original check wasn't actually checking for OOB and would segfault in case of it.
2022-01-10logging/log.h: move enum class formatter to a separate file ...liushuyu3-7/+7
... to common/logging/formatter.h
2022-01-08logging: adapt to changes in fmt 8.1liushuyu2-6/+6
2022-01-05glsl: Remove unreachable returnNarr the Reg1-1/+0
2022-01-04ShaderDecompiler: Add a debug option to dump the game's shaders.Fernando Sahmkow1-0/+2
2021-12-30glsl: Add boolean reference workaroundameerj3-2/+8
2021-12-30glsl_context_get_set: Add alternative cbuf type for broken driversameerj3-17/+27
some drivers have a bug bitwise converting floating point cbuf values to uint variables. This adds a workaround for these drivers to make all cbufs uint and convert to floating point as needed.
2021-12-30emit_glsl_integer: Use negation work aroundameerj1-2/+2
2021-12-30shader: Add integer attribute get optimization passameerj9-0/+86
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-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-25emit_glsl_floating_point: Fix FPNeg on newer Nvidia driversameerj1-2/+2
2021-12-18Address format clangvonchenplus1-36/+36
2021-12-18Remove spirv handle legacy related codevonchenplus4-190/+1
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 filesameerj7-6/+6
2021-12-05general: Add missing copyright noticesameerj1-0/+4
2021-11-19Implement convert legacy to genericFeng Chen4-1/+103
2021-11-16ShaderCache: Better fix for Shuffling gl_FragCoordFernando Sahmkow1-2/+13
2021-11-16Texture Cahe/Shader decompiler: Resize PointSize on rescaling, refactor and make reaper more agressive on 4Gb GPUs.FernandoS271-0/+21
2021-11-16vulkan: Fix rescaling push constant usageameerj4-34/+36
2021-11-16rescaling_pass: Fix IR errors when unscalable texture types are encounteredameerj1-0/+28
2021-11-16rescaling_pass: Logic simplification and minor style cleanupameerj2-33/+17
2021-11-16rescaling_pass: Scale ImageFetch offset if it existsameerj1-59/+37
Plus some code deduplication
2021-11-16rescaling_pass: Enable PatchImageQueryDimensions on fragment stagesameerj1-5/+4
2021-11-16gl_texture_cache/rescaling_pass: minor cleanupameerj1-12/+8
2021-11-16rescaling_pass: Fix and simplify shuffle/fragcoord passameerj1-26/+20
2021-11-16Shader: Don't rescale FragCoord if used by ShuffleFernando Sahmkow2-2/+55
2021-11-16shader, video_core: Fix GCC build errorsameerj1-4/+0
2021-11-16emit_spirv: Fix RescalingLayout alignmentameerj1-0/+1
2021-11-16RescalingPass: Agregate pixels on texelFetch while on Fragment ShaderFernando Sahmkow1-3/+97
2021-11-16shader: Fix TextureSize check on rescaling.Fernando Sahmkow1-27/+21
2021-11-16emit_spirv: Fix RescalingLayout alignmentameerj1-2/+2
2021-11-16shader: Properly scale image reads and add GL SPIR-V supportReinUsesLisp20-51/+171
Thanks for everything!
2021-11-16shader: Properly blacklist and scale image loadsReinUsesLisp1-3/+19
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 patchingReinUsesLisp8-5/+86
2021-11-16shader/rescaling_pass: Patch more instructionsReinUsesLisp1-4/+101
2021-11-16shader: Add IsTextureScaled opcodeReinUsesLisp10-0/+34
2021-11-16shader: Add copy constructor to instructionsReinUsesLisp4-1/+20
2021-11-16shader: Add integer division opcodesReinUsesLisp9-0/+37
2021-11-16shader: Fix rescaling passReinUsesLisp1-1/+1
2021-11-16shader: Fix resolution scaling passReinUsesLisp5-35/+32
2021-11-16shader: Add resolution down factor opcodeReinUsesLisp9-0/+25
2021-11-16ShaderDecompiler: Add initial support for rescaling.Fernando Sahmkow2-0/+73
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 Sahmkow3-2/+30
2021-10-31ShaderCache: Order Phi Arguments from farthest away to nearest.Fernando Sahmkow5-0/+37
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-24TexturePass: Fix clamping of images as this allowed negative indices.Fernando Sahmkow1-1/+1
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-10-17Shader Compiler: avoid overflowed indices on indixed samplers.Fernando Sahmkow1-1/+2
2021-09-29style: Remove extra space preceding the :: operatorMorph1-2/+2
2021-09-24general: Update style to clang-format-12ameerj1-2/+4
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 Chen4-30/+26
2021-09-06Dynamic get unused locationFeng Chen1-27/+49
2021-09-06Implement intput and output fixed fnc texturesFeng Chen4-19/+25
2021-09-03Rename parametersFeng Chen5-14/+24
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 Chen5-0/+57
2021-08-30structured_control_flow: Skip reordering nested demote branches.ameerj1-0/+11
Nested demote branches add complexity with combining the condition if it has not been initialized yet. Skip them for the time being.
2021-08-30structured_control_flow: Conditionally invoke demote reorder passameerj4-10/+16
This is only needed on select drivers when a fragment shader discards/demotes.
2021-08-28structured_control_flow: Add DemoteCombinationPassameerj1-1/+107
Some drivers misread data when demotes are interleaved in the program. This moves demote branches to be checked at the end of the program. Fixes "wireframe" issue in Pokemon SwSh on some drivers
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-30shader: Fold UnpackFloat2x16 and PackFloat2x16ReinUsesLisp1-0/+4
Simplifies the code a bit when possible. These instructions should be no-ops codegen wise.
2021-07-28shader: Mark ConvertF16F32 and ConvertF32F16 as fp16 instructionsReinUsesLisp1-0/+2
Fixes instances where fp16 types are not declared on SPIR-V but they are used. This shouldn't happen on master, as it's been uncovered by an additional optimization pass.
2021-07-27exception: Make constructors explicitLioncash1-4/+4
Ensures that exception construction is always explicit.
2021-07-27exception: Make what() member function nodiscardLioncash1-1/+1
2021-07-27exception: Narrow down specific headerLioncash1-1/+1
We can use the <exception> header instead of pulling in all of the exception-style classes.
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-26shader_recompiler: Remove unnecessary [[nodiscard]] instancesLioncash2-4/+4
[[nodiscard]] doesn't do anything on functions with a void return type and causes superfluous warnings.
2021-07-26control_flow: Fix duplicate switch case in OpcodeTokenLioncash1-1/+1
This previously duplicated the case of the PBK case above it.
2021-07-26object_pool: Add missing return in Chunk move assignment operatorLioncash1-0/+1
Prevents undefined behavior from occurring.
2021-07-26shader: Fold integer FMA from Nvidia's patternReinUsesLisp1-0/+175
Fold shaders doing "a * b + c" on integers from the pattern generated by Nvidia's GL compiler. On a somewhat complex compute shader it reduces the code size by 16 instructions from 2 matches on Turing GPUs. On Intel as extracted from KHR_pipeline_executable_properties: Before the optimization: ``` Instruction Count: 2057 Basic Block Count: 45 Scratch Memory Size: 14752 Spill Count: 232 Fill Count: 261 SEND Count: 610 Cycle Count: 11325 ``` After the optimization: ``` Instruction Count: 2046 Basic Block Count: 44 Scratch Memory Size: 13728 Spill Count: 219 Fill Count: 268 SEND Count: 604 Cycle Count: 11367 ```
2021-07-26shader: Use TryInstRecursive on XMAD multiply foldingReinUsesLisp1-14/+12
Simplify a bit the logic.
2021-07-26shader: Add TryInstRecursive utility to valuesReinUsesLisp1-0/+8
2021-07-23shader: Support out of bound local memory reads and immediate writesReinUsesLisp1-4/+21
Support ignoring immediate out of bound writes. Writing dynamically out of bounds is not yet supported (e.g. R0+0x4). Reading out of bounds yields zero. This is supported checking for the size from the IR; if the input is immediate, the optimization passes will drop it.
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: Implement ISETP.Xameerj4-44/+57
2021-07-23shader: Avoid usage of C++20 ranges to build in clangReinUsesLisp11-39/+47
2021-07-23glsl: Clamp shared mem size to GL_MAX_COMPUTE_SHARED_MEMORY_SIZEameerj2-2/+11
2021-07-23shader_recompiler, video_core: Resolve clang errorslat9nq13-41/+39
Silences the following warnings-turned-errors: -Wsign-conversion -Wunused-private-field -Wbraced-scalar-init -Wunused-variable And some other errors
2021-07-23shader: Manually convert from array<u32> to bitset instead of using bit_castReinUsesLisp1-2/+3
2021-07-23glsl: Fix tracking of info.uses_shadow_lodameerj1-4/+4
2021-07-23shader: Ignore global memory ops on devices lacking int64 supportameerj6-30/+77
2021-07-23dual_vertex_pass: Clang formatameerj1-14/+14
2021-07-23emit_spirv: Workaround VK_KHR_shader_float_controls on fp16 NvidiaReinUsesLisp2-5/+10
Fix regression on Fire Emblem: Three Houses when using native fp16.
2021-07-23shader: GCC fmt 8.0.0 fixeslat9nq7-16/+19
2021-07-23shader: Account for 33-bit IADD3 scenarioameerj1-2/+10
2021-07-23shader: Only apply shift on register mode for IADD3ReinUsesLisp1-10/+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-23shader: Use std::bit_cast instead of Common::BitCast for passthroughReinUsesLisp1-2/+3
2021-07-23glasm: Add passthrough geometry shader supportReinUsesLisp2-7/+26
2021-07-23shader: Rework varyings and implement passthrough geometry shadersReinUsesLisp22-316/+302
Put all varyings into a single std::bitset with helpers to access it. Implement passthrough geometry shaders using host's.
2021-07-23shader: Only verify shader when graphics debugging is enabledReinUsesLisp1-2/+7
2021-07-23shader: Unify shader stage typesReinUsesLisp1-2/+9
2021-07-23lower_int64_to_int32: Add missing includelat9nq1-0/+1
2021-07-23shader: Emulate 64-bit integers when not supportedReinUsesLisp1-0/+3
Useful for mobile and Intel Xe devices.
2021-07-23shader: Add int64 to int32 lowering passReinUsesLisp3-0/+218
2021-07-23shader: Teach global memory base tracker to follow vectorsReinUsesLisp1-15/+14
2021-07-23shader: Add constant propagation to integer vectorsReinUsesLisp1-0/+9
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 IAbs64ReinUsesLisp9-26/+3
2021-07-23glsl: Fix IADD CCameerj2-5/+7
2021-07-23shader_recompiler: Fix IADD3 input partitioningameerj1-14/+13
2021-07-23shader: Move loop safety tests to code emissionReinUsesLisp16-108/+54
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-23shader: Calibrate loop safety thresholdReinUsesLisp1-1/+1
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-23texture_pass: Fix is_read image qualificationameerj1-1/+1
Atomic operations are considered to have both read and write access. This was not being accounted for.
2021-07-23shader: Align constant buffer sizes to 16 bytesReinUsesLisp1-1/+2
WAR for AMD reading zeroes on uniform buffers of size 2.
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: Simplify MergeDualVertexProgramsReinUsesLisp1-6/+4
2021-07-23shader: Properly manage attributes not written from previous stagesReinUsesLisp10-36/+40
2021-07-23glsl: Only declare fragment outputs on fragment shadersReinUsesLisp1-4/+6
2021-07-23shader: Split profile and runtime info headersReinUsesLisp11-76/+91
2021-07-23shader: Add support for native 16-bit floatsReinUsesLisp4-4/+26
2021-07-23shader: Rename maxwell/program.h to translate_program.hReinUsesLisp3-9/+4
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 feedbackameerj7-21/+64
2021-07-23glsl: Move gl_Position/generic attribute initialization to EmitProlgueameerj2-14/+12
2021-07-23glsl: Conditionally use fine/coarse derivatives based on device supportameerj3-4/+28
2021-07-23glsl: Cleanup/Address feedbackameerj9-28/+22
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_lodameerj3-4/+15
2021-07-23glsl: Add stubs for sparse queries and variable aoffi when not supportedameerj4-13/+39
2021-07-23glsl: Implement legacy varyingsameerj6-8/+81
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]]ameerj12-315/+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 fswzaddameerj4-5/+44
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 layerameerj5-153/+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 bugameerj2-51/+112
2021-07-23glsl: Use textureGrad fallback when EXT_texture_shadow_lod is unsupportedameerj3-8/+41
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 itameerj4-8/+17
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 reuseameerj14-353/+482
2021-07-23glsl: Fix ATOM and implement ATOMSameerj5-114/+136
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 atomicsameerj3-6/+16
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 supportameerj2-2/+9
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 implameerj5-75/+134
2021-07-23glsl: implement phi nodesameerj4-20/+54
2021-07-23glsl: Wip storage atomic opsameerj10-327/+414
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 backendameerj27-0/+3292
2021-07-23spirv: Reduce log severity of mismatching denorm rulesReinUsesLisp1-2/+2
2021-07-23shader: Fix loop safety to SSA passReinUsesLisp2-2/+4
2021-07-23shader: Add loggingReinUsesLisp13-28/+30
2021-07-23shader: Add shader loop safety check settingslat9nq9-33/+130
Also add a setting for enable Nsight Aftermath.
2021-07-23shader: Comment why the array component is not read in TMMLReinUsesLisp1-0/+2
2021-07-23tmml: Remove index component from coords vecameerj1-4/+3
The lod query functions exposed by the rendering API's do not make use of the texturearray layer indexing.
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_environment: Add shader_local_memory_crs_size to local memory sizeameerj1-2/+2
Fixes DOOM 2016 missing local memory
2021-07-23shader: Fix VertexA Shaders.FernandoS273-14/+30
2021-07-23shader: Add 2D and 3D variants to SUATOM and SUREDReinUsesLisp1-0/+4
Used by Claybook.
2021-07-23shader: Avoid CPU side undefined behavior on I2FReinUsesLisp1-0/+2
2021-07-23glasm: Use ARB_derivative_control conditionallyReinUsesLisp3-7/+30
2021-07-23buffer_cache: Reduce uniform buffer size from shader usageReinUsesLisp2-3/+17
Increases performance significantly on certain titles.
2021-07-23emit_glasm_context_get_set: Remove unused variablelat9nq1-1/+0
2021-07-23shader,glasm: Implement legacy texcoord loadsReinUsesLisp3-54/+29
2021-07-23glasm: Implement legacy varyingsReinUsesLisp1-17/+56
2021-07-23shader: Track legacy varyingsReinUsesLisp2-17/+105
2021-07-23shader: Add support for "negative" and unaligned offsetsReinUsesLisp3-8/+13
"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-23shader: Implement ISCADD32IReinUsesLisp1-17/+31
2021-07-23spirv: Fix output generics with componentsReinUsesLisp1-1/+1
2021-07-23opengl: Declare fragment outputs even if they are not usedReinUsesLisp4-10/+9
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-23shader: Always initialize up reference in structure control flowReinUsesLisp1-31/+36
Fixes ubsan issue.
2021-07-23shader: Fix ImageWrite indexingReinUsesLisp1-1/+1
2021-07-23spirv: Fix image and image buffer descriptor index usageReinUsesLisp1-5/+7
2021-07-23glasm: Fix immediate texture coordinateReinUsesLisp1-0/+1
2021-07-23shader: Clang-format secondary texturesReinUsesLisp1-2/+2
2021-07-23shader: Fix secondary texturesReinUsesLisp1-2/+2
2021-07-23shader: Fix TMML queriesReinUsesLisp1-5/+9
2021-07-23shader: Fix FSwizzleAdd folding when going through phi nodesReinUsesLisp1-2/+2
2021-07-23shader/exception: Fix compilation errors on gccReinUsesLisp1-6/+6
2021-07-23glasm: Reduce reg allocation leaks from an exception to a logReinUsesLisp1-1/+1
2021-07-23shader: Handle host exceptionsReinUsesLisp4-13/+43
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"ReinUsesLisp2-16/+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 possibleReinUsesLisp6-370/+383
2021-07-23glasm: Implement Y directionReinUsesLisp4-3/+9
2021-07-23glasm: Skip phi moves on undefined instructionsReinUsesLisp2-1/+16
2021-07-23glasm: Implement undef instructionsReinUsesLisp2-15/+15
2021-07-23glasm: Fix global memory callbacksReinUsesLisp1-5/+6
2021-07-23video_core,shader: Clang-format fixesReinUsesLisp2-2/+2
2021-07-23glasm: Release phi node registers after they are no longer neededReinUsesLisp2-38/+54
2021-07-23glasm: Remove unintentionally committed fmt::printsReinUsesLisp1-2/+0
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 atomicsReinUsesLisp3-166/+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 structsReinUsesLisp11-71/+88
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 instructionReinUsesLisp12-16/+36
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 instructionsReinUsesLisp10-69/+275
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 fixeslat9nq7-58/+55
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-23shader: Use a non-trivial dummy to construct ASL node unionReinUsesLisp1-1/+6
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 GLASMReinUsesLisp12-25/+117
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 listReinUsesLisp33-505/+437
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 GLASMReinUsesLisp10-100/+166
2021-07-23glasm: Add MUFU instructions to GLASMReinUsesLisp2-21/+22
2021-07-23glasm: Implement IAbs64 and INeg64 on GLASMReinUsesLisp2-6/+6
2021-07-23shader: Add floating-point rounding to I2FReinUsesLisp3-35/+42
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 instructionsReinUsesLisp10-840/+1173
2021-07-23glasm: Changes to GLASM register allocator and emit contextReinUsesLisp4-26/+64
2021-07-23glasm: Add GLASM backend infrastructureReinUsesLisp28-4/+3115
2021-07-23shader: ISET.X implementationameerj1-8/+58
2021-07-23shader: Fixup SPIR-V emit header namespacesReinUsesLisp1-2/+2
2021-07-23Move SPIR-V emission functions to their own headerReinUsesLisp24-572/+631
2021-07-23shader: Optimize NVN FallthroughFernandoS274-9/+83
2021-07-23shader: Stub SR_AFFINITYFernandoS271-0/+3
2021-07-23shader: Implement Int32 SUATOM/SUREDameerj17-6/+733
2021-07-23shader: Initial OpenGL implementationReinUsesLisp3-0/+12
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: Add OpenGL shader profile optionsReinUsesLisp1-0/+11
2021-07-23shader: Remove shader utilReinUsesLisp4-176/+0
2021-07-23shader: Address feedbackFernandoS274-35/+33
2021-07-23shader: Implement VertexA stageFernandoS2711-0/+166
2021-07-23shader: Implement delegation of Exit to dispatcher on CFGFernandoS272-3/+47
2021-07-23shader: Fix IADD3.CCameerj1-12/+5
2021-07-23shader: Fix BFE s32 undefined checkameerj1-1/+1
Our unit tests were hitting this exception.
2021-07-23shader: Fix error checking in bitfieldExtract and implement bitfieldInsert foldingReinUsesLisp1-5/+14
2021-07-23shader: Fix storage type when reading patches on tess controlReinUsesLisp1-1/+2
2021-07-23shader: Fix VMNMX selector BReinUsesLisp1-1/+2
2021-07-23shader: Increase the maximum number of storage buffersReinUsesLisp1-1/+1
Compute shaders spill uniform buffers on storage buffers, increasing the expected number.
2021-07-23shader: Remove identity removal pass for better build timesReinUsesLisp1-1/+0
2021-07-23shader: Add more strict validation the passReinUsesLisp1-0/+42
2021-07-23shader: Fix forward referencing identity instructions when inserting phiReinUsesLisp1-11/+13
2021-07-23shader: Remove invalidated blocks in dead code elimination passReinUsesLisp1-3/+6
2021-07-23shader: Add missing UndoUse case for GetSparseFromOpReinUsesLisp1-0/+4
2021-07-23shader: Simplify code in opcodes.h to fix IntellisenseReinUsesLisp1-8/+6
Avoid using std::array to fix Intellisense not properly compiling this code and disabling itself on all files that include it. While we are at it, change the code to use u8 instead of size_t for the number of instructions in an opcode.
2021-07-23shader: Implement indexed texturesReinUsesLisp7-93/+189
2021-07-23shader: Refactor atomic_operations_global_memoryameerj1-44/+36
2021-07-23shader: add missing include guard in half_floating_point_helper.hameerj1-0/+2
2021-07-23shader: Fix gcc warningsReinUsesLisp2-2/+2
2021-07-23shader: Inline common Value gettersReinUsesLisp2-109/+102
2021-07-23shader: Intrusively store in a block if it's sealed or notReinUsesLisp2-3/+11
2021-07-23cmake: Link to common in shader_recompilerReinUsesLisp1-1/+1
2021-07-23shader: Improve goto removal algorithm complexityReinUsesLisp1-49/+28
Find sibling node containing a nephew searching from the nephew itself instead of the uncle.
2021-07-23shader: Use memset to reset instruction argumentsReinUsesLisp2-4/+7
2021-07-23shader: Inline common Value functions into the headerReinUsesLisp2-19/+23
2021-07-23shader: Move microinstruction header to the value headerReinUsesLisp19-180/+161
2021-07-23shader: Move siblings check to a separate function and comment them outReinUsesLisp1-16/+21
2021-07-23shader: Intrusively store register values in block for SSA passReinUsesLisp2-21/+53
2021-07-23shader: Inline common Opcode and Inst functionsReinUsesLisp4-112/+83
2021-07-23shader: Inline common IR::Block methodsReinUsesLisp2-17/+12
2021-07-23shader: Use a small_vector for phi blocksReinUsesLisp1-1/+2
2021-07-23shader: Calculate number of arguments in an opcode at compile timeReinUsesLisp1-3/+12
2021-07-23shader: Implement D3D samplersReinUsesLisp3-12/+76
2021-07-23shader: Add constant propagation for arithmetic right shiftsReinUsesLisp1-0/+3
2021-07-23shader: Simplify code for local memoryReinUsesLisp1-6/+11
2021-07-23shader: Add NVN storage buffer fallbacksReinUsesLisp9-62/+214
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-7/+10
2021-07-23shader: Implement F2F (Imm)FernandoS271-2/+28
2021-07-23shader: Implement IADD3.CC/.XFernandoS271-7/+22
2021-07-23shader: Address feedbackFernandoS274-7/+4
2021-07-23shader: Add coarse derivativesFernandoS277-8/+28
2021-07-23shader: Implement fine derivates constant propagationFernandoS279-0/+101
2021-07-23shader: Implement SR_Y_DIRECTIONFernandoS277-0/+18
2021-07-23shader: Fix Phi node typesReinUsesLisp2-4/+4
2021-07-23shader: Fix memory barriersReinUsesLisp8-62/+30
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 CCameerj3-14/+17
Fix two bugs in BFI.
2021-07-23shader: Implement SampleMaskReinUsesLisp11-2/+22
2021-07-23shader: Implement PIXLD.MY_INDEXReinUsesLisp13-4/+69
2021-07-23spirv: Bitcast non-F32 output attributes to their type before storeReinUsesLisp1-13/+28
2021-07-23spirv: Implement ViewportMask with NV_viewport_array2ReinUsesLisp7-0/+20
2021-07-23spirv: Bitcast non-F32 attributes to F32ReinUsesLisp1-7/+9
2021-07-23shader: Implement PrimitiveIdReinUsesLisp5-0/+10
2021-07-23shader: Implement tessellation shaders, polygon mode and invocation idReinUsesLisp22-88/+555
2021-07-23shader: Mark atomic instructions as writesReinUsesLisp1-0/+27
2021-07-23spirv: Implement image buffersReinUsesLisp5-23/+86
2021-07-23spirv: Implement Layer storesReinUsesLisp6-9/+30
2021-07-23spirv: Fix alpha testFernandoS271-0/+5
2021-07-23spirv: Fix non-atomic 64-bit storeameerj1-1/+1
2021-07-23spirv: Implement alpha testameerj2-1/+59
2021-07-23shader: Implement transform feedbacks and define file formatReinUsesLisp8-16/+116
2021-07-23shader: Implement early Z testsReinUsesLisp2-0/+4
2021-07-23shader: Document and relax cache control on surface instructionsReinUsesLisp1-10/+11
2021-07-23spirv: Rework storage buffers and shader memoryReinUsesLisp8-499/+553
2021-07-23shader: Fix fixed pipeline point size on geometry shadersReinUsesLisp1-10/+18
2021-07-23shader: Add constant propagation for *&^| binary operationsReinUsesLisp1-0/+12
2021-07-23shader: Implement geometry shadersReinUsesLisp12-84/+221
2021-07-23shader: Implement OUTReinUsesLisp10-17/+73
2021-07-23internal_stage_buffer_entry_read: Remove pragma optimize offlat9nq1-2/+0
2021-07-23shader: Stub SR_INVOCATION_INFOReinUsesLisp1-2/+5
2021-07-23shader: Stub ISBERDReinUsesLisp3-4/+56
2021-07-23shader: Fix CC in I2IReinUsesLisp1-0/+2
2021-07-23spirv: Define StorageImageWriteWithoutFormat capability when usedReinUsesLisp3-0/+9
2021-07-23shader: Simplify FLO and throw on CCReinUsesLisp1-12/+13
2021-07-23shader: Mark blocks with no end branch as unreachableReinUsesLisp1-2/+7
2021-07-23shader: Implement LOP CCReinUsesLisp3-12/+29
2021-07-23shader: Implement SR_THREAD_KILLReinUsesLisp10-0/+22
2021-07-23shader: Apply sign bit in FCMP (imm)ReinUsesLisp1-1/+1
2021-07-23shader: Implement ATOM/S and REDameerj18-19/+1724
2021-07-23spirv: Move phi node patching to a separate functionReinUsesLisp1-13/+16
2021-07-23spirv: Guard against typeless image reads on unsupported devicesReinUsesLisp5-1/+16
2021-07-23shader: Move LaneId to the warp emission file and fix AMDReinUsesLisp5-7/+11
2021-07-23spirv: Fix forward declarations on phi nodesReinUsesLisp1-47/+25
2021-07-23shader: Mark ImageWrite with side effectsReinUsesLisp1-0/+3
2021-07-23shader: Implement CC for ISET, FSET, PSET, CSET, and DSETFernandoS2718-13/+136
Throw when other instructions are missing CC.
2021-07-23shader: Remove outdated comment in F2IReinUsesLisp1-4/+0
2021-07-23shader: Implement SULD and SUSTReinUsesLisp23-137/+597
2021-07-23shader: Fix Windows build issuesReinUsesLisp1-1/+1
2021-07-23shader: Address feedback + clang formatlat9nq11-22/+20
2021-07-23shader_recompiler,video_core: Cleanup some GCC and Clang errorslat9nq59-297/+289
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: Fix FCMP immediate variantReinUsesLisp1-1/+9
2021-07-23shader: Fix dangling labelsReinUsesLisp1-0/+5
2021-07-23shader: Interact texture buffers with buffer cacheReinUsesLisp3-29/+29
2021-07-23shader: Fix F2IReinUsesLisp1-1/+1
2021-07-23shader: Fix TextureGradReinUsesLisp1-1/+1
2021-07-23shader: Implement texture buffersReinUsesLisp6-23/+125
2021-07-23shader: Address feedbackFernandoS275-53/+54
2021-07-23shader: Implement indexed Position and ClipDistancesFernandoS273-11/+100
2021-07-23shader: Implement indexed attributesFernandoS2712-35/+279
2021-07-23shader: Implement AL2PFernandoS273-4/+36
2021-07-23shader: Fix BRX trackingFernandoS272-3/+4
2021-07-23shader: Move recursive SSA rewrite to the heapReinUsesLisp1-29/+89
2021-07-23shader: Fix ShadowCube declaration type, set number of pipeline threads based on hardwareFernandoS271-1/+1
2021-07-23shader: Fix splits on blocks using indirect branchesReinUsesLisp3-17/+38
2021-07-23shader: Eliminate orphan blocks more efficientlyReinUsesLisp1-7/+8
2021-07-23shader: Add subgroup masksReinUsesLisp10-45/+169
2021-07-23shader: Implement BAR and fix memory barriersReinUsesLisp7-5/+79
2021-07-23shader: Abstract breadth searches and use the abstractionReinUsesLisp4-104/+106
2021-07-23shader: Reimplement GetCbufU64 as GetCbufU32x2ReinUsesLisp9-22/+21
It may generate better code on some compilers and it's easier to handle.
2021-07-23shader: Remove unused header in VOTEReinUsesLisp1-2/+0
2021-07-23shader: Rework global memory tracking to use breadth-first searchReinUsesLisp1-69/+80
2021-07-23shader: Fix fp16 merge when using native fp16ReinUsesLisp1-3/+3
2021-07-23shader: Fix FADD32IReinUsesLisp1-6/+4
2021-07-23shader: Fix undetected bug from reviewFernandoS271-0/+3
2021-07-23shader: Address feedbackFernandoS273-13/+16
2021-07-23shader: "Implement" NOPFernandoS271-1/+1
2021-07-23shader: Address FeedbackFernandoS2716-211/+60
2021-07-23shader: Implement SR_LaneIdFernandoS277-0/+15
2021-07-23shader: Fix shared memory on cool driversFernandoS271-0/+1
2021-07-23shader: Implement MEMBARFernandoS279-11/+121
2021-07-23shader: Improve VOTE.VTG stubFernandoS277-4/+147
2021-07-23shader: Mark SSBOs as written when they areFernandoS272-2/+30
2021-07-23shader: Implement ViewportIndexFernandoS277-2/+32
2021-07-23shader: Stub TLD4's PTP when it isn't constantFernandoS271-1/+2
2021-07-23shader: Stub VOTE.VTGFernandoS274-4/+15
2021-07-23shader: Fold composite extractFernandoS271-0/+62
2021-07-23shader: Fold comparisons and Pack/Unpack16FernandoS271-1/+41
2021-07-23shader: Fix branches to visited virtual blocksReinUsesLisp2-0/+12
2021-07-23shader: Fix dependency on identity removal passReinUsesLisp2-3/+8
2021-07-23shader: Fix constant propagation to use reverse post orderReinUsesLisp1-1/+2
2021-07-23shader: Implement LDG .U.128 as .128ReinUsesLisp1-3/+2
2021-07-23shader: Unroll "using enum" for opcode declarationsReinUsesLisp1-1/+27
2021-07-23spirv: Remove unnecesary variable for clip distancesReinUsesLisp2-6/+2
2021-07-23shader: Implement ClipDistanceFernandoS275-0/+36
2021-07-23shader: Fix TXDFernandoS272-2/+2
2021-07-23shader: Address feedbackFernandoS274-52/+48
2021-07-23shader: Always pass a lod for TexelFetchReinUsesLisp3-25/+17
2021-07-23shader: Implement TXDFernandoS274-10/+183
2021-07-23shader: Implement ImageGradientFernandoS278-2/+84
2021-07-23shader: Implement TMML partiallyFernandoS276-13/+137
2021-07-23shader,spirv: Implement ImageQueryLod.FernandoS279-1/+38
2021-07-23shader: Implement TLDSFernandoS273-4/+253
2021-07-23shader: Implement TLDFernandoS277-14/+173
2021-07-23spirv: Add fixed pipeline point sizeReinUsesLisp3-1/+8
2021-07-23shader: Add PointCoord attributeFernandoS275-0/+16
2021-07-23shader: Add PointSize attributeameerj5-0/+13
2021-07-23shader: Store type of phi nodes in flagsReinUsesLisp3-2/+11
This is needed because pseudo-instructions where invalidated.
2021-07-23shader: Fix indirect branches to scheduler instructionsReinUsesLisp3-7/+17
2021-07-23spirv: Fix default output attribute initializationReinUsesLisp1-3/+3
2021-07-23shader: Add missing new linesReinUsesLisp1-0/+2
2021-07-23shader: Implement FSWZADDameerj14-4/+87
2021-07-23shader: Implement BRXFernandoS2720-47/+388
2021-07-23shader: Fix alignment checks on RZReinUsesLisp1-1/+1
2021-07-23shader: Implement I2I CCameerj3-24/+45
2021-07-23shader: Implement I2I SATameerj6-10/+52
2021-07-23shader: Fix ISCADD logic for PO/CCameerj1-7/+8
2021-07-23shader: Implement LDS, STS, LDL, and STS and use SPIR-V 1.4 when availableReinUsesLisp17-17/+626
2021-07-23shader: Implement ISCADD CCameerj1-1/+4
2021-07-23shader: Implement VMAD, VMNMX, VSETPameerj9-23/+319
2021-07-23shader: Add missing I2I exception when CC is usedReinUsesLisp1-0/+4
2021-07-23shader: Better interpolation and disabled attributes supportReinUsesLisp7-23/+96
2021-07-23spirv: Remove dependencies on Environment when generating SPIR-VReinUsesLisp4-9/+12
2021-07-23shader: Implement front faceReinUsesLisp5-0/+12
2021-07-23shader: Fix structured control flow on KIL instructionsReinUsesLisp2-3/+7
This could potentially leave unvisited blocks, leading to illegal phi nodes.
2021-07-23shader: Fix TXQFernandoS271-1/+1
2021-07-23shader: Implement TXQ and fix FragDepthReinUsesLisp14-21/+172
2021-07-23shader: Refactor PTP and other minor changesReinUsesLisp14-123/+67
2021-07-23shader: Add IR opcode for ImageFetchFernandoS277-5/+55
2021-07-23shader: Implement TLD4.PTPFernandoS2715-28/+111
2021-07-23shader: Fix Array Indices in TEX/TLD4FernandoS272-6/+6
2021-07-23shader: Implement FragDepthFernandoS272-1/+7
2021-07-23shader: Implement TLD4S.FernandoS273-4/+134
2021-07-23shader: Implement TLD4 and TLD4_BFernandoS2713-11/+315
2021-07-23shader: Implement SHFLameerj16-69/+284
2021-07-23shader: Track first bindless argument instead of the instruction itselfReinUsesLisp1-1/+1
2021-07-23shader: Properly insert Prologue instructionReinUsesLisp1-1/+2
2021-07-23shader: Minor style nitsReinUsesLisp1-2/+4
2021-07-23shader: Fix F2IFernandoS2710-9/+147
2021-07-23shader: Implement NDC [-1, 1], attribute types and default varying initializationReinUsesLisp12-40/+149
2021-07-23shader: Fix use-after-free bug in object_poolReinUsesLisp1-3/+3
2021-07-23shader: Implement VOTEameerj14-5/+167
2021-07-23shader: Fix TEX maskReinUsesLisp1-1/+3
2021-07-23vk_pipeline_cache: Add pipeline cacheReinUsesLisp4-8/+15
2021-07-23shader: Fold interpolation multiplicationsReinUsesLisp1-0/+34
2021-07-23shader: Better but still partial interpolation supportReinUsesLisp1-5/+7
2021-07-23shader: Implement DMNMX, DSET, DSETPameerj15-59/+208
2021-07-23shader: Implement FADD32IFernandoS271-2/+15
2021-07-23shader: Implement F2FFernandoS276-20/+192
2021-07-23shader: Add missing fp64 usage flagsReinUsesLisp1-0/+34
2021-07-23shader: Implement DMUL and DFMAameerj8-30/+111
Also add a missing const on DADD
2021-07-23shader: Add FP64 register load/store helpersameerj3-21/+24
2021-07-23shader: Add support for fp16 comparisons and misc fixesReinUsesLisp11-14/+56
2021-07-23shader: Fix floating point comparison for FP16FernandoS275-32/+56
2021-07-23shader: Implement HSETP2FernandoS273-12/+117
2021-07-23shader: Implement HSET2FernandoS275-14/+119
2021-07-23shader: Implement HMUL2FernandoS273-16/+144
2021-07-23shader: Implement HFMA2FernandoS275-20/+192
2021-07-23spirv: Implement VertexId and InstanceId, refactor codeReinUsesLisp9-144/+243
2021-07-23shader: Refactor half floating instructionsFernandoS274-58/+84
2021-07-23shader: Implement I2FReinUsesLisp16-69/+427
2021-07-23shader: Implement ISCADD (imm)ReinUsesLisp1-2/+2
2021-07-23shader: Implement LOP32IReinUsesLisp2-18/+45
2021-07-23shader: Add partial rasterizer integrationReinUsesLisp34-156/+629
2021-07-23shader: Implement DADDameerj8-14/+132
2021-07-23shader: Implement CSET and CSETPameerj6-15/+114
2021-07-23shader: Reorder phi nodes when redefined as undefined opcodesReinUsesLisp1-1/+9
2021-07-23shader: Fix instruction transitions in and out of PhiReinUsesLisp1-9/+11
2021-07-23shader: Implement FSET and FSETPameerj9-94/+204
Also fix oversight with adding SignedZeroInfNanPreserve execution mode.
2021-07-23shader: Implement TEXSReinUsesLisp8-7/+287
2021-07-23shader: Implement CAL inlining function callsReinUsesLisp24-330/+286
2021-07-23spirv: Add SignedZeroInfNanPreserve logicameerj2-0/+8
2021-07-23shader: Implement FMNMXameerj8-25/+101
And add a const in FCMP
2021-07-23shader: Fix rebase issueReinUsesLisp1-1/+0
2021-07-23shader: Implement FCMPameerj9-50/+203
still need to configure some settings for NV denorm flush and intel NaN
2021-07-23shader: Partial implementation of LDCReinUsesLisp16-50/+405
2021-07-23shader: Initial support for textures and TEXReinUsesLisp29-341/+1378
2021-07-23shader: Implement R2Pameerj8-15/+88
2021-07-23shader: Implement SHFameerj8-31/+119
2021-07-23shader: Implement LEAameerj9-29/+136
2021-07-23shader: Deduplicate HADD2 codeReinUsesLisp1-19/+16
2021-07-23shader: Implement I2Iameerj3-12/+100
2021-07-23shader: Implement HADD2ReinUsesLisp12-42/+400
2021-07-23shader: Implement LOP and LOP3ameerj8-31/+227
2021-07-23shader: Implement IADD3ameerj3-12/+104
2021-07-23shader: Implement PSETPameerj4-5/+40
2021-07-23Implement PSET, refactor common comparison funcsameerj9-101/+88
2021-07-23shader: Implement FLOameerj8-18/+75
2021-07-23shader: Implement ISET, add common_funcsameerj8-50/+150
2021-07-23shader: Make IMNMX, SHR, SEL stylistically more consistentameerj3-5/+5
2021-07-23shader: Implement ICMPameerj3-16/+84
2021-07-23shader: Implement IMNMXameerj8-12/+105
2021-07-23shader: Implement BFIameerj3-16/+57
2021-07-23shader: Implement BFEameerj3-12/+67
2021-07-23shader: Implement POPCameerj8-12/+59
2021-07-23shader: Implement SHRameerj8-18/+80
2021-07-23shader: Implement SELameerj4-16/+53
2021-07-23spirv: Move phi arguments emit to a separate functionReinUsesLisp1-27/+27
2021-07-23shader: Avoid infinite recursion when tracking global memoryReinUsesLisp1-5/+26
2021-07-23shader: Fix conditional execution of exit instructionsReinUsesLisp2-5/+6
2021-07-23spirv: Add support for self-referencing phi nodesReinUsesLisp1-3/+10
2021-07-23shader: Fix control flowReinUsesLisp8-20/+39
2021-07-23shader: Implement more of XMAD and FFMA32I and fix XMAD.CBCCReinUsesLisp5-28/+76
2021-07-23shader: FMUL, select, RRO, and MUFU fixesReinUsesLisp18-119/+507
2021-07-23shader: Fix MOV(reg), add SHL variants and emit neg and abs instructionsReinUsesLisp4-11/+11
2021-07-23spirv: Fixes and Intel specific workaroundsReinUsesLisp10-32/+43
2021-07-23shader: Rename, implement FADD.SAT and P2R (imm)ReinUsesLisp17-125/+211
2021-07-23shader: Add denorm flush supportReinUsesLisp15-60/+210
2021-07-23spirv: Add lower fp16 to fp32 passReinUsesLisp28-276/+465
2021-07-23shader: Primitive Vulkan integrationReinUsesLisp28-498/+573
2021-07-23shader: Add XMAD multiplication folding optimizationReinUsesLisp1-5/+77
2021-07-23shader: Simplify ISCADDReinUsesLisp1-6/+1
2021-07-23shader: Add utility to resolve identities on a valueReinUsesLisp2-0/+8
2021-07-23spirv: Implement EmitIdentityReinUsesLisp2-3/+3
2021-07-23spirv: Initial bindings supportReinUsesLisp22-292/+671
2021-07-23shader: Improve object poolReinUsesLisp3-50/+66
2021-07-23shader: Fix trackingReinUsesLisp1-50/+72
2021-07-23shader: Add support for forward declarationsReinUsesLisp10-68/+79
2021-07-23shader: Support SSA loops on IRReinUsesLisp12-46/+150
2021-07-23shader: Misc fixesReinUsesLisp10-89/+104
2021-07-23shader: Initial implementation of an ASTReinUsesLisp32-589/+1345
2021-07-23spirv: Initial SPIR-V supportReinUsesLisp18-34/+1400
2021-07-23shader: Better constant foldingReinUsesLisp2-13/+48
2021-07-23shader: Properly store phi on InstReinUsesLisp6-75/+132
2021-07-23shader: Add pools and rename filesReinUsesLisp30-108/+255
2021-07-23shader: Make typed IRReinUsesLisp19-269/+495
2021-07-23shader: Remove illegal character in SSA passReinUsesLisp1-1/+1
2021-07-23shader: Constant propagation and global memory to storage bufferReinUsesLisp17-63/+652
2021-07-23shader: Initial instruction supportReinUsesLisp28-334/+1450
2021-07-23shader: SSA and dominanceReinUsesLisp24-77/+570
2021-07-23shader: Initial recompiler workReinUsesLisp56-0/+7060