glamor: Fix some mangling of shader strings by indent.

Signed-off-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Zhigang Gong <zhigang.gong@linux.intel.com>
Reviewed-by: Keith Packard <keithp@keithp.com>
This commit is contained in:
Eric Anholt 2013-12-24 15:59:14 -08:00
parent d84d71029a
commit 5f57d436c3
8 changed files with 183 additions and 44 deletions

View File

@ -151,7 +151,8 @@ glamor_init_finish_access_shaders(ScreenPtr screen)
"void main()\n" "void main()\n"
"{\n" "{\n"
" gl_Position = v_position;\n" " gl_Position = v_position;\n"
" source_texture = v_texcoord0.xy;\n" "}\n"; " source_texture = v_texcoord0.xy;\n"
"}\n";
const char *common_source = const char *common_source =
GLAMOR_DEFAULT_PRECISION GLAMOR_DEFAULT_PRECISION
@ -186,7 +187,8 @@ glamor_init_finish_access_shaders(ScreenPtr screen)
" gl_FragColor = texture2D(sampler, source_texture).gbar;\n" " gl_FragColor = texture2D(sampler, source_texture).gbar;\n"
" else if (swap_rb == SWAP_NONE_UPLOADING)\n" " else if (swap_rb == SWAP_NONE_UPLOADING)\n"
" gl_FragColor = texture2D(sampler, source_texture).abgr;\n" " gl_FragColor = texture2D(sampler, source_texture).abgr;\n"
" } \n" "}\n"; " } \n"
"}\n";
const char *set_alpha_source = const char *set_alpha_source =
"void main()\n" "void main()\n"
@ -208,7 +210,8 @@ glamor_init_finish_access_shaders(ScreenPtr screen)
" gl_FragColor = vec4(texture2D(sampler, source_texture).gba, 1);\n" " gl_FragColor = vec4(texture2D(sampler, source_texture).gba, 1);\n"
" else if (swap_rb == SWAP_NONE_UPLOADING)\n" " else if (swap_rb == SWAP_NONE_UPLOADING)\n"
" gl_FragColor = vec4(texture2D(sampler, source_texture).abg, 1);\n" " gl_FragColor = vec4(texture2D(sampler, source_texture).abg, 1);\n"
" } \n" "}\n"; " } \n"
"}\n";
GLint fs_prog, vs_prog, avs_prog, set_alpha_prog; GLint fs_prog, vs_prog, avs_prog, set_alpha_prog;
GLint sampler_uniform_location; GLint sampler_uniform_location;
char *source; char *source;

View File

@ -140,10 +140,17 @@ glamor_init_solid_shader(ScreenPtr screen)
glamor_gl_dispatch *dispatch; glamor_gl_dispatch *dispatch;
const char *solid_vs = const char *solid_vs =
"attribute vec4 v_position;" "attribute vec4 v_position;"
"void main()\n" "{\n" " gl_Position = v_position;\n" "}\n"; "void main()\n"
"{\n"
" gl_Position = v_position;\n"
"}\n";
const char *solid_fs = const char *solid_fs =
GLAMOR_DEFAULT_PRECISION "uniform vec4 color;\n" GLAMOR_DEFAULT_PRECISION
"void main()\n" "{\n" " gl_FragColor = color;\n" "}\n"; "uniform vec4 color;\n"
"void main()\n"
"{\n"
" gl_FragColor = color;\n"
"}\n";
GLint fs_prog, vs_prog; GLint fs_prog, vs_prog;
glamor_priv = glamor_get_screen_private(screen); glamor_priv = glamor_get_screen_private(screen);

View File

@ -85,7 +85,84 @@ _glamor_create_getcolor_fs_program(ScreenPtr screen, int stops_count,
/* Because the array access for shader is very slow, the performance is very low /* Because the array access for shader is very slow, the performance is very low
if use array. So use global uniform to replace for it if the number of n_stops is small. */ if use array. So use global uniform to replace for it if the number of n_stops is small. */
const char *gradient_fs_getcolor_no_array = GLAMOR_DEFAULT_PRECISION "uniform int n_stop;\n" "uniform float stop0;\n" "uniform float stop1;\n" "uniform float stop2;\n" "uniform float stop3;\n" "uniform float stop4;\n" "uniform float stop5;\n" "uniform float stop6;\n" "uniform float stop7;\n" "uniform vec4 stop_color0;\n" "uniform vec4 stop_color1;\n" "uniform vec4 stop_color2;\n" "uniform vec4 stop_color3;\n" "uniform vec4 stop_color4;\n" "uniform vec4 stop_color5;\n" "uniform vec4 stop_color6;\n" "uniform vec4 stop_color7;\n" "\n" "vec4 get_color(float stop_len)\n" "{\n" " float stop_after;\n" " float stop_before;\n" " vec4 stop_color_before;\n" " vec4 stop_color_after;\n" " float new_alpha; \n" " vec4 gradient_color;\n" " float percentage; \n" " \n" " if((stop_len < stop0) && (n_stop >= 1)) {\n" " stop_color_before = stop_color0;\n" " stop_color_after = stop_color0;\n" " stop_after = stop0;\n" " stop_before = stop0;\n" " } else if((stop_len < stop1) && (n_stop >= 2)) {\n" " stop_color_before = stop_color0;\n" " stop_color_after = stop_color1;\n" " stop_after = stop1;\n" " stop_before = stop0;\n" " } else if((stop_len < stop2) && (n_stop >= 3)) {\n" " stop_color_before = stop_color1;\n" " stop_color_after = stop_color2;\n" " stop_after = stop2;\n" " stop_before = stop1;\n" " } else if((stop_len < stop3) && (n_stop >= 4)){\n" " stop_color_before = stop_color2;\n" " stop_color_after = stop_color3;\n" " stop_after = stop3;\n" " stop_before = stop2;\n" " } else if((stop_len < stop4) && (n_stop >= 5)){\n" " stop_color_before = stop_color3;\n" " stop_color_after = stop_color4;\n" " stop_after = stop4;\n" " stop_before = stop3;\n" " } else if((stop_len < stop5) && (n_stop >= 6)){\n" " stop_color_before = stop_color4;\n" " stop_color_after = stop_color5;\n" " stop_after = stop5;\n" " stop_before = stop4;\n" " } else if((stop_len < stop6) && (n_stop >= 7)){\n" " stop_color_before = stop_color5;\n" " stop_color_after = stop_color6;\n" " stop_after = stop6;\n" " stop_before = stop5;\n" " } else if((stop_len < stop7) && (n_stop >= 8)){\n" " stop_color_before = stop_color6;\n" " stop_color_after = stop_color7;\n" " stop_after = stop7;\n" " stop_before = stop6;\n" " } else {\n" " stop_color_before = stop_color7;\n" " stop_color_after = stop_color7;\n" " stop_after = stop7;\n" " stop_before = stop7;\n" " }\n" " if(stop_after - stop_before > 2.0)\n" " percentage = 0.0;\n" //For comply with pixman, walker->stepper overflow. const char *gradient_fs_getcolor_no_array =
GLAMOR_DEFAULT_PRECISION
"uniform int n_stop;\n"
"uniform float stop0;\n"
"uniform float stop1;\n"
"uniform float stop2;\n"
"uniform float stop3;\n"
"uniform float stop4;\n"
"uniform float stop5;\n"
"uniform float stop6;\n"
"uniform float stop7;\n"
"uniform vec4 stop_color0;\n"
"uniform vec4 stop_color1;\n"
"uniform vec4 stop_color2;\n"
"uniform vec4 stop_color3;\n"
"uniform vec4 stop_color4;\n"
"uniform vec4 stop_color5;\n"
"uniform vec4 stop_color6;\n"
"uniform vec4 stop_color7;\n"
"\n"
"vec4 get_color(float stop_len)\n"
"{\n"
" float stop_after;\n"
" float stop_before;\n"
" vec4 stop_color_before;\n"
" vec4 stop_color_after;\n"
" float new_alpha; \n"
" vec4 gradient_color;\n"
" float percentage; \n"
" \n"
" if((stop_len < stop0) && (n_stop >= 1)) {\n"
" stop_color_before = stop_color0;\n"
" stop_color_after = stop_color0;\n"
" stop_after = stop0;\n"
" stop_before = stop0;\n"
" } else if((stop_len < stop1) && (n_stop >= 2)) {\n"
" stop_color_before = stop_color0;\n"
" stop_color_after = stop_color1;\n"
" stop_after = stop1;\n"
" stop_before = stop0;\n"
" } else if((stop_len < stop2) && (n_stop >= 3)) {\n"
" stop_color_before = stop_color1;\n"
" stop_color_after = stop_color2;\n"
" stop_after = stop2;\n"
" stop_before = stop1;\n"
" } else if((stop_len < stop3) && (n_stop >= 4)){\n"
" stop_color_before = stop_color2;\n"
" stop_color_after = stop_color3;\n"
" stop_after = stop3;\n"
" stop_before = stop2;\n"
" } else if((stop_len < stop4) && (n_stop >= 5)){\n"
" stop_color_before = stop_color3;\n"
" stop_color_after = stop_color4;\n"
" stop_after = stop4;\n"
" stop_before = stop3;\n"
" } else if((stop_len < stop5) && (n_stop >= 6)){\n"
" stop_color_before = stop_color4;\n"
" stop_color_after = stop_color5;\n"
" stop_after = stop5;\n"
" stop_before = stop4;\n"
" } else if((stop_len < stop6) && (n_stop >= 7)){\n"
" stop_color_before = stop_color5;\n"
" stop_color_after = stop_color6;\n"
" stop_after = stop6;\n"
" stop_before = stop5;\n"
" } else if((stop_len < stop7) && (n_stop >= 8)){\n"
" stop_color_before = stop_color6;\n"
" stop_color_after = stop_color7;\n"
" stop_after = stop7;\n"
" stop_before = stop6;\n"
" } else {\n"
" stop_color_before = stop_color7;\n"
" stop_color_after = stop_color7;\n"
" stop_after = stop7;\n"
" stop_before = stop7;\n"
" }\n"
" if(stop_after - stop_before > 2.0)\n"
" percentage = 0.0;\n" //For comply with pixman, walker->stepper overflow.
" else if(stop_after - stop_before < 0.000001)\n" " else if(stop_after - stop_before < 0.000001)\n"
" percentage = 0.0;\n" " percentage = 0.0;\n"
" else \n" " else \n"
@ -95,7 +172,9 @@ _glamor_create_getcolor_fs_program(ScreenPtr screen, int stops_count,
" gradient_color = vec4((percentage * stop_color_after.rgb \n" " gradient_color = vec4((percentage * stop_color_after.rgb \n"
" + (1.0-percentage) * stop_color_before.rgb)*new_alpha, \n" " + (1.0-percentage) * stop_color_before.rgb)*new_alpha, \n"
" new_alpha);\n" " new_alpha);\n"
" \n" " return gradient_color;\n" "}\n"; " \n"
" return gradient_color;\n"
"}\n";
glamor_priv = glamor_get_screen_private(screen); glamor_priv = glamor_get_screen_private(screen);
dispatch = glamor_get_dispatch(glamor_priv); dispatch = glamor_get_dispatch(glamor_priv);
@ -137,7 +216,8 @@ _glamor_create_radial_gradient_program(ScreenPtr screen, int stops_count,
"void main()\n" "void main()\n"
"{\n" "{\n"
" gl_Position = v_position;\n" " gl_Position = v_position;\n"
" source_texture = v_texcoord.xy;\n" "}\n"; " source_texture = v_texcoord.xy;\n"
"}\n";
/* /*
* Refer to pixman radial gradient. * Refer to pixman radial gradient.
@ -375,7 +455,8 @@ _glamor_create_linear_gradient_program(ScreenPtr screen, int stops_count,
"void main()\n" "void main()\n"
"{\n" "{\n"
" gl_Position = v_position;\n" " gl_Position = v_position;\n"
" source_texture = v_texcoord.xy;\n" "}\n"; " source_texture = v_texcoord.xy;\n"
"}\n";
/* /*
* | * |

View File

@ -38,20 +38,29 @@ glamor_init_putimage_shaders(ScreenPtr screen)
#if 0 #if 0
glamor_screen_private *glamor_priv = glamor_get_screen_private(screen); glamor_screen_private *glamor_priv = glamor_get_screen_private(screen);
const char *xybitmap_vs = const char *xybitmap_vs =
"uniform float x_bias;\n" "uniform float x_scale;\n" "uniform float x_bias;\n"
"uniform float y_bias;\n" "uniform float y_scale;\n" "uniform float x_scale;\n"
"varying vec2 bitmap_coords;\n" "void main()\n" "{\n" "uniform float y_bias;\n"
"uniform float y_scale;\n"
"varying vec2 bitmap_coords;\n"
"void main()\n"
"{\n"
" gl_Position = vec4((gl_Vertex.x + x_bias) * x_scale,\n" " gl_Position = vec4((gl_Vertex.x + x_bias) * x_scale,\n"
" (gl_Vertex.y + y_bias) * y_scale,\n" " (gl_Vertex.y + y_bias) * y_scale,\n"
" 0,\n" " 0,\n"
" 1);\n" " 1);\n"
" bitmap_coords = gl_MultiTexCoord0.xy;\n" "}\n"; " bitmap_coords = gl_MultiTexCoord0.xy;\n"
"}\n";
const char *xybitmap_fs = const char *xybitmap_fs =
"uniform vec4 fg, bg;\n" "varying vec2 bitmap_coords;\n" "uniform vec4 fg, bg;\n"
"uniform sampler2D bitmap_sampler;\n" "void main()\n" "{\n" "varying vec2 bitmap_coords;\n"
"uniform sampler2D bitmap_sampler;\n"
"void main()\n"
"{\n"
" float bitmap_value = texture2D(bitmap_sampler,\n" " float bitmap_value = texture2D(bitmap_sampler,\n"
" bitmap_coords).x;\n" " bitmap_coords).x;\n"
" gl_FragColor = mix(bg, fg, bitmap_value);\n" "}\n"; " gl_FragColor = mix(bg, fg, bitmap_value);\n"
"}\n";
GLint fs_prog, vs_prog, prog; GLint fs_prog, vs_prog, prog;
GLint sampler_uniform_location; GLint sampler_uniform_location;

View File

@ -99,7 +99,9 @@ glamor_create_composite_fs(glamor_gl_dispatch * dispatch,
" rel_tex.y = 2.0 - (1.0 - fract(rel_tex.y))/wh.y;\n" " rel_tex.y = 2.0 - (1.0 - fract(rel_tex.y))/wh.y;\n"
" else \n" " else \n"
" rel_tex.y = fract(rel_tex.y)/wh.y;\n" " rel_tex.y = fract(rel_tex.y)/wh.y;\n"
" } \n" " return rel_tex; \n" "}\n"; " } \n"
" return rel_tex; \n"
"}\n";
/* The texture and the pixmap size is not match eaxctly, so can't sample it directly. /* The texture and the pixmap size is not match eaxctly, so can't sample it directly.
* rel_sampler will recalculate the texture coords.*/ * rel_sampler will recalculate the texture coords.*/
const char *rel_sampler = const char *rel_sampler =
@ -121,7 +123,10 @@ glamor_create_composite_fs(glamor_gl_dispatch * dispatch,
const char *source_solid_fetch = const char *source_solid_fetch =
GLAMOR_DEFAULT_PRECISION GLAMOR_DEFAULT_PRECISION
"uniform vec4 source;\n" "uniform vec4 source;\n"
"vec4 get_source()\n" "{\n" " return source;\n" "}\n"; "vec4 get_source()\n"
"{\n"
" return source;\n"
"}\n";
const char *source_alpha_pixmap_fetch = const char *source_alpha_pixmap_fetch =
GLAMOR_DEFAULT_PRECISION GLAMOR_DEFAULT_PRECISION
"varying vec2 source_texture;\n" "varying vec2 source_texture;\n"
@ -136,7 +141,8 @@ glamor_create_composite_fs(glamor_gl_dispatch * dispatch,
" source_wh, source_repeat_mode, 0);\n" " source_wh, source_repeat_mode, 0);\n"
"}\n"; "}\n";
const char *source_pixmap_fetch = const char *source_pixmap_fetch =
GLAMOR_DEFAULT_PRECISION "varying vec2 source_texture;\n" GLAMOR_DEFAULT_PRECISION
"varying vec2 source_texture;\n"
"uniform sampler2D source_sampler;\n" "uniform sampler2D source_sampler;\n"
"uniform vec4 source_wh;\n" "uniform vec4 source_wh;\n"
"vec4 get_source()\n" "vec4 get_source()\n"
@ -148,10 +154,15 @@ glamor_create_composite_fs(glamor_gl_dispatch * dispatch,
" source_wh, source_repeat_mode, 1);\n" " source_wh, source_repeat_mode, 1);\n"
"}\n"; "}\n";
const char *mask_solid_fetch = const char *mask_solid_fetch =
GLAMOR_DEFAULT_PRECISION "uniform vec4 mask;\n" GLAMOR_DEFAULT_PRECISION
"vec4 get_mask()\n" "{\n" " return mask;\n" "}\n"; "uniform vec4 mask;\n"
"vec4 get_mask()\n"
"{\n"
" return mask;\n"
"}\n";
const char *mask_alpha_pixmap_fetch = const char *mask_alpha_pixmap_fetch =
GLAMOR_DEFAULT_PRECISION "varying vec2 mask_texture;\n" GLAMOR_DEFAULT_PRECISION
"varying vec2 mask_texture;\n"
"uniform sampler2D mask_sampler;\n" "uniform sampler2D mask_sampler;\n"
"uniform vec4 mask_wh;\n" "uniform vec4 mask_wh;\n"
"vec4 get_mask()\n" "vec4 get_mask()\n"
@ -163,7 +174,8 @@ glamor_create_composite_fs(glamor_gl_dispatch * dispatch,
" mask_wh, mask_repeat_mode, 0);\n" " mask_wh, mask_repeat_mode, 0);\n"
"}\n"; "}\n";
const char *mask_pixmap_fetch = const char *mask_pixmap_fetch =
GLAMOR_DEFAULT_PRECISION "varying vec2 mask_texture;\n" GLAMOR_DEFAULT_PRECISION
"varying vec2 mask_texture;\n"
"uniform sampler2D mask_sampler;\n" "uniform sampler2D mask_sampler;\n"
"uniform vec4 mask_wh;\n" "uniform vec4 mask_wh;\n"
"vec4 get_mask()\n" "vec4 get_mask()\n"
@ -175,17 +187,29 @@ glamor_create_composite_fs(glamor_gl_dispatch * dispatch,
" mask_wh, mask_repeat_mode, 1);\n" " mask_wh, mask_repeat_mode, 1);\n"
"}\n"; "}\n";
const char *in_source_only = const char *in_source_only =
GLAMOR_DEFAULT_PRECISION "void main()\n" "{\n" GLAMOR_DEFAULT_PRECISION
" gl_FragColor = get_source();\n" "}\n"; "void main()\n"
"{\n"
" gl_FragColor = get_source();\n"
"}\n";
const char *in_normal = const char *in_normal =
GLAMOR_DEFAULT_PRECISION "void main()\n" "{\n" GLAMOR_DEFAULT_PRECISION
" gl_FragColor = get_source() * get_mask().a;\n" "}\n"; "void main()\n"
"{\n"
" gl_FragColor = get_source() * get_mask().a;\n"
"}\n";
const char *in_ca_source = const char *in_ca_source =
GLAMOR_DEFAULT_PRECISION "void main()\n" "{\n" GLAMOR_DEFAULT_PRECISION
" gl_FragColor = get_source() * get_mask();\n" "}\n"; "void main()\n"
"{\n"
" gl_FragColor = get_source() * get_mask();\n"
"}\n";
const char *in_ca_alpha = const char *in_ca_alpha =
GLAMOR_DEFAULT_PRECISION "void main()\n" "{\n" GLAMOR_DEFAULT_PRECISION
" gl_FragColor = get_source().a * get_mask();\n" "}\n"; "void main()\n"
"{\n"
" gl_FragColor = get_source().a * get_mask();\n"
"}\n";
char *source; char *source;
const char *source_fetch; const char *source_fetch;
const char *mask_fetch = ""; const char *mask_fetch = "";
@ -258,7 +282,9 @@ glamor_create_composite_vs(glamor_gl_dispatch * dispatch,
"attribute vec4 v_texcoord1;\n" "attribute vec4 v_texcoord1;\n"
"varying vec2 source_texture;\n" "varying vec2 source_texture;\n"
"varying vec2 mask_texture;\n" "varying vec2 mask_texture;\n"
"void main()\n" "{\n" " gl_Position = v_position;\n"; "void main()\n"
"{\n"
" gl_Position = v_position;\n";
const char *source_coords = " source_texture = v_texcoord0.xy;\n"; const char *source_coords = " source_texture = v_texcoord0.xy;\n";
const char *mask_coords = " mask_texture = v_texcoord1.xy;\n"; const char *mask_coords = " mask_texture = v_texcoord1.xy;\n";
const char *main_closing = "}\n"; const char *main_closing = "}\n";
@ -1165,7 +1191,7 @@ glamor_composite_choose_shader(CARD8 op,
*shader = glamor_lookup_composite_shader(screen, &key); *shader = glamor_lookup_composite_shader(screen, &key);
if ((*shader)->prog == 0) { if ((*shader)->prog == 0) {
glamor_fallback("no shader program for this" "render acccel mode\n"); glamor_fallback("no shader program for this render acccel mode\n");
goto fail; goto fail;
} }

View File

@ -45,7 +45,8 @@ glamor_init_tile_shader(ScreenPtr screen)
"void main()\n" "void main()\n"
"{\n" "{\n"
" gl_Position = v_position;\n" " gl_Position = v_position;\n"
" tile_texture = v_texcoord0.xy;\n" "}\n"; " tile_texture = v_texcoord0.xy;\n"
"}\n";
const char *tile_fs = const char *tile_fs =
GLAMOR_DEFAULT_PRECISION GLAMOR_DEFAULT_PRECISION
"varying vec2 tile_texture;\n" "varying vec2 tile_texture;\n"
@ -56,7 +57,8 @@ glamor_init_tile_shader(ScreenPtr screen)
" vec2 rel_tex;" " vec2 rel_tex;"
" rel_tex = tile_texture * wh; \n" " rel_tex = tile_texture * wh; \n"
" rel_tex = floor(rel_tex) + (fract(rel_tex) / wh); \n" " rel_tex = floor(rel_tex) + (fract(rel_tex) / wh); \n"
" gl_FragColor = texture2D(sampler, rel_tex);\n" "}\n"; " gl_FragColor = texture2D(sampler, rel_tex);\n"
"}\n";
GLint fs_prog, vs_prog; GLint fs_prog, vs_prog;
GLint sampler_uniform_location; GLint sampler_uniform_location;

View File

@ -1018,7 +1018,8 @@ glamor_init_trapezoid_shader(ScreenPtr screen)
const char *trapezoid_vs = const char *trapezoid_vs =
GLAMOR_DEFAULT_PRECISION GLAMOR_DEFAULT_PRECISION
"attribute vec4 v_position;\n" "attribute vec2 v_texcoord;\n" "attribute vec4 v_position;\n"
"attribute vec2 v_texcoord;\n"
/* v_top_bottom, v_left_param and v_right_param contain the /* v_top_bottom, v_left_param and v_right_param contain the
constant value for all the vertex of one rect. Using uniform constant value for all the vertex of one rect. Using uniform
is more suitable but we need to reset the uniform variables is more suitable but we need to reset the uniform variables
@ -1056,7 +1057,8 @@ glamor_init_trapezoid_shader(ScreenPtr screen)
" trap_right_x = v_right_param.x;\n" " trap_right_x = v_right_param.x;\n"
" trap_right_y = v_right_param.y;\n" " trap_right_y = v_right_param.y;\n"
" trap_right_slope = v_right_param.z;\n" " trap_right_slope = v_right_param.z;\n"
" trap_right_vertical_f = v_right_param.w;\n" "}\n"; " trap_right_vertical_f = v_right_param.w;\n"
"}\n";
/* /*
* Because some GL fill function do not support the MultSample * Because some GL fill function do not support the MultSample
@ -1158,7 +1160,9 @@ glamor_init_trapezoid_shader(ScreenPtr screen)
" || (x_up_cut_left > source_texture.x + x_per_pix/2.0 && \n" " || (x_up_cut_left > source_texture.x + x_per_pix/2.0 && \n"
" x_bottom_cut_left > source_texture.x + x_per_pix/2.0)) { \n" " x_bottom_cut_left > source_texture.x + x_per_pix/2.0)) { \n"
// The complete outside. At Left or Right of the trapezoide. // The complete outside. At Left or Right of the trapezoide.
" return 0.0; \n" " } \n" " } \n" " return 0.0; \n"
" } \n"
" } \n"
// Get here, the pix is partly inside the trapezoid. // Get here, the pix is partly inside the trapezoid.
" { \n" " { \n"
" float percent = 0.0; \n" " float percent = 0.0; \n"
@ -1336,7 +1340,8 @@ glamor_init_trapezoid_shader(ScreenPtr screen)
"void main() \n" "void main() \n"
"{ \n" "{ \n"
" float alpha_val = get_alpha_val(); \n" " float alpha_val = get_alpha_val(); \n"
" gl_FragColor = vec4(0.0, 0.0, 0.0, alpha_val); \n" "}\n"; " gl_FragColor = vec4(0.0, 0.0, 0.0, alpha_val); \n"
"}\n";
glamor_priv = glamor_get_screen_private(screen); glamor_priv = glamor_get_screen_private(screen);
dispatch = glamor_get_dispatch(glamor_priv); dispatch = glamor_get_dispatch(glamor_priv);

View File

@ -58,8 +58,11 @@ typedef struct tagREF_TRANSFORM {
static const char *xv_vs = "attribute vec4 v_position;\n" static const char *xv_vs = "attribute vec4 v_position;\n"
"attribute vec4 v_texcoord0;\n" "attribute vec4 v_texcoord0;\n"
"varying vec2 tcs;\n" "varying vec2 tcs;\n"
"void main()\n" "{\n" " gl_Position = v_position;\n" "void main()\n"
"tcs = v_texcoord0.xy;\n" "}\n"; "{\n"
" gl_Position = v_position;\n"
"tcs = v_texcoord0.xy;\n"
"}\n";
static const char *xv_ps = GLAMOR_DEFAULT_PRECISION static const char *xv_ps = GLAMOR_DEFAULT_PRECISION
"uniform sampler2D y_sampler;\n" "uniform sampler2D y_sampler;\n"
@ -71,14 +74,17 @@ static const char *xv_ps = GLAMOR_DEFAULT_PRECISION
"varying vec2 tcs;\n" "varying vec2 tcs;\n"
"float sample;\n" "float sample;\n"
"vec4 temp1;\n" "vec4 temp1;\n"
"void main()\n" "{\n" "void main()\n"
"{\n"
"sample = texture2D(y_sampler, tcs).w;\n" "sample = texture2D(y_sampler, tcs).w;\n"
"temp1.xyz = offsetyco.www * vec3(sample) + offsetyco.xyz;\n" "temp1.xyz = offsetyco.www * vec3(sample) + offsetyco.xyz;\n"
"sample = texture2D(u_sampler, tcs).w;\n" "sample = texture2D(u_sampler, tcs).w;\n"
"temp1.xyz = ucogamma.xyz * vec3(sample) + temp1.xyz;\n" "temp1.xyz = ucogamma.xyz * vec3(sample) + temp1.xyz;\n"
"sample = texture2D(v_sampler, tcs).w;\n" "sample = texture2D(v_sampler, tcs).w;\n"
"temp1.xyz = clamp(vco.xyz * vec3(sample) + temp1.xyz, 0.0, 1.0);\n" "temp1.xyz = clamp(vco.xyz * vec3(sample) + temp1.xyz, 0.0, 1.0);\n"
"temp1.w = 1.0;\n" "gl_FragColor = temp1;\n" "}\n"; "temp1.w = 1.0;\n"
"gl_FragColor = temp1;\n"
"}\n";
void void
glamor_init_xv_shader(ScreenPtr screen) glamor_init_xv_shader(ScreenPtr screen)