Chromium Code Reviews| 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 |