| Commit message (Collapse) | Author | Files | Lines |
|
|
|
and add some more separation in the shader for better debugability when dumped
|
|
|
|
|
|
and implement misc getters
|
|
|
|
|
|
SSBU now working
|
|
|
|
|
|
|
|
|
|
and missed a diff in emit_glsl relating to var alloc ref counting
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fixes font rendering issues as these were used to index into the ssbos
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
to fix Loop control flow.
|
|
|
|
|
|
plus some other misc additions/changed
|
|
and many other misc implementations
|
|
|
|
|
|
|
|
|
|
Logic for ordered/unordered ops was wrong.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
based on glasm with some tweaks
|
|
|
|
|
|
|
|
|
|
Also add a setting for enable Nsight Aftermath.
|
|
|
|
The lod query functions exposed by the rendering API's do not make use of the texturearray layer indexing.
|
|
The sign bit on integers of size < 32 was not properly preserved in casts
|
|
BitCast U32 to S32 before converting to float on drivers with broken
signed operations.
|
|
Fixes DOOM 2016 missing local memory
|
|
|
|
Used by Claybook.
|
|
|
|
|
|
Increases performance significantly on certain titles.
|
|
|
|
|
|
|
|
|
|
"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.
|
|
|
|
|
|
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.
|
|
Fixes ubsan issue.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Causes regressions on Bowser's Fury.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Our unit tests were hitting this exception.
|
|
|
|
|
|
|
|
Compute shaders spill uniform buffers on storage buffers, increasing the
expected number.
|
|
|
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Find sibling node containing a nephew searching from the nephew itself
instead of the uncle.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Throw when other instructions are missing CC.
|
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This could potentially leave unvisited blocks, leading to illegal phi
nodes.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Also add a missing const on DADD
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|