blob: 335b48411dae8003e2ca374a59ba8bd258a52bf0 [file] [log] [blame]
/*
* Copyright 2017 Google Inc.
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#ifndef GrMockOptions_DEFINED
#define GrMockOptions_DEFINED
#include "include/gpu/GrTypes.h"
#include "include/private/GrTypesPriv.h"
class GrBackendFormat;
struct GrMockTextureInfo {
GrMockTextureInfo()
: fColorType(GrColorType::kUnknown)
, fID(0) {}
GrMockTextureInfo(GrColorType colorType, int id)
: fColorType(colorType)
, fID(id) {
SkASSERT(fID);
}
bool operator==(const GrMockTextureInfo& that) const {
return fColorType == that.fColorType &&
fID == that.fID;
}
GrPixelConfig pixelConfig() const {
return GrColorTypeToPixelConfig(fColorType);
}
GrBackendFormat getBackendFormat() const;
GrColorType fColorType;
int fID;
};
struct GrMockRenderTargetInfo {
GrMockRenderTargetInfo()
: fColorType(GrColorType::kUnknown)
, fID(0) {}
GrMockRenderTargetInfo(GrColorType colorType, int id)
: fColorType(colorType)
, fID(id) {
SkASSERT(fID);
}
bool operator==(const GrMockRenderTargetInfo& that) const {
return fColorType == that.fColorType &&
fID == that.fID;
}
GrPixelConfig pixelConfig() const {
return GrColorTypeToPixelConfig(fColorType);
}
GrBackendFormat getBackendFormat() const;
GrColorType colorType() const { return fColorType; }
private:
GrColorType fColorType;
int fID;
};
/**
* A pointer to this type is used as the GrBackendContext when creating a Mock GrContext. It can be
* used to specify capability options for the mock context. If nullptr is used a default constructed
* GrMockOptions is used.
*/
struct GrMockOptions {
GrMockOptions() {
using Renderability = ConfigOptions::Renderability;
// By default RGBA_8888 and BGRA_8888 are textureable and renderable and
// A8 and RGB565 are texturable.
fConfigOptions[(int)GrColorType::kRGBA_8888].fRenderability = Renderability::kNonMSAA;
fConfigOptions[(int)GrColorType::kRGBA_8888].fTexturable = true;
fConfigOptions[(int)GrColorType::kAlpha_8].fTexturable = true;
fConfigOptions[(int)GrColorType::kBGR_565].fTexturable = true;
fConfigOptions[(int)GrColorType::kBGRA_8888] = fConfigOptions[(int)GrColorType::kRGBA_8888];
}
struct ConfigOptions {
enum Renderability { kNo, kNonMSAA, kMSAA };
Renderability fRenderability = kNo;
bool fTexturable = false;
};
// GrCaps options.
bool fMipMapSupport = false;
bool fInstanceAttribSupport = false;
bool fHalfFloatVertexAttributeSupport = false;
uint32_t fMapBufferFlags = 0;
int fMaxTextureSize = 2048;
int fMaxRenderTargetSize = 2048;
int fMaxVertexAttributes = 16;
ConfigOptions fConfigOptions[kGrColorTypeCnt];
// GrShaderCaps options.
bool fGeometryShaderSupport = false;
bool fIntegerSupport = false;
bool fFlatInterpolationSupport = false;
int fMaxVertexSamplers = 0;
int fMaxFragmentSamplers = 8;
bool fShaderDerivativeSupport = true;
bool fDualSourceBlendingSupport = false;
// GrMockGpu options.
bool fFailTextureAllocations = false;
};
#endif