Commit Graph

782 Commits (159ae5e47ceff0a44c1021379cbca601b36f4fb0)

Author SHA1 Message Date
ameerj df793fc049 glsl: Implement FCMP 4 years ago
ameerj cdde730219 glsl: Add a more robust fp formatter 4 years ago
ameerj ac7b0ebcb7 glsl: More FP fixes 4 years ago
ameerj 3064bde415 glsl: FP function fixes 4 years ago
ameerj 65c6f73e43 glsl: More FP instructions/fixes 4 years ago
ameerj 5e9095ef22 glsl: Add many FP32/64 instructions 4 years ago
ameerj ef7bd53f18 glsl: Implement more Integer ops 4 years ago
ameerj 266a3d60e3 glsl: Implement BF* 4 years ago
ameerj 0f40b0e61c glsl: Implement a few Integer instructions 4 years ago
ameerj fb75d122a2 glsl: Use std::string_view for Emit function args. 4 years ago
ameerj 115c162b9a glsl: Pass IR::Inst& to Emit functions 4 years ago
ameerj 78f5eb90d7 glsl: INeg and IAdd negate tests 4 years ago
ameerj e221baccdd glsl: Reusable typed variables. IADD32 4 years ago
ameerj faf4cd72c5 glsl: Fix program linking and cbuf 4 years ago
ameerj 64337f004d glsl: Fix "reg" allocing
based on glasm with some tweaks
4 years ago
ameerj eaff1030de glsl: Initial backend 4 years ago
ReinUsesLisp 3d822faea1 spirv: Reduce log severity of mismatching denorm rules 4 years ago
ReinUsesLisp 7ac55c2a75 shader: Fix loop safety to SSA pass 4 years ago
ReinUsesLisp 61cd7dd301 shader: Add logging 4 years ago
lat9nq 373f75d944 shader: Add shader loop safety check settings
Also add a setting for enable Nsight Aftermath.
4 years ago
ReinUsesLisp 487057b8d2 shader: Comment why the array component is not read in TMML 4 years ago
ameerj 3c125d4134 tmml: Remove index component from coords vec
The lod query functions exposed by the rendering API's do not make use of the texturearray layer indexing.
4 years ago
ameerj d52bacf6f0 spirv/convert: Catch more signed operations oversights
The sign bit on integers of size < 32 was not properly preserved in casts
4 years ago
ReinUsesLisp 8554a644df spirv/convert: Catch more broken signed operations on Nvidia OpenGL
BitCast U32 to S32 before converting to float on drivers with broken
signed operations.
4 years ago
ameerj 15bdd27cac shader_environment: Add shader_local_memory_crs_size to local memory size
Fixes DOOM 2016 missing local memory
4 years ago
FernandoS27 562af30181 shader: Fix VertexA Shaders. 4 years ago
ReinUsesLisp ec9a78885e shader: Add 2D and 3D variants to SUATOM and SURED
Used by Claybook.
4 years ago
ReinUsesLisp 4f8b68fb04 shader: Avoid CPU side undefined behavior on I2F 4 years ago
ReinUsesLisp 79f2fe1a39 glasm: Use ARB_derivative_control conditionally 4 years ago
ReinUsesLisp 4a2361a1e2 buffer_cache: Reduce uniform buffer size from shader usage
Increases performance significantly on certain titles.
4 years ago
lat9nq 22f0c4f002 emit_glasm_context_get_set: Remove unused variable 4 years ago
ReinUsesLisp 5539b13c5a shader,glasm: Implement legacy texcoord loads 4 years ago
ReinUsesLisp cf9f88e5a7 glasm: Implement legacy varyings 4 years ago
ReinUsesLisp ac0f5d2ab6 shader: Track legacy varyings 4 years ago
ReinUsesLisp 05d41fa9b7 shader: Add support for "negative" and unaligned offsets
"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.
4 years ago
ReinUsesLisp 5d170de0b5 shader: Implement ISCADD32I 4 years ago
ReinUsesLisp adc43297c5 spirv: Fix output generics with components 4 years ago
ReinUsesLisp 916ca74324 opengl: Declare fragment outputs even if they are not used
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.
4 years ago
ReinUsesLisp 329dea217d shader: Always initialize up reference in structure control flow
Fixes ubsan issue.
4 years ago
ReinUsesLisp d093522fac shader: Fix ImageWrite indexing 4 years ago
ReinUsesLisp d738ad4d0b spirv: Fix image and image buffer descriptor index usage 4 years ago
ReinUsesLisp eb8464cb3d glasm: Fix immediate texture coordinate 4 years ago
ReinUsesLisp 457dda69cc shader: Clang-format secondary textures 4 years ago
ReinUsesLisp 627161c38e shader: Fix secondary textures 4 years ago
ReinUsesLisp b659212dbd shader: Fix TMML queries 4 years ago
ReinUsesLisp fbf5cdcba0 shader: Fix FSwizzleAdd folding when going through phi nodes 4 years ago
ReinUsesLisp 871c9f1ced shader/exception: Fix compilation errors on gcc 4 years ago
ReinUsesLisp b6c087496b glasm: Reduce reg allocation leaks from an exception to a log 4 years ago
ReinUsesLisp b7764c3a79 shader: Handle host exceptions 4 years ago
ReinUsesLisp 83db7abae6 glasm: Use integer lod for TXQ 4 years ago
ReinUsesLisp e240a62017 glasm: Fix global memory fallbacks 4 years ago
ReinUsesLisp 8f3043c3cf Revert "glasm: Skip phi moves on undefined instructions"
Causes regressions on Bowser's Fury.
4 years ago
ReinUsesLisp 2aa30353b7 glasm: Remove unintentional '\n' on Undef32 4 years ago
ReinUsesLisp adb591a757 glasm: Use storage buffers instead of global memory when possible 4 years ago
ReinUsesLisp f58f79c85d glasm: Implement Y direction 4 years ago
ReinUsesLisp 586c785366 glasm: Skip phi moves on undefined instructions 4 years ago
ReinUsesLisp b9c8814ea9 glasm: Implement undef instructions 4 years ago
ReinUsesLisp 8763cc1ff7 glasm: Fix global memory callbacks 4 years ago
ReinUsesLisp a49532c8eb video_core,shader: Clang-format fixes 4 years ago
ReinUsesLisp 48aafe0961 glasm: Release phi node registers after they are no longer needed 4 years ago
ReinUsesLisp 77ee733c3a glasm: Remove unintentionally committed fmt::prints 4 years ago
ReinUsesLisp 70c9281fbf glasm: Fix INeg32 on negative immediates 4 years ago
ReinUsesLisp 75fd0079db glasm: Remove unnecessary value types 4 years ago
ReinUsesLisp 379b305b4b glasm: Throw when there are register leaks 4 years ago
ReinUsesLisp ca05a13c62 glasm: Catch more register leaks
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.
4 years ago
ReinUsesLisp 9fbfe7d676 glasm: Fix usage counting on phi nodes 4 years ago
ReinUsesLisp c721767bcc glasm: Implement global memory fallbacks 4 years ago
ReinUsesLisp 0794273870 glasm: Implement int64 add and subtract 4 years ago
lat9nq 7fdf0d7d33 emit_glasm_context_get_set: Remove unused variable 4 years ago
ReinUsesLisp e30d4fa976 glasm: Implement indirect attribute loads 4 years ago
ReinUsesLisp c8414e686f glasm: Implement image atomics 4 years ago
ReinUsesLisp 3a7ca6a7db glasm: Reorder unreachable image atomic insts
Reorder them to the bottom of the file for readability.
4 years ago
ReinUsesLisp e565eb361a glasm: Implement gl_Layer stores 4 years ago
ReinUsesLisp 89e341d56a glasm: Implement SampleId 4 years ago
ReinUsesLisp 77d8c44b68 glasm: Implement IsHelperInvocation 4 years ago
ReinUsesLisp ddf601919f glasm: Fix EmitVertex's optimization 4 years ago
ReinUsesLisp c31521512f gl_shader_cache,glasm: Conditionally use typeless image reads extension 4 years ago
ReinUsesLisp 84feabac88 glasm: Implement forced early Z 4 years ago
ReinUsesLisp 7dadb2bef3 glasm: Simplify patch reads 4 years ago
ReinUsesLisp b382f57b28 glasm: Fix output patch reads
With this, Luigi's Mansion's sand renders properly.
4 years ago
ReinUsesLisp 9e7b6622c2 shader: Split profile and runtime information in separate structs 4 years ago
ameerj eb15667905 emit_glasm_context_get_and_set.cpp: Add missing semicolons 4 years ago
ReinUsesLisp 781a87175c glasm: Fix patch attribute declarations 4 years ago
ameerj 36d040da70 glasm: Implement FSWZADD 4 years ago
ReinUsesLisp 3da7b98d37 glasm: Implement PrimitiveId attribute read 4 years ago
ReinUsesLisp 394b96a2fe glasm: Implement clip distance stores 4 years ago
ReinUsesLisp a5d978e91e glasm: Fix tessellation input attributes 4 years ago
ReinUsesLisp 0d7d85c81e glasm: Add missing semicolon on tesscoord reading 4 years ago
ReinUsesLisp 48d4e26326 glasm: Fix tessellation headers 4 years ago
ReinUsesLisp 9ec2303ad6 glasm: Add tessellation shader declarations 4 years ago
ReinUsesLisp 2913ca811e glasm: Implement TessellationEvaluationPoint 4 years ago
ReinUsesLisp a569ac418e glasm: Implement patch memory 4 years ago
ReinUsesLisp 164b8c1ec5 glasm: Fix InvocationId declaration 4 years ago
ReinUsesLisp d5db96386d glasm: Implement InvocationId 4 years ago
ReinUsesLisp 679e7146a7 glasm: Optimize EmitVertex into EMIT 4 years ago
ReinUsesLisp 79929be833 glasm: Implement geometry shader attribute reads 4 years ago
ReinUsesLisp 83cef0426b glasm: Properly declare attributes on geometry programs 4 years ago
ReinUsesLisp fad139a3e6 glasm: Declare geometry program headers 4 years ago
ReinUsesLisp 0a54291c9c glasm: Fix potential aliasing bug on cube array samples 4 years ago
ReinUsesLisp 8fdb00a2b5 glasm: Implement ImageWrite 4 years ago
ReinUsesLisp dadd192b30 glasm: Implement ImageRead 4 years ago
ReinUsesLisp 3d0ffc6ad0 glasm: Implement EmitVertex and EndPrimitive 4 years ago
ReinUsesLisp f79cbbf814 glasm: Implement ImageGradient 4 years ago
ReinUsesLisp 291f220be3 glasm: Implement 64-bit shifts 4 years ago
ReinUsesLisp d957b3a8fe glasm: Implement barriers 4 years ago
ReinUsesLisp b60b3fa113 glasm: Fix compute stage name 4 years ago
ReinUsesLisp 96962c1d3c glasm: Fix phi instruction types 4 years ago
ReinUsesLisp 91a3c2c1c0 glasm: Implement PREC on relevant instructions 4 years ago
ReinUsesLisp accad56ee7 glasm: Implement stores to gl_ViewportIndex 4 years ago
ReinUsesLisp 2494dbe183 glasm: Implement gl_PointSize stores 4 years ago
ReinUsesLisp 9415c435fc glasm: Implement gl_PointCoord 4 years ago
ReinUsesLisp 12dcb9fcc2 glasm: Implement ImageQueryLod 4 years ago
ReinUsesLisp 4a22942f45 glasm: Implement ImageFetch 4 years ago
ameerj 3777592ada glasm: Implement IADD.CC 4 years ago
ReinUsesLisp 98ed8ff103 glasm: Implement BFE.CC 4 years ago
ReinUsesLisp 2e0d56da7e glasm: Implement SelectU1 4 years ago
ReinUsesLisp e8ed904805 glasm: Implement gl_WorkGroupID 4 years ago
ReinUsesLisp 0a42277a4f glasm: Implement TXQ and improve texture info reads 4 years ago
ReinUsesLisp c560bf99c2 glasm: Implement gl_FrongFacing attribute 4 years ago
ReinUsesLisp 8b7d5912d6 glasm: Support textures used in more than one stage 4 years ago
ReinUsesLisp 3d3ed53511 glasm: Implement textureGather instructions 4 years ago
ReinUsesLisp 0fa421f82f glasm: Implement gl_FragDepth and gl_SampleMask stores 4 years ago
ReinUsesLisp 1ee7f8b943 glasm: Do not alias ConditionRef for now
Immediate condition refs where not handled correctly. Just move the
value for now.
4 years ago
ReinUsesLisp 9bb3e008c9 shader: Read branch conditions from an instruction
Fixes the identity removal pass.
4 years ago
ReinUsesLisp 4bad415bca glasm: Implement InstanceId and VertexId 4 years ago
ReinUsesLisp afcb140185 glasm: Add missing return value on move assignment 4 years ago
ReinUsesLisp fb3ba62b3a glasm: Fix aliased bitcasts ref counting 4 years ago
ReinUsesLisp f1b334b9f9 glasm: Remove unintentional comma on vector insert 4 years ago
ReinUsesLisp ec6fc5fe78 glasm: Implement TEX and TEXS instructions
Remove lod clamp from texture instructions with lod, as this is not
needed (nor supported).
4 years ago
ReinUsesLisp c42a6143a5 glasm: Add support for non-2D texture samples 4 years ago
ReinUsesLisp bee9fb0563 glasm: Reorder unreachable image instructions to the bottom 4 years ago
ReinUsesLisp e6b4d461d2 glasm: Add support for texture offsets 4 years ago
ReinUsesLisp bf2949df10 glasm: Improve texture sampling instructions 4 years ago
ReinUsesLisp db2f0f4108 emit_glasm: Enable ARB_draw_buffers when needed 4 years ago
ReinUsesLisp 3c06293e20 emit_glasm: Add support for reading position attributes 4 years ago
lat9nq f7a2340205 shader_recompiler: GCC fixes
Fixes members of unnamed union not being accessible, and one function
without a declaration.
4 years ago
ameerj d4f9c798d6 glasm: Implement rest of shared mem 4 years ago
ReinUsesLisp 776ab3ea12 shader: Use a non-trivial dummy to construct ASL node union 4 years ago
ReinUsesLisp 38e7b8c805 emit_spirv: Jump to loop body with local variable
Silence unused variable warning
4 years ago
ReinUsesLisp 464f13fe0b glasm: Implement derivative instructions on GLASM 4 years ago
ReinUsesLisp 9fb2ea08e8 glasm: Initial (broken) implementation of TEX on GLASM 4 years ago
ReinUsesLisp 1f3446b47e glasm: Implement some graphics instructions on GLASM 4 years ago
ReinUsesLisp 31d402ee74 glasm: Add Void type to GLASM values 4 years ago
ReinUsesLisp 3764750339 glasm: Add graphics specific shader declarations to GLASM 4 years ago
ameerj 057dee4856 glasm: Implement local memory for glasm 4 years ago
ReinUsesLisp ab5dbe7c29 emit_spirv: Add missing block in case 4 years ago
ReinUsesLisp bf5e48ffe4 glasm: Initial implementation of phi nodes on GLASM 4 years ago
ReinUsesLisp 0f88fb5d72 glasm: Write result to scalar on integer comparison instructions 4 years ago
ReinUsesLisp d4385c34e3 glasm: Declare NV_shader_thread_group when needed 4 years ago
ReinUsesLisp d54d7de40e glasm: Rework control flow introducing a syntax list
This commit regresses VertexA shaders, their transformation pass has to
be adapted to the new control flow.
4 years ago
ameerj 7ff5851608 glasm: Implement Storage atomics
StorageAtomicExchangeU64 is failing test seemingly due to failure storing 64-bit
result into the register
4 years ago
ReinUsesLisp 8c81a20ace glasm: Ensure reg alloc order across compilers on GLASM
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.
4 years ago
ReinUsesLisp c917290497 glasm: Enable unintentionally disabled register aliasing on GLASM 4 years ago
ReinUsesLisp 70fbede213 glasm: Review all GLASM insts to be aware of register aliasing 4 years ago
ReinUsesLisp c4fd6b55bc glasm: Implement shuffle and vote instructions on GLASM 4 years ago
ReinUsesLisp decda4a2c7 glasm: Add MUFU instructions to GLASM 4 years ago
ReinUsesLisp 5b18a12df2 glasm: Implement IAbs64 and INeg64 on GLASM 4 years ago
ReinUsesLisp 3b6a632237 shader: Add floating-point rounding to I2F 4 years ago
ReinUsesLisp 3f00a2ad3f glasm: Properly clamp Fp64 on GLASM 4 years ago
ReinUsesLisp deda89372f glasm: Fix register allocation when moving immediate on GLASM 4 years ago
ReinUsesLisp 0839e46736 glasm: Implement SelectU64 on GLASM 4 years ago
ReinUsesLisp 6237300e36 glasm: Fix clamps so the min value has priority on NAN on GLASM 4 years ago
ReinUsesLisp 8eb72ff0dc glasm: Fix moving U64 immediates to registers in GLASM 4 years ago
ameerj 80813b1d14 glasm: Implement storage atomic ops 4 years ago
ReinUsesLisp ad61b47f80 glasm: Add conversion instructions to GLASM 4 years ago
ReinUsesLisp 7703d65f23 glasm: Add fp min/max insts and fix store for fp64 on GLASM 4 years ago
ReinUsesLisp 43a448d98d glasm: Add logical instructions on GLASM 4 years ago
ReinUsesLisp 99352741af glasm: Remove duplicated Fp64 pack instructions on GLASM 4 years ago
ReinUsesLisp 45ef62d3ba glasm: Remove unnecesary new white space on Clamp GLASM 4 years ago
ReinUsesLisp b4953e79ee glasm: Add floating-point comparisons on GLASM 4 years ago
ameerj 6705f56029 emit_glasm: Implement more integer alu ops 4 years ago
ameerj 3e10709091 glasm: Reimplement bitwise ops and BFI/BFE 4 years ago
ReinUsesLisp 4502595bc2 glasm: Initial GLASM fp64 support 4 years ago
ReinUsesLisp 9f851e3832 glasm: Implement GLASM fp16 packing and move bitwise insns 4 years ago
ReinUsesLisp 4de65fbff4 glasm: Remove unused functions left from rebase 4 years ago
ReinUsesLisp 6358b0d0c1 glasm: Specify namespace when using FormatTo 4 years ago
ReinUsesLisp 939dab7120 glasm: Implement more GLASM composite instructions 4 years ago
ReinUsesLisp 1c9307969c glasm: Make GLASM aware of types 4 years ago
ameerj 934d300246 glasm: Use CMP.S for Select32
also fixes ADD and SUB to use U modifier
4 years ago
ameerj 68cc445b8e glasm: Implement more logical ops 4 years ago
ameerj 941c6dc740 glasm: Implement BFI, BFE
Along with implementations of common instructions along the way
4 years ago
ReinUsesLisp 3e841f6441 glasm: Use BitField instead of C bitfields 4 years ago
ReinUsesLisp 2b04b4d27f glasm: Remove unused argument in identity instructions on GLASM 4 years ago
ReinUsesLisp 6fd190d1ae glasm: Implement basic GLASM instructions 4 years ago
ReinUsesLisp c1ba685d9c glasm: Changes to GLASM register allocator and emit context 4 years ago
ReinUsesLisp b10cf64c48 glasm: Add GLASM backend infrastructure 4 years ago
ameerj 09dc23f971 shader: ISET.X implementation 4 years ago
ReinUsesLisp b725db8709 shader: Fixup SPIR-V emit header namespaces 4 years ago
ReinUsesLisp bed090807a Move SPIR-V emission functions to their own header 4 years ago
FernandoS27 ee61ec2c39 shader: Optimize NVN Fallthrough 4 years ago
FernandoS27 153a77efee shader: Stub SR_AFFINITY 4 years ago
ameerj 7ecc6de56a shader: Implement Int32 SUATOM/SURED 4 years ago
ReinUsesLisp d621e96d0d shader: Initial OpenGL implementation 4 years ago
ReinUsesLisp 850b08a16c spirv: Be aware of NAN unaware drivers 4 years ago
ReinUsesLisp fde47152d9 spirv: Add SSBO read fallbacks when no aliasing is available 4 years ago
ReinUsesLisp fd913bceaf spirv: Add OpKill fallback to demote 4 years ago
ReinUsesLisp d2a0f9d7ad spirv: Do not enable ShaderLayer
This is enabled by an extension instead of the capability.
4 years ago
ReinUsesLisp 2b434b74af spirv: Enable DemoteToHelperInvocationEXT only when supported 4 years ago
ReinUsesLisp cfd873275d spirv: Use OriginLowerLeft when requested 4 years ago
ReinUsesLisp bafe9e35a9 spirv: Only add image operands mask when needed 4 years ago
ReinUsesLisp d2e811db2e spirv: Workaround image unsigned offset bug
Workaround bug on Nvidia's OpenGL SPIR-V compiler when using unsigned
texture offsets.
4 years ago
ReinUsesLisp 4ead714910 spirv: Add int8 and int16 capabilities only when supported 4 years ago
ReinUsesLisp 33bebc3412 spirv: Add integer clamping workarounds
Workaround more bugs on Nvidia's OpenGL SPIR-V compiler.
4 years ago
ReinUsesLisp 7b03b97118 spirv: Implement int8 and int16 conversion fallbacks 4 years ago
ReinUsesLisp 48a17298d7 spirv: Support OpenGL uniform buffers and change bindings 4 years ago
ReinUsesLisp d5d6778ba5 spirv: Desambiguate descriptor names
Worksaround a bug on Nvidia's OpenGL SPIR-V compiler where names are
used for name matching.
4 years ago
ReinUsesLisp a46d91b1ef shader: Add OpenGL shader profile options 4 years ago
ReinUsesLisp 028f0033bd shader: Remove shader util 4 years ago
FernandoS27 c49d56c931 shader: Address feedback 4 years ago
FernandoS27 b541f5e5e3 shader: Implement VertexA stage 4 years ago
FernandoS27 da936d6ad8 shader: Implement delegation of Exit to dispatcher on CFG 4 years ago
ameerj fb14820c86 shader: Fix IADD3.CC 4 years ago
ameerj 20e86fd615 shader: Fix BFE s32 undefined check
Our unit tests were hitting this exception.
4 years ago
ReinUsesLisp 50eb03382e shader: Fix error checking in bitfieldExtract and implement bitfieldInsert folding 4 years ago
ReinUsesLisp 57464e3b72 shader: Fix storage type when reading patches on tess control 4 years ago
ReinUsesLisp d2b54c6e42 shader: Fix VMNMX selector B 4 years ago
ReinUsesLisp 155be4a8d3 shader: Increase the maximum number of storage buffers
Compute shaders spill uniform buffers on storage buffers, increasing the
expected number.
4 years ago
ReinUsesLisp fe25f42403 shader: Remove identity removal pass for better build times 4 years ago
ReinUsesLisp 0c7230a606 shader: Add more strict validation the pass 4 years ago
ReinUsesLisp 25949b864c shader: Fix forward referencing identity instructions when inserting phi 4 years ago
ReinUsesLisp 92a01984e6 shader: Remove invalidated blocks in dead code elimination pass 4 years ago
ReinUsesLisp aece958c2b shader: Add missing UndoUse case for GetSparseFromOp 4 years ago
ReinUsesLisp 21e3382830 shader: Simplify code in opcodes.h to fix Intellisense
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.
4 years ago
ReinUsesLisp d10cf55353 shader: Implement indexed textures 4 years ago
ameerj 7a9dc78398 shader: Refactor atomic_operations_global_memory 4 years ago
ameerj 427951d6fe shader: add missing include guard in half_floating_point_helper.h 4 years ago
ReinUsesLisp c8f9772d65 shader: Fix gcc warnings 4 years ago
ReinUsesLisp 75dee55486 shader: Inline common Value getters 4 years ago
ReinUsesLisp 23182fa59c shader: Intrusively store in a block if it's sealed or not 4 years ago
ReinUsesLisp eed6da55b8 cmake: Link to common in shader_recompiler 4 years ago
ReinUsesLisp cc0fcd1b8d shader: Improve goto removal algorithm complexity
Find sibling node containing a nephew searching from the nephew itself
instead of the uncle.
4 years ago
ReinUsesLisp f66851e376 shader: Use memset to reset instruction arguments 4 years ago
ReinUsesLisp c84bbd9e44 shader: Inline common Value functions into the header 4 years ago
ReinUsesLisp 050e81500c shader: Move microinstruction header to the value header 4 years ago
ReinUsesLisp e4d1122082 shader: Move siblings check to a separate function and comment them out 4 years ago
ReinUsesLisp 4209828646 shader: Intrusively store register values in block for SSA pass 4 years ago
ReinUsesLisp 6944cabb89 shader: Inline common Opcode and Inst functions 4 years ago
ReinUsesLisp 4bbe530337 shader: Inline common IR::Block methods 4 years ago
ReinUsesLisp 24cc298660 shader: Use a small_vector for phi blocks 4 years ago
ReinUsesLisp 79c2e43fcd shader: Calculate number of arguments in an opcode at compile time 4 years ago
ReinUsesLisp dd860b684c shader: Implement D3D samplers 4 years ago
ReinUsesLisp a8d46a5eae shader: Add constant propagation for arithmetic right shifts 4 years ago
ReinUsesLisp 469f8bb857 shader: Simplify code for local memory 4 years ago
ReinUsesLisp 7018e524f5 shader: Add NVN storage buffer fallbacks
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.
4 years ago
ReinUsesLisp 6325601947 spirv: Fix ViewportMask 4 years ago
ameerj 5b8afed871 spirv: Replace Constant/ConstantComposite with Const helper 4 years ago
FernandoS27 2999028976 shader: Address feedback 4 years ago
FernandoS27 881b33da3b shader: Implement F2F (Imm) 4 years ago
FernandoS27 21a878237b shader: Implement IADD3.CC/.X 4 years ago
FernandoS27 f69d0b91ff shader: Address feedback 4 years ago
FernandoS27 080857b60e shader: Add coarse derivatives 4 years ago
FernandoS27 04c459fc8d shader: Implement fine derivates constant propagation 4 years ago
FernandoS27 f18a6dd1bd shader: Implement SR_Y_DIRECTION 4 years ago
ReinUsesLisp 50f8007172 shader: Fix Phi node types 4 years ago
ReinUsesLisp 0a0818c025 shader: Fix memory barriers 4 years ago
ReinUsesLisp c9e4609d87 spirv: Fix implicit lod type 4 years ago
ReinUsesLisp 7cfa403683 spirv: Use explicit lods outside of fragment shaders 4 years ago
ReinUsesLisp dbbd4b5496 spirv: Use ConstOffset instead of Offset when possible 4 years ago
ameerj be431f5ed0 shader: Implement BFE and BFI CC
Fix two bugs in BFI.
4 years ago
ReinUsesLisp 80940b1706 shader: Implement SampleMask 4 years ago
ReinUsesLisp 95815a3883 shader: Implement PIXLD.MY_INDEX 4 years ago
ReinUsesLisp f3473c5143 spirv: Bitcast non-F32 output attributes to their type before store 4 years ago
ReinUsesLisp e3514bcd6b spirv: Implement ViewportMask with NV_viewport_array2 4 years ago
ReinUsesLisp 4657cf78fd spirv: Bitcast non-F32 attributes to F32 4 years ago
ReinUsesLisp b0f1255c8c shader: Implement PrimitiveId 4 years ago
ReinUsesLisp 183855e396 shader: Implement tessellation shaders, polygon mode and invocation id 4 years ago
ReinUsesLisp 34519d3fc6 shader: Mark atomic instructions as writes 4 years ago
ReinUsesLisp 416e1b7441 spirv: Implement image buffers 4 years ago
ReinUsesLisp d8ec99dada spirv: Implement Layer stores 4 years ago
FernandoS27 ab3831f6cb spirv: Fix alpha test 4 years ago
ameerj 6f4a1c8dcf spirv: Fix non-atomic 64-bit store 4 years ago
ameerj 6c512f4bff spirv: Implement alpha test 4 years ago
ReinUsesLisp b126987c59 shader: Implement transform feedbacks and define file format 4 years ago
ReinUsesLisp a83579b50a shader: Implement early Z tests 4 years ago
ReinUsesLisp 09165ae189 shader: Document and relax cache control on surface instructions 4 years ago
ReinUsesLisp fa75b9b062 spirv: Rework storage buffers and shader memory 4 years ago
ReinUsesLisp c070991def shader: Fix fixed pipeline point size on geometry shaders 4 years ago
ReinUsesLisp 2597cee85b shader: Add constant propagation for *&^| binary operations 4 years ago
ReinUsesLisp f263760c5a shader: Implement geometry shaders 4 years ago
ReinUsesLisp a6cef71cc0 shader: Implement OUT 4 years ago
lat9nq dd3432d357 internal_stage_buffer_entry_read: Remove pragma optimize off 4 years ago
ReinUsesLisp 4b0172f6de shader: Stub SR_INVOCATION_INFO 4 years ago
ReinUsesLisp f712084147 shader: Stub ISBERD 4 years ago
ReinUsesLisp 2516829e4c shader: Fix CC in I2I 4 years ago
ReinUsesLisp 23b8714732 spirv: Define StorageImageWriteWithoutFormat capability when used 4 years ago
ReinUsesLisp 415c7e46ed shader: Simplify FLO and throw on CC 4 years ago
ReinUsesLisp dfd5341d71 shader: Mark blocks with no end branch as unreachable 4 years ago
ReinUsesLisp 2ed80f6b1e shader: Implement LOP CC 4 years ago
ReinUsesLisp 5c61e860e4 shader: Implement SR_THREAD_KILL 4 years ago
ReinUsesLisp c9337a4ae4 shader: Apply sign bit in FCMP (imm) 4 years ago
ameerj 3db2b3effa shader: Implement ATOM/S and RED 4 years ago
ReinUsesLisp 106764a6d5 spirv: Move phi node patching to a separate function 4 years ago
ReinUsesLisp ab543f1821 spirv: Guard against typeless image reads on unsupported devices 4 years ago
ReinUsesLisp 9280cd649a shader: Move LaneId to the warp emission file and fix AMD 4 years ago
ReinUsesLisp 2e71e4c5c0 spirv: Fix forward declarations on phi nodes 4 years ago
ReinUsesLisp d404b871d5 shader: Mark ImageWrite with side effects 4 years ago
FernandoS27 1be6705408 shader: Implement CC for ISET, FSET, PSET, CSET, and DSET
Throw when other instructions are missing CC.
4 years ago
ReinUsesLisp 8cea39b5a6 shader: Remove outdated comment in F2I 4 years ago
ReinUsesLisp 7cb2ab3585 shader: Implement SULD and SUST 4 years ago
ReinUsesLisp 094da34456 shader: Fix Windows build issues 4 years ago
lat9nq 5bfcafa0a2 shader: Address feedback + clang format 4 years ago
lat9nq 0bb85f6a75 shader_recompiler,video_core: Cleanup some GCC and Clang errors
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>
4 years ago
ReinUsesLisp 5cd3d00167 shader: Fix FCMP immediate variant 4 years ago
ReinUsesLisp 233e39bb7b shader: Fix dangling labels 4 years ago
ReinUsesLisp e9a91bc5cc shader: Interact texture buffers with buffer cache 4 years ago
ReinUsesLisp 56b92bd89c shader: Fix F2I 4 years ago
ReinUsesLisp ef88552224 shader: Fix TextureGrad 4 years ago
ReinUsesLisp 1f3eb601ac shader: Implement texture buffers 4 years ago
FernandoS27 dcaf0e9150 shader: Address feedback 4 years ago
FernandoS27 73cb17f41b shader: Implement indexed Position and ClipDistances 4 years ago
FernandoS27 1d51803169 shader: Implement indexed attributes 4 years ago
FernandoS27 0df7e509db shader: Implement AL2P 4 years ago
FernandoS27 20ba0ea0a9 shader: Fix BRX tracking 4 years ago
ReinUsesLisp 417fb5d385 shader: Move recursive SSA rewrite to the heap 4 years ago
FernandoS27 72daa2a039 shader: Fix ShadowCube declaration type, set number of pipeline threads based on hardware 4 years ago
ReinUsesLisp 9e6fe430bd shader: Fix splits on blocks using indirect branches 4 years ago
ReinUsesLisp ffca21487f shader: Eliminate orphan blocks more efficiently 4 years ago
ReinUsesLisp da6cf2632c shader: Add subgroup masks 4 years ago
ReinUsesLisp fc93bc2abd shader: Implement BAR and fix memory barriers 4 years ago
ReinUsesLisp 85795de99f shader: Abstract breadth searches and use the abstraction 4 years ago
ReinUsesLisp 3f594dd86b shader: Reimplement GetCbufU64 as GetCbufU32x2
It may generate better code on some compilers and it's easier to handle.
4 years ago
ReinUsesLisp 0b26f2b90e shader: Remove unused header in VOTE 4 years ago
ReinUsesLisp 9a342f5605 shader: Rework global memory tracking to use breadth-first search 4 years ago
ReinUsesLisp c4aab5c40e shader: Fix fp16 merge when using native fp16 4 years ago
ReinUsesLisp ca7ebdc471 shader: Fix FADD32I 4 years ago
FernandoS27 e7700aad18 shader: Fix undetected bug from review 4 years ago
FernandoS27 ed6a1b1a3d shader: Address feedback 4 years ago
FernandoS27 80df541a08 shader: "Implement" NOP 4 years ago
FernandoS27 baec84247f shader: Address Feedback 4 years ago
FernandoS27 45d547af11 shader: Implement SR_LaneId 4 years ago
FernandoS27 595806fb1c shader: Fix shared memory on cool drivers 4 years ago
FernandoS27 655f7a570a shader: Implement MEMBAR 4 years ago
FernandoS27 ecb30c9072 shader: Improve VOTE.VTG stub 4 years ago
FernandoS27 12f5f32098 shader: Mark SSBOs as written when they are 4 years ago
FernandoS27 d819ba4489 shader: Implement ViewportIndex 4 years ago
FernandoS27 fd496d0401 shader: Stub TLD4's PTP when it isn't constant 4 years ago
FernandoS27 5ed8f24384 shader: Stub VOTE.VTG 4 years ago
FernandoS27 bee8188799 shader: Fold composite extract 4 years ago
FernandoS27 c3bace756f shader: Fold comparisons and Pack/Unpack16 4 years ago
ReinUsesLisp b4a5e767d0 shader: Fix branches to visited virtual blocks 4 years ago
ReinUsesLisp f1dd743731 shader: Fix dependency on identity removal pass 4 years ago
ReinUsesLisp 5f22cd89e2 shader: Fix constant propagation to use reverse post order 4 years ago
ReinUsesLisp eaafd53cfe shader: Implement LDG .U.128 as .128 4 years ago
ReinUsesLisp c826220733 shader: Unroll "using enum" for opcode declarations 4 years ago
ReinUsesLisp 09e1927b70 spirv: Remove unnecesary variable for clip distances 4 years ago
FernandoS27 0c4cf3b9eb shader: Implement ClipDistance 4 years ago
FernandoS27 67afdaf566 shader: Fix TXD 4 years ago
FernandoS27 4d0d29fc20 shader: Address feedback 4 years ago
ReinUsesLisp cb6fc03e55 shader: Always pass a lod for TexelFetch 4 years ago
FernandoS27 630273b629 shader: Implement TXD 4 years ago