FernandoS27
fb20effc51
shader: Stub SR_AFFINITY
2021-07-22 21:51:30 -04:00
ameerj
455872a4af
shader: Implement Int32 SUATOM/SURED
2021-07-22 21:51:30 -04:00
ReinUsesLisp
5ca5988c63
shader: Initial OpenGL implementation
2021-07-22 21:51:30 -04:00
ReinUsesLisp
5ad12292a6
spirv: Be aware of NAN unaware drivers
2021-07-22 21:51:30 -04:00
ReinUsesLisp
21a5bd332c
spirv: Add SSBO read fallbacks when no aliasing is available
2021-07-22 21:51:29 -04:00
ReinUsesLisp
1922cbb84c
spirv: Add OpKill fallback to demote
2021-07-22 21:51:29 -04:00
ReinUsesLisp
d2e6291c0e
spirv: Do not enable ShaderLayer
...
This is enabled by an extension instead of the capability.
2021-07-22 21:51:29 -04:00
ReinUsesLisp
b2fe282ad3
spirv: Enable DemoteToHelperInvocationEXT only when supported
2021-07-22 21:51:29 -04:00
ReinUsesLisp
2ee532c9bc
spirv: Use OriginLowerLeft when requested
2021-07-22 21:51:29 -04:00
ReinUsesLisp
f6c09c27b1
spirv: Only add image operands mask when needed
2021-07-22 21:51:29 -04:00
ReinUsesLisp
59668831b7
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
4a76786740
spirv: Add int8 and int16 capabilities only when supported
2021-07-22 21:51:29 -04:00
ReinUsesLisp
8accb076ee
spirv: Add integer clamping workarounds
...
Workaround more bugs on Nvidia's OpenGL SPIR-V compiler.
2021-07-22 21:51:29 -04:00
ReinUsesLisp
55ff0ab463
spirv: Implement int8 and int16 conversion fallbacks
2021-07-22 21:51:29 -04:00
ReinUsesLisp
884a937022
spirv: Support OpenGL uniform buffers and change bindings
2021-07-22 21:51:29 -04:00
ReinUsesLisp
2bdce72c92
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
ReinUsesLisp
bfb08e709c
shader: Add OpenGL shader profile options
2021-07-22 21:51:29 -04:00
ReinUsesLisp
4c5f8d123d
shader: Remove shader util
2021-07-22 21:51:29 -04:00
FernandoS27
6aff9b4476
shader: Address feedback
2021-07-22 21:51:29 -04:00
FernandoS27
a2fac91c47
shader: Implement VertexA stage
2021-07-22 21:51:29 -04:00
FernandoS27
cb0587f841
shader: Implement delegation of Exit to dispatcher on CFG
2021-07-22 21:51:29 -04:00
ReinUsesLisp
806c5a3739
vk_graphics_pipeline: Fix texture buffer descriptors
2021-07-22 21:51:29 -04:00
ameerj
031e91e7e5
shader: Fix IADD3.CC
2021-07-22 21:51:29 -04:00
ReinUsesLisp
b62b8f2e84
vk_scheduler: Allow command submission on worker thread
...
This changes how Scheduler::Flush works. It queues the current command
buffer to be sent to the GPU but does not do it immediately. The Vulkan
worker thread takes care of that. Users will have to use
Scheduler::Flush + Scheduler::WaitWorker to get the previous behavior.
Scheduler::Finish is unchanged.
To avoid waiting on work never queued, Scheduler::Wait sends the current
command buffer if that's what the caller wants to wait.
2021-07-22 21:51:29 -04:00
ReinUsesLisp
eb7ef12b95
vk_compute_pass: Fix -Wshadow warning
2021-07-22 21:51:29 -04:00
ReinUsesLisp
ed6c131c92
shader: Move pipeline cache logic to separate files
...
Move code to separate files to be able to reuse it from OpenGL. This
greatly simplifies the pipeline cache logic on Vulkan.
Transform feedback state is not yet abstracted and it's still
intrusively stored inside vk_pipeline_cache. It will be moved when
needed on OpenGL.
2021-07-22 21:51:29 -04:00
ReinUsesLisp
fd502a4d43
vulkan: Defer descriptor set work to the Vulkan thread
...
Move descriptor lookup and update code to a separate thread. Delaying
this removes work from the main GPU thread and allows creating
descriptor layouts on another thread. This reduces a bit the workload
of the main thread when new pipelines are encountered.
2021-07-22 21:51:29 -04:00
ReinUsesLisp
896a4fe9b5
vulkan: Rework descriptor allocation algorithm
...
Create multiple descriptor pools on demand. There are some degrees of
freedom what is considered a compatible pool to avoid wasting large
pools on small descriptors.
2021-07-22 21:51:29 -04:00
ReinUsesLisp
a3b025c6a4
vk_graphics_pipeline: Generate specialized pipeline config functions and improve code
2021-07-22 21:51:29 -04:00
ReinUsesLisp
565d922014
shader: Accelerate pipeline transitions and use dirty flags for shaders
2021-07-22 21:51:29 -04:00
ameerj
90ff800962
shader: Fix BFE s32 undefined check
...
Our unit tests were hitting this exception.
2021-07-22 21:51:29 -04:00
ReinUsesLisp
ecd481a0ca
vk_compute_pipeline: Fix index comparison oversight on compute texture buffers
2021-07-22 21:51:29 -04:00
ReinUsesLisp
1f54f1ff26
shader: Fix error checking in bitfieldExtract and implement bitfieldInsert folding
2021-07-22 21:51:29 -04:00
ReinUsesLisp
d835906b9f
vulkan_device: Require shaderClipDistance and shaderCullDistance features
2021-07-22 21:51:29 -04:00
ReinUsesLisp
1f47476089
vk_graphics_pipeline: Guard against non-tessellation pipelines using patches
2021-07-22 21:51:29 -04:00
ReinUsesLisp
e37ec2790d
shader: Fix storage type when reading patches on tess control
2021-07-22 21:51:29 -04:00
ReinUsesLisp
c8b0377a67
shader: Fix VMNMX selector B
2021-07-22 21:51:29 -04:00
Rodrigo Locatti
72b10edd15
shader: Fix bugs and build issues on GCC
2021-07-22 21:51:29 -04:00
ReinUsesLisp
fa439cb6df
shader: Fix render targets with null attachments
2021-07-22 21:51:29 -04:00
ReinUsesLisp
763adf56a6
shader: Increase the maximum number of storage buffers
...
Compute shaders spill uniform buffers on storage buffers, increasing the
expected number.
2021-07-22 21:51:29 -04:00
ReinUsesLisp
1d861a6e90
shader: Remove identity removal pass for better build times
2021-07-22 21:51:29 -04:00
ReinUsesLisp
4eec191801
shader: Add more strict validation the pass
2021-07-22 21:51:29 -04:00
ReinUsesLisp
21d50bd9bd
shader: Fix forward referencing identity instructions when inserting phi
2021-07-22 21:51:29 -04:00
ReinUsesLisp
3c80ebf1e2
shader: Remove invalidated blocks in dead code elimination pass
2021-07-22 21:51:29 -04:00
ReinUsesLisp
12d7acf707
shader: Add missing UndoUse case for GetSparseFromOp
2021-07-22 21:51:29 -04:00
ReinUsesLisp
9b691a28d8
shader: Require dual source blending
2021-07-22 21:51:29 -04:00
ReinUsesLisp
04e042d3b3
shader: Simplify code in opcodes.h to fix Intellisense
...
Avoid using std::array to fix Intellisense not properly compiling this
code and disabling itself on all files that include it.
While we are at it, change the code to use u8 instead of size_t for the
number of instructions in an opcode.
2021-07-22 21:51:29 -04:00
ReinUsesLisp
052317e748
shader: Implement indexed textures
2021-07-22 21:51:28 -04:00
ameerj
3089fb1e2a
shader: Refactor atomic_operations_global_memory
2021-07-22 21:51:28 -04:00
ameerj
8202ace3e9
shader: add missing include guard in half_floating_point_helper.h
2021-07-22 21:51:28 -04:00
ReinUsesLisp
172942911a
shader: Fix gcc warnings
2021-07-22 21:51:28 -04:00
ReinUsesLisp
16a869571e
shader: Inline common Value getters
2021-07-22 21:51:28 -04:00
ReinUsesLisp
9f5c43dd53
shader: Intrusively store in a block if it's sealed or not
2021-07-22 21:51:28 -04:00
ReinUsesLisp
fecb87ebc8
cmake: Link to common in shader_recompiler
2021-07-22 21:51:28 -04:00
ReinUsesLisp
3c1229a7c5
shader: Improve goto removal algorithm complexity
...
Find sibling node containing a nephew searching from the nephew itself
instead of the uncle.
2021-07-22 21:51:28 -04:00
ReinUsesLisp
1a44a5cafa
shader: Use memset to reset instruction arguments
2021-07-22 21:51:28 -04:00
ReinUsesLisp
9edc2bd70f
shader: Inline common Value functions into the header
2021-07-22 21:51:28 -04:00
ReinUsesLisp
6236b611cf
shader: Move microinstruction header to the value header
2021-07-22 21:51:28 -04:00
ReinUsesLisp
7769517fc0
shader: Move siblings check to a separate function and comment them out
2021-07-22 21:51:28 -04:00
ReinUsesLisp
7bf134b294
shader: Intrusively store register values in block for SSA pass
2021-07-22 21:51:28 -04:00
ReinUsesLisp
3a39124359
shader: Inline common Opcode and Inst functions
2021-07-22 21:51:28 -04:00
ReinUsesLisp
b6bd6a5bce
shader: Inline common IR::Block methods
2021-07-22 21:51:28 -04:00
ReinUsesLisp
8d1327bf78
shader: Use a small_vector for phi blocks
2021-07-22 21:51:28 -04:00
ReinUsesLisp
c44139cda0
shader: Calculate number of arguments in an opcode at compile time
2021-07-22 21:51:28 -04:00
ReinUsesLisp
7066f9ef7b
shader: Implement D3D samplers
2021-07-22 21:51:28 -04:00
ReinUsesLisp
5c187201ec
shader: Add constant propagation for arithmetic right shifts
2021-07-22 21:51:28 -04:00
ReinUsesLisp
56aae7efcf
shader: Simplify code for local memory
2021-07-22 21:51:28 -04:00
ReinUsesLisp
e54171c1a9
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
eb7a932952
spirv: Fix ViewportMask
2021-07-22 21:51:28 -04:00
ameerj
688c89590c
spirv: Replace Constant/ConstantComposite with Const helper
2021-07-22 21:51:28 -04:00
FernandoS27
4a97dd4483
shader: Address feedback
2021-07-22 21:51:28 -04:00
FernandoS27
b85c9d8e84
shader: Implement F2F (Imm)
2021-07-22 21:51:28 -04:00
FernandoS27
fbb642f433
shader: Implement IADD3.CC/.X
2021-07-22 21:51:28 -04:00
FernandoS27
f1a3f449d6
shader: Address feedback
2021-07-22 21:51:28 -04:00
FernandoS27
2f01c7fb62
shader: Add coarse derivatives
2021-07-22 21:51:28 -04:00
FernandoS27
b1e325f317
shader: Implement fine derivates constant propagation
2021-07-22 21:51:28 -04:00
FernandoS27
6c60109967
shader: Implement SR_Y_DIRECTION
2021-07-22 21:51:28 -04:00
ReinUsesLisp
99e6cd3916
shader: Fix Phi node types
2021-07-22 21:51:28 -04:00
ReinUsesLisp
6d540c6f2e
shader: Fix memory barriers
2021-07-22 21:51:28 -04:00
ReinUsesLisp
0623915e2e
spirv: Fix implicit lod type
2021-07-22 21:51:28 -04:00
ReinUsesLisp
b597da7f2a
spirv: Use explicit lods outside of fragment shaders
2021-07-22 21:51:28 -04:00
ReinUsesLisp
f771d1fc52
spirv: Use ConstOffset instead of Offset when possible
2021-07-22 21:51:28 -04:00
ameerj
bfdb38404c
shader: Implement BFE and BFI CC
...
Fix two bugs in BFI.
2021-07-22 21:51:28 -04:00
ReinUsesLisp
ad1507b4a5
shader: Implement SampleMask
2021-07-22 21:51:28 -04:00
ReinUsesLisp
cc96469019
shader: Implement PIXLD.MY_INDEX
2021-07-22 21:51:28 -04:00
ReinUsesLisp
ca85ce444f
spirv: Bitcast non-F32 output attributes to their type before store
2021-07-22 21:51:28 -04:00
ReinUsesLisp
b6b541e36a
spirv: Implement ViewportMask with NV_viewport_array2
2021-07-22 21:51:28 -04:00
ReinUsesLisp
f65aa540d8
spirv: Bitcast non-F32 attributes to F32
2021-07-22 21:51:27 -04:00
ReinUsesLisp
10c96c7484
shader: Implement PrimitiveId
2021-07-22 21:51:27 -04:00
ReinUsesLisp
38908d0f7e
shader: Implement tessellation shaders, polygon mode and invocation id
2021-07-22 21:51:27 -04:00
ReinUsesLisp
0f99fdc0eb
shader: Mark atomic instructions as writes
2021-07-22 21:51:27 -04:00
lat9nq
212f5c8050
vk_pipeline_cache: Silence GCC warnings
...
Silences `-Werror=missing-field-initializers` due to missing
initializers.
2021-07-22 21:51:27 -04:00
ReinUsesLisp
03c16b085a
spirv: Implement image buffers
2021-07-22 21:51:27 -04:00
ReinUsesLisp
bba876f192
spirv: Implement Layer stores
2021-07-22 21:51:27 -04:00
FernandoS27
f930bda4fb
spirv: Fix alpha test
2021-07-22 21:51:27 -04:00
ameerj
9502835689
spirv: Fix non-atomic 64-bit store
2021-07-22 21:51:27 -04:00
ameerj
542dc35aac
spirv: Implement alpha test
2021-07-22 21:51:27 -04:00
ReinUsesLisp
e59971ea1b
shader: Implement transform feedbacks and define file format
2021-07-22 21:51:27 -04:00
ReinUsesLisp
4a6c299e3f
shader: Implement early Z tests
2021-07-22 21:51:27 -04:00
ReinUsesLisp
9f5ab82de2
shader: Document and relax cache control on surface instructions
2021-07-22 21:51:27 -04:00
ReinUsesLisp
c84c2ab88c
spirv: Rework storage buffers and shader memory
2021-07-22 21:51:27 -04:00
ReinUsesLisp
a4f27e897c
shader: Fix fixed pipeline point size on geometry shaders
2021-07-22 21:51:27 -04:00
ReinUsesLisp
deba5c7666
shader: Add constant propagation for *&^| binary operations
2021-07-22 21:51:27 -04:00
ReinUsesLisp
4b32692423
shader: Implement geometry shaders
2021-07-22 21:51:27 -04:00
ReinUsesLisp
40948b18ac
shader: Implement OUT
2021-07-22 21:51:27 -04:00
lat9nq
f70707d435
internal_stage_buffer_entry_read: Remove pragma optimize off
2021-07-22 21:51:27 -04:00
ReinUsesLisp
8ebc7b90a0
shader: Stub SR_INVOCATION_INFO
2021-07-22 21:51:27 -04:00
ReinUsesLisp
c6b81943a9
shader: Stub ISBERD
2021-07-22 21:51:27 -04:00
ReinUsesLisp
211fc6331d
shader: Fix CC in I2I
2021-07-22 21:51:27 -04:00
ReinUsesLisp
1cae8e9a10
spirv: Define StorageImageWriteWithoutFormat capability when used
2021-07-22 21:51:27 -04:00
ReinUsesLisp
7c867c2d7c
pipeline_helper: Simplify descriptor objects initialization
2021-07-22 21:51:27 -04:00
ReinUsesLisp
c7efa5ead4
shader: Simplify FLO and throw on CC
2021-07-22 21:51:27 -04:00
ReinUsesLisp
31835567f2
shader: Mark blocks with no end branch as unreachable
2021-07-22 21:51:27 -04:00
ReinUsesLisp
4678dc7246
shader: Implement LOP CC
2021-07-22 21:51:27 -04:00
ReinUsesLisp
879fb08101
shader: Implement SR_THREAD_KILL
2021-07-22 21:51:27 -04:00
ReinUsesLisp
bf784e1497
shader: Apply sign bit in FCMP (imm)
2021-07-22 21:51:27 -04:00
ameerj
62c3bef607
shader: Implement ATOM/S and RED
2021-07-22 21:51:27 -04:00
ReinUsesLisp
619f68db8e
nsight_aftermath_tracker: Report used shaders to Nsight Aftermath
2021-07-22 21:51:27 -04:00
ReinUsesLisp
ece2e64825
spirv: Move phi node patching to a separate function
2021-07-22 21:51:27 -04:00
ReinUsesLisp
480ce24b7e
spirv: Guard against typeless image reads on unsupported devices
2021-07-22 21:51:27 -04:00
ReinUsesLisp
8ec58e16b2
shader: Move LaneId to the warp emission file and fix AMD
2021-07-22 21:51:27 -04:00
ReinUsesLisp
7f8b92cc2d
vk_rasterizer: Request outside render pass execution context for compute
2021-07-22 21:51:27 -04:00
ReinUsesLisp
9a49eed4d6
pipeline_helper: Add missing [[maybe_unused]]
2021-07-22 21:51:27 -04:00
ReinUsesLisp
1e5255de49
spirv: Fix forward declarations on phi nodes
2021-07-22 21:51:27 -04:00
ReinUsesLisp
a26f760eba
shader: Mark ImageWrite with side effects
2021-07-22 21:51:27 -04:00
FernandoS27
ee8beff168
shader: Implement CC for ISET, FSET, PSET, CSET, and DSET
...
Throw when other instructions are missing CC.
2021-07-22 21:51:27 -04:00
ReinUsesLisp
99cfd73ba7
shader: Remove outdated comment in F2I
2021-07-22 21:51:27 -04:00
ReinUsesLisp
5ab1ac4f29
shader: Implement SULD and SUST
2021-07-22 21:51:26 -04:00
ReinUsesLisp
577efc5f9f
shader: Fix Windows build issues
2021-07-22 21:51:26 -04:00
lat9nq
5b95114cd4
shader: Address feedback + clang format
2021-07-22 21:51:26 -04:00
lat9nq
a4e7a41e7f
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
157952f809
shader: Fix FCMP immediate variant
2021-07-22 21:51:26 -04:00
ReinUsesLisp
7f75818298
shader: Fix dangling labels
2021-07-22 21:51:26 -04:00
ReinUsesLisp
3e6cb6362d
shader: Interact texture buffers with buffer cache
2021-07-22 21:51:26 -04:00
ReinUsesLisp
d349f8ff61
shader: Fix F2I
2021-07-22 21:51:26 -04:00
ReinUsesLisp
d07e15fcf6
shader: Fix TextureGrad
2021-07-22 21:51:26 -04:00
ReinUsesLisp
96da029a74
shader: Implement texture buffers
2021-07-22 21:51:26 -04:00
FernandoS27
0ef887fa6f
shader: Address feedback
2021-07-22 21:51:26 -04:00
FernandoS27
e9cffe874f
shader: Implement indexed Position and ClipDistances
2021-07-22 21:51:26 -04:00
FernandoS27
1fe6a22cff
shader: Implement indexed attributes
2021-07-22 21:51:26 -04:00
FernandoS27
a7f5231caf
shader: Implement AL2P
2021-07-22 21:51:26 -04:00
FernandoS27
c63d79cf65
shader: Fix BRX tracking
2021-07-22 21:51:26 -04:00
ReinUsesLisp
459057f8d4
vk_pipeline_cache: Fix num of pipeline workers on weird platforms
2021-07-22 21:51:26 -04:00
ReinUsesLisp
a9ba4fea0c
shader: Move recursive SSA rewrite to the heap
2021-07-22 21:51:26 -04:00
FernandoS27
3fc7d20fce
shader: Fix ShadowCube declaration type, set number of pipeline threads based on hardware
2021-07-22 21:51:26 -04:00
ReinUsesLisp
64372edffb
shader: Fix splits on blocks using indirect branches
2021-07-22 21:51:26 -04:00
ReinUsesLisp
e2d1e21532
shader: Eliminate orphan blocks more efficiently
2021-07-22 21:51:26 -04:00
ReinUsesLisp
ba2130d5a5
shader: Add subgroup masks
2021-07-22 21:51:26 -04:00
ReinUsesLisp
b580c1e208
shader: Implement BAR and fix memory barriers
2021-07-22 21:51:26 -04:00
ReinUsesLisp
e9d7f63788
shader: Abstract breadth searches and use the abstraction
2021-07-22 21:51:26 -04:00