Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | shader_ir: Implement VOTE | ReinUsesLisp | 2019-08-21 | 1 | -0/+5 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Implement VOTE using Nvidia's intrinsics. Documentation about these can be found here https://developer.nvidia.com/reading-between-threads-shader-intrinsics Instead of using portable ARB instructions I opted to use Nvidia intrinsics because these are the closest we have to how Tegra X1 hardware renders. To stub VOTE on non-Nvidia drivers (including nouveau) this commit simulates a GPU with a warp size of one, returning what is meaningful for the instruction being emulated: * anyThreadNV(value) -> value * allThreadsNV(value) -> value * allThreadsEqualNV(value) -> true ballotARB, also known as "uint64_t(activeThreadsNV())", emits VOTE.ANY Rd, PT, PT; on nouveau's compiler. This doesn't match exactly to Nvidia's code VOTE.ALL Rd, PT, PT; Which is emulated with activeThreadsNV() by this commit. In theory this shouldn't really matter since .ANY, .ALL and .EQ affect the predicates (set to PT on those cases) and not the registers. | ||||
* | Shader_Ir: Implement F16 Variants of F2F, F2I, I2F. | Fernando Sahmkow | 2019-07-20 | 1 | -11/+14 |
| | | | | | This commit takes care of implementing the F16 Variants of the conversion instructions and makes sure conversions are done. | ||||
* | shader/half_set_predicate: Fix HSETP2 implementation | ReinUsesLisp | 2019-07-20 | 1 | -2/+1 |
| | |||||
* | shader_ir: Unify blocks in decompiled shaders. | Fernando Sahmkow | 2019-07-09 | 1 | -6/+6 |
| | |||||
* | shader_ir: Implement BRX & BRA.CC | Fernando Sahmkow | 2019-07-09 | 1 | -0/+1 |
| | |||||
* | texture_cache: Style and Corrections | Fernando Sahmkow | 2019-06-21 | 1 | -1/+2 |
| | |||||
* | shader: Implement bindless images | ReinUsesLisp | 2019-06-21 | 1 | -0/+9 |
| | |||||
* | shader: Decode SUST and implement backing image functionality | ReinUsesLisp | 2019-06-21 | 1 | -1/+41 |
| | |||||
* | shader: Split SSY and PBK stack | ReinUsesLisp | 2019-06-07 | 1 | -1/+6 |
| | | | | | | | | | | | 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; | ||||
* | shader/node: Minor changes | ReinUsesLisp | 2019-06-07 | 1 | -50/+54 |
| | | | | | | | Reflect std::shared_ptr nature of Node on initializers and remove constant members in nodes. Add some commentaries. | ||||
* | shader: Move Node declarations out of the shader IR header | ReinUsesLisp | 2019-06-07 | 1 | -0/+510 |
Analysis passes do not have a good reason to depend on shader_ir.h to work on top of nodes. This splits node-related declarations to their own file and leaves the IR in shader_ir.h |