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
562af30181
shader: Fix VertexA Shaders.
2021-07-22 21:51:34 -04:00
79f2fe1a39
glasm: Use ARB_derivative_control conditionally
2021-07-22 21:51:34 -04:00
4a2361a1e2
buffer_cache: Reduce uniform buffer size from shader usage
...
Increases performance significantly on certain titles.
2021-07-22 21:51:34 -04:00
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
a7e9756671
buffer_cache: Mark uniform buffers as dirty if any enable bit changes
2021-07-22 21:51:34 -04:00
b7764c3a79
shader: Handle host exceptions
2021-07-22 21:51:34 -04:00
3b595fe8b2
glasm: Prepare XFB from state instead of global registers
2021-07-22 21:51:33 -04:00
adb591a757
glasm: Use storage buffers instead of global memory when possible
2021-07-22 21:51:33 -04:00
a41b2ed391
gl_shader_cache: Add disk shader cache
2021-07-22 21:51:33 -04:00
eacf18cce9
gl_shader_cache: Rename Program abstractions into Pipeline
2021-07-22 21:51:33 -04:00
4017928213
gl_shader_cache: Do not flip tessellation on OpenGL
2021-07-22 21:51:33 -04:00
80884e3270
gl_graphics_program: Fix texture buffer bindings
2021-07-22 21:51:33 -04:00
1bccb43cbe
gl_shader_cache: Conditionally use viewport mask
2021-07-22 21:51:33 -04:00
c31521512f
gl_shader_cache,glasm: Conditionally use typeless image reads extension
2021-07-22 21:51:33 -04:00
df406246d9
gl_shader_cache: Improve GLASM error print logic
2021-07-22 21:51:33 -04:00
84feabac88
glasm: Implement forced early Z
2021-07-22 21:51:33 -04:00
6bc54e12a0
glasm: Set transform feedback state
2021-07-22 21:51:33 -04:00
c07cc9d6a5
gl_shader_cache: Pass shader runtime information
2021-07-22 21:51:33 -04:00
9e7b6622c2
shader: Split profile and runtime information in separate structs
2021-07-22 21:51:33 -04:00
54decced92
gl_shader_manager: Zero initialize current assembly programs
2021-07-22 21:51:32 -04:00
c0e4074721
gl_shader_manager: Remove unintentionally committed #pragma
2021-07-22 21:51:32 -04:00
690b1841e6
renderer_opengl: State track compute assembly programs
2021-07-22 21:51:32 -04:00
c5ca4fe451
renderer_opengl: State track assembly programs
2021-07-22 21:51:32 -04:00
85fc7e584e
HACK: Bind stages before and after bindings
...
Works around a bug where program parameters are only applied to the
current stage, and this one wasn't bound at the moment.
Affects all SSBO usages on GLASM.
2021-07-22 21:51:32 -04:00
8b7d5912d6
glasm: Support textures used in more than one stage
2021-07-22 21:51:32 -04:00
258f2dec1b
opengl: Initial (broken) support to GLASM shaders
2021-07-22 21:51:31 -04:00
dc02cb92e4
gl_rasterizer: Flush L2 caches before glFlush on GLASM
2021-07-22 21:51:30 -04:00
2c81ad8311
glasm: Initial GLASM compute implementation for testing
2021-07-22 21:51:30 -04:00
bfa47539f6
gl_shader_cache: Remove code unintentionally committed
2021-07-22 21:51:30 -04:00
bed090807a
Move SPIR-V emission functions to their own header
2021-07-22 21:51:30 -04:00
d621e96d0d
shader: Initial OpenGL implementation
2021-07-22 21:51:30 -04:00
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