Commit Graph
175 Commits
Author SHA1 Message Date
ReinUsesLispandameerj 808ef97a08 shader: Move loop safety tests to code emission 2021-07-22 21:51:39 -04:00
ReinUsesLispandameerj 59fead3a47 spirv: Properly handle devices without int8 and int16 2021-07-22 21:51:38 -04:00
ReinUsesLispandameerj b5e78607ad spirv: Handle small storage buffer loads on devices with no support 2021-07-22 21:51:38 -04:00
ReinUsesLispandameerj 374eeda1a3 shader: Properly manage attributes not written from previous stages 2021-07-22 21:51:38 -04:00
ReinUsesLispandameerj 0ffea97e2e shader: Split profile and runtime info headers 2021-07-22 21:51:38 -04:00
ReinUsesLispandameerj 3d822faea1 spirv: Reduce log severity of mismatching denorm rules 2021-07-22 21:51:35 -04:00
ReinUsesLispandameerj 61cd7dd301 shader: Add logging 2021-07-22 21:51:35 -04:00
lat9nqandameerj 373f75d944 shader: Add shader loop safety check settings
Also add a setting for enable Nsight Aftermath.
2021-07-22 21:51:35 -04:00
ameerj d52bacf6f0 spirv/convert: Catch more signed operations oversights
The sign bit on integers of size < 32 was not properly preserved in casts
2021-07-22 21:51:35 -04:00
ReinUsesLispandameerj 8554a644df spirv/convert: Catch more broken signed operations on Nvidia OpenGL
BitCast U32 to S32 before converting to float on drivers with broken
signed operations.
2021-07-22 21:51:35 -04:00
ReinUsesLispandameerj 05d41fa9b7 shader: Add support for "negative" and unaligned offsets
"Negative" offsets don't exist. They are shown as such due to a bug in
nvdisasm.

Unaligned offsets have been proved to read the aligned offset. For
example, when reading an U32, if the offset is 6, the offset read will
be 4.
2021-07-22 21:51:34 -04:00
ReinUsesLispandameerj adc43297c5 spirv: Fix output generics with components 2021-07-22 21:51:34 -04:00
ReinUsesLispandameerj 916ca74324 opengl: Declare fragment outputs even if they are not used
Fixes Ori and the Blind Forest's menu on GLASM. For some reason
(probably high level optimizations) it is not sanitized on SPIR-V for
OpenGL. Vulkan is unaffected by this change.
2021-07-22 21:51:34 -04:00
ReinUsesLispandameerj d738ad4d0b spirv: Fix image and image buffer descriptor index usage 2021-07-22 21:51:34 -04:00
ReinUsesLispandameerj 9e7b6622c2 shader: Split profile and runtime information in separate structs 2021-07-22 21:51:33 -04:00
ReinUsesLispandameerj 9bb3e008c9 shader: Read branch conditions from an instruction
Fixes the identity removal pass.
2021-07-22 21:51:32 -04:00
ReinUsesLispandameerj ec6fc5fe78 glasm: Implement TEX and TEXS instructions
Remove lod clamp from texture instructions with lod, as this is not
needed (nor supported).
2021-07-22 21:51:31 -04:00
lat9nqandameerj f7a2340205 shader_recompiler: GCC fixes
Fixes members of unnamed union not being accessible, and one function
without a declaration.
2021-07-22 21:51:31 -04:00
ReinUsesLispandameerj 38e7b8c805 emit_spirv: Jump to loop body with local variable
Silence unused variable warning
2021-07-22 21:51:31 -04:00
ReinUsesLispandameerj ab5dbe7c29 emit_spirv: Add missing block in case 2021-07-22 21:51:31 -04:00
ReinUsesLispandameerj bf5e48ffe4 glasm: Initial implementation of phi nodes on GLASM 2021-07-22 21:51:31 -04:00
ReinUsesLispandameerj 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
ReinUsesLispandameerj c4fd6b55bc glasm: Implement shuffle and vote instructions on GLASM 2021-07-22 21:51:31 -04:00
ReinUsesLispandameerj b725db8709 shader: Fixup SPIR-V emit header namespaces 2021-07-22 21:51:30 -04:00
ReinUsesLispandameerj bed090807a Move SPIR-V emission functions to their own header 2021-07-22 21:51:30 -04:00
FernandoS27andameerj 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
ReinUsesLispandameerj 850b08a16c spirv: Be aware of NAN unaware drivers 2021-07-22 21:51:30 -04:00
ReinUsesLispandameerj fde47152d9 spirv: Add SSBO read fallbacks when no aliasing is available 2021-07-22 21:51:29 -04:00
ReinUsesLispandameerj fd913bceaf spirv: Add OpKill fallback to demote 2021-07-22 21:51:29 -04:00
ReinUsesLispandameerj d2a0f9d7ad spirv: Do not enable ShaderLayer
This is enabled by an extension instead of the capability.
2021-07-22 21:51:29 -04:00
ReinUsesLispandameerj 2b434b74af spirv: Enable DemoteToHelperInvocationEXT only when supported 2021-07-22 21:51:29 -04:00
ReinUsesLispandameerj cfd873275d spirv: Use OriginLowerLeft when requested 2021-07-22 21:51:29 -04:00
ReinUsesLispandameerj bafe9e35a9 spirv: Only add image operands mask when needed 2021-07-22 21:51:29 -04:00
ReinUsesLispandameerj 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
ReinUsesLispandameerj 4ead714910 spirv: Add int8 and int16 capabilities only when supported 2021-07-22 21:51:29 -04:00
ReinUsesLispandameerj 33bebc3412 spirv: Add integer clamping workarounds
Workaround more bugs on Nvidia's OpenGL SPIR-V compiler.
2021-07-22 21:51:29 -04:00
ReinUsesLispandameerj 7b03b97118 spirv: Implement int8 and int16 conversion fallbacks 2021-07-22 21:51:29 -04:00
ReinUsesLispandameerj 48a17298d7 spirv: Support OpenGL uniform buffers and change bindings 2021-07-22 21:51:29 -04:00
ReinUsesLispandameerj 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
FernandoS27andameerj b541f5e5e3 shader: Implement VertexA stage 2021-07-22 21:51:29 -04:00
ReinUsesLispandameerj 57464e3b72 shader: Fix storage type when reading patches on tess control 2021-07-22 21:51:29 -04:00
ReinUsesLispandameerj d10cf55353 shader: Implement indexed textures 2021-07-22 21:51:28 -04:00
ReinUsesLispandameerj 050e81500c shader: Move microinstruction header to the value header 2021-07-22 21:51:28 -04:00
ReinUsesLispandameerj 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
ReinUsesLispandameerj 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
FernandoS27andameerj f69d0b91ff shader: Address feedback 2021-07-22 21:51:28 -04:00
FernandoS27andameerj 080857b60e shader: Add coarse derivatives 2021-07-22 21:51:28 -04:00
FernandoS27andameerj 04c459fc8d shader: Implement fine derivates constant propagation 2021-07-22 21:51:28 -04:00