aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/GpuSampleLocationsTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/GpuSampleLocationsTest.cpp')
-rw-r--r--tests/GpuSampleLocationsTest.cpp30
1 files changed, 22 insertions, 8 deletions
diff --git a/tests/GpuSampleLocationsTest.cpp b/tests/GpuSampleLocationsTest.cpp
index de15e03389..5530539e68 100644
--- a/tests/GpuSampleLocationsTest.cpp
+++ b/tests/GpuSampleLocationsTest.cpp
@@ -109,22 +109,36 @@ void assert_equal(skiatest::Reporter* reporter, const SamplePattern& pattern,
}
}
+static int pick_random_sample_count(int testPatternSize, SkRandom* rand, const GrCaps* caps) {
+ GrAlwaysAssert(testPatternSize > 1 && SkIsPow2(testPatternSize));
+ int randSampCnt = rand->nextRangeU(1 + testPatternSize / 2, testPatternSize);
+ do {
+ int cnt = caps->getSampleCount(randSampCnt, kRGBA_8888_GrPixelConfig);
+ if (cnt) {
+ return cnt;
+ }
+ --randSampCnt;
+ } while (randSampCnt);
+ // This test assumes an MSAA kRGBA_8888 RTC can be created.
+ GrAlwaysAssert(false);
+ return 0;
+}
+
void test_sampleLocations(skiatest::Reporter* reporter, TestSampleLocationsInterface* testInterface,
GrContext* ctx) {
SkRandom rand;
sk_sp<GrRenderTargetContext> bottomUps[numTestPatterns];
sk_sp<GrRenderTargetContext> topDowns[numTestPatterns];
for (int i = 0; i < numTestPatterns; ++i) {
- int numSamples = (int)kTestPatterns[i].size();
- GrAlwaysAssert(numSamples > 1 && SkIsPow2(numSamples));
+ int patternSize = (int)kTestPatterns[i].size();
+ int randNumSamples = pick_random_sample_count(patternSize, &rand, ctx->caps());
bottomUps[i] = ctx->makeDeferredRenderTargetContext(
- SkBackingFit::kExact, 100, 100, kRGBA_8888_GrPixelConfig, nullptr,
- rand.nextRangeU(1 + numSamples / 2, numSamples), GrMipMapped::kNo,
- kBottomLeft_GrSurfaceOrigin);
+ SkBackingFit::kExact, 100, 100, kRGBA_8888_GrPixelConfig, nullptr, randNumSamples,
+ GrMipMapped::kNo, kBottomLeft_GrSurfaceOrigin);
+ randNumSamples = pick_random_sample_count(patternSize, &rand, ctx->caps());
topDowns[i] = ctx->makeDeferredRenderTargetContext(
- SkBackingFit::kExact, 100, 100, kRGBA_8888_GrPixelConfig, nullptr,
- rand.nextRangeU(1 + numSamples / 2, numSamples), GrMipMapped::kNo,
- kTopLeft_GrSurfaceOrigin);
+ SkBackingFit::kExact, 100, 100, kRGBA_8888_GrPixelConfig, nullptr, randNumSamples,
+ GrMipMapped::kNo, kTopLeft_GrSurfaceOrigin);
}
// Ensure all sample locations get queried and/or cached properly.