ReinUsesLisp
d54d7de40e
glasm: Rework control flow introducing a syntax list
...
This commit regresses VertexA shaders, their transformation pass has to
be adapted to the new control flow.
2021-07-22 21:51:31 -04:00
ameerj
7ff5851608
glasm: Implement Storage atomics
...
StorageAtomicExchangeU64 is failing test seemingly due to failure storing 64-bit
result into the register
2021-07-22 21:51:31 -04:00
ReinUsesLisp
8c81a20ace
glasm: Ensure reg alloc order across compilers on GLASM
...
Use a struct constructor to serialize register allocation arguments to
ensure registers are allocated in the same order regardless of the
compiler used.
The A and B functions can be called in any order when passed as
arguments to "foo":
foo(A(), B())
But the order is guaranteed for curly-braced constructor calls in
classes:
Foo{A(), B()}
Use this to get consistent behavior.
2021-07-22 21:51:31 -04:00
ReinUsesLisp
c917290497
glasm: Enable unintentionally disabled register aliasing on GLASM
2021-07-22 21:51:31 -04:00
ReinUsesLisp
70fbede213
glasm: Review all GLASM insts to be aware of register aliasing
2021-07-22 21:51:31 -04:00
ReinUsesLisp
c4fd6b55bc
glasm: Implement shuffle and vote instructions on GLASM
2021-07-22 21:51:31 -04:00
ReinUsesLisp
decda4a2c7
glasm: Add MUFU instructions to GLASM
2021-07-22 21:51:31 -04:00
ReinUsesLisp
5b18a12df2
glasm: Implement IAbs64 and INeg64 on GLASM
2021-07-22 21:51:31 -04:00
ReinUsesLisp
3f00a2ad3f
glasm: Properly clamp Fp64 on GLASM
2021-07-22 21:51:31 -04:00
ReinUsesLisp
deda89372f
glasm: Fix register allocation when moving immediate on GLASM
2021-07-22 21:51:31 -04:00
ReinUsesLisp
0839e46736
glasm: Implement SelectU64 on GLASM
2021-07-22 21:51:31 -04:00
ReinUsesLisp
6237300e36
glasm: Fix clamps so the min value has priority on NAN on GLASM
2021-07-22 21:51:31 -04:00
ReinUsesLisp
8eb72ff0dc
glasm: Fix moving U64 immediates to registers in GLASM
2021-07-22 21:51:31 -04:00
ameerj
80813b1d14
glasm: Implement storage atomic ops
2021-07-22 21:51:31 -04:00
ReinUsesLisp
ad61b47f80
glasm: Add conversion instructions to GLASM
2021-07-22 21:51:31 -04:00
ReinUsesLisp
7703d65f23
glasm: Add fp min/max insts and fix store for fp64 on GLASM
2021-07-22 21:51:31 -04:00
ReinUsesLisp
43a448d98d
glasm: Add logical instructions on GLASM
2021-07-22 21:51:31 -04:00
ReinUsesLisp
99352741af
glasm: Remove duplicated Fp64 pack instructions on GLASM
2021-07-22 21:51:30 -04:00
ReinUsesLisp
45ef62d3ba
glasm: Remove unnecesary new white space on Clamp GLASM
2021-07-22 21:51:30 -04:00
ReinUsesLisp
b4953e79ee
glasm: Add floating-point comparisons on GLASM
2021-07-22 21:51:30 -04:00
ameerj
6705f56029
emit_glasm: Implement more integer alu ops
2021-07-22 21:51:30 -04:00
ameerj
3e10709091
glasm: Reimplement bitwise ops and BFI/BFE
2021-07-22 21:51:30 -04:00
ReinUsesLisp
4502595bc2
glasm: Initial GLASM fp64 support
2021-07-22 21:51:30 -04:00
ReinUsesLisp
9f851e3832
glasm: Implement GLASM fp16 packing and move bitwise insns
2021-07-22 21:51:30 -04:00
ReinUsesLisp
4de65fbff4
glasm: Remove unused functions left from rebase
2021-07-22 21:51:30 -04:00
ReinUsesLisp
6358b0d0c1
glasm: Specify namespace when using FormatTo
2021-07-22 21:51:30 -04:00
ReinUsesLisp
939dab7120
glasm: Implement more GLASM composite instructions
2021-07-22 21:51:30 -04:00
ReinUsesLisp
1c9307969c
glasm: Make GLASM aware of types
2021-07-22 21:51:30 -04:00
ameerj
934d300246
glasm: Use CMP.S for Select32
...
also fixes ADD and SUB to use U modifier
2021-07-22 21:51:30 -04:00
ameerj
68cc445b8e
glasm: Implement more logical ops
2021-07-22 21:51:30 -04:00
ameerj
941c6dc740
glasm: Implement BFI, BFE
...
Along with implementations of common instructions along the way
2021-07-22 21:51:30 -04:00
ReinUsesLisp
3e841f6441
glasm: Use BitField instead of C bitfields
2021-07-22 21:51:30 -04:00
ReinUsesLisp
2b04b4d27f
glasm: Remove unused argument in identity instructions on GLASM
2021-07-22 21:51:30 -04:00
ReinUsesLisp
6fd190d1ae
glasm: Implement basic GLASM instructions
2021-07-22 21:51:30 -04:00
ReinUsesLisp
c1ba685d9c
glasm: Changes to GLASM register allocator and emit context
2021-07-22 21:51:30 -04:00
ReinUsesLisp
b10cf64c48
glasm: Add GLASM backend infrastructure
2021-07-22 21:51:30 -04:00
ReinUsesLisp
b725db8709
shader: Fixup SPIR-V emit header namespaces
2021-07-22 21:51:30 -04:00
ReinUsesLisp
bed090807a
Move SPIR-V emission functions to their own header
2021-07-22 21:51:30 -04:00
FernandoS27
ee61ec2c39
shader: Optimize NVN Fallthrough
2021-07-22 21:51:30 -04:00
ameerj
7ecc6de56a
shader: Implement Int32 SUATOM/SURED
2021-07-22 21:51:30 -04:00
ReinUsesLisp
850b08a16c
spirv: Be aware of NAN unaware drivers
2021-07-22 21:51:30 -04:00
ReinUsesLisp
fde47152d9
spirv: Add SSBO read fallbacks when no aliasing is available
2021-07-22 21:51:29 -04:00
ReinUsesLisp
fd913bceaf
spirv: Add OpKill fallback to demote
2021-07-22 21:51:29 -04:00
ReinUsesLisp
d2a0f9d7ad
spirv: Do not enable ShaderLayer
...
This is enabled by an extension instead of the capability.
2021-07-22 21:51:29 -04:00
ReinUsesLisp
2b434b74af
spirv: Enable DemoteToHelperInvocationEXT only when supported
2021-07-22 21:51:29 -04:00
ReinUsesLisp
cfd873275d
spirv: Use OriginLowerLeft when requested
2021-07-22 21:51:29 -04:00
ReinUsesLisp
bafe9e35a9
spirv: Only add image operands mask when needed
2021-07-22 21:51:29 -04:00
ReinUsesLisp
d2e811db2e
spirv: Workaround image unsigned offset bug
...
Workaround bug on Nvidia's OpenGL SPIR-V compiler when using unsigned
texture offsets.
2021-07-22 21:51:29 -04:00
ReinUsesLisp
4ead714910
spirv: Add int8 and int16 capabilities only when supported
2021-07-22 21:51:29 -04:00
ReinUsesLisp
33bebc3412
spirv: Add integer clamping workarounds
...
Workaround more bugs on Nvidia's OpenGL SPIR-V compiler.
2021-07-22 21:51:29 -04:00
ReinUsesLisp
7b03b97118
spirv: Implement int8 and int16 conversion fallbacks
2021-07-22 21:51:29 -04:00
ReinUsesLisp
48a17298d7
spirv: Support OpenGL uniform buffers and change bindings
2021-07-22 21:51:29 -04:00
ReinUsesLisp
d5d6778ba5
spirv: Desambiguate descriptor names
...
Worksaround a bug on Nvidia's OpenGL SPIR-V compiler where names are
used for name matching.
2021-07-22 21:51:29 -04:00
FernandoS27
b541f5e5e3
shader: Implement VertexA stage
2021-07-22 21:51:29 -04:00
ReinUsesLisp
57464e3b72
shader: Fix storage type when reading patches on tess control
2021-07-22 21:51:29 -04:00
ReinUsesLisp
d10cf55353
shader: Implement indexed textures
2021-07-22 21:51:28 -04:00
ReinUsesLisp
050e81500c
shader: Move microinstruction header to the value header
2021-07-22 21:51:28 -04:00
ReinUsesLisp
7018e524f5
shader: Add NVN storage buffer fallbacks
...
When we can't track the SSBO origin of a global memory instruction,
leave it as a global memory operation and assume these pointers are in
the NVN storage buffer slots, then apply a linear search in the shader's
runtime.
2021-07-22 21:51:28 -04:00
ReinUsesLisp
6325601947
spirv: Fix ViewportMask
2021-07-22 21:51:28 -04:00
ameerj
5b8afed871
spirv: Replace Constant/ConstantComposite with Const helper
2021-07-22 21:51:28 -04:00
FernandoS27
f69d0b91ff
shader: Address feedback
2021-07-22 21:51:28 -04:00
FernandoS27
080857b60e
shader: Add coarse derivatives
2021-07-22 21:51:28 -04:00
FernandoS27
04c459fc8d
shader: Implement fine derivates constant propagation
2021-07-22 21:51:28 -04:00
FernandoS27
f18a6dd1bd
shader: Implement SR_Y_DIRECTION
2021-07-22 21:51:28 -04:00
ReinUsesLisp
0a0818c025
shader: Fix memory barriers
2021-07-22 21:51:28 -04:00
ReinUsesLisp
c9e4609d87
spirv: Fix implicit lod type
2021-07-22 21:51:28 -04:00
ReinUsesLisp
7cfa403683
spirv: Use explicit lods outside of fragment shaders
2021-07-22 21:51:28 -04:00
ReinUsesLisp
dbbd4b5496
spirv: Use ConstOffset instead of Offset when possible
2021-07-22 21:51:28 -04:00
ameerj
be431f5ed0
shader: Implement BFE and BFI CC
...
Fix two bugs in BFI.
2021-07-22 21:51:28 -04:00
ReinUsesLisp
80940b1706
shader: Implement SampleMask
2021-07-22 21:51:28 -04:00
ReinUsesLisp
95815a3883
shader: Implement PIXLD.MY_INDEX
2021-07-22 21:51:28 -04:00
ReinUsesLisp
f3473c5143
spirv: Bitcast non-F32 output attributes to their type before store
2021-07-22 21:51:28 -04:00
ReinUsesLisp
e3514bcd6b
spirv: Implement ViewportMask with NV_viewport_array2
2021-07-22 21:51:28 -04:00
ReinUsesLisp
4657cf78fd
spirv: Bitcast non-F32 attributes to F32
2021-07-22 21:51:27 -04:00
ReinUsesLisp
b0f1255c8c
shader: Implement PrimitiveId
2021-07-22 21:51:27 -04:00
ReinUsesLisp
183855e396
shader: Implement tessellation shaders, polygon mode and invocation id
2021-07-22 21:51:27 -04:00
ReinUsesLisp
416e1b7441
spirv: Implement image buffers
2021-07-22 21:51:27 -04:00
ReinUsesLisp
d8ec99dada
spirv: Implement Layer stores
2021-07-22 21:51:27 -04:00
FernandoS27
ab3831f6cb
spirv: Fix alpha test
2021-07-22 21:51:27 -04:00
ameerj
6f4a1c8dcf
spirv: Fix non-atomic 64-bit store
2021-07-22 21:51:27 -04:00
ameerj
6c512f4bff
spirv: Implement alpha test
2021-07-22 21:51:27 -04:00
ReinUsesLisp
b126987c59
shader: Implement transform feedbacks and define file format
2021-07-22 21:51:27 -04:00
ReinUsesLisp
a83579b50a
shader: Implement early Z tests
2021-07-22 21:51:27 -04:00
ReinUsesLisp
fa75b9b062
spirv: Rework storage buffers and shader memory
2021-07-22 21:51:27 -04:00
ReinUsesLisp
c070991def
shader: Fix fixed pipeline point size on geometry shaders
2021-07-22 21:51:27 -04:00
ReinUsesLisp
f263760c5a
shader: Implement geometry shaders
2021-07-22 21:51:27 -04:00
ReinUsesLisp
a6cef71cc0
shader: Implement OUT
2021-07-22 21:51:27 -04:00
ReinUsesLisp
23b8714732
spirv: Define StorageImageWriteWithoutFormat capability when used
2021-07-22 21:51:27 -04:00
ReinUsesLisp
2ed80f6b1e
shader: Implement LOP CC
2021-07-22 21:51:27 -04:00
ReinUsesLisp
5c61e860e4
shader: Implement SR_THREAD_KILL
2021-07-22 21:51:27 -04:00
ameerj
3db2b3effa
shader: Implement ATOM/S and RED
2021-07-22 21:51:27 -04:00
ReinUsesLisp
106764a6d5
spirv: Move phi node patching to a separate function
2021-07-22 21:51:27 -04:00
ReinUsesLisp
ab543f1821
spirv: Guard against typeless image reads on unsupported devices
2021-07-22 21:51:27 -04:00
ReinUsesLisp
9280cd649a
shader: Move LaneId to the warp emission file and fix AMD
2021-07-22 21:51:27 -04:00
ReinUsesLisp
2e71e4c5c0
spirv: Fix forward declarations on phi nodes
2021-07-22 21:51:27 -04:00
ReinUsesLisp
7cb2ab3585
shader: Implement SULD and SUST
2021-07-22 21:51:26 -04:00
lat9nq
5bfcafa0a2
shader: Address feedback + clang format
2021-07-22 21:51:26 -04:00
lat9nq
0bb85f6a75
shader_recompiler,video_core: Cleanup some GCC and Clang errors
...
Mostly fixing unused *, implicit conversion, braced scalar init,
fpermissive, and some others.
Some Clang errors likely remain in video_core, and std::ranges is still
a pertinent issue in shader_recompiler
shader_recompiler: cmake: Force bracket depth to 1024 on Clang
Increases the maximum fold expression depth
thread_worker: Include condition_variable
Don't use list initializers in control flow
Co-authored-by: ReinUsesLisp <reinuseslisp@airmail.cc>
2021-07-22 21:51:26 -04:00
ReinUsesLisp
e9a91bc5cc
shader: Interact texture buffers with buffer cache
2021-07-22 21:51:26 -04:00
ReinUsesLisp
ef88552224
shader: Fix TextureGrad
2021-07-22 21:51:26 -04:00