diff --git a/src/mapi/glapi/gen/EXT_direct_state_access.xml b/src/mapi/glapi/gen/EXT_direct_state_access.xml
index 620a09b9613..e152f0139eb 100644
--- a/src/mapi/glapi/gen/EXT_direct_state_access.xml
+++ b/src/mapi/glapi/gen/EXT_direct_state_access.xml
@@ -26,7 +26,8 @@
-
+
diff --git a/src/mesa/main/matrix.c b/src/mesa/main/matrix.c
index ec0df4dd9cf..aefd7658ba5 100644
--- a/src/mesa/main/matrix.c
+++ b/src/mesa/main/matrix.c
@@ -569,7 +569,9 @@ static void
matrix_mult(struct gl_matrix_stack *stack, const GLfloat *m, const char* caller)
{
GET_CURRENT_CONTEXT(ctx);
- if (!m || _mesa_matrix_is_identity(m))
+
+ /* glthread filters out identity matrices, so don't do it again. */
+ if (!m || (!ctx->GLThread.enabled && _mesa_matrix_is_identity(m)))
return;
if (MESA_VERBOSE & VERBOSE_API)