new backend: glx: fix off-by-1 in blur shader generation

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
This commit is contained in:
Yuxuan Shui 2019-05-07 00:29:02 +01:00
parent 86f4d73c22
commit 45ead409b5
No known key found for this signature in database
GPG Key ID: 37C999F617EA1A47
2 changed files with 3 additions and 3 deletions

View File

@ -187,9 +187,9 @@ WIDTH,HEIGHT,ELE1,ELE2,ELE3,ELE4,ELE5...
+ +
In other words, the matrix is formatted as a list of comma separated numbers. The first two numbers must be integers, which specify the width and height of the matrix. They must be odd numbers. Then, the following 'width * height - 1' numbers specifies the numbers in the matrix, row by row, excluding the center element. In other words, the matrix is formatted as a list of comma separated numbers. The first two numbers must be integers, which specify the width and height of the matrix. They must be odd numbers. Then, the following 'width * height - 1' numbers specifies the numbers in the matrix, row by row, excluding the center element.
+ +
The elements are finite floating point numbers. The decimal pointer has to be '.' (a period), and scientific notation is not supported. The elements are finite floating point numbers. The decimal pointer has to be '.' (a period), scientific notation is not supported.
+ +
The element in the center will either be 1.0 or changing based on opacity, depending on whether you have `--blur-background-fixed`. Yet the automatic adjustment of blur factor may not work well with a custom blur kernel. The element in the center will either be 1.0 or varying based on opacity, depending on whether you have `--blur-background-fixed`. Yet the automatic adjustment of blur factor may not work well with a custom blur kernel.
+ +
A 7x7 Gaussian blur kernel (sigma = 0.84089642) looks like: A 7x7 Gaussian blur kernel (sigma = 0.84089642) looks like:
+ +

View File

@ -716,7 +716,7 @@ static bool gl_init_blur(struct gl_data *gd, conv *const *const kernels) {
auto kern = kernels[i]; auto kern = kernels[i];
// Build shader // Build shader
int width = kern->w, height = kern->h; int width = kern->w, height = kern->h;
int nele = width * height - 1; int nele = width * height;
size_t body_len = (strlen(shader_add) + 42) * (uint)nele; size_t body_len = (strlen(shader_add) + 42) * (uint)nele;
char *shader_body = ccalloc(body_len, char); char *shader_body = ccalloc(body_len, char);
char *pc = shader_body; char *pc = shader_body;