Commit graph

830 commits

Author SHA1 Message Date
Fernando Sahmkow
1a0006ef55 Shader Compiler: avoid overflowed indices on indixed samplers. 2021-10-17 03:38:09 +02:00
Morph
203d8f7f60 style: Remove extra space preceding the :: operator 2021-09-29 01:26:01 -04:00
ameerj
d7977be416 general: Update style to clang-format-12 2021-09-24 15:52:05 -04:00
Fernando Sahmkow
0bd7c14e04 Spir-V: Rescale the frag depth to 0,1 mode when -1,1 mode is used in Vulkan. 2021-09-15 21:30:33 +02:00
Morph
b4d9be4aae Merge pull request #6948 from ameerj/amd-warp-fix
shaders: Fix warp instructions on 64-thread warp devices
2021-09-12 13:53:29 -04:00
bunnei
9a7c619698 Merge pull request #6962 from vonchenplus/spirv_support_legacy_attribute
renderer_vulkan: Spirv support glsl  legacy attribute
2021-09-08 14:04:44 -07:00
Feng Chen
63aba30181 Detail adjustment 2021-09-08 10:30:00 +08:00
Feng Chen
38b28f1c4d Detail adjustment 2021-09-08 09:53:10 +08:00
Feng Chen
3948edde71 Re-implement get unused location 2021-09-07 13:22:52 +08:00
Feng Chen
bd94ea2f5a Move attribute related definitions to spirv anonymous namespace 2021-09-07 12:34:35 +08:00
Feng Chen
dc8967ebcd Dynamic get unused location 2021-09-06 10:46:03 +08:00
Feng Chen
1aaa6a353b Implement intput and output fixed fnc textures 2021-09-06 10:36:45 +08:00
Feng Chen
49c66fa4e9 Rename parameters 2021-09-03 23:52:20 +08:00
Feng Chen
b3e5a2f75d Fix create GraphicsPipelines crash 2021-09-03 22:55:53 +08:00
Feng Chen
a1c9039eae Add input/output location 2021-09-02 23:34:51 +08:00
bunnei
59cf0848c7 Merge pull request #6900 from ameerj/attr-reorder
structured_control_flow: Add DemoteCombinationPass
2021-09-01 17:36:26 -07:00
ameerj
668d936dd2 emit_glsl_warp: Fix shuffle ops for 64-thread warp sizes 2021-08-31 16:11:25 -04:00
ameerj
9302524b8c emit_glsl_warp: Fix ballot related ops for 64-thread warp sizes 2021-08-31 16:11:25 -04:00
ameerj
c7568d61d2 emit_spirv_warp: Fix shuffle ops for 64-thread warp sizes 2021-08-31 13:40:39 -04:00
ameerj
1bb5fb7e26 emit_spirv_warp: Fix ballot related ops for 64-thread warp sizes 2021-08-31 13:40:12 -04:00
Feng Chen
b86a4caa20 Add colorfront and txtcoord support 2021-09-01 00:07:25 +08:00
ameerj
8485bb3dcb 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
e9a8e011f6 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
8c687b3a91 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
ameerj
9b41b19766 emit_spirv_context_get_set: Fix Get FrontFace return value
The IR expects GetAttribute to return an F32 value. This case was returning a U32 instead.
2021-08-26 21:37:34 -04:00
Valeri
1510efac15 SPIR-V: Merge two ifs in EmitGetAttribute 2021-08-19 20:13:46 +03:00
Morph
bef5d608a9 Merge pull request #6767 from ReinUsesLisp/fold-float-pack
shader: Fold UnpackFloat2x16 and PackFloat2x16
2021-07-30 02:07:52 -04:00
bunnei
9a7c2869d8 Merge pull request #6722 from ReinUsesLisp/xmad-opts
shader: Fold integer FMA from Nvidia's pattern
2021-07-29 18:45:37 -07:00
ReinUsesLisp
ecc05bdcb6 shader: Fold UnpackFloat2x16 and PackFloat2x16
Simplifies the code a bit when possible. These instructions should be
no-ops codegen wise.
2021-07-29 21:22:52 -03:00
ReinUsesLisp
d84b81fdfb shader: Mark ConvertF16F32 and ConvertF32F16 as fp16 instructions
Fixes instances where fp16 types are not declared on SPIR-V but they are
used. This shouldn't happen on master, as it's been uncovered by an
additional optimization pass.
2021-07-27 21:33:05 -03:00
Lioncash
b5ce444508 exception: Make constructors explicit
Ensures that exception construction is always explicit.
2021-07-27 04:15:14 -04:00
Lioncash
b650c38a31 exception: Make what() member function nodiscard 2021-07-27 04:14:32 -04:00
Lioncash
d04bbd8207 exception: Narrow down specific header
We can use the <exception> header instead of pulling in all of the
exception-style classes.
2021-07-27 04:09:18 -04:00
Rodrigo Locatti
4d2a527006 Merge pull request #6724 from lioncash/nodisc-shader
shader_recompiler: Remove unnecessary [[nodiscard]] instances
2021-07-26 16:35:21 -03:00
Rodrigo Locatti
d424762d2c Merge pull request #6726 from lioncash/hguard
emit_spirv_instructions: Add missing header guard
2021-07-26 16:35:11 -03:00
Rodrigo Locatti
b894ae1bd3 Merge pull request #6727 from lioncash/topology
emit_glasm: Fix LINESS_ADJACENCY typo in InputPrimitive()
2021-07-26 16:35:03 -03:00
Rodrigo Locatti
0da5a7170b Merge pull request #6723 from lioncash/shader
object_pool: Add missing return in Chunk move assignment operator
2021-07-26 06:01:21 -03:00
Lioncash
00bd622334 emit_glasm: Fix LINESS_ADJACENCY typo in InputPrimitive()
This should be LINES_ADJACENCY
2021-07-26 04:44:56 -04:00
Lioncash
0692818106 emit_spirv_instructions: Add missing header guard 2021-07-26 04:28:35 -04:00
Lioncash
05201f4f88 shader_recompiler: Remove unnecessary [[nodiscard]] instances
[[nodiscard]] doesn't do anything on functions with a void return type
and causes superfluous warnings.
2021-07-26 04:23:59 -04:00
Lioncash
9d5aa3d65a 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
Lioncash
23da07e8e5 object_pool: Add missing return in Chunk move assignment operator
Prevents undefined behavior from occurring.
2021-07-26 04:01:05 -04:00
ReinUsesLisp
4f19303fe0 shader: Fold integer FMA from Nvidia's pattern
Fold shaders doing "a * b + c" on integers from the pattern generated by
Nvidia's GL compiler.

On a somewhat complex compute shader it reduces the code size by 16
instructions from 2 matches on Turing GPUs.

On Intel as extracted from KHR_pipeline_executable_properties:
Before the optimization:
```
Instruction Count: 2057
Basic Block Count: 45
Scratch Memory Size: 14752
Spill Count: 232
Fill Count: 261
SEND Count: 610
Cycle Count: 11325
```

After the optimization:
```
Instruction Count: 2046
Basic Block Count: 44
Scratch Memory Size: 13728
Spill Count: 219
Fill Count: 268
SEND Count: 604
Cycle Count: 11367
```
2021-07-26 04:58:02 -03:00
ReinUsesLisp
c6e1483e17 shader: Use TryInstRecursive on XMAD multiply folding
Simplify a bit the logic.
2021-07-26 04:15:27 -03:00
ReinUsesLisp
222a6542ab shader: Add TryInstRecursive utility to values 2021-07-26 01:31:05 -03:00
ReinUsesLisp
ba89444667 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
3927809a63 shader: Fix disabled attribute default values 2021-07-22 21:51:40 -04:00
ameerj
e6d3a301f2 glsl: Simplify FCMP emission 2021-07-22 21:51:40 -04:00
ameerj
4f3e869dd0 glsl: Update TessellationControl gl_in
Adheres to GL_ARB_separate_shader_objects requirements
2021-07-22 21:51:40 -04:00
ameerj
ffe72f8d37 shader: Implement ISETP.X 2021-07-22 21:51:40 -04:00