+ // Result was written to color buffer
+ else
+ {
+ const ConstPixelBufferAccess imgAccess (vk::mapVkFormat(m_rtFormat), RENDER_WIDTH, RENDER_HEIGHT, 1, m_readImageMem->getHostPtr());
+ const DataType dataType = m_spec.values.outputs[0].type.getBasicType();
+ const int numComponents = getDataTypeScalarSize(dataType);
+ tcu::IVec4 reference (0, 0, 0, 1);
+
+ for (int refNdx = 0; refNdx < numComponents; refNdx++)
+ {
+ if (isDataTypeFloatOrVec(dataType))
+ reference[refNdx] = (int)m_spec.values.outputs[0].elements[m_subCaseNdx * numComponents + refNdx].float32;
+ else if (isDataTypeIntOrIVec(dataType))
+ reference[refNdx] = m_spec.values.outputs[0].elements[m_subCaseNdx * numComponents + refNdx].int32;
+ else
+ DE_FATAL("Unknown data type");
+ }
+
+ invalidateMappedMemoryRange(vkd, device, m_readImageMem->getMemory(), m_readImageMem->getOffset(), (vk::VkDeviceSize)(RENDER_WIDTH * RENDER_HEIGHT * tcu::getPixelSize(vk::mapVkFormat(m_rtFormat))));
+
+ if (!checkResultImageWithReference(imgAccess, reference))
+ {
+ TestLog& log = m_context.getTestContext().getLog();
+
+ log << TestLog::Message << "ERROR: Got nonmatching pixels on sub-case " << m_subCaseNdx << TestLog::EndMessage
+ << TestLog::Image("Result", "Result", imgAccess);
+
+ dumpValues(log, m_spec.values, m_subCaseNdx);
+
+ return TestStatus::fail(string("Got invalid pixels at sub-case ") + de::toString(m_subCaseNdx));
+ }
+ }
+