Index: cc/resources/texture_compressor_perftest.cc |
diff --git a/cc/resources/texture_compressor_perftest.cc b/cc/resources/texture_compressor_perftest.cc |
index 7d68bd6f5f3d9415e2d14de53de87fd4f860935f..d2ad5bcc21aea0142a7390351dcb9c4a7994fcd9 100644 |
--- a/cc/resources/texture_compressor_perftest.cc |
+++ b/cc/resources/texture_compressor_perftest.cc |
@@ -17,12 +17,8 @@ const int kTimeCheckInterval = 10; |
const int kImageWidth = 256; |
const int kImageHeight = 256; |
-const int kImageSizeInBytes = kImageWidth * kImageHeight * 4; |
- |
-const TextureCompressor::Quality kQualities[] = { |
- TextureCompressor::kQualityLow, |
- TextureCompressor::kQualityMedium, |
- TextureCompressor::kQualityHigh}; |
+const int kImageChannels = 4; |
+const int kImageSizeInBytes = kImageWidth * kImageHeight * kImageChannels; |
std::string FormatName(TextureCompressor::Format format) { |
switch (format) { |
@@ -49,7 +45,9 @@ std::string QualityName(TextureCompressor::Quality quality) { |
} |
class TextureCompressorPerfTest |
- : public testing::TestWithParam<TextureCompressor::Format> { |
+ : public testing::TestWithParam< |
+ ::testing::tuple<TextureCompressor::Quality, |
+ TextureCompressor::Format>> { |
public: |
TextureCompressorPerfTest() |
: timer_(kWarmupRuns, |
@@ -57,18 +55,20 @@ class TextureCompressorPerfTest |
kTimeCheckInterval) {} |
void SetUp() override { |
- TextureCompressor::Format format = GetParam(); |
+ TextureCompressor::Format format = ::testing::get<1>(GetParam()); |
compressor_ = TextureCompressor::Create(format); |
} |
- void RunTest(const std::string& name, TextureCompressor::Quality quality) { |
+ void RunTest(const std::string& name) { |
+ TextureCompressor::Quality quality = ::testing::get<0>(GetParam()); |
timer_.Reset(); |
do { |
compressor_->Compress(src_, dst_, kImageWidth, kImageHeight, quality); |
timer_.NextLap(); |
} while (!timer_.HasTimeLimitExpired()); |
- std::string str = FormatName(GetParam()) + " " + QualityName(quality); |
+ TextureCompressor::Format format = ::testing::get<1>(GetParam()); |
+ std::string str = FormatName(format) + " " + QualityName(quality); |
perf_test::PrintResult("Compress256x256", name, str, timer_.MsPerLap(), |
"us", true); |
} |
@@ -80,24 +80,42 @@ class TextureCompressorPerfTest |
uint8_t dst_[kImageSizeInBytes]; |
}; |
-TEST_P(TextureCompressorPerfTest, Compress256x256Image) { |
+TEST_P(TextureCompressorPerfTest, Compress256x256BlackAndWhiteGradientImage) { |
for (int i = 0; i < kImageSizeInBytes; ++i) |
src_[i] = i % 256; |
- for (auto& quality : kQualities) |
- RunTest("Image", quality); |
+ RunTest("BlackAndWhiteGradientImage"); |
} |
-TEST_P(TextureCompressorPerfTest, Compress256x256SolidImage) { |
+TEST_P(TextureCompressorPerfTest, Compress256x256SolidBlackImage) { |
memset(src_, 0, kImageSizeInBytes); |
- for (auto& quality : kQualities) |
- RunTest("SolidImage", quality); |
+ RunTest("SolidBlackImage"); |
+} |
+ |
+TEST_P(TextureCompressorPerfTest, Compress256x256SolidColorImage) { |
+ for (int i = 0; i < kImageSizeInBytes; ++i) |
+ src_[i] = (4 - i % 4) * 50; |
+ |
+ RunTest("SolidColorImage"); |
+} |
+ |
+TEST_P(TextureCompressorPerfTest, Compress256x256RandomColorImage) { |
+ unsigned int kImageSeed = 1234567890; |
+ srand(kImageSeed); |
Lei Zhang
2015/05/25 22:31:58
Why not just use the appropriate functions from ba
reveman
2015/05/26 15:50:21
I think we want pseudo random numbers here as real
|
+ for (int i = 0; i < kImageSizeInBytes; ++i) |
+ src_[i] = rand() % 256; // NOLINT |
+ |
+ RunTest("RandomColorImage"); |
} |
-INSTANTIATE_TEST_CASE_P(TextureCompressorPerfTests, |
- TextureCompressorPerfTest, |
- ::testing::Values(TextureCompressor::kFormatETC1)); |
+INSTANTIATE_TEST_CASE_P( |
+ TextureCompressorPerfTests, |
+ TextureCompressorPerfTest, |
+ ::testing::Combine(::testing::Values(TextureCompressor::kQualityLow, |
+ TextureCompressor::kQualityMedium, |
+ TextureCompressor::kQualityHigh), |
+ ::testing::Values(TextureCompressor::kFormatETC1))); |
} // namespace |
} // namespace cc |