enum pipe_shader_cap param)
{
bool is_deqp = pan_debug & PAN_DBG_DEQP;
+ struct panfrost_device *dev = pan_device(screen);
if (shader != PIPE_SHADER_VERTEX &&
shader != PIPE_SHADER_FRAGMENT &&
case PIPE_SHADER_CAP_INTEGERS:
return 1;
- case PIPE_SHADER_CAP_INT64_ATOMICS:
case PIPE_SHADER_CAP_FP16:
+ return !(dev->quirks & MIDGARD_BROKEN_FP16);
+
+ case PIPE_SHADER_CAP_INT64_ATOMICS:
case PIPE_SHADER_CAP_TGSI_DROUND_SUPPORTED:
case PIPE_SHADER_CAP_TGSI_DFRACEXP_DLDEXP_SUPPORTED:
case PIPE_SHADER_CAP_TGSI_LDEXP_SUPPORTED:
#define MIDGARD_SFBD (1 << 1)
+/* Whether fp16 is broken in the compiler. Hopefully this quirk will go away
+ * over time */
+
+#define MIDGARD_BROKEN_FP16 (1 << 2)
+
/* Quirk collections common to particular uarchs */
-#define MIDGARD_QUIRKS (0)
+#define MIDGARD_QUIRKS (MIDGARD_BROKEN_FP16)
#define BIFROST_QUIRKS (0)