| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
This maps to host's thread id.
- Fixes graphical issues on Paper Mario.
|
|\
| |
| | |
shader/other: Fix hardcoded value in S2R INVOCATION_INFO
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Geometry shaders built from Nvidia's compiler check for bits[16:23] to
be less than or equal to 0 with VSETP to default to a "safe" value of
0x8000'0000 (safe from hardware's perspective). To avoid hitting this
path in the shader, return 0x00ff'0000 from S2R INVOCATION_INFO.
This seems to be the maximum number of vertices a geometry shader can
emit in a primitive.
|
|/
|
|
|
| |
This silences an assertion we were hitting and uses workgroup memory
barriers when the game requests it.
|
|\
| |
| | |
shader/other: Implement BAR.SYNC 0x0
|
| |
| |
| |
| |
| | |
Trivially implement this particular case of BAR. Unless games use OpenCL
or CUDA barriers, we shouldn't hit any other case here.
|
|/
|
|
|
|
|
|
|
|
|
| |
Hardware S2R special registers match gl_Thread*MaskNV. We can trivially
implement these using Nvidia's extension on OpenGL or naively stubbing
them with the ARB instructions to match. This might cause issues if the
host device warp size doesn't match Nvidia's. That said, this is
unlikely on proper shaders.
Refer to the attached url for more documentation about these flags.
https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_thread_group.txt
|
|\
| |
| | |
video_core/shader: Add some instruction and S2R encodings
|
| | |
|
| | |
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Credits go to gdkchan and Ryujinx. The pull request used for this can
be found here: https://github.com/Ryujinx/Ryujinx/pull/1082
yuzu was already using the header for interpolation, but it was missing
the FragCoord.w multiplication described in the linked pull request.
This commit finally removes the FragCoord.w == 1.0f hack from the shader
decompiler.
While we are at it, this commit renames some enumerations to match
Nvidia's documentation (linked below) and fixes component declaration
order in the shader program header (z and w were swapped).
https://github.com/NVIDIA/open-gpu-doc/blob/master/Shader-Program-Header/Shader-Program-Header.html
|
| |
|
| |
|
|
|
|
| |
Implement using memoryBarrier in GLSL and OpMemoryBarrier on SPIR-V.
|
| |
|
|
|
|
|
|
| |
While DEPBAR is stubbed it doesn't change anything from our end. Shading
languages handle what this instruction does implicitly. We are not
getting anything out fo this log except noise.
|
|
|
|
| |
Silences a few -Wshadow warnings.
|
|\
| |
| | |
shader/decode: Implement S2R Tic
|
| | |
|
|/ |
|
|
|
|
|
| |
This appears to have been a copy/paste error introduced within
8a6fc529a968e007f01464abadd32f9b5eb0a26c
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Hardware testing revealed that SSY and PBK push to a different stack,
allowing code like this:
SSY label1;
PBK label2;
SYNC;
label1: PBK;
label2: EXIT;
|
|
|
|
|
|
|
|
|
| |
Instead of having a vector of unique_ptr stored in a vector and
returning star pointers to this, use shared_ptr. While changing
initialization code, move it to a separate file when possible.
This is a first step to allow code analysis and node generation beyond
the ShaderIR class.
|
|\
| |
| | |
shader: Implement S2R Tid{XYZ} and CtaId{XYZ}
|
| | |
|
|/
|
|
|
|
|
| |
Amends cases where we were using things that were indirectly being
satisfied through other headers. This way, if those headers change and
eliminate dependencies on other headers in the future, we don't have
cascading compilation errors.
|
| |
|
| |
|
| |
|
|
|
|
| |
It's not always used as a basic block. Rename it for consistency.
|
|
|
|
|
|
|
|
|
| |
Some games call LDG at the top of a basic block, making the tracking
heuristic to fail. This commit lets the heuristic the decoded nodes as a
whole instead of per basic blocks.
This may lead to some false positives but allows it the heuristic to
track cases it previously couldn't.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|