ir_constant_expression: Add support for builtins dFdx, dFdy, and fwidth.
These always return zero (the derivative of a constant).
diff --git a/src/glsl/ir_constant_expression.cpp b/src/glsl/ir_constant_expression.cpp
index aa53d8d..641589e 100644
--- a/src/glsl/ir_constant_expression.cpp
+++ b/src/glsl/ir_constant_expression.cpp
@@ -812,7 +812,7 @@
} else if (strcmp(callee, "atan") == 0) {
return NULL; /* FINISHME: implement this */
} else if (strcmp(callee, "dFdx") == 0 || strcmp(callee, "dFdy") == 0) {
- return NULL; /* FINISHME: implement this */
+ return ir_constant::zero(mem_ctx, this->type);
} else if (strcmp(callee, "ceil") == 0) {
return NULL; /* FINISHME: implement this */
} else if (strcmp(callee, "clamp") == 0) {
@@ -842,7 +842,7 @@
} else if (strcmp(callee, "fract") == 0) {
return NULL; /* FINISHME: implement this */
} else if (strcmp(callee, "fwidth") == 0) {
- return NULL; /* FINISHME: implement this */
+ return ir_constant::zero(mem_ctx, this->type);
} else if (strcmp(callee, "greaterThan") == 0) {
return NULL; /* FINISHME: implement this */
} else if (strcmp(callee, "greaterThanEqual") == 0) {