Bug 1248580 - handle gl.UniformMatrixXfv() function uploading element size. r=jgilbert
authorJerryShih <hshih@mozilla.com>
Wed, 25 May 2016 16:28:00 +0200
changeset 298991 b052acfa6f28fead5644e41f5fb8795f7cdc3683
parent 298990 7e26c1d13046e6e69de1a47d7e9026ff645a0f5e
child 298992 ef9331b59ca8847b0162902dc11d805a301e1c7a
push id30286
push userkwierso@gmail.com
push dateWed, 25 May 2016 22:33:39 +0000
treeherdermozilla-central@1012461fa7bb [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersjgilbert
bugs1248580
milestone49.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1248580 - handle gl.UniformMatrixXfv() function uploading element size. r=jgilbert
dom/canvas/WebGLContextValidate.cpp
--- a/dom/canvas/WebGLContextValidate.cpp
+++ b/dom/canvas/WebGLContextValidate.cpp
@@ -525,19 +525,21 @@ WebGLContext::ValidateUniformMatrixArray
         return false;
 
     if (!loc->ValidateArrayLength(setterElemSize, setterArraySize, this, funcName))
         return false;
 
     if (!ValidateUniformMatrixTranspose(setterTranspose, funcName))
         return false;
 
+    MOZ_ASSERT((size_t)loc->mActiveInfo->mElemCount > loc->mArrayIndex);
+    size_t uniformElemCount = loc->mActiveInfo->mElemCount - loc->mArrayIndex;
     *out_rawLoc = loc->mLoc;
-    *out_numElementsToUpload = std::min((size_t)loc->mActiveInfo->mElemCount,
-                                        setterArraySize / setterElemSize);
+    *out_numElementsToUpload = std::min(uniformElemCount, setterArraySize / setterElemSize);
+
     return true;
 }
 
 bool
 WebGLContext::ValidateAttribIndex(GLuint index, const char* info)
 {
     bool valid = (index < MaxVertexAttribs());