sk_sp<GrTexture> GrMockGpu::onCreateTexture(const GrSurfaceDesc& desc, SkBudgeted budgeted, const GrMipLevel texels[], int mipLevelCount) { bool hasMipLevels = mipLevelCount > 1; GrMockTextureInfo info; info.fID = NextInternalTextureID(); if (desc.fFlags & kRenderTarget_GrSurfaceFlag) { return sk_sp<GrTexture>( new GrMockTextureRenderTarget(this, budgeted, desc, hasMipLevels, info)); } return sk_sp<GrTexture>(new GrMockTexture(this, budgeted, desc, hasMipLevels, info)); }
sk_sp<GrTexture> GrMockGpu::onCreateTexture(const GrSurfaceDesc& desc, SkBudgeted budgeted, const GrMipLevel texels[], int mipLevelCount) { if (fMockOptions.fFailTextureAllocations) { return nullptr; } GrMipMapsStatus mipMapsStatus = mipLevelCount > 1 ? GrMipMapsStatus::kValid : GrMipMapsStatus::kNotAllocated; GrMockTextureInfo texInfo; texInfo.fConfig = desc.fConfig; texInfo.fID = NextInternalTextureID(); if (desc.fFlags & kRenderTarget_GrSurfaceFlag) { GrMockRenderTargetInfo rtInfo; rtInfo.fConfig = desc.fConfig; rtInfo.fID = NextInternalRenderTargetID(); return sk_sp<GrTexture>(new GrMockTextureRenderTarget(this, budgeted, desc, mipMapsStatus, texInfo, rtInfo)); } return sk_sp<GrTexture>(new GrMockTexture(this, budgeted, desc, mipMapsStatus, texInfo)); }