Andrea Pappacoda
0c214cb5b9
fix: typos
2022-04-02 16:34:07 +02:00
Ameer J
75046a3351
Merge pull request #8038 from liamwhite/exit-register-detection
...
shader_recompiler/EXIT: increment output register on failed enable test
2022-03-21 21:24:07 -04:00
ameerj
574a2c4b77
shader_recompiler: Reduce unused includes
2022-03-20 02:25:08 -04:00
Liam
d400b618a7
shader_recompiler/EXIT: skip render targets with no outputs
2022-03-18 09:26:25 -04:00
Liam
6fa17f3372
shader_recompiler/EXIT: increment output register on failed enable test
2022-03-17 22:09:31 -04:00
Liam
1415542f73
shader_recompiler: Implement LDC.IS address mode
2022-03-16 11:05:04 -04:00
Fernando Sahmkow
185fc03c3c
Shader decompiler: do constant propgation before texture pass.
2022-03-13 21:49:40 +01:00
Markus Wick
c78c8190d5
shader_recompiler/LOP3: Use brute force python results within switch/case.
...
Thanks to @asLody for optimizing this function. This raised the focus that this function should be optimized more.
The current table assumes that the host GPU is able to invert for free, so only AND,OR,XOR are accumulated in the performance metrik.
Performance results:
Instructions
0: 8
1: 30
2: 114
3: 80
4: 24
Latency
0: 8
1: 30
2: 194
3: 24
2022-03-08 09:44:28 +01:00
ameerj
74e6e3623f
video_minimum_maximum: Implement src operand selectors
...
Used by Pokemon Legends: Arceus
2022-01-27 14:55:08 -05:00
Lioncash
b46ec4efea
shader_recompiler: Remove unnecessary [[nodiscard]]
...
Since ConvertLegacyToGeneric has a void return value, there's nothing
that is actually returned by the function.
2022-01-25 12:16:09 -05:00
vonchenplus
4908a07c20
Address format clang
2021-12-18 14:27:07 +08:00
Feng Chen
4dd85f86a8
Implement convert legacy to generic
2021-11-19 22:53:58 +08:00
ameerj
99eec162da
rescaling_pass: Logic simplification and minor style cleanup
2021-11-16 22:11:30 +01:00
Fernando Sahmkow
b3a9c8f108
Shader: Don't rescale FragCoord if used by Shuffle
2021-11-16 22:11:30 +01:00
ReinUsesLisp
656adee630
spirv: Implement rescaling patching
2021-11-16 22:11:28 +01:00
Fernando Sahmkow
c50ad56bf5
ShaderCache: Order Phi Arguments from farthest away to nearest.
2021-10-31 19:34:15 +01:00
ameerj
907dfbea71
structured_control_flow: Skip reordering nested demote branches.
...
Nested demote branches add complexity with combining the condition if it has not been initialized yet. Skip them for the time being.
2021-08-30 11:46:25 -04:00
ameerj
4fda7f1c82
structured_control_flow: Conditionally invoke demote reorder pass
...
This is only needed on select drivers when a fragment shader discards/demotes.
2021-08-30 11:46:24 -04:00
ameerj
862dc2b2b3
structured_control_flow: Add DemoteCombinationPass
...
Some drivers misread data when demotes are interleaved in the program. This moves demote branches to be checked at the end of the program.
Fixes "wireframe" issue in Pokemon SwSh on some drivers
2021-08-28 11:35:25 -04:00
Lioncash
0b67df1f7c
control_flow: Fix duplicate switch case in OpcodeToken
...
This previously duplicated the case of the PBK case above it.
2021-07-26 04:16:34 -04:00
ReinUsesLisp
7f13104c17
shader: Support out of bound local memory reads and immediate writes
...
Support ignoring immediate out of bound writes. Writing dynamically out
of bounds is not yet supported (e.g. R0+0x4).
Reading out of bounds yields zero. This is supported checking for the
size from the IR; if the input is immediate, the optimization passes
will drop it.
2021-07-22 21:51:41 -04:00
ameerj
fc7bed21b5
shader: Implement ISETP.X
2021-07-22 21:51:40 -04:00
ReinUsesLisp
bf2956d77a
shader: Avoid usage of C++20 ranges to build in clang
2021-07-22 21:51:40 -04:00
lat9nq
49946cf780
shader_recompiler, video_core: Resolve clang errors
...
Silences the following warnings-turned-errors:
-Wsign-conversion
-Wunused-private-field
-Wbraced-scalar-init
-Wunused-variable
And some other errors
2021-07-22 21:51:40 -04:00
ReinUsesLisp
2235a51b5d
shader: Manually convert from array<u32> to bitset instead of using bit_cast
2021-07-22 21:51:40 -04:00
lat9nq
2e5af95541
shader: GCC fmt 8.0.0 fixes
2021-07-22 21:51:40 -04:00
ameerj
b9069c7891
shader: Account for 33-bit IADD3 scenario
2021-07-22 21:51:40 -04:00
ReinUsesLisp
b21bf79bd2
shader: Only apply shift on register mode for IADD3
2021-07-22 21:51:39 -04:00
ReinUsesLisp
8612b5fec5
shader: Use std::bit_cast instead of Common::BitCast for passthrough
2021-07-22 21:51:39 -04:00
ReinUsesLisp
7dafa96ab5
shader: Rework varyings and implement passthrough geometry shaders
...
Put all varyings into a single std::bitset with helpers to access it.
Implement passthrough geometry shaders using host's.
2021-07-22 21:51:39 -04:00
ReinUsesLisp
ecd6b4356b
shader: Only verify shader when graphics debugging is enabled
2021-07-22 21:51:39 -04:00
ReinUsesLisp
fb166b5ff4
shader: Emulate 64-bit integers when not supported
...
Useful for mobile and Intel Xe devices.
2021-07-22 21:51:39 -04:00
ameerj
a7536825df
shader_recompiler: Fix IADD3 input partitioning
2021-07-22 21:51:39 -04:00
ReinUsesLisp
808ef97a08
shader: Move loop safety tests to code emission
2021-07-22 21:51:39 -04:00
ReinUsesLisp
1d182fc0f5
shader: Calibrate loop safety threshold
2021-07-22 21:51:38 -04:00
ReinUsesLisp
1091995f8e
shader: Simplify MergeDualVertexPrograms
2021-07-22 21:51:38 -04:00
ReinUsesLisp
374eeda1a3
shader: Properly manage attributes not written from previous stages
2021-07-22 21:51:38 -04:00
ReinUsesLisp
cbbca26d18
shader: Add support for native 16-bit floats
2021-07-22 21:51:38 -04:00
ReinUsesLisp
376aa94819
shader: Rename maxwell/program.h to translate_program.h
2021-07-22 21:51:38 -04:00
ReinUsesLisp
7ac55c2a75
shader: Fix loop safety to SSA pass
2021-07-22 21:51:35 -04:00
ReinUsesLisp
61cd7dd301
shader: Add logging
2021-07-22 21:51:35 -04:00
lat9nq
373f75d944
shader: Add shader loop safety check settings
...
Also add a setting for enable Nsight Aftermath.
2021-07-22 21:51:35 -04:00
ReinUsesLisp
487057b8d2
shader: Comment why the array component is not read in TMML
2021-07-22 21:51:35 -04:00
ameerj
3c125d4134
tmml: Remove index component from coords vec
...
The lod query functions exposed by the rendering API's do not make use of the texturearray layer indexing.
2021-07-22 21:51:35 -04:00
FernandoS27
562af30181
shader: Fix VertexA Shaders.
2021-07-22 21:51:34 -04:00
ReinUsesLisp
ec9a78885e
shader: Add 2D and 3D variants to SUATOM and SURED
...
Used by Claybook.
2021-07-22 21:51:34 -04:00
ReinUsesLisp
4f8b68fb04
shader: Avoid CPU side undefined behavior on I2F
2021-07-22 21:51:34 -04:00
ReinUsesLisp
05d41fa9b7
shader: Add support for "negative" and unaligned offsets
...
"Negative" offsets don't exist. They are shown as such due to a bug in
nvdisasm.
Unaligned offsets have been proved to read the aligned offset. For
example, when reading an U32, if the offset is 6, the offset read will
be 4.
2021-07-22 21:51:34 -04:00
ReinUsesLisp
5d170de0b5
shader: Implement ISCADD32I
2021-07-22 21:51:34 -04:00
ReinUsesLisp
329dea217d
shader: Always initialize up reference in structure control flow
...
Fixes ubsan issue.
2021-07-22 21:51:34 -04:00