sk_sp<GrRenderTarget> GrMockGpu::onWrapBackendTextureAsRenderTarget(const GrBackendTexture& tex, int sampleCnt) { GrSurfaceDesc desc; desc.fFlags = kRenderTarget_GrSurfaceFlag; desc.fWidth = tex.width(); desc.fHeight = tex.height(); GrMockTextureInfo texInfo; SkAssertResult(tex.getMockTextureInfo(&texInfo)); desc.fConfig = texInfo.fConfig; desc.fSampleCnt = sampleCnt; GrMockRenderTargetInfo rtInfo; rtInfo.fConfig = texInfo.fConfig; // The client gave us the texture ID but we supply the render target ID. rtInfo.fID = NextInternalRenderTargetID(); return sk_sp<GrRenderTarget>( new GrMockRenderTarget(this, GrMockRenderTarget::kWrapped, desc, rtInfo)); }
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)); }
sk_sp<GrTexture> GrMockGpu::onWrapRenderableBackendTexture(const GrBackendTexture& tex, int sampleCnt, GrWrapOwnership ownership) { GrSurfaceDesc desc; desc.fFlags = kRenderTarget_GrSurfaceFlag; desc.fWidth = tex.width(); desc.fHeight = tex.height(); GrMockTextureInfo texInfo; SkAssertResult(tex.getMockTextureInfo(&texInfo)); desc.fConfig = texInfo.fConfig; GrMipMapsStatus mipMapsStatus = tex.hasMipMaps() ? GrMipMapsStatus::kValid : GrMipMapsStatus::kNotAllocated; GrMockRenderTargetInfo rtInfo; rtInfo.fConfig = texInfo.fConfig; // The client gave us the texture ID but we supply the render target ID. rtInfo.fID = NextInternalRenderTargetID(); return sk_sp<GrTexture>( new GrMockTextureRenderTarget(this, desc, mipMapsStatus, texInfo, rtInfo)); }