Liam
a41e57d968
renderer_vulkan: ignore viewport stores on non-supporting drivers
2 years ago
Kelebek1
90d99fbd00
Manually robust on Maxwell and earlier
2 years ago
Billy Laws
cfbe4b09eb
Avoid using VectorExtractDynamic for subgroup mask on Adreno GPUs
This crashes their shader compiler for some reason.
3 years ago
Billy Laws
2beb3051c1
Implement scaled vertex buffer format emulation
These formats are unsupported by mobile GPUs so they need to be emulated in shaders instead.
3 years ago
Wollnashorn
dda107ffa7
video_core: Enable ImageGather with subpixel offset on Intel
3 years ago
Wollnashorn
45fb154f0d
shader_recompiler: Add subpixel offset for correct rounding at `ImageGather`
On AMD a subpixel offset of 1/512 of the texel size is applied to the texture coordinates at a ImageGather call to ensure the rounding at the texel centers is done the same way as in Maxwell or other Nvidia architectures.
See https://www.reedbeta.com/blog/texture-gathers-and-coordinate-precision/ for more details why this might be necessary.
This should fix shadow artifacts at object edges in Zelda: Breath of the Wild (#9957 , #6956 ).
3 years ago
Billy Laws
77aea7e2b4
Vulkan: Add a workaround for input_position on Adreno drivers
Adreno drivers will crash compiling geometry shaders if the input position is not wrapped in a gl_in struct.
3 years ago
FernandoS27
11f29ec173
Vulkan: Add support for VK_EXT_depth_clip_control.
4 years ago
Morph
2b87305d31
general: Convert source file copyright comments over to SPDX
This formats all copyright comments according to SPDX formatting guidelines.
Additionally, this resolves the remaining GPLv2 only licensed files by relicensing them to GPLv2.0-or-later.
4 years ago
ameerj
c5c13369fa
glsl: Add boolean reference workaround
4 years ago
ameerj
a57dc3509a
glsl_context_get_set: Add alternative cbuf type for broken drivers
some drivers have a bug bitwise converting floating point cbuf values to uint variables. This adds a workaround for these drivers to make all cbufs uint and convert to floating point as needed.
4 years ago
ameerj
a23f05c215
glsl: Clamp shared mem size to GL_MAX_COMPUTE_SHARED_MEMORY_SIZE
5 years ago
ameerj
508e41777b
shader: Ignore global memory ops on devices lacking int64 support
5 years ago
ReinUsesLisp
ff35ef8ec1
emit_spirv: Workaround VK_KHR_shader_float_controls on fp16 Nvidia
Fix regression on Fire Emblem: Three Houses when using native fp16.
5 years ago
ReinUsesLisp
b1df436cef
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.
5 years ago
ReinUsesLisp
9389e71b12
shader: Split profile and runtime info headers
5 years ago
ameerj
1d2c13fd7b
glsl: Address rest of feedback
5 years ago
ameerj
bc50a9ef20
glsl: Conditionally use fine/coarse derivatives based on device support
5 years ago
ameerj
4e73fdbd0f
glsl: Cleanup/Address feedback
5 years ago
ameerj
b33af69513
glsl: Add stubs for sparse queries and variable aoffi when not supported
5 years ago
ameerj
656de6639c
glsl: Implement fswzadd
and wip nv thread shuffle impl
5 years ago
ameerj
b3a46a3746
glsl: Implement image atomics and set layer
along with some more cleanup/oversight fixes
5 years ago
ameerj
fd55ca9828
glsl: Add cbuf access workaround for devices with component indexing bug
5 years ago
ameerj
8c9d420fa5
glsl: Use textureGrad fallback when EXT_texture_shadow_lod is unsupported
5 years ago
ameerj
0c162d8b17
glsl: skip gl_ViewportIndex write if device does not support it
5 years ago
ameerj
ce2ddb7d69
glsl: Query GL Device for FP16 extension support
5 years ago
ReinUsesLisp
5fa6d7a3b9
glasm: Use ARB_derivative_control conditionally
5 years ago
ReinUsesLisp
9750e0410b
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.
5 years ago
ReinUsesLisp
df14567fcc
glasm: Use storage buffers instead of global memory when possible
5 years ago
ReinUsesLisp
9452fe2dc6
shader: Split profile and runtime information in separate structs
5 years ago
ReinUsesLisp
bfb08e709c
shader: Add OpenGL shader profile options
5 years ago
FernandoS27
6c60109967
shader: Implement SR_Y_DIRECTION
5 years ago
ReinUsesLisp
b6b541e36a
spirv: Implement ViewportMask with NV_viewport_array2
5 years ago
ReinUsesLisp
38908d0f7e
shader: Implement tessellation shaders, polygon mode and invocation id
5 years ago
ameerj
542dc35aac
spirv: Implement alpha test
5 years ago
ReinUsesLisp
e59971ea1b
shader: Implement transform feedbacks and define file format
5 years ago
ReinUsesLisp
4a6c299e3f
shader: Implement early Z tests
5 years ago
ReinUsesLisp
4b32692423
shader: Implement geometry shaders
5 years ago
ameerj
62c3bef607
shader: Implement ATOM/S and RED
5 years ago
ReinUsesLisp
480ce24b7e
spirv: Guard against typeless image reads on unsupported devices
5 years ago
FernandoS27
68bad0e922
shader: Implement ViewportIndex
5 years ago
ReinUsesLisp
0bb8a473e2
spirv: Add fixed pipeline point size
5 years ago
ReinUsesLisp
6044946495
shader: Implement LDS, STS, LDL, and STS and use SPIR-V 1.4 when available
5 years ago
ReinUsesLisp
e6b3119910
shader: Better interpolation and disabled attributes support
5 years ago
ReinUsesLisp
4cd2c1588b
shader: Refactor PTP and other minor changes
5 years ago
FernandoS27
f573d3642e
shader: Implement TLD4.PTP
5 years ago
ReinUsesLisp
24bc872af3
shader: Implement NDC [-1, 1], attribute types and default varying initialization
5 years ago
ameerj
0705eff8f6
shader: Implement VOTE
5 years ago
ameerj
1a8e8498a4
shader: Implement DMNMX, DSET, DSETP
5 years ago
ReinUsesLisp
5cd8970e73
spirv: Implement VertexId and InstanceId, refactor code
5 years ago