libGL MultMatrixd implementation
Change-Id: Ia1bbe00c9538403b59c2960558b94bd4e7327189
Reviewed-on: https://swiftshader-review.googlesource.com/2520
Tested-by: Maxime Grégoire <mgregoire@google.com>
Reviewed-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <capn@google.com>
diff --git a/src/OpenGL/libGL/Context.cpp b/src/OpenGL/libGL/Context.cpp
index d1b36ea..ba6d2e5 100644
--- a/src/OpenGL/libGL/Context.cpp
+++ b/src/OpenGL/libGL/Context.cpp
@@ -3164,6 +3164,16 @@
currentMatrixStack().scale(x, y, z);
}
+void Context::multiply(const GLdouble *m)
+{
+ if(drawing)
+ {
+ return error(GL_INVALID_OPERATION);
+ }
+
+ currentMatrixStack().multiply(m);
+}
+
void Context::multiply(const GLfloat *m)
{
if(drawing)
diff --git a/src/OpenGL/libGL/Context.h b/src/OpenGL/libGL/Context.h
index 76c5ed5..ba3c285 100644
--- a/src/OpenGL/libGL/Context.h
+++ b/src/OpenGL/libGL/Context.h
@@ -681,6 +681,7 @@
void rotate(GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
void translate(GLfloat x, GLfloat y, GLfloat z);
void scale(GLfloat x, GLfloat y, GLfloat z);
+ void multiply(const GLdouble *m);
void multiply(const GLfloat *m);
void ortho(double left, double right, double bottom, double top, double zNear, double zFar); // FIXME: GLdouble
diff --git a/src/OpenGL/libGL/libGL.cpp b/src/OpenGL/libGL/libGL.cpp
index e1cc68f..8458b78 100644
--- a/src/OpenGL/libGL/libGL.cpp
+++ b/src/OpenGL/libGL/libGL.cpp
@@ -6759,7 +6759,19 @@
void APIENTRY glMultMatrixd(const GLdouble *m)
{
- UNIMPLEMENTED();
+ TRACE("(*)");
+
+ gl::Context *context = gl::getContext();
+
+ if(context)
+ {
+ if(context->getListIndex() != 0)
+ {
+ UNIMPLEMENTED();
+ }
+
+ context->multiply(m);
+ }
}
void APIENTRY glMultMatrixm(sw::Matrix m)