From 769783ca5229e3869114f5b58662bc3a7791b9c0 Mon Sep 17 00:00:00 2001 From: Nicolas Capens Date: Fri, 7 Aug 2015 17:40:13 -0400 Subject: [PATCH] Implement glLoadMatrixx() and glMultMatrixx(). Bug 21499847 Change-Id: I245a624cad7c47af9d93844d4ae272c873b42008 Reviewed-on: https://swiftshader-review.googlesource.com/3820 Reviewed-by: Nicolas Capens Tested-by: Nicolas Capens --- src/OpenGL/libGLES_CM/libGLES_CM.cpp | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/OpenGL/libGLES_CM/libGLES_CM.cpp b/src/OpenGL/libGLES_CM/libGLES_CM.cpp index ce13d2817..1951dd9ef 100644 --- a/src/OpenGL/libGLES_CM/libGLES_CM.cpp +++ b/src/OpenGL/libGLES_CM/libGLES_CM.cpp @@ -2860,7 +2860,15 @@ void LoadMatrixf(const GLfloat *m) void LoadMatrixx(const GLfixed *m) { - UNIMPLEMENTED(); + GLfloat matrix[16] = + { + (float)m[0] / 0x10000, (float)m[1] / 0x10000, (float)m[2] / 0x10000, (float)m[3] / 0x10000, + (float)m[4] / 0x10000, (float)m[5] / 0x10000, (float)m[6] / 0x10000, (float)m[7] / 0x10000, + (float)m[8] / 0x10000, (float)m[9] / 0x10000, (float)m[10] / 0x10000, (float)m[11] / 0x10000, + (float)m[12] / 0x10000, (float)m[13] / 0x10000, (float)m[14] / 0x10000, (float)m[15] / 0x10000 + }; + + LoadMatrixf(matrix); } void LogicOp(GLenum opcode) @@ -3008,7 +3016,15 @@ void MultMatrixf(const GLfloat *m) void MultMatrixx(const GLfixed *m) { - UNIMPLEMENTED(); + GLfloat matrix[16] = + { + (float)m[0] / 0x10000, (float)m[1] / 0x10000, (float)m[2] / 0x10000, (float)m[3] / 0x10000, + (float)m[4] / 0x10000, (float)m[5] / 0x10000, (float)m[6] / 0x10000, (float)m[7] / 0x10000, + (float)m[8] / 0x10000, (float)m[9] / 0x10000, (float)m[10] / 0x10000, (float)m[11] / 0x10000, + (float)m[12] / 0x10000, (float)m[13] / 0x10000, (float)m[14] / 0x10000, (float)m[15] / 0x10000 + }; + + MultMatrixf(matrix); } void MultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) -- 2.11.0