| Age | Commit message (Collapse) | Author |
|
IADD.X takes the carry flag and adds it to the result. This is generally
used to emulate 64-bit operations with 32-bit registers.
|
|
decode/arithmetic_half: Fix HADD2 and HMUL2 absolute and negation bits
|
|
|
|
The encoding for negation and absolute value was wrong.
Extracting is now done manually. Similar instructions having different
encodings is the rule, not the exception. To keep sanity and readability
I preferred to extract the desired bit manually.
This is implemented against nxas:
https://github.com/ReinUsesLisp/nxas/blob/8dbc38995711cc12206aa370145a3a02665fd989/table.h#L68
That is itself tested against nvdisasm (Nvidia's official disassembler).
|
|
CMakeLists: Enable -Wmissing-declarations on Linux builds
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fixed_pipeline_state: Pack structure, use memcmp and CityHash on it
|
|
maxwell_3d: Initialize format attributes constant as one
|
|
Reduce FixedPipelineState's size from 1384 to 664 bytes
|
|
|
|
nouveau expects this to be true but it doesn't set it.
|
|
Allows reporting more cases where logic errors may exist, such as
implicit fallthrough cases, etc.
We currently ignore unused parameters, since we currently have many
cases where this is intentional (virtual interfaces).
While we're at it, we can also tidy up any existing code that causes
warnings. This also uncovered a few bugs as well.
|
|
shader/memory: Implement RED.E.ADD and minor changes to ATOM
|
|
gl_rasterizer: Implement constant vertex attributes
|
|
Adds another variant of FCMP.
|
|
Credits go to gdkchan from Ryujinx for finding constant attributes are
used in retail games.
|
|
Implements "legacy" features from OpenGL present on hardware such as
smooth lines and line width.
|
|
shader/video: Partially implement VMNMX
|
|
Implements the common usages for VMNMX. Inputs with a different size
than 32 bits are not supported and sign mismatches aren't supported
either.
VMNMX works as follows:
It grabs Ra and Rb and applies a maximum/minimum on them (this is
defined by .MX), having in mind the input sign. This result can then be
saturated. After the intermediate result is calculated, it applies
another operation on it using Rc. These operations are merges,
accumulations or another min/max pass.
This instruction allows to implement with a more flexible approach GCN's
min3 and max3 instructions (for instance).
|
|
This adds the registers used for multisampling. It doesn't implement
anything for now.
|
|
video_core/shader: Add some instruction and S2R encodings
|
|
Implements a reduction operation. It's an atomic operation that doesn't
return a value.
This commit introduces another primitive because some shading languages
might have a primitive for reduction operations.
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
This information is required to properly implement SULD.B. It might also
be handy for all image operations, since it would allow us to implement
them on devices that require the image format to be specified (on
desktop, this would be AMD on OpenGL and Intel on OpenGL and Vulkan).
|
|
gl_shader_decompiler: Implement legacy varyings
|
|
(@fincs)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
shader_decode: Reimplement BFE instructions
|
|
|
|
Use INSERT_UNION_PADDING_WORDS instead of alignas to ensure a size
requirement.
|
|
|
|
|