glamor: Don't bother keeping references to shader stages for gradients.
They never get reattached to any other program, so saving them to unreference later is a waste of code. Signed-off-by: Eric Anholt <eric@anholt.net> Reviewed-by: Keith Packard <keithp@keithp.com> Reviewed-by: Adam Jackson <ajax@redhat.com>
This commit is contained in:
parent
6e62cdf66d
commit
76bd0f9949
|
@ -356,20 +356,6 @@ _glamor_create_radial_gradient_program(ScreenPtr screen, int stops_count,
|
||||||
glamor_get_context(glamor_priv);
|
glamor_get_context(glamor_priv);
|
||||||
|
|
||||||
if (dyn_gen && glamor_priv->gradient_prog[SHADER_GRADIENT_RADIAL][2]) {
|
if (dyn_gen && glamor_priv->gradient_prog[SHADER_GRADIENT_RADIAL][2]) {
|
||||||
glDeleteShader(glamor_priv->radial_gradient_shaders
|
|
||||||
[SHADER_GRADIENT_VS_PROG][2]);
|
|
||||||
glamor_priv->radial_gradient_shaders[SHADER_GRADIENT_VS_PROG][2] = 0;
|
|
||||||
|
|
||||||
glDeleteShader(glamor_priv->radial_gradient_shaders
|
|
||||||
[SHADER_GRADIENT_FS_MAIN_PROG][2]);
|
|
||||||
glamor_priv->radial_gradient_shaders[SHADER_GRADIENT_FS_MAIN_PROG][2] =
|
|
||||||
0;
|
|
||||||
|
|
||||||
glDeleteShader(glamor_priv->radial_gradient_shaders
|
|
||||||
[SHADER_GRADIENT_FS_GETCOLOR_PROG][2]);
|
|
||||||
glamor_priv->
|
|
||||||
radial_gradient_shaders[SHADER_GRADIENT_FS_GETCOLOR_PROG][2] = 0;
|
|
||||||
|
|
||||||
glDeleteProgram(glamor_priv->gradient_prog[SHADER_GRADIENT_RADIAL][2]);
|
glDeleteProgram(glamor_priv->gradient_prog[SHADER_GRADIENT_RADIAL][2]);
|
||||||
glamor_priv->gradient_prog[SHADER_GRADIENT_RADIAL][2] = 0;
|
glamor_priv->gradient_prog[SHADER_GRADIENT_RADIAL][2] = 0;
|
||||||
}
|
}
|
||||||
|
@ -394,6 +380,9 @@ _glamor_create_radial_gradient_program(ScreenPtr screen, int stops_count,
|
||||||
glAttachShader(gradient_prog, vs_prog);
|
glAttachShader(gradient_prog, vs_prog);
|
||||||
glAttachShader(gradient_prog, fs_getcolor_prog);
|
glAttachShader(gradient_prog, fs_getcolor_prog);
|
||||||
glAttachShader(gradient_prog, fs_main_prog);
|
glAttachShader(gradient_prog, fs_main_prog);
|
||||||
|
glDeleteShader(vs_prog);
|
||||||
|
glDeleteShader(fs_getcolor_prog);
|
||||||
|
glDeleteShader(fs_main_prog);
|
||||||
|
|
||||||
glBindAttribLocation(gradient_prog, GLAMOR_VERTEX_POS, "v_position");
|
glBindAttribLocation(gradient_prog, GLAMOR_VERTEX_POS, "v_position");
|
||||||
glBindAttribLocation(gradient_prog, GLAMOR_VERTEX_SOURCE, "v_texcoord");
|
glBindAttribLocation(gradient_prog, GLAMOR_VERTEX_SOURCE, "v_texcoord");
|
||||||
|
@ -414,13 +403,6 @@ _glamor_create_radial_gradient_program(ScreenPtr screen, int stops_count,
|
||||||
}
|
}
|
||||||
|
|
||||||
glamor_priv->gradient_prog[SHADER_GRADIENT_RADIAL][index] = gradient_prog;
|
glamor_priv->gradient_prog[SHADER_GRADIENT_RADIAL][index] = gradient_prog;
|
||||||
glamor_priv->radial_gradient_shaders[SHADER_GRADIENT_VS_PROG][index] =
|
|
||||||
vs_prog;
|
|
||||||
glamor_priv->radial_gradient_shaders[SHADER_GRADIENT_FS_MAIN_PROG][index] =
|
|
||||||
fs_main_prog;
|
|
||||||
glamor_priv->
|
|
||||||
radial_gradient_shaders[SHADER_GRADIENT_FS_GETCOLOR_PROG][index] =
|
|
||||||
fs_getcolor_prog;
|
|
||||||
|
|
||||||
glamor_put_context(glamor_priv);
|
glamor_put_context(glamor_priv);
|
||||||
}
|
}
|
||||||
|
@ -588,20 +570,6 @@ _glamor_create_linear_gradient_program(ScreenPtr screen, int stops_count,
|
||||||
|
|
||||||
glamor_get_context(glamor_priv);
|
glamor_get_context(glamor_priv);
|
||||||
if (dyn_gen && glamor_priv->gradient_prog[SHADER_GRADIENT_LINEAR][2]) {
|
if (dyn_gen && glamor_priv->gradient_prog[SHADER_GRADIENT_LINEAR][2]) {
|
||||||
glDeleteShader(glamor_priv->linear_gradient_shaders
|
|
||||||
[SHADER_GRADIENT_VS_PROG][2]);
|
|
||||||
glamor_priv->linear_gradient_shaders[SHADER_GRADIENT_VS_PROG][2] = 0;
|
|
||||||
|
|
||||||
glDeleteShader(glamor_priv->linear_gradient_shaders
|
|
||||||
[SHADER_GRADIENT_FS_MAIN_PROG][2]);
|
|
||||||
glamor_priv->linear_gradient_shaders[SHADER_GRADIENT_FS_MAIN_PROG][2] =
|
|
||||||
0;
|
|
||||||
|
|
||||||
glDeleteShader(glamor_priv->linear_gradient_shaders
|
|
||||||
[SHADER_GRADIENT_FS_GETCOLOR_PROG][2]);
|
|
||||||
glamor_priv->
|
|
||||||
linear_gradient_shaders[SHADER_GRADIENT_FS_GETCOLOR_PROG][2] = 0;
|
|
||||||
|
|
||||||
glDeleteProgram(glamor_priv->gradient_prog[SHADER_GRADIENT_LINEAR][2]);
|
glDeleteProgram(glamor_priv->gradient_prog[SHADER_GRADIENT_LINEAR][2]);
|
||||||
glamor_priv->gradient_prog[SHADER_GRADIENT_LINEAR][2] = 0;
|
glamor_priv->gradient_prog[SHADER_GRADIENT_LINEAR][2] = 0;
|
||||||
}
|
}
|
||||||
|
@ -624,6 +592,9 @@ _glamor_create_linear_gradient_program(ScreenPtr screen, int stops_count,
|
||||||
glAttachShader(gradient_prog, vs_prog);
|
glAttachShader(gradient_prog, vs_prog);
|
||||||
glAttachShader(gradient_prog, fs_getcolor_prog);
|
glAttachShader(gradient_prog, fs_getcolor_prog);
|
||||||
glAttachShader(gradient_prog, fs_main_prog);
|
glAttachShader(gradient_prog, fs_main_prog);
|
||||||
|
glDeleteShader(vs_prog);
|
||||||
|
glDeleteShader(fs_getcolor_prog);
|
||||||
|
glDeleteShader(fs_main_prog);
|
||||||
|
|
||||||
glBindAttribLocation(gradient_prog, GLAMOR_VERTEX_POS, "v_position");
|
glBindAttribLocation(gradient_prog, GLAMOR_VERTEX_POS, "v_position");
|
||||||
glBindAttribLocation(gradient_prog, GLAMOR_VERTEX_SOURCE, "v_texcoord");
|
glBindAttribLocation(gradient_prog, GLAMOR_VERTEX_SOURCE, "v_texcoord");
|
||||||
|
@ -644,13 +615,6 @@ _glamor_create_linear_gradient_program(ScreenPtr screen, int stops_count,
|
||||||
}
|
}
|
||||||
|
|
||||||
glamor_priv->gradient_prog[SHADER_GRADIENT_LINEAR][index] = gradient_prog;
|
glamor_priv->gradient_prog[SHADER_GRADIENT_LINEAR][index] = gradient_prog;
|
||||||
glamor_priv->linear_gradient_shaders[SHADER_GRADIENT_VS_PROG][index] =
|
|
||||||
vs_prog;
|
|
||||||
glamor_priv->linear_gradient_shaders[SHADER_GRADIENT_FS_MAIN_PROG][index] =
|
|
||||||
fs_main_prog;
|
|
||||||
glamor_priv->
|
|
||||||
linear_gradient_shaders[SHADER_GRADIENT_FS_GETCOLOR_PROG][index] =
|
|
||||||
fs_getcolor_prog;
|
|
||||||
|
|
||||||
glamor_put_context(glamor_priv);
|
glamor_put_context(glamor_priv);
|
||||||
}
|
}
|
||||||
|
@ -665,18 +629,7 @@ glamor_init_gradient_shader(ScreenPtr screen)
|
||||||
|
|
||||||
for (i = 0; i < 3; i++) {
|
for (i = 0; i < 3; i++) {
|
||||||
glamor_priv->gradient_prog[SHADER_GRADIENT_LINEAR][i] = 0;
|
glamor_priv->gradient_prog[SHADER_GRADIENT_LINEAR][i] = 0;
|
||||||
glamor_priv->linear_gradient_shaders[SHADER_GRADIENT_VS_PROG][i] = 0;
|
|
||||||
glamor_priv->linear_gradient_shaders[SHADER_GRADIENT_FS_MAIN_PROG][i] =
|
|
||||||
0;
|
|
||||||
glamor_priv->
|
|
||||||
linear_gradient_shaders[SHADER_GRADIENT_FS_GETCOLOR_PROG][i] = 0;
|
|
||||||
|
|
||||||
glamor_priv->gradient_prog[SHADER_GRADIENT_RADIAL][i] = 0;
|
glamor_priv->gradient_prog[SHADER_GRADIENT_RADIAL][i] = 0;
|
||||||
glamor_priv->radial_gradient_shaders[SHADER_GRADIENT_VS_PROG][i] = 0;
|
|
||||||
glamor_priv->radial_gradient_shaders[SHADER_GRADIENT_FS_MAIN_PROG][i] =
|
|
||||||
0;
|
|
||||||
glamor_priv->
|
|
||||||
radial_gradient_shaders[SHADER_GRADIENT_FS_GETCOLOR_PROG][i] = 0;
|
|
||||||
}
|
}
|
||||||
glamor_priv->linear_max_nstops = 0;
|
glamor_priv->linear_max_nstops = 0;
|
||||||
glamor_priv->radial_max_nstops = 0;
|
glamor_priv->radial_max_nstops = 0;
|
||||||
|
@ -699,39 +652,10 @@ glamor_fini_gradient_shader(ScreenPtr screen)
|
||||||
|
|
||||||
for (i = 0; i < 3; i++) {
|
for (i = 0; i < 3; i++) {
|
||||||
/* Linear Gradient */
|
/* Linear Gradient */
|
||||||
if (glamor_priv->linear_gradient_shaders[SHADER_GRADIENT_VS_PROG][i])
|
|
||||||
glDeleteShader(glamor_priv->linear_gradient_shaders
|
|
||||||
[SHADER_GRADIENT_VS_PROG][i]);
|
|
||||||
|
|
||||||
if (glamor_priv->
|
|
||||||
linear_gradient_shaders[SHADER_GRADIENT_FS_MAIN_PROG][i])
|
|
||||||
glDeleteShader(glamor_priv->linear_gradient_shaders
|
|
||||||
[SHADER_GRADIENT_FS_MAIN_PROG][i]);
|
|
||||||
|
|
||||||
if (glamor_priv->
|
|
||||||
linear_gradient_shaders[SHADER_GRADIENT_FS_GETCOLOR_PROG][i])
|
|
||||||
glDeleteShader(glamor_priv->linear_gradient_shaders
|
|
||||||
[SHADER_GRADIENT_FS_GETCOLOR_PROG][i]);
|
|
||||||
|
|
||||||
if (glamor_priv->gradient_prog[SHADER_GRADIENT_LINEAR][i])
|
if (glamor_priv->gradient_prog[SHADER_GRADIENT_LINEAR][i])
|
||||||
glDeleteProgram(glamor_priv->gradient_prog
|
glDeleteProgram(glamor_priv->gradient_prog
|
||||||
[SHADER_GRADIENT_LINEAR][i]);
|
[SHADER_GRADIENT_LINEAR][i]);
|
||||||
|
|
||||||
/* Radial Gradient */
|
|
||||||
if (glamor_priv->radial_gradient_shaders[SHADER_GRADIENT_VS_PROG][i])
|
|
||||||
glDeleteShader(glamor_priv->radial_gradient_shaders
|
|
||||||
[SHADER_GRADIENT_VS_PROG][i]);
|
|
||||||
|
|
||||||
if (glamor_priv->
|
|
||||||
radial_gradient_shaders[SHADER_GRADIENT_FS_MAIN_PROG][i])
|
|
||||||
glDeleteShader(glamor_priv->radial_gradient_shaders
|
|
||||||
[SHADER_GRADIENT_FS_MAIN_PROG][i]);
|
|
||||||
|
|
||||||
if (glamor_priv->
|
|
||||||
radial_gradient_shaders[SHADER_GRADIENT_FS_GETCOLOR_PROG][i])
|
|
||||||
glDeleteShader(glamor_priv->radial_gradient_shaders
|
|
||||||
[SHADER_GRADIENT_FS_GETCOLOR_PROG][i]);
|
|
||||||
|
|
||||||
if (glamor_priv->gradient_prog[SHADER_GRADIENT_RADIAL][i])
|
if (glamor_priv->gradient_prog[SHADER_GRADIENT_RADIAL][i])
|
||||||
glDeleteProgram(glamor_priv->gradient_prog
|
glDeleteProgram(glamor_priv->gradient_prog
|
||||||
[SHADER_GRADIENT_RADIAL][i]);
|
[SHADER_GRADIENT_RADIAL][i]);
|
||||||
|
|
|
@ -141,13 +141,6 @@ enum gradient_shader {
|
||||||
SHADER_GRADIENT_COUNT,
|
SHADER_GRADIENT_COUNT,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum gradient_shader_prog {
|
|
||||||
SHADER_GRADIENT_VS_PROG,
|
|
||||||
SHADER_GRADIENT_FS_MAIN_PROG,
|
|
||||||
SHADER_GRADIENT_FS_GETCOLOR_PROG,
|
|
||||||
SHADER_GRADIENT_PROG_COUNT,
|
|
||||||
};
|
|
||||||
|
|
||||||
struct glamor_screen_private;
|
struct glamor_screen_private;
|
||||||
struct glamor_pixmap_private;
|
struct glamor_pixmap_private;
|
||||||
|
|
||||||
|
@ -251,9 +244,7 @@ typedef struct glamor_screen_private {
|
||||||
/* glamor gradient, 0 for small nstops, 1 for
|
/* glamor gradient, 0 for small nstops, 1 for
|
||||||
large nstops and 2 for dynamic generate. */
|
large nstops and 2 for dynamic generate. */
|
||||||
GLint gradient_prog[SHADER_GRADIENT_COUNT][3];
|
GLint gradient_prog[SHADER_GRADIENT_COUNT][3];
|
||||||
GLint linear_gradient_shaders[SHADER_GRADIENT_PROG_COUNT][3];
|
|
||||||
int linear_max_nstops;
|
int linear_max_nstops;
|
||||||
GLint radial_gradient_shaders[SHADER_GRADIENT_PROG_COUNT][3];
|
|
||||||
int radial_max_nstops;
|
int radial_max_nstops;
|
||||||
|
|
||||||
/* glamor trapezoid shader. */
|
/* glamor trapezoid shader. */
|
||||||
|
|
Loading…
Reference in New Issue