glsl: double-precision values don't support interpolation
ARB_gpu_shader_fp64 spec says:
"This extension does not support interpolation of double-precision
values; doubles used as fragment shader inputs must be qualified as
"flat"."
Fixes the regressions added by commit 781d278
:
arb_gpu_shader_fp64-double-gettransformfeedbackvarying
arb_gpu_shader_fp64-tf-interleaved
arb_gpu_shader_fp64-tf-interleaved-aligned
arb_gpu_shader_fp64-tf-separate
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=93878
Signed-off-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
This commit is contained in:
@@ -967,11 +967,16 @@ varying_matches::record(ir_variable *producer_var, ir_variable *consumer_var)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((consumer_var == NULL && producer_var->type->contains_integer()) ||
|
bool needs_flat_qualifier = consumer_var == NULL &&
|
||||||
|
(producer_var->type->contains_integer() ||
|
||||||
|
producer_var->type->contains_double());
|
||||||
|
|
||||||
|
if (needs_flat_qualifier ||
|
||||||
(consumer_stage != -1 && consumer_stage != MESA_SHADER_FRAGMENT)) {
|
(consumer_stage != -1 && consumer_stage != MESA_SHADER_FRAGMENT)) {
|
||||||
/* Since this varying is not being consumed by the fragment shader, its
|
/* Since this varying is not being consumed by the fragment shader, its
|
||||||
* interpolation type varying cannot possibly affect rendering.
|
* interpolation type varying cannot possibly affect rendering.
|
||||||
* Also, this variable is non-flat and is (or contains) an integer.
|
* Also, this variable is non-flat and is (or contains) an integer
|
||||||
|
* or a double.
|
||||||
* If the consumer stage is unknown, don't modify the interpolation
|
* If the consumer stage is unknown, don't modify the interpolation
|
||||||
* type as it could affect rendering later with separate shaders.
|
* type as it could affect rendering later with separate shaders.
|
||||||
*
|
*
|
||||||
|
Reference in New Issue
Block a user