diff --git a/.pick_status.json b/.pick_status.json index 9beb773c3ad..5774cb8b6d5 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1732,7 +1732,7 @@ "description": "glsl/nir: Don't build soft float64 when it cannot be used", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "82d9a37a59c94ba3678b33acb9f2749cbbd7bfcc" }, diff --git a/src/compiler/glsl/glsl_to_nir.cpp b/src/compiler/glsl/glsl_to_nir.cpp index c3a5bba80c3..bc722a32450 100644 --- a/src/compiler/glsl/glsl_to_nir.cpp +++ b/src/compiler/glsl/glsl_to_nir.cpp @@ -39,6 +39,7 @@ #include "main/errors.h" #include "main/mtypes.h" #include "main/shaderobj.h" +#include "main/context.h" #include "util/u_math.h" /* @@ -2622,6 +2623,13 @@ nir_shader * glsl_float64_funcs_to_nir(struct gl_context *ctx, const nir_shader_compiler_options *options) { + /* It's not possible to use float64 on GLSL ES, so don't bother trying to + * build the support code. The support code depends on higher versions of + * desktop GLSL, so it will fail to compile (below) anyway. + */ + if (!_mesa_is_desktop_gl(ctx) || ctx->Const.GLSLVersion < 400) + return NULL; + /* We pretend it's a vertex shader. Ultimately, the stage shouldn't * matter because we're not optimizing anything here. */