diff options
Diffstat (limited to 'src/gpu/mtl/GrMtlCaps.mm')
-rw-r--r-- | src/gpu/mtl/GrMtlCaps.mm | 30 |
1 files changed, 10 insertions, 20 deletions
diff --git a/src/gpu/mtl/GrMtlCaps.mm b/src/gpu/mtl/GrMtlCaps.mm index 0bb7530fe2..2bce74a261 100644 --- a/src/gpu/mtl/GrMtlCaps.mm +++ b/src/gpu/mtl/GrMtlCaps.mm @@ -121,7 +121,7 @@ void GrMtlCaps::initGrCaps(const id<MTLDevice> device) { fMaxTextureSize = fMaxRenderTargetSize; // Init sample counts. All devices support 1 (i.e. 0 in skia). - fSampleCounts.push(1); + fSampleCounts.push(0); for (auto sampleCnt : {2, 4, 8}) { if ([device supportsTextureSampleCount:sampleCnt]) { fSampleCounts.push(sampleCnt); @@ -164,29 +164,19 @@ void GrMtlCaps::initGrCaps(const id<MTLDevice> device) { fCrossContextTextureSupport = false; } - -int GrMtlCaps::maxRenderTargetSampleCount(GrPixelConfig config) const { - if (fConfigTable[config].fFlags & ConfigInfo::kMSAA_Flag) { - return fSampleCounts[fSampleCounts.count() - 1]; - } else if (fConfigTable[config].fFlags & ConfigInfo::kRenderable_Flag) { - return 1; +int GrMtlCaps::getSampleCount(int requestedCount, GrPixelConfig config) const { + int count = fSampleCounts.count(); + SkASSERT(count > 0); // We always add 0 as a valid sample count + if (!this->isConfigRenderable(config, true)) { + return 0; } - return 0; -} -int GrMtlCaps::getRenderTargetSampleCount(int requestedCount, GrPixelConfig config) const { - requestedCount = SkTMax(requestedCount, 1); - if (fConfigTable[config].fFlags & ConfigInfo::kMSAA_Flag) { - int count = fSampleCounts.count(); - for (int i = 0; i < count; ++i) { - if (fSampleCounts[i] >= requestedCount) { - return fSampleCounts[i]; - } + for (int i = 0; i < count; ++i) { + if (fSampleCounts[i] >= requestedCount) { + return fSampleCounts[i]; } - } else if (fConfigTable[config].fFlags & ConfigInfo::kRenderable_Flag) { - return 1 == requestedCount ? 1 : 0; } - return 0; + return fSampleCounts[count-1]; } void GrMtlCaps::initShaderCaps() { |