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
01e18581b9
vk_pipeline_cache: Enable int8 and int16 types on Vulkan
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
dc02cb92e4
gl_rasterizer: Flush L2 caches before glFlush on GLASM
2021-07-22 21:51:30 -04:00
ReinUsesLisp
2c81ad8311
glasm: Initial GLASM compute implementation for testing
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
36f1586267
vk_scheduler: Use locks instead of SPSC a queue
...
This tries to fix a data race where we'd wait forever for the GPU.
2021-07-22 21:51:30 -04:00
ReinUsesLisp
56c47951c5
vk_query_cache: Wait before reading queries
2021-07-22 21:51:30 -04:00
ReinUsesLisp
a515036604
vk_master_semaphore: Use fetch_add to increase master semaphore tick
2021-07-22 21:51:30 -04:00
ReinUsesLisp
b10cf64c48
glasm: Add GLASM backend infrastructure
2021-07-22 21:51:30 -04:00
ameerj
09dc23f971
shader: ISET.X implementation
2021-07-22 21:51:30 -04:00
ReinUsesLisp
bfa47539f6
gl_shader_cache: Remove code unintentionally committed
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
FernandoS27
153a77efee
shader: Stub SR_AFFINITY
2021-07-22 21:51:30 -04:00
ameerj
7ecc6de56a
shader: Implement Int32 SUATOM/SURED
2021-07-22 21:51:30 -04:00
ReinUsesLisp
d621e96d0d
shader: Initial OpenGL implementation
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
ReinUsesLisp
a46d91b1ef
shader: Add OpenGL shader profile options
2021-07-22 21:51:29 -04:00
ReinUsesLisp
028f0033bd
shader: Remove shader util
2021-07-22 21:51:29 -04:00
FernandoS27
c49d56c931
shader: Address feedback
2021-07-22 21:51:29 -04:00
FernandoS27
b541f5e5e3
shader: Implement VertexA stage
2021-07-22 21:51:29 -04:00
FernandoS27
da936d6ad8
shader: Implement delegation of Exit to dispatcher on CFG
2021-07-22 21:51:29 -04:00
ReinUsesLisp
f4b82b8dd7
vk_graphics_pipeline: Fix texture buffer descriptors
2021-07-22 21:51:29 -04:00
ameerj
fb14820c86
shader: Fix IADD3.CC
2021-07-22 21:51:29 -04:00
ReinUsesLisp
53acdda772
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
c5425b38c1
vk_compute_pass: Fix -Wshadow warning
2021-07-22 21:51:29 -04:00
ReinUsesLisp
025b20f96a
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
ac8835659e
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
2f3c3dfc10
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
5ed871398b
vk_graphics_pipeline: Generate specialized pipeline config functions and improve code
2021-07-22 21:51:29 -04:00
ReinUsesLisp
f4ace63957
shader: Accelerate pipeline transitions and use dirty flags for shaders
2021-07-22 21:51:29 -04:00
ameerj
20e86fd615
shader: Fix BFE s32 undefined check
...
Our unit tests were hitting this exception.
2021-07-22 21:51:29 -04:00
ReinUsesLisp
8fda599a31
vk_compute_pipeline: Fix index comparison oversight on compute texture buffers
2021-07-22 21:51:29 -04:00
ReinUsesLisp
50eb03382e
shader: Fix error checking in bitfieldExtract and implement bitfieldInsert folding
2021-07-22 21:51:29 -04:00
ReinUsesLisp
0c0ee9d897
vulkan_device: Require shaderClipDistance and shaderCullDistance features
2021-07-22 21:51:29 -04:00
ReinUsesLisp
5b1b06f11e
vk_graphics_pipeline: Guard against non-tessellation pipelines using patches
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
d2b54c6e42
shader: Fix VMNMX selector B
2021-07-22 21:51:29 -04:00
Rodrigo Locatti
2dc86372c7
shader: Fix bugs and build issues on GCC
2021-07-22 21:51:29 -04:00
ReinUsesLisp
7a1f296cda
shader: Fix render targets with null attachments
2021-07-22 21:51:29 -04:00
ReinUsesLisp
155be4a8d3
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
fe25f42403
shader: Remove identity removal pass for better build times
2021-07-22 21:51:29 -04:00
ReinUsesLisp
0c7230a606
shader: Add more strict validation the pass
2021-07-22 21:51:29 -04:00
ReinUsesLisp
25949b864c
shader: Fix forward referencing identity instructions when inserting phi
2021-07-22 21:51:29 -04:00
ReinUsesLisp
92a01984e6
shader: Remove invalidated blocks in dead code elimination pass
2021-07-22 21:51:29 -04:00
ReinUsesLisp
aece958c2b
shader: Add missing UndoUse case for GetSparseFromOp
2021-07-22 21:51:29 -04:00
ReinUsesLisp
0ace34575c
shader: Require dual source blending
2021-07-22 21:51:29 -04:00
ReinUsesLisp
21e3382830
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
d10cf55353
shader: Implement indexed textures
2021-07-22 21:51:28 -04:00
ameerj
7a9dc78398
shader: Refactor atomic_operations_global_memory
2021-07-22 21:51:28 -04:00
ameerj
427951d6fe
shader: add missing include guard in half_floating_point_helper.h
2021-07-22 21:51:28 -04:00
ReinUsesLisp
c8f9772d65
shader: Fix gcc warnings
2021-07-22 21:51:28 -04:00
ReinUsesLisp
75dee55486
shader: Inline common Value getters
2021-07-22 21:51:28 -04:00
ReinUsesLisp
23182fa59c
shader: Intrusively store in a block if it's sealed or not
2021-07-22 21:51:28 -04:00
ReinUsesLisp
eed6da55b8
cmake: Link to common in shader_recompiler
2021-07-22 21:51:28 -04:00
ReinUsesLisp
cc0fcd1b8d
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
f66851e376
shader: Use memset to reset instruction arguments
2021-07-22 21:51:28 -04:00
ReinUsesLisp
c84bbd9e44
shader: Inline common Value functions into the header
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
e4d1122082
shader: Move siblings check to a separate function and comment them out
2021-07-22 21:51:28 -04:00
ReinUsesLisp
4209828646
shader: Intrusively store register values in block for SSA pass
2021-07-22 21:51:28 -04:00
ReinUsesLisp
6944cabb89
shader: Inline common Opcode and Inst functions
2021-07-22 21:51:28 -04:00
ReinUsesLisp
4bbe530337
shader: Inline common IR::Block methods
2021-07-22 21:51:28 -04:00
ReinUsesLisp
24cc298660
shader: Use a small_vector for phi blocks
2021-07-22 21:51:28 -04:00
ReinUsesLisp
79c2e43fcd
shader: Calculate number of arguments in an opcode at compile time
2021-07-22 21:51:28 -04:00
ReinUsesLisp
dd860b684c
shader: Implement D3D samplers
2021-07-22 21:51:28 -04:00
ReinUsesLisp
a8d46a5eae
shader: Add constant propagation for arithmetic right shifts
2021-07-22 21:51:28 -04:00
ReinUsesLisp
469f8bb857
shader: Simplify code for local memory
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
2999028976
shader: Address feedback
2021-07-22 21:51:28 -04:00
FernandoS27
881b33da3b
shader: Implement F2F (Imm)
2021-07-22 21:51:28 -04:00
FernandoS27
21a878237b
shader: Implement IADD3.CC/.X
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
50f8007172
shader: Fix Phi node types
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
34519d3fc6
shader: Mark atomic instructions as writes
2021-07-22 21:51:27 -04:00
lat9nq
7ae3ea6bee
vk_pipeline_cache: Silence GCC warnings
...
Silences `-Werror=missing-field-initializers` due to missing
initializers.
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
09165ae189
shader: Document and relax cache control on surface instructions
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
2597cee85b
shader: Add constant propagation for *&^| binary operations
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
lat9nq
dd3432d357
internal_stage_buffer_entry_read: Remove pragma optimize off
2021-07-22 21:51:27 -04:00
ReinUsesLisp
4b0172f6de
shader: Stub SR_INVOCATION_INFO
2021-07-22 21:51:27 -04:00
ReinUsesLisp
f712084147
shader: Stub ISBERD
2021-07-22 21:51:27 -04:00
ReinUsesLisp
2516829e4c
shader: Fix CC in I2I
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
a33014022e
pipeline_helper: Simplify descriptor objects initialization
2021-07-22 21:51:27 -04:00
ReinUsesLisp
415c7e46ed
shader: Simplify FLO and throw on CC
2021-07-22 21:51:27 -04:00
ReinUsesLisp
dfd5341d71
shader: Mark blocks with no end branch as unreachable
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
ReinUsesLisp
c9337a4ae4
shader: Apply sign bit in FCMP (imm)
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
479ca00071
nsight_aftermath_tracker: Report used shaders to Nsight Aftermath
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