Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(76)

Unified Diff: experimental/skpdiff/SkImageDiffer.h

Issue 16284007: add skpdiff tool to compare bitmaps (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: experimental/skpdiff/SkImageDiffer.h
diff --git a/experimental/skpdiff/SkImageDiffer.h b/experimental/skpdiff/SkImageDiffer.h
new file mode 100644
index 0000000000000000000000000000000000000000..6608feb48220fb0a1ef0bdb6dcad287fd020512a
--- /dev/null
+++ b/experimental/skpdiff/SkImageDiffer.h
@@ -0,0 +1,107 @@
+#ifndef SkImageDiffer_DEFINED
djsollen 2013/06/12 13:32:04 add the standard google copyright at the top of th
Zach Reizner 2013/06/12 21:57:47 Done.
+#define SkImageDiffer_DEFINED
+
+#include <CL/cl.h>
+#include "SkTDArray.h"
+
+
+class SkBitmap;
+class SkStream;
+
+struct RunProfile {
djsollen 2013/06/12 13:32:04 remove this
Zach Reizner 2013/06/12 21:57:47 Done.
+
+};
+
+struct QueuedDiff {
djsollen 2013/06/12 13:32:04 Does this need to exist or can it be folded into L
Zach Reizner 2013/06/12 21:57:47 Done.
+ bool finished;
+ double result;
+};
+
+class ImageDiffer {
bsalomon 2013/06/12 13:55:11 Comments describing these classes would be really
bsalomon 2013/06/12 13:55:11 Should probably be SkImageDiffer
Zach Reizner 2013/06/12 21:57:47 Done.
+public:
+ ImageDiffer();
+ virtual ~ImageDiffer();
+
+ virtual const char* getName() = 0;
+
+ bool isGood() { return fIsGood; }
+
+ int queueDiffOfFile(const char baseline[], const char test[]);
djsollen 2013/06/12 13:32:04 to be consistent wit the rest of skia use const ch
bsalomon 2013/06/12 13:55:11 Is our rule const char* for null term strings? We
Zach Reizner 2013/06/12 21:57:47 I saw const char[] in the sources I was copying st
+
+ virtual int queueDiff(SkBitmap * baseline, SkBitmap * test) = 0;
djsollen 2013/06/12 13:32:04 no space -- SkBitmap* also add comment about what
Zach Reizner 2013/06/12 21:57:47 Done.
+
+ /**
+ * Gets whether a queued diff of the given id has finished
+ * @param id The id of the queued diff to query
+ * @return True if the queued diff is finished and has results, false otherwise
+ */
+ virtual bool isFinished(int id) = 0;
+
+ /**
+ * Gets the results of the queued diff of the given id. The results are only meaningful after
+ * the queued diff has finished.
+ * @param id The id of the queued diff to query
+ * @return A score between of how different the compared images are, with lower numbers being
+ * more different.
+ */
+ virtual double getResult(int id) = 0;
+
+protected:
+ bool fIsGood;
+};
+
+
+
+class CLImageDiffer : public ImageDiffer {
djsollen 2013/06/12 13:32:04 So at first glance I would move this and Different
Zach Reizner 2013/06/12 21:57:47 Done.
+public:
+ CLImageDiffer();
+ virtual bool init(cl_device_id device, cl_context context) SK_OVERRIDE;
+
+protected:
+ virtual bool onInit() = 0;
+
+ bool loadKernelFile(const char file[], const char name[], cl_kernel* kernel);
+ bool loadKernelStream(SkStream* stream, const char name[], cl_kernel* kernel);
+ bool loadKernelSource(const char source[], const char name[], cl_kernel* kernel);
+
+ bool makeImage2D(SkBitmap* bitmap, cl_mem* image);
+
+ cl_device_id fDevice;
+ cl_context fContext;
+ cl_command_queue fCommandQueue;
+private:
bsalomon 2013/06/12 13:55:11 skia style is to have a \n before public, private,
Zach Reizner 2013/06/12 21:57:47 Done.
+
+
+
+ typedef ImageDiffer INHERITED;
+};
+
+
+
+
+class DifferentPixelsImageDiffer : public CLImageDiffer {
+public:
+ virtual const char* getName() SK_OVERRIDE;
+ virtual int queueDiff(SkBitmap * baseline, SkBitmap * test) SK_OVERRIDE;
+ virtual bool isFinished(int id) SK_OVERRIDE;
+ virtual double getResult(int id) SK_OVERRIDE;
+
+protected:
+ virtual bool onInit() SK_OVERRIDE;
+
+private:
+ struct LocalQueuedDiff : public QueuedDiff
+ {
bsalomon 2013/06/12 13:55:11 { goes on prev line
Zach Reizner 2013/06/12 21:57:47 Done.
+ cl_mem baseline;
+ cl_mem test;
+ cl_mem resultsBuffer;
+ };
+
+
+ SkTDArray<LocalQueuedDiff> fQueuedDiffs;
+ cl_kernel fKernel;
+
+ typedef CLImageDiffer INHERITED;
+};
+
+#endif

Powered by Google App Engine
This is Rietveld 408576698