ReinUsesLisp
ffdaa42529
glasm: Declare NV_shader_thread_group when needed
2021-07-22 21:51:31 -04:00
ReinUsesLisp
f132d214a1
vk_update_descriptor: Properly initialize payload on the update descriptor queue
2021-07-22 21:51:31 -04:00
ReinUsesLisp
03f6d424ce
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
8a556b49cf
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
8331e533f4
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
d9a11b2388
glasm: Enable unintentionally disabled register aliasing on GLASM
2021-07-22 21:51:31 -04:00
ReinUsesLisp
3e7dbc81f5
glasm: Review all GLASM insts to be aware of register aliasing
2021-07-22 21:51:31 -04:00
ReinUsesLisp
7273fcab95
glasm: Implement shuffle and vote instructions on GLASM
2021-07-22 21:51:31 -04:00
ReinUsesLisp
3e0e8c952d
glasm: Add MUFU instructions to GLASM
2021-07-22 21:51:31 -04:00
ReinUsesLisp
8a77a1426b
glasm: Implement IAbs64 and INeg64 on GLASM
2021-07-22 21:51:31 -04:00
ReinUsesLisp
cef625a9b2
shader: Add floating-point rounding to I2F
2021-07-22 21:51:31 -04:00
ReinUsesLisp
00a7d4add9
glasm: Properly clamp Fp64 on GLASM
2021-07-22 21:51:31 -04:00
ReinUsesLisp
cfff5bad59
glasm: Fix register allocation when moving immediate on GLASM
2021-07-22 21:51:31 -04:00
ReinUsesLisp
c5055cade9
glasm: Implement SelectU64 on GLASM
2021-07-22 21:51:31 -04:00
ReinUsesLisp
56b7f92b56
glasm: Fix clamps so the min value has priority on NAN on GLASM
2021-07-22 21:51:31 -04:00
ReinUsesLisp
b5b5006016
glasm: Fix moving U64 immediates to registers in GLASM
2021-07-22 21:51:31 -04:00
ameerj
55801889e1
glasm: Implement storage atomic ops
2021-07-22 21:51:31 -04:00
ReinUsesLisp
cbac486530
glasm: Add conversion instructions to GLASM
2021-07-22 21:51:31 -04:00
ReinUsesLisp
db3a10b384
glasm: Add fp min/max insts and fix store for fp64 on GLASM
2021-07-22 21:51:31 -04:00
ReinUsesLisp
763b4a8b16
glasm: Add logical instructions on GLASM
2021-07-22 21:51:31 -04:00
ReinUsesLisp
1f320a9d79
glasm: Remove duplicated Fp64 pack instructions on GLASM
2021-07-22 21:51:30 -04:00
ReinUsesLisp
06bd9acf07
glasm: Remove unnecesary new white space on Clamp GLASM
2021-07-22 21:51:30 -04:00
ReinUsesLisp
45be6d11cc
glasm: Add floating-point comparisons on GLASM
2021-07-22 21:51:30 -04:00
ameerj
fd6393cb14
emit_glasm: Implement more integer alu ops
2021-07-22 21:51:30 -04:00
ameerj
c13b6d8f86
glasm: Reimplement bitwise ops and BFI/BFE
2021-07-22 21:51:30 -04:00
ReinUsesLisp
fc009ca296
glasm: Initial GLASM fp64 support
2021-07-22 21:51:30 -04:00
ReinUsesLisp
8de3f88656
glasm: Implement GLASM fp16 packing and move bitwise insns
2021-07-22 21:51:30 -04:00
ReinUsesLisp
de15d41257
glasm: Remove unused functions left from rebase
2021-07-22 21:51:30 -04:00
ReinUsesLisp
7101c374c7
glasm: Specify namespace when using FormatTo
2021-07-22 21:51:30 -04:00
ReinUsesLisp
8d20355a93
glasm: Implement more GLASM composite instructions
2021-07-22 21:51:30 -04:00
ReinUsesLisp
d5c0c34383
vk_pipeline_cache: Enable int8 and int16 types on Vulkan
2021-07-22 21:51:30 -04:00
ReinUsesLisp
04ed27a997
glasm: Make GLASM aware of types
2021-07-22 21:51:30 -04:00
ameerj
94ee083286
glasm: Use CMP.S for Select32
...
also fixes ADD and SUB to use U modifier
2021-07-22 21:51:30 -04:00
ameerj
b27f30fa2e
glasm: Implement more logical ops
2021-07-22 21:51:30 -04:00
ameerj
779ff6918b
glasm: Implement BFI, BFE
...
Along with implementations of common instructions along the way
2021-07-22 21:51:30 -04:00
ReinUsesLisp
9d7312e780
glasm: Use BitField instead of C bitfields
2021-07-22 21:51:30 -04:00
ReinUsesLisp
fdd87ffdb7
glasm: Remove unused argument in identity instructions on GLASM
2021-07-22 21:51:30 -04:00
ReinUsesLisp
33a769ea26
gl_rasterizer: Flush L2 caches before glFlush on GLASM
2021-07-22 21:51:30 -04:00
ReinUsesLisp
826796b51f
glasm: Initial GLASM compute implementation for testing
2021-07-22 21:51:30 -04:00
ReinUsesLisp
6c0a696179
glasm: Implement basic GLASM instructions
2021-07-22 21:51:30 -04:00
ReinUsesLisp
03f17ebc43
glasm: Changes to GLASM register allocator and emit context
2021-07-22 21:51:30 -04:00
ReinUsesLisp
99ae172ef2
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
3fca53bce8
vk_query_cache: Wait before reading queries
2021-07-22 21:51:30 -04:00
ReinUsesLisp
dbe29b8bb6
vk_master_semaphore: Use fetch_add to increase master semaphore tick
2021-07-22 21:51:30 -04:00
ReinUsesLisp
d9b9c10f32
glasm: Add GLASM backend infrastructure
2021-07-22 21:51:30 -04:00
ameerj
a739b6933e
shader: ISET.X implementation
2021-07-22 21:51:30 -04:00
ReinUsesLisp
947a36e79e
gl_shader_cache: Remove code unintentionally committed
2021-07-22 21:51:30 -04:00
ReinUsesLisp
75adb54e79
shader: Fixup SPIR-V emit header namespaces
2021-07-22 21:51:30 -04:00
ReinUsesLisp
055db41f19
Move SPIR-V emission functions to their own header
2021-07-22 21:51:30 -04:00
FernandoS27
007a11014c
shader: Optimize NVN Fallthrough
2021-07-22 21:51:30 -04:00
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