glsl: lower mediump partial derivatives
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com> Reviewed-by: Rob Clark <robdclark@chromium.org> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5002>
This commit is contained in:
parent
6fe20ebaaa
commit
1192989533
|
@ -399,12 +399,13 @@ find_lowerable_rvalues_visitor::visit_enter(ir_expression *ir)
|
|||
stack.back().state = CANT_LOWER;
|
||||
|
||||
/* Don't lower precision for derivative calculations */
|
||||
if (ir->operation == ir_unop_dFdx ||
|
||||
ir->operation == ir_unop_dFdx_coarse ||
|
||||
ir->operation == ir_unop_dFdx_fine ||
|
||||
ir->operation == ir_unop_dFdy ||
|
||||
ir->operation == ir_unop_dFdy_coarse ||
|
||||
ir->operation == ir_unop_dFdy_fine) {
|
||||
if (!options->LowerPrecisionDerivatives &&
|
||||
(ir->operation == ir_unop_dFdx ||
|
||||
ir->operation == ir_unop_dFdx_coarse ||
|
||||
ir->operation == ir_unop_dFdx_fine ||
|
||||
ir->operation == ir_unop_dFdy ||
|
||||
ir->operation == ir_unop_dFdy_coarse ||
|
||||
ir->operation == ir_unop_dFdy_fine)) {
|
||||
stack.back().state = CANT_LOWER;
|
||||
}
|
||||
|
||||
|
|
|
@ -440,6 +440,7 @@ standalone_compile_shader(const struct standalone_options *_options,
|
|||
&ctx->Const.ShaderCompilerOptions[i];
|
||||
options->LowerPrecisionFloat16 = true;
|
||||
options->LowerPrecisionInt16 = true;
|
||||
options->LowerPrecisionDerivatives = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1035,6 +1035,34 @@ TESTS = [
|
|||
}
|
||||
""",
|
||||
r'\(expression +uint16_t min'),
|
||||
Test("dFdx",
|
||||
"""
|
||||
#version 300 es
|
||||
precision mediump float;
|
||||
|
||||
in vec4 var;
|
||||
out vec4 color;
|
||||
|
||||
void main()
|
||||
{
|
||||
color = dFdx(var);
|
||||
}
|
||||
""",
|
||||
r'\(expression +f16vec4 +dFdx +\(expression +f16vec4'),
|
||||
Test("dFdy",
|
||||
"""
|
||||
#version 300 es
|
||||
precision mediump float;
|
||||
|
||||
in vec4 var;
|
||||
out vec4 color;
|
||||
|
||||
void main()
|
||||
{
|
||||
color = dFdy(var);
|
||||
}
|
||||
""",
|
||||
r'\(expression +f16vec4 +dFdy +\(expression +f16vec4'),
|
||||
]
|
||||
|
||||
|
||||
|
|
|
@ -3208,6 +3208,7 @@ struct gl_shader_compiler_options
|
|||
*/
|
||||
GLboolean LowerPrecisionFloat16;
|
||||
GLboolean LowerPrecisionInt16;
|
||||
GLboolean LowerPrecisionDerivatives;
|
||||
|
||||
/**
|
||||
* \name Forms of indirect addressing the driver cannot do.
|
||||
|
|
Loading…
Reference in New Issue