| Commit message (Collapse) | Author | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Corrects encodings for I2F, F2F, I2I and F2I
Implements Immediate variants of all four conversion types.
Add assertions to unimplemented stuffs.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Removes a few unnecessary dependencies on core-related machinery, such
as the core.h and memory.h, which reduces the amount of rebuilding
necessary if those files change.
This also uncovered some indirect dependencies within other source
files. This also fixes those.
|
|
|
|
|
|
|
|
|
|
Co-Authored-By: FernandoS27 <fsahmkow27@gmail.com>
|
|
|
|
|
|
Constant buffer values on the shader IR were using different offsets if
the access direct or indirect. cbuf34 has a non-multiplied offset while
cbuf36 does. On shader decoding this commit multiplies it by four on
cbuf34 queries.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Functions which are suppose to crash on non canary builds usually don't return anything which lead to uninitialized memory being used.
|
|
|
|
|
|
|
|
* Added predicate comparison LessEqualWithNan
* oops
* Clang fix
|
|
|
|
|
|
|
|
|
|
|
|
* get rid of boost::optional
* Remove optional references
* Use std::reference_wrapper for optional references
* Fix clang format
* Fix clang format part 2
* Adressed feedback
* Fix clang format and MacOS build
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Control Code 0xf means to unconditionally execute the instruction. This
value is passed to most BRA, EXIT and SYNC instructions (among others)
but this may not always be the case.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This is more consistent with the surrounding enums.
|
|
These don't affect the state of the struct and can be const member
functions.
|
|
|
|
|
|
|
|
|
|
This seems to be an optimization performed by nouveau.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Unneeded as we already implement it
|
|
Saturate already implemented
|
|
|
|
|
|
|
|
IpaMode is changed to IpaInterpMode
IpaMode is suppose to be 2 bits not 3
Added IpaSampleMode
Added Saturate
Renamed modes based on
https://github.com/mesa3d/mesa/blob/d27c7918916cdc8092959124955f887592e37d72/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gm107.cpp#L2530
|
|
|
|
* Implement POPC
* implement invert
|
|
|
|
|
|
|
|
|
|
|
|
Resolves a -Wlogical-op-parentheses warning.
|
|
|
|
Previously we could end up with a TEXS that didn't write any outputs, this was wrong.
|
|
|
|
|
|
|
|
|
|
The mode can be used to set the predicate to true depending on the result of the logic operation. In some cases, this means discarding the result (writing it to register 0xFF (Zero)).
This is used by Super Mario Odyssey.
|
|
We should definitely audit our shader generator for more errors like this.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- Accuracy is lost in translation to string, e.g. with NaN.
- Needed for Super Mario Odyssey.
|
|
|
|
|
|
Compresses a few namespace specifiers to be more compact.
|
|
|
|
|
|
|
|
|
|
It's similar to the FMNMX instruction but it works on integers.
|
|
It is unknown at this moment if we actually need to do something with these instructions or if the GLSL compiler takes care of that for us.
|
|
|
|
It's similar to the isetp and fsetp instructions but it works on predicates instead.
|
|
|
|
|
|
|
|
|
|
Like the MOV32I and FMUL32I instructions.
This fixes a potential crash when using these instructions.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This instruction tells the GPU where the flow reconverges in a non-uniform control flow scenario, we can ignore this when generating GLSL code.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Each predicated instruction will be wrapped in an `if (predicate) { instruction_body; }` in the GLSL, where `predicate` is one of the predicate boolean variables previously set by fsetp.
|
|
Predicate variables are now added to the generated shader code in the form of 'pX' where X is the predicate id.
These predicate variables are initialized to false on shader startup and are set via the fsetp instructions.
TODO:
* Not all the comparison types are implemented.
* Only the single-predicate version is implemented.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|