summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_opengl/gl_shader_cache.cpp
diff options
context:
space:
mode:
authorFernando Sahmkow <fsahmkow27@gmail.com>2019-11-14 15:27:27 +0100
committerGitHub <noreply@github.com>2019-11-14 15:27:27 +0100
commitb6f673313104a2c223c40ae8b76068a86be0082d (patch)
tree27472ef3cde941294b60962c8f83c3ef5c95a66a /src/video_core/renderer_opengl/gl_shader_cache.cpp
parentMerge pull request #3107 from lioncash/hashable (diff)
parentgl_shader_cache: Enable extensions only when available (diff)
downloadyuzu-b6f673313104a2c223c40ae8b76068a86be0082d.tar
yuzu-b6f673313104a2c223c40ae8b76068a86be0082d.tar.gz
yuzu-b6f673313104a2c223c40ae8b76068a86be0082d.tar.bz2
yuzu-b6f673313104a2c223c40ae8b76068a86be0082d.tar.lz
yuzu-b6f673313104a2c223c40ae8b76068a86be0082d.tar.xz
yuzu-b6f673313104a2c223c40ae8b76068a86be0082d.tar.zst
yuzu-b6f673313104a2c223c40ae8b76068a86be0082d.zip
Diffstat (limited to 'src/video_core/renderer_opengl/gl_shader_cache.cpp')
-rw-r--r--src/video_core/renderer_opengl/gl_shader_cache.cpp19
1 files changed, 14 insertions, 5 deletions
diff --git a/src/video_core/renderer_opengl/gl_shader_cache.cpp b/src/video_core/renderer_opengl/gl_shader_cache.cpp
index 35e5214a5..04a239a39 100644
--- a/src/video_core/renderer_opengl/gl_shader_cache.cpp
+++ b/src/video_core/renderer_opengl/gl_shader_cache.cpp
@@ -275,16 +275,25 @@ CachedProgram BuildShader(const Device& device, u64 unique_identifier, ProgramTy
std::string source = fmt::format(R"(// {}
#version 430 core
#extension GL_ARB_separate_shader_objects : enable
-#extension GL_ARB_shader_viewport_layer_array : enable
-#extension GL_EXT_shader_image_load_formatted : enable
-#extension GL_NV_gpu_shader5 : enable
-#extension GL_NV_shader_thread_group : enable
-#extension GL_NV_shader_thread_shuffle : enable
)",
GetShaderId(unique_identifier, program_type));
if (is_compute) {
source += "#extension GL_ARB_compute_variable_group_size : require\n";
}
+ if (device.HasShaderBallot()) {
+ source += "#extension GL_ARB_shader_ballot : require\n";
+ }
+ if (device.HasVertexViewportLayer()) {
+ source += "#extension GL_ARB_shader_viewport_layer_array : require\n";
+ }
+ if (device.HasImageLoadFormatted()) {
+ source += "#extension GL_EXT_shader_image_load_formatted : require\n";
+ }
+ if (device.HasWarpIntrinsics()) {
+ source += "#extension GL_NV_gpu_shader5 : require\n"
+ "#extension GL_NV_shader_thread_group : require\n"
+ "#extension GL_NV_shader_thread_shuffle : require\n";
+ }
source += '\n';
if (!is_compute) {