From 86598739ba285045bc03778d43e25bb0886627f3 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Thu, 9 Feb 2023 13:48:30 +1000 Subject: [PATCH] glamor: handle EXT_gpu_shader4 in dual source blend paths Fixes: a9552868697c ("glamor: add EXT_gpu_shader4 support") Acked-by: Emma Anholt --- glamor/glamor_render.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/glamor/glamor_render.c b/glamor/glamor_render.c index c9a125ef9..889fe1b36 100644 --- a/glamor/glamor_render.c +++ b/glamor/glamor_render.c @@ -61,7 +61,7 @@ static struct blendinfo composite_op_info[] = { #define RepeatFix 10 static GLuint -glamor_create_composite_fs(struct shader_key *key) +glamor_create_composite_fs(glamor_screen_private *glamor_priv, struct shader_key *key) { const char *repeat_define = "#define RepeatNone 0\n" @@ -223,6 +223,8 @@ glamor_create_composite_fs(struct shader_key *key) "}\n"; const char *header_ca_dual_blend = "#version 130\n"; + const char *header_ca_dual_blend_gpu_shader4 = + "#version 120\n#extension GL_EXT_gpu_shader4 : require\n"; const char *in_ca_dual_blend_gles2 = "void main()\n" "{\n" @@ -301,7 +303,10 @@ glamor_create_composite_fs(struct shader_key *key) break; case glamor_program_alpha_dual_blend: in = in_ca_dual_blend; - header = header_ca_dual_blend; + if (glamor_priv->glsl_version >= 130) + header = header_ca_dual_blend; + else + header = header_ca_dual_blend_gpu_shader4; break; case glamor_program_alpha_dual_blend_gles2: in = in_ca_dual_blend_gles2; @@ -379,7 +384,7 @@ glamor_create_composite_shader(ScreenPtr screen, struct shader_key *key, vs = glamor_create_composite_vs(key); if (vs == 0) return; - fs = glamor_create_composite_fs(key); + fs = glamor_create_composite_fs(glamor_priv, key); if (fs == 0) return;