glsl: don't lower precision of textureSize
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5746>
This commit is contained in:
parent
977b84652a
commit
69f7a3dac6
|
@ -457,6 +457,10 @@ is_lowerable_builtin(ir_call *ir,
|
||||||
* uses lower precision. The function parameters don't matter.
|
* uses lower precision. The function parameters don't matter.
|
||||||
*/
|
*/
|
||||||
if (var && var->type->without_array()->is_sampler()) {
|
if (var && var->type->without_array()->is_sampler()) {
|
||||||
|
/* textureSize always returns highp. */
|
||||||
|
if (!strcmp(ir->callee_name(), "textureSize"))
|
||||||
|
return false;
|
||||||
|
|
||||||
return var->data.precision == GLSL_PRECISION_MEDIUM ||
|
return var->data.precision == GLSL_PRECISION_MEDIUM ||
|
||||||
var->data.precision == GLSL_PRECISION_LOW;
|
var->data.precision == GLSL_PRECISION_LOW;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1161,6 +1161,21 @@ TESTS = [
|
||||||
}
|
}
|
||||||
""",
|
""",
|
||||||
r'\(expression +f16vec4 +dFdy +\(expression +f16vec4'),
|
r'\(expression +f16vec4 +dFdy +\(expression +f16vec4'),
|
||||||
|
Test("textureSize",
|
||||||
|
"""
|
||||||
|
#version 310 es
|
||||||
|
precision mediump float;
|
||||||
|
precision mediump int;
|
||||||
|
|
||||||
|
uniform mediump sampler2D tex;
|
||||||
|
out ivec2 color;
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
color = textureSize(tex, 0) * ivec2(2);
|
||||||
|
}
|
||||||
|
""",
|
||||||
|
r'expression ivec2 \* \(txs ivec2 \(var_ref tex'),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue