Bug 722831 - qcms_transform_precacheLUT_float only works with RGB data, so only call it in that case. Grayscale images would fail. r=bgirard
authorMilan Sreckovic <msreckovic@mozilla.com>
Fri, 08 Feb 2013 15:48:09 -0500
changeset 121540 a101d8932e912e50b9752cfca4f166f523695644
parent 121539 d91d6e2bc2587b4c6816574d0872bb3ae0bba746
child 121541 9e3a4589e251469070da5e605d08a54f86973e48
push id24296
push useremorley@mozilla.com
push dateTue, 12 Feb 2013 14:43:19 +0000
treeherdermozilla-central@860d7a47b675 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersbgirard
bugs722831
milestone21.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 722831 - qcms_transform_precacheLUT_float only works with RGB data, so only call it in that case. Grayscale images would fail. r=bgirard
gfx/qcms/transform.c
--- a/gfx/qcms/transform.c
+++ b/gfx/qcms/transform.c
@@ -1204,17 +1204,21 @@ qcms_transform* qcms_transform_create(
         }
 
 	if (out->output_table_r &&
 			out->output_table_g &&
 			out->output_table_b) {
 		precache = true;
 	}
 
-	if (qcms_supports_iccv4 && (in->A2B0 || out->B2A0 || in->mAB || out->mAB)) {
+	// This precache assumes RGB_SIGNATURE (fails on GRAY_SIGNATURE, for instance)
+	if (qcms_supports_iccv4 &&
+			(in_type == QCMS_DATA_RGB_8 || in_type == QCMS_DATA_RGBA_8) &&
+			(in->A2B0 || out->B2A0 || in->mAB || out->mAB))
+		{
 		// Precache the transformation to a CLUT 33x33x33 in size.
 		// 33 is used by many profiles and works well in pratice. 
 		// This evenly divides 256 into blocks of 8x8x8.
 		// TODO For transforming small data sets of about 200x200 or less
 		// precaching should be avoided.
 		qcms_transform *result = qcms_transform_precacheLUT_float(transform, in, out, 33, in_type);
 		if (!result) {
             		assert(0 && "precacheLUT failed");