| Commit message (Collapse) | Author | Files | Lines |
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Reorder them to the bottom of the file for readability.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
With this, Luigi's Mansion's sand renders properly.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Immediate condition refs where not handled correctly. Just move the
value for now.
|
|
Fixes the identity removal pass.
|
|
|
|
|
|
|
|
|
|
Remove lod clamp from texture instructions with lod, as this is not
needed (nor supported).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Fixes members of unnamed union not being accessible, and one function
without a declaration.
|
|
|
|
Silence unused variable warning
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This commit regresses VertexA shaders, their transformation pass has to
be adapted to the new control flow.
|
|
StorageAtomicExchangeU64 is failing test seemingly due to failure storing 64-bit
result into the register
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
also fixes ADD and SUB to use U modifier
|
|
|
|
Along with implementations of common instructions along the way
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This is enabled by an extension instead of the capability.
|
|
|
|
|
|
|
|
Workaround bug on Nvidia's OpenGL SPIR-V compiler when using unsigned
texture offsets.
|
|
|
|
Workaround more bugs on Nvidia's OpenGL SPIR-V compiler.
|
|
|
|
|
|
Worksaround a bug on Nvidia's OpenGL SPIR-V compiler where names are
used for name matching.
|
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Fix two bugs in BFI.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
It may generate better code on some compilers and it's easier to handle.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This is needed because pseudo-instructions where invalidated.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Also fix oversight with adding SignedZeroInfNanPreserve execution mode.
|
|
|
|
|
|
|
|
And add a const in FCMP
|
|
still need to configure some settings for NV denorm flush and intel NaN
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|