aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/mtl/GrMtlCaps.mm
diff options
context:
space:
mode:
Diffstat (limited to 'src/gpu/mtl/GrMtlCaps.mm')
-rw-r--r--src/gpu/mtl/GrMtlCaps.mm30
1 files changed, 20 insertions, 10 deletions
diff --git a/src/gpu/mtl/GrMtlCaps.mm b/src/gpu/mtl/GrMtlCaps.mm
index 2bce74a261..0bb7530fe2 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(0);
+ fSampleCounts.push(1);
for (auto sampleCnt : {2, 4, 8}) {
if ([device supportsTextureSampleCount:sampleCnt]) {
fSampleCounts.push(sampleCnt);
@@ -164,19 +164,29 @@ void GrMtlCaps::initGrCaps(const id<MTLDevice> device) {
fCrossContextTextureSupport = false;
}
-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;
+
+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;
}
+ return 0;
+}
- for (int i = 0; i < count; ++i) {
- if (fSampleCounts[i] >= requestedCount) {
- return fSampleCounts[i];
+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];
+ }
}
+ } else if (fConfigTable[config].fFlags & ConfigInfo::kRenderable_Flag) {
+ return 1 == requestedCount ? 1 : 0;
}
- return fSampleCounts[count-1];
+ return 0;
}
void GrMtlCaps::initShaderCaps() {