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.
|
||||
*/
|
||||
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 ||
|
||||
var->data.precision == GLSL_PRECISION_LOW;
|
||||
}
|
||||
|
|
|
@ -1161,6 +1161,21 @@ TESTS = [
|
|||
}
|
||||
""",
|
||||
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