Home | History | Annotate | Download | only in mock
      1 /*
      2  * Copyright 2017 Google Inc.
      3  *
      4  * Use of this source code is governed by a BSD-style license that can be
      5  * found in the LICENSE file.
      6  */
      7 
      8 #ifndef GrMockCaps_DEFINED
      9 #define GrMockCaps_DEFINED
     10 
     11 #include "GrCaps.h"
     12 #include "mock/GrMockTypes.h"
     13 
     14 class GrMockCaps : public GrCaps {
     15 public:
     16     GrMockCaps(const GrContextOptions& contextOptions, const GrMockOptions& options)
     17             : INHERITED(contextOptions), fOptions(options) {
     18         fInstanceAttribSupport = options.fInstanceAttribSupport;
     19         fMapBufferFlags = options.fMapBufferFlags;
     20         fBufferMapThreshold = SK_MaxS32; // Overridable in GrContextOptions.
     21         fMaxTextureSize = options.fMaxTextureSize;
     22         fMaxRenderTargetSize = SkTMin(options.fMaxRenderTargetSize, fMaxTextureSize);
     23         fMaxVertexAttributes = options.fMaxVertexAttributes;
     24 
     25         fShaderCaps.reset(new GrShaderCaps(contextOptions));
     26         fShaderCaps->fGeometryShaderSupport = options.fGeometryShaderSupport;
     27         fShaderCaps->fTexelBufferSupport = options.fTexelBufferSupport;
     28         fShaderCaps->fIntegerSupport = options.fIntegerSupport;
     29         fShaderCaps->fFlatInterpolationSupport = options.fFlatInterpolationSupport;
     30         fShaderCaps->fMaxVertexSamplers = options.fMaxVertexSamplers;
     31         fShaderCaps->fMaxFragmentSamplers = options.fMaxFragmentSamplers;
     32         fShaderCaps->fShaderDerivativeSupport = options.fShaderDerivativeSupport;
     33 
     34         this->applyOptionsOverrides(contextOptions);
     35     }
     36     int getSampleCount(int requestCount, GrPixelConfig /*config*/) const override {
     37         return (requestCount > 0 && requestCount <= 16) ? GrNextPow2(requestCount) : 0;
     38     }
     39     bool isConfigTexturable(GrPixelConfig config) const override {
     40         return fOptions.fConfigOptions[config].fTexturable;
     41     }
     42     bool isConfigRenderable(GrPixelConfig config, bool withMSAA) const override {
     43         return fOptions.fConfigOptions[config].fRenderable[withMSAA];
     44     }
     45     bool isConfigCopyable(GrPixelConfig config) const override {
     46         return false;
     47     }
     48 
     49     bool initDescForDstCopy(const GrRenderTargetProxy* src, GrSurfaceDesc* desc,
     50                             bool* rectsMustMatch, bool* disallowSubrect) const override {
     51         return false;
     52     }
     53 
     54     bool validateBackendTexture(const GrBackendTexture& tex, SkColorType,
     55                                 GrPixelConfig*) const override {
     56         return SkToBool(tex.getMockTextureInfo());
     57     }
     58 
     59     bool validateBackendRenderTarget(const GrBackendRenderTarget& rt, SkColorType,
     60                                      GrPixelConfig*) const override {
     61         return false;
     62     }
     63 
     64 private:
     65     GrMockOptions fOptions;
     66     typedef GrCaps INHERITED;
     67 };
     68 
     69 #endif
     70