@@ -199,12 +199,15 @@ bool GrBackendFormat::asDxgiFormat(DXGI_FORMAT* dxgiFormat) const {
199199}
200200#endif
201201
202- GrBackendFormat::GrBackendFormat (GrColorType colorType, SkImage::CompressionType compression)
202+ GrBackendFormat::GrBackendFormat (GrColorType colorType, SkImage::CompressionType compression,
203+ bool isStencilFormat)
203204 : fBackend(GrBackendApi::kMock )
204205 , fValid(true )
205206 , fTextureType(GrTextureType::k2D) {
206207 fMock .fColorType = colorType;
207208 fMock .fCompressionType = compression;
209+ fMock .fIsStencilFormat = isStencilFormat;
210+ SkASSERT (this ->validateMock ());
208211}
209212
210213uint32_t GrBackendFormat::channelMask () const {
@@ -240,11 +243,25 @@ uint32_t GrBackendFormat::channelMask() const {
240243 }
241244}
242245
246+ #ifdef SK_DEBUG
247+ bool GrBackendFormat::validateMock () const {
248+ int trueStates = 0 ;
249+ if (fMock .fCompressionType != SkImage::CompressionType::kNone ) {
250+ trueStates++;
251+ }
252+ if (fMock .fColorType != GrColorType::kUnknown ) {
253+ trueStates++;
254+ }
255+ if (fMock .fIsStencilFormat ) {
256+ trueStates++;
257+ }
258+ return trueStates == 1 ;
259+ }
260+ #endif
261+
243262GrColorType GrBackendFormat::asMockColorType () const {
244263 if (this ->isValid () && GrBackendApi::kMock == fBackend ) {
245- SkASSERT (fMock .fCompressionType == SkImage::CompressionType::kNone ||
246- fMock .fColorType == GrColorType::kUnknown );
247-
264+ SkASSERT (this ->validateMock ());
248265 return fMock .fColorType ;
249266 }
250267
@@ -253,15 +270,21 @@ GrColorType GrBackendFormat::asMockColorType() const {
253270
254271SkImage::CompressionType GrBackendFormat::asMockCompressionType () const {
255272 if (this ->isValid () && GrBackendApi::kMock == fBackend ) {
256- SkASSERT (fMock .fCompressionType == SkImage::CompressionType::kNone ||
257- fMock .fColorType == GrColorType::kUnknown );
258-
273+ SkASSERT (this ->validateMock ());
259274 return fMock .fCompressionType ;
260275 }
261276
262277 return SkImage::CompressionType::kNone ;
263278}
264279
280+ bool GrBackendFormat::isMockStencilFormat () const {
281+ if (this ->isValid () && GrBackendApi::kMock == fBackend ) {
282+ SkASSERT (this ->validateMock ());
283+ return fMock .fIsStencilFormat ;
284+ }
285+
286+ return false ;
287+ }
265288
266289GrBackendFormat GrBackendFormat::makeTexture2D () const {
267290 GrBackendFormat copy = *this ;
@@ -279,8 +302,9 @@ GrBackendFormat GrBackendFormat::makeTexture2D() const {
279302}
280303
281304GrBackendFormat GrBackendFormat::MakeMock (GrColorType colorType,
282- SkImage::CompressionType compression) {
283- return GrBackendFormat (colorType, compression);
305+ SkImage::CompressionType compression,
306+ bool isStencilFormat) {
307+ return GrBackendFormat (colorType, compression, isStencilFormat);
284308}
285309
286310bool GrBackendFormat::operator ==(const GrBackendFormat& that) const {
0 commit comments