1
0
mirror of https://github.com/mpv-player/mpv synced 2025-04-01 00:07:33 +00:00

vo_opengl: make size of OUTPUT available to user shaders

This commit is contained in:
Bin Jin 2016-06-11 23:42:59 +00:00 committed by wm4
parent 0b082b2086
commit 3d844cddf8
2 changed files with 12 additions and 3 deletions

View File

@ -747,9 +747,9 @@ Available video output drivers are:
Specifies the size of the resulting texture for this pass.
``szexpr`` refers to an expression in RPN (reverse polish
notation), using the operators + - * / > < !, floating point
literals, and references to existing texture sizes such as
MAIN.width or CHROMA.height. By default, these are set to HOOKED.w
and HOOKED.h, respectively.
literals, and references to sizes of existing texture and OUTPUT
(such as MAIN.width or CHROMA.height). By default, these are set to
HOOKED.w and HOOKED.h, respectively.
WHEN <szexpr>
Specifies a condition that needs to be true (non-zero) for the

View File

@ -1688,6 +1688,15 @@ static bool eval_szexpr(struct gl_video *p, struct img_tex tex,
struct bstr name = expr[i].val.varname;
struct img_tex var_tex;
// The size of OUTPUT is determined. It could be useful for certain
// user shaders to skip passes.
if (bstr_equals0(name, "OUTPUT")) {
int vp_w = p->dst_rect.x1 - p->dst_rect.x0;
int vp_h = p->dst_rect.y1 - p->dst_rect.y0;
stack[idx++] = (expr[i].tag == SZEXP_VAR_W) ? vp_w : vp_h;
continue;
}
// HOOKED is a special case
if (bstr_equals0(name, "HOOKED")) {
var_tex = tex;