Index: gm/yuvtorgbeffect.cpp |
diff --git a/gm/yuvtorgbeffect.cpp b/gm/yuvtorgbeffect.cpp |
index fb0c67d3d10240f59bd140690160470d726360fc..37af5e6c56dad04a1bca480bb1b81ca4504f81c5 100644 |
--- a/gm/yuvtorgbeffect.cpp |
+++ b/gm/yuvtorgbeffect.cpp |
@@ -19,6 +19,10 @@ |
#include "SkGr.h" |
#include "SkGradientShader.h" |
+#define YSIZE 8 |
+#define USIZE 4 |
+#define VSIZE 4 |
+ |
namespace skiagm { |
/** |
* This GM directly exercises GrYUVtoRGBEffect. |
@@ -35,14 +39,16 @@ protected: |
} |
SkISize onISize() SK_OVERRIDE { |
- return SkISize::Make(334, 128); |
+ return SkISize::Make(238, 84); |
} |
void onOnceBeforeDraw() SK_OVERRIDE { |
- SkImageInfo info = SkImageInfo::MakeA8(24, 24); |
- fBmp[0].allocPixels(info); |
- fBmp[1].allocPixels(info); |
- fBmp[2].allocPixels(info); |
+ SkImageInfo yinfo = SkImageInfo::MakeA8(YSIZE, YSIZE); |
+ fBmp[0].allocPixels(yinfo); |
+ SkImageInfo uinfo = SkImageInfo::MakeA8(USIZE, USIZE); |
+ fBmp[1].allocPixels(uinfo); |
+ SkImageInfo vinfo = SkImageInfo::MakeA8(VSIZE, VSIZE); |
+ fBmp[2].allocPixels(vinfo); |
unsigned char* pixels[3]; |
for (int i = 0; i < 3; ++i) { |
pixels[i] = (unsigned char*)fBmp[i].getPixels(); |
@@ -51,8 +57,9 @@ protected: |
const int limit[] = {255, 0, 255}; |
const int invl[] = {0, 255, 0}; |
const int inc[] = {1, -1, 1}; |
- for (int j = 0; j < 576; ++j) { |
- for (int i = 0; i < 3; ++i) { |
+ for (int i = 0; i < 3; ++i) { |
+ const size_t nbBytes = fBmp[i].rowBytes() * fBmp[i].height(); |
+ for (size_t j = 0; j < nbBytes; ++j) { |
pixels[i][j] = (unsigned char)color[i]; |
color[i] = (color[i] == limit[i]) ? invl[i] : color[i] + inc[i]; |
} |
@@ -88,7 +95,8 @@ protected: |
static const SkScalar kDrawPad = 10.f; |
static const SkScalar kTestPad = 10.f; |
- static const SkScalar kColorSpaceOffset = 64.f; |
+ static const SkScalar kColorSpaceOffset = 36.f; |
+ SkISize sizes[3] = {{YSIZE, YSIZE}, {USIZE, USIZE}, {VSIZE, VSIZE}}; |
for (int space = kJPEG_SkYUVColorSpace; space <= kLastEnum_SkYUVColorSpace; |
++space) { |
@@ -105,9 +113,10 @@ protected: |
for (int i = 0; i < 6; ++i) { |
SkAutoTUnref<GrFragmentProcessor> fp( |
GrYUVtoRGBEffect::Create(texture[indices[i][0]], |
- texture[indices[i][1]], |
- texture[indices[i][2]], |
- static_cast<SkYUVColorSpace>(space))); |
+ texture[indices[i][1]], |
+ texture[indices[i][2]], |
+ sizes, |
+ static_cast<SkYUVColorSpace>(space))); |
if (fp) { |
SkMatrix viewMatrix; |
viewMatrix.setTranslate(x, y); |