summaryrefslogtreecommitdiffstats
path: root/video/out/opengl/video_shaders.c
diff options
context:
space:
mode:
authorNiklas Haas <git@haasn.xyz>2017-07-26 01:42:19 +0200
committerNiklas Haas <git@haasn.xyz>2017-07-26 01:54:33 +0200
commitb31020b193db24e175bce077755c2f3e814e57ff (patch)
tree8be29707f6c60ea310c290f18f2f2fc38833983a /video/out/opengl/video_shaders.c
parent9875f14ad4cb977fb3b6460704b29d4949fcb81b (diff)
downloadmpv-b31020b193db24e175bce077755c2f3e814e57ff.tar.bz2
mpv-b31020b193db24e175bce077755c2f3e814e57ff.tar.xz
vo_opengl: check against shmem limits
The radius check was not strict enough, especially not for all platforms. To fix this, actually check the hardware capabilities instead of relying on a hard-coded maximum radius.
Diffstat (limited to 'video/out/opengl/video_shaders.c')
-rw-r--r--video/out/opengl/video_shaders.c11
1 files changed, 3 insertions, 8 deletions
diff --git a/video/out/opengl/video_shaders.c b/video/out/opengl/video_shaders.c
index 854c829f1d..c0ca40b48e 100644
--- a/video/out/opengl/video_shaders.c
+++ b/video/out/opengl/video_shaders.c
@@ -217,18 +217,13 @@ void pass_sample_polar(struct gl_shader_cache *sc, struct scaler *scaler,
GLSLF("}\n");
}
+// bw/bh: block size
+// iw/ih: input size (pre-calculated to fit all required texels)
void pass_compute_polar(struct gl_shader_cache *sc, struct scaler *scaler,
- int components, int bw, int bh, float ratiox,
- float ratioy)
+ int components, int bw, int bh, int iw, int ih)
{
int bound = ceil(scaler->kernel->radius_cutoff);
int offset = bound - 1; // padding top/left
- int padding = offset + bound; // total padding
-
- // We need to sample everything from base_min to base_max, so make sure
- // we have enough space to fit all relevant texels in shmem
- int iw = (int)ceil(bw / ratiox) + padding + 1,
- ih = (int)ceil(bh / ratioy) + padding + 1;
GLSL(color = vec4(0.0);)
GLSLF("{\n");