e1ed218b41
renderer_opengl: Use ARB_separate_shader_objects
...
Ensures that states set for a particular stage are not attached to other
stages which may not need them.
2021-07-22 21:51:40 -04:00
94af0a00f6
glsl: Clamp shared mem size to GL_MAX_COMPUTE_SHARED_MEMORY_SIZE
2021-07-22 21:51:40 -04:00
8c166c68d4
gl_shader_cache: Properly implement asynchronous shaders
2021-07-22 21:51:40 -04:00
41493fbe89
renderers: Fix clang formatting
2021-07-22 21:51:40 -04:00
8390286a89
renderers: Disable async shader compilation
...
The current implementation is prone to causing graphical issues. Disable until a better solution is implemented.
2021-07-22 21:51:40 -04:00
11f04f1022
shader: Ignore global memory ops on devices lacking int64 support
2021-07-22 21:51:40 -04:00
dbee32d302
gl_shader_cache: Fixes for async shaders
2021-07-22 21:51:40 -04:00
8722668b3c
emit_spirv: Workaround VK_KHR_shader_float_controls on fp16 Nvidia
...
Fix regression on Fire Emblem: Three Houses when using native fp16.
2021-07-22 21:51:40 -04:00
fba6bd92d4
vk_rasterizer: Workaround bug in VK_EXT_vertex_input_dynamic_state
...
Workaround potential bug on Nvidia's driver where only updating high
attributes leaves low attributes out dated.
2021-07-22 21:51:39 -04:00
5643a909bc
shader: Fix disabled and unwritten attributes and varyings
2021-07-22 21:51:39 -04:00
fb9b1787f8
video_core: Enable GL SPIR-V shaders
2021-07-22 21:51:39 -04:00
1152d66ddd
general: Add setting shader_backend
...
GLASM is getting good enough that we can move it out of advanced
graphics settings. This removes the setting `use_assembly_shaders`,
opting for a enum class `shader_backend`. This comes with the benefits
that it is extensible for additional shader backends besides GLSL and
GLASM, and this will work better with a QComboBox.
Qt removes the related assembly shader setting from the Advanced
Graphics section and places it as a new QComboBox in the API Settings
group. This will replace the Vulkan device selector when OpenGL is
selected.
Additionally, mark all of the custom anisotropic filtering settings as
"WILL BREAK THINGS", as that is the case with a select few games.
2021-07-22 21:51:39 -04:00
8a3427a4c8
glasm: Add passthrough geometry shader support
2021-07-22 21:51:39 -04:00
7dafa96ab5
shader: Rework varyings and implement passthrough geometry shaders
...
Put all varyings into a single std::bitset with helpers to access it.
Implement passthrough geometry shaders using host's.
2021-07-22 21:51:39 -04:00
395bed3a0a
shader: Unify shader stage types
2021-07-22 21:51:39 -04:00
fb166b5ff4
shader: Emulate 64-bit integers when not supported
...
Useful for mobile and Intel Xe devices.
2021-07-22 21:51:39 -04:00
3877918e96
gl_graphics_pipeline: Fix assembly shaders check for transform feedbacks
2021-07-22 21:51:39 -04:00
9bd0531384
gl_graphics_pipeline: Inline hash and operator== key functions
2021-07-22 21:51:39 -04:00
f5db8c7440
gl_shader_cache: Check previous pipeline before checking hash map
...
Port optimization from Vulkan.
2021-07-22 21:51:39 -04:00
218dedca1f
gl_graphics_pipeline: Port optimizations from Vulkan pipelines
2021-07-22 21:51:39 -04:00
fcff19e0fa
shaders: Allow shader notify when async shaders is disabled
2021-07-22 21:51:38 -04:00
374eeda1a3
shader: Properly manage attributes not written from previous stages
2021-07-22 21:51:38 -04:00
0ffea97e2e
shader: Split profile and runtime info headers
2021-07-22 21:51:38 -04:00
cbbca26d18
shader: Add support for native 16-bit floats
2021-07-22 21:51:38 -04:00
376aa94819
shader: Rename maxwell/program.h to translate_program.h
2021-07-22 21:51:38 -04:00
d36f667bc0
glsl: Address rest of feedback
2021-07-22 21:51:38 -04:00
3b339fbbf6
glsl: Conditionally use fine/coarse derivatives based on device support
2021-07-22 21:51:38 -04:00
6eea88d614
glsl: Cleanup/Address feedback
2021-07-22 21:51:38 -04:00
74f683787e
gl_shader_cache: Implement async shaders
2021-07-22 21:51:38 -04:00
5e7b2b9661
glsl: Add stubs for sparse queries and variable aoffi when not supported
2021-07-22 21:51:38 -04:00
ff3de0fb6b
gl_shader_cache: Remove const from pipeline source arguments
2021-07-22 21:51:38 -04:00
413eb6983f
gl_shader_cache: Move OGL shader compilation to the respective Pipeline constructor
2021-07-22 21:51:38 -04:00
e81c73a874
glsl: Address more feedback. Implement indexed texture reads
2021-07-22 21:51:38 -04:00
6650c4799d
gl_rasterizer: Add texture fetch barrier for fragments
...
Fixes flicker seen in XC2
2021-07-22 21:51:37 -04:00
8bb8bbf4ae
glsl: Implement fswzadd
...
and wip nv thread shuffle impl
2021-07-22 21:51:37 -04:00
970fc39d98
glsl: Rebase fixes
2021-07-22 21:51:37 -04:00
747b8556a4
glsl: Use textureGrad fallback when EXT_texture_shadow_lod is unsupported
2021-07-22 21:51:37 -04:00
6577a63d36
glsl: skip gl_ViewportIndex write if device does not support it
2021-07-22 21:51:37 -04:00
f4799e8fa1
glsl: Implement transform feedback
2021-07-22 21:51:37 -04:00
e35ffbbeb0
glsl: Implement VOTE for subgroup size potentially larger
2021-07-22 21:51:36 -04:00
3d086e6130
glsl: Implement some attribute getters and setters
2021-07-22 21:51:36 -04:00
bd24fa9713
glsl: Query GL Device for FP16 extension support
2021-07-22 21:51:36 -04:00
53667ddd4e
glsl: Fixup build issues
2021-07-22 21:51:36 -04:00
eaff1030de
glsl: Initial backend
2021-07-22 21:51:35 -04:00
cb78a1b494
shader: Reorder shader cache directories
2021-07-22 21:51:35 -04:00
cd8427367e
gl_buffer_cache: Use unorm internal formats for snorm texture buffer views
...
Fixes black textures in UE4 games
2021-07-22 21:51:35 -04:00
60a96c49e5
buffer_cache: Fix copy based uniform bindings tracking
2021-07-22 21:51:35 -04:00
7eaa74ad23
gl_texture_cache: Create image storage views
...
Fixes SULD.D tests.
2021-07-22 21:51:35 -04:00
b1ed64ac18
gl_shader_util: Move shader utility code to a separate file
2021-07-22 21:51:35 -04:00
12fe7210d2
gl_shader_cache: Store workers in shader cache object
2021-07-22 21:51:35 -04:00