Fernando Sahmkow
623b2e4b8f
Corrections Half Float operations on const buffers and implement saturation.
2019-04-20 21:11:33 -04:00
bunnei
da0c3bc658
Merge pull request #2407 from FernandoS27/f2f
...
Do some corrections in conversion shader instructions.
2019-04-20 00:42:34 -04:00
bunnei
650d9b1044
Merge pull request #2409 from ReinUsesLisp/half-floats
...
shader_ir/decode: Miscellaneous fixes to half-float decompilation
2019-04-19 21:31:52 -04:00
ReinUsesLisp
fbe8d1ceaa
video_core: Silent -Wswitch warnings
2019-04-18 15:54:39 -03:00
bunnei
5bd5140bde
Merge pull request #2348 from FernandoS27/guest-bindless
...
Implement Bindless Textures on Shader Decompiler and GL backend
2019-04-17 20:59:49 -04:00
bunnei
0cfbd3325b
Merge pull request #2315 from ReinUsesLisp/severity-decompiler
...
shader_ir/decode: Reduce the severity of common assertions
2019-04-16 22:21:19 -04:00
ReinUsesLisp
f43995ec53
shader_ir/decode: Fix half float pre-operations and remove MetaHalfArithmetic
...
Operations done before the main half float operation (like HAdd) were
managing a packed value instead of the unpacked one. Adding an unpacked
operation allows us to drop the per-operand MetaHalfArithmetic entry,
simplifying the code overall.
2019-04-15 21:16:10 -03:00
ReinUsesLisp
64613db605
shader_ir/decode: Implement half float saturation
2019-04-15 21:16:10 -03:00
ReinUsesLisp
90cbf89303
shader_ir/decode: Reduce severity of unimplemented half-float FTZ
2019-04-15 21:16:09 -03:00
ReinUsesLisp
acf618afbc
renderer_opengl: Implement half float NaN comparisons
2019-04-15 21:13:26 -03:00
ReinUsesLisp
ae46ad48ed
shader_ir: Avoid using static on heap-allocated objects
...
Using static here might be faster at runtime, but it adds a heap
allocation called before main.
2019-04-15 21:12:43 -03:00
Fernando Sahmkow
aa471274d9
Do some corrections in conversion shader instructions.
...
Corrects encodings for I2F, F2F, I2I and F2I
Implements Immediate variants of all four conversion types.
Add assertions to unimplemented stuffs.
2019-04-15 19:16:27 -04:00
ReinUsesLisp
5c280e6ff0
shader_ir: Implement STG, keep track of global memory usage and flush
2019-04-14 00:25:32 -03:00
Fernando Sahmkow
16adc735a5
Correct XMAD mode, psl and high_b on different encodings.
2019-04-08 13:01:17 -04:00
Fernando Sahmkow
ef8be408d3
Adapt Bindless to work with AOFFI
2019-04-08 12:07:56 -04:00
Fernando Sahmkow
492040bd9c
Move ConstBufferAccessor to Maxwell3d, correct mistakes and clang format.
2019-04-08 11:36:11 -04:00
Fernando Sahmkow
c60b0b8432
Fix TMML
2019-04-08 11:35:22 -04:00
Fernando Sahmkow
fd4e994de3
Refactor GetTextureCode and GetTexCode to use an optional instead of optional parameters
2019-04-08 11:35:18 -04:00
Fernando Sahmkow
4841440382
Implement TXQ_B
2019-04-08 11:29:52 -04:00
Fernando Sahmkow
189bd1980c
Implement TMML_B
2019-04-08 11:29:49 -04:00
Fernando Sahmkow
ac3ba9a33e
Corrections to TEX_B
2019-04-08 11:28:44 -04:00
Fernando Sahmkow
7af82ca022
Implement Bindless Handling on SetupTexture
2019-04-08 11:23:46 -04:00
Fernando Sahmkow
fe392fff24
Unify both sampler types.
2019-04-08 11:23:45 -04:00
Fernando Sahmkow
e28fd3d0a5
Implement Bindless Samplers and TEX_B in the IR.
2019-04-08 11:23:42 -04:00
ReinUsesLisp
04979560fb
shader_ir/memory: Reduce severity of LD_L cache management and log it
2019-04-03 17:12:44 -03:00
ReinUsesLisp
24abeb9a67
shader_ir/memory: Reduce severity of ST_L cache management and log it
2019-04-03 17:12:44 -03:00
Mat M
da02946f4f
shader_ir/decode: Silent implicit sign conversion warning
...
Co-Authored-By: ReinUsesLisp <reinuseslisp@airmail.cc>
2019-03-31 00:12:54 -03:00
ReinUsesLisp
cb68ce7c2f
shader_ir/decode: Implement AOFFI for TEX and TLD4
2019-03-30 02:53:29 -03:00
ReinUsesLisp
cf4ecc1945
shader_ir: Implement immediate register tracking
2019-03-30 02:53:16 -03:00
ReinUsesLisp
5ca63d0675
shader/decode: Remove extras from MetaTexture
2019-02-26 00:11:30 -03:00
ReinUsesLisp
48e6f77c03
shader/decode: Split memory and texture instructions decoding
2019-02-26 00:11:30 -03:00
Lioncash
c1b2e35625
shader/track: Resolve variable shadowing warnings
2019-02-25 09:10:59 -05:00
bunnei
c07987dfab
Merge pull request #2118 from FernandoS27/ipa-improve
...
shader_decompiler: Improve Accuracy of Attribute Interpolation.
2019-02-24 23:04:22 -05:00
Fernando Sahmkow
10682ad7e0
shader_decompiler: Improve Accuracy of Attribute Interpolation.
2019-02-14 03:25:07 -04:00
ReinUsesLisp
e60d4d70bc
gl_shader_decompiler: Re-implement TLDS lod
2019-02-12 17:03:07 -03:00
bunnei
444231a83d
Merge pull request #2108 from FernandoS27/fix-cc
...
Fix incorrect value for CC bit in IADD
2019-02-12 10:39:03 -05:00
bunnei
c1accfefde
Merge pull request #2109 from FernandoS27/fix-f2i
...
Corrected F2I None mode to RoundEven.
2019-02-12 10:20:29 -05:00
Fernando Sahmkow
f5ec165e8c
Corrected F2I None mode to RoundEven.
2019-02-11 18:46:45 -04:00
Fernando Sahmkow
edd668047c
Fix incorrect value for CC bit in IADD
2019-02-11 16:44:43 -04:00
ReinUsesLisp
889c646ac0
shader_ir: Remove F4 prefix to texture operations
...
This was originally included because texture operations returned a vec4.
These operations now return a single float and the F4 prefix doesn't
mean anything.
2019-02-07 17:36:46 -03:00
ReinUsesLisp
d62b0a9e29
shader_ir: Clean texture management code
...
Previous code relied on GLSL parameter order (something that's always
ill-formed on an IR design). This approach passes spatial coordiantes
through operation nodes and array and depth compare values in the the
texture metadata. It still contains an "extra" vector containing generic
nodes for bias and component index (for example) which is still a bit
ill-formed but it should be better than the previous approach.
2019-02-07 00:46:13 -03:00
bunnei
f09d1dffd1
Merge pull request #2083 from ReinUsesLisp/shader-ir-cbuf-tracking
...
shader/track: Add a more permissive global memory tracking
2019-02-06 21:56:14 -05:00
ReinUsesLisp
cfb20c4c9d
gl_shader_disk_cache: Save GLSL and entries into the precompiled file
2019-02-06 22:23:39 -03:00
bunnei
72c70d6808
Merge pull request #2081 from ReinUsesLisp/lmem-64
...
shader_ir/memory: Add LD_L 64 bits loads
2019-02-05 09:17:48 -05:00
bunnei
bb4549a73d
Merge pull request #2082 from FernandoS27/txq-stl
...
Fix TXQ not using the component mask.
2019-02-04 20:22:32 -05:00
Fernando Sahmkow
0306c50339
Fix TXQ not using the component mask.
2019-02-03 18:17:18 -04:00
ReinUsesLisp
dfa7be5ddf
shader_ir/memory: Add ST_L 64 and 128 bits stores
2019-02-03 19:08:10 -03:00
ReinUsesLisp
0d1d755086
shader/track: Search inside of conditional nodes
...
Some games search conditionally use global memory instructions. This
allows the heuristic to search inside conditional nodes for the source
constant buffer.
2019-02-03 17:21:20 -03:00
ReinUsesLisp
42b75e8be8
shader_ir: Rename BasicBlock to NodeBlock
...
It's not always used as a basic block. Rename it for consistency.
2019-02-03 17:21:20 -03:00
ReinUsesLisp
6a6fabea58
shader_ir: Pass decoded nodes as a whole instead of per basic blocks
...
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.
2019-02-03 17:21:20 -03:00
ReinUsesLisp
f61c1ed246
shader_ir/memory: Add LD_L 128 bits loads
2019-02-03 00:35:34 -03:00
ReinUsesLisp
9feb68085d
shader_bytecode: Rename BytesN enums to BitsN
2019-02-03 00:25:40 -03:00
ReinUsesLisp
0be835132c
shader_ir/memory: Add LD_L 64 bits loads
2019-02-03 00:25:40 -03:00
ReinUsesLisp
477d616f7d
shader_ir: Unify constant buffer offset values
...
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.
2019-01-30 02:45:50 -03:00
ReinUsesLisp
3b84e04af1
shader_decode: Implement LDG and basic cbuf tracking
2019-01-30 00:00:15 -03:00
Lioncash
b2b98b2f44
shader/shader_ir: Amend three comment typos
...
Given we're in the area, these are three trivial typos that can be
corrected.
2019-01-28 07:52:04 -05:00
Lioncash
62e08c30b7
shader/shader_ir: Amend constructor initializer ordering for AbufNode
...
Orders the class members in the same order that they would actually be
initialized in. Gets rid of two compiler warnings.
2019-01-28 07:50:34 -05:00
Lioncash
3e1a9a45a6
shader/decode: Avoid a pessimizing std::move within DecodeRange()
...
std::moveing a local variable in a return statement has the potential to
prevent copy elision from occurring, so this can just be converted into
a regular return.
2019-01-28 07:43:23 -05:00
ReinUsesLisp
a63d7c49fc
shader_ir: Fixup clang build
2019-01-15 21:06:05 -03:00
ReinUsesLisp
1c9c4eefeb
shader_decode: Fixup XMAD
2019-01-15 17:54:53 -03:00
ReinUsesLisp
170c8212bb
shader_ir: Pass to decoder functions basic block's code
2019-01-15 17:54:53 -03:00
ReinUsesLisp
2d6c064e66
shader_decode: Improve zero flag implementation
2019-01-15 17:54:53 -03:00
ReinUsesLisp
d911740e5d
shader_ir: Remove composite primitives and use temporals instead
2019-01-15 17:54:53 -03:00
ReinUsesLisp
50195b1704
shader_decode: Use proper primitive names
2019-01-15 17:54:53 -03:00
ReinUsesLisp
2faad9bf23
shader_decode: Use BitfieldExtract instead of shift + and
2019-01-15 17:54:53 -03:00
ReinUsesLisp
52223313b1
shader_ir: Remove Ipa primitive
2019-01-15 17:54:53 -03:00
ReinUsesLisp
af5d7e2c49
video_core: Rename glsl_decompiler to gl_shader_decompiler
2019-01-15 17:54:53 -03:00
ReinUsesLisp
d9118d324a
shader_ir: Remove RZ and use Register::ZeroIndex instead
2019-01-15 17:54:53 -03:00
ReinUsesLisp
5af82a8ed4
shader_decode: Implement TEXS.F16
2019-01-15 17:54:53 -03:00
ReinUsesLisp
c68c13e1aa
shader_decode: Fixup R2P
2019-01-15 17:54:53 -03:00
ReinUsesLisp
8b5588e776
glsl_decompiler: Fixup TLDS
2019-01-15 17:54:53 -03:00
ReinUsesLisp
dbed6c6485
glsl_decompiler: Fixup geometry shaders
2019-01-15 17:54:53 -03:00
ReinUsesLisp
ea78c78253
shader_decode: Fixup WriteLogicOperation zero comparison
2019-01-15 17:54:53 -03:00
ReinUsesLisp
ab7f52b279
glsl_decompiler: Fixup permissive member function declarations
2019-01-15 17:54:53 -03:00
ReinUsesLisp
55a10d02e5
shader_decode: Fixup PSET
2019-01-15 17:54:53 -03:00
ReinUsesLisp
a2e22b4359
shader_decode: Fixup clang-format
2019-01-15 17:54:53 -03:00
ReinUsesLisp
e1fea1e0c5
video_core: Implement IR based geometry shaders
2019-01-15 17:54:53 -03:00
ReinUsesLisp
a1b845b651
shader_decode: Implement VMAD and VSETP
2019-01-15 17:54:53 -03:00
ReinUsesLisp
b11e0b94c7
shader_decode: Implement HSET2
2019-01-15 17:54:53 -03:00
ReinUsesLisp
2df55985b6
shader_decode: Rework HSETP2
2019-01-15 17:54:53 -03:00
ReinUsesLisp
8332482c24
shader_decode: Implement R2P
2019-01-15 17:54:53 -03:00
ReinUsesLisp
3f1136ac6f
shader_decode: Implement CSETP
2019-01-15 17:54:52 -03:00
ReinUsesLisp
7e13e8bfcb
shader_decode: Implement PSET
2019-01-15 17:54:52 -03:00
ReinUsesLisp
dd91650aaf
shader_decode: Implement HFMA2
2019-01-15 17:54:52 -03:00
ReinUsesLisp
d6f76307fe
glsl_decompiler: Remove HNegate inlining
2019-01-15 17:54:52 -03:00
ReinUsesLisp
027f443e69
shader_decode: Implement POPC
2019-01-15 17:54:52 -03:00
ReinUsesLisp
55e6786254
shader_decode: Implement TLDS (untested)
2019-01-15 17:54:52 -03:00
ReinUsesLisp
ec98e4d842
shader_decode: Update TLD4 reflecting #1862 changes
2019-01-15 17:54:52 -03:00
ReinUsesLisp
03e088a4f4
shader_ir: Fixup TEX and TEXS and partially fix TLD4 decompiling
2019-01-15 17:54:52 -03:00
ReinUsesLisp
2d9136cec6
shader_decode: Fixup FSET
2019-01-15 17:54:52 -03:00
ReinUsesLisp
af5c6e4ccb
shader_decode: Implement IADD32I
2019-01-15 17:54:52 -03:00
ReinUsesLisp
fc46ecddb3
video_core: Return safe values after an assert hits
2019-01-15 17:54:52 -03:00
ReinUsesLisp
148a6418ed
shader_decode: Implement FFMA
2019-01-15 17:54:52 -03:00
ReinUsesLisp
21aff36459
video_core: Address feedback
2019-01-15 17:54:52 -03:00
ReinUsesLisp
59b34b1d76
shader_ir: Fixup file inclusions and clang-format
2019-01-15 17:54:52 -03:00
Mat M
57a900cc45
shader_ir: Move comment node string
...
Co-Authored-By: ReinUsesLisp <reinuseslisp@airmail.cc>
2019-01-15 17:54:52 -03:00
ReinUsesLisp
d4fae3a699
shader_ir: Address feedback to avoid UB in bit casting
2019-01-15 17:54:52 -03:00
ReinUsesLisp
946c86f0bb
shader_decode: Fixup clang-format
2019-01-15 17:54:52 -03:00
ReinUsesLisp
c9cf899d18
shader_decode: Implement LEA
2019-01-15 17:54:52 -03:00
ReinUsesLisp
4fd06efeb9
shader_decode: Implement IADD3
2019-01-15 17:54:52 -03:00