From 3a2cc2c2ec124de36d2544b2a523ef1dd317ca32 Mon Sep 17 00:00:00 2001 From: Brian Salomon Date: Sat, 3 Feb 2018 00:25:12 +0000 Subject: Revert "Revert "Revert "Revert "Revert "Redefine the meaning of sample counts in GPU backend.""""" This reverts commit 5bb82cbecd740d21b92e8d2944280ab6eb6af7a6. Reason for revert: Original change's description: > Revert "Revert "Revert "Revert "Redefine the meaning of sample counts in GPU backend."""" > > This reverts commit 18c52a7b52211de5d0dcd86dc048adef758c6c75. > > Also relands "More sample count cleanup:" and "Add new GrContext queries for imagability, surfacability, and max sample count of color types" > > > Bug: skia: > Change-Id: I4028105a3a1f16ce3944e134619eb6245af6b947 > Reviewed-on: https://skia-review.googlesource.com/102940 > Reviewed-by: Brian Salomon > Commit-Queue: Brian Salomon TBR=egdaniel@google.com,bsalomon@google.com Change-Id: Idee23be2f1719f0bdc9305043e95a2d589bee8d1 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: skia: Reviewed-on: https://skia-review.googlesource.com/103220 Reviewed-by: Brian Salomon Commit-Queue: Brian Salomon --- src/gpu/mtl/GrMtlCaps.h | 12 ++++++++++-- src/gpu/mtl/GrMtlCaps.mm | 30 ++++++++++-------------------- src/gpu/mtl/GrMtlRenderTarget.h | 5 +---- 3 files changed, 21 insertions(+), 26 deletions(-) (limited to 'src/gpu/mtl') diff --git a/src/gpu/mtl/GrMtlCaps.h b/src/gpu/mtl/GrMtlCaps.h index 935cb07822..6204eaac5a 100644 --- a/src/gpu/mtl/GrMtlCaps.h +++ b/src/gpu/mtl/GrMtlCaps.h @@ -24,12 +24,20 @@ public: GrMtlCaps(const GrContextOptions& contextOptions, id device, MTLFeatureSet featureSet); + int getSampleCount(int requestedCount, GrPixelConfig config) const override; + bool isConfigTexturable(GrPixelConfig config) const override { return SkToBool(fConfigTable[config].fFlags & ConfigInfo::kTextureable_Flag); } - int getRenderTargetSampleCount(int requestedCount, GrPixelConfig) const override; - int maxRenderTargetSampleCount(GrPixelConfig) const override; + bool isConfigRenderable(GrPixelConfig config, bool withMSAA) const override { + if (withMSAA) { + return SkToBool(fConfigTable[config].fFlags & ConfigInfo::kRenderable_Flag) && + SkToBool(fConfigTable[config].fFlags & ConfigInfo::kMSAA_Flag); + } else { + return SkToBool(fConfigTable[config].fFlags & ConfigInfo::kRenderable_Flag); + } + } bool isConfigCopyable(GrPixelConfig config) const override { return true; 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 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 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() { diff --git a/src/gpu/mtl/GrMtlRenderTarget.h b/src/gpu/mtl/GrMtlRenderTarget.h index 83e7d3c240..4dac306e7e 100644 --- a/src/gpu/mtl/GrMtlRenderTarget.h +++ b/src/gpu/mtl/GrMtlRenderTarget.h @@ -63,11 +63,8 @@ protected: // This accounts for the texture's memory and any MSAA renderbuffer's memory. size_t onGpuMemorySize() const override { - int numColorSamples = this->numColorSamples(); // The plus 1 is to account for the resolve texture or if not using msaa the RT itself - if (numColorSamples > 1) { - ++numColorSamples; - } + int numColorSamples = this->numColorSamples() + 1; return GrSurface::ComputeSize(this->config(), this->width(), this->height(), numColorSamples, GrMipMapped::kNo); } -- cgit v1.2.3