| Index: src/gpu/GrGpu.cpp
|
| diff --git a/src/gpu/GrGpu.cpp b/src/gpu/GrGpu.cpp
|
| index efd687d6a858923db669e28984f69c5e3e51ef49..4e0464a4ce6cb74f0e2c734b5fef8b1f3685e391 100644
|
| --- a/src/gpu/GrGpu.cpp
|
| +++ b/src/gpu/GrGpu.cpp
|
| @@ -98,7 +98,7 @@
|
| * @param isRT Indicates if the texture can be a render target.
|
| */
|
| static bool check_texture_creation_params(const GrCaps& caps, const GrSurfaceDesc& desc,
|
| - bool* isRT, const SkTArray<GrMipLevel>& texels) {
|
| + bool* isRT) {
|
| if (!caps.isConfigTexturable(desc.fConfig)) {
|
| return false;
|
| }
|
| @@ -124,12 +124,6 @@
|
| return false;
|
| }
|
| }
|
| -
|
| - for (int i = 0; i < texels.count(); ++i) {
|
| - if (!texels[i].fPixels) {
|
| - return false;
|
| - }
|
| - }
|
| return true;
|
| }
|
|
|
| @@ -139,7 +133,7 @@
|
|
|
| const GrCaps* caps = this->caps();
|
| bool isRT = false;
|
| - bool textureCreationParamsValid = check_texture_creation_params(*caps, desc, &isRT, texels);
|
| + bool textureCreationParamsValid = check_texture_creation_params(*caps, desc, &isRT);
|
| if (!textureCreationParamsValid) {
|
| return nullptr;
|
| }
|
| @@ -183,6 +177,17 @@
|
| }
|
| }
|
| return tex;
|
| +}
|
| +
|
| +GrTexture* GrGpu::createTexture(const GrSurfaceDesc& desc, SkBudgeted budgeted,
|
| + const void* srcData, size_t rowBytes) {
|
| + GrMipLevel level;
|
| + level.fPixels = srcData;
|
| + level.fRowBytes = rowBytes;
|
| + SkSTArray<1, GrMipLevel> levels;
|
| + levels.push_back(level);
|
| +
|
| + return this->createTexture(desc, budgeted, levels);
|
| }
|
|
|
| GrTexture* GrGpu::wrapBackendTexture(const GrBackendTextureDesc& desc, GrWrapOwnership ownership) {
|
| @@ -386,10 +391,15 @@
|
| if (!surface) {
|
| return false;
|
| }
|
| + bool validMipDataFound = false;
|
| for (int currentMipLevel = 0; currentMipLevel < texels.count(); currentMipLevel++) {
|
| - if (!texels[currentMipLevel].fPixels ) {
|
| - return false;
|
| - }
|
| + if (texels[currentMipLevel].fPixels != nullptr) {
|
| + validMipDataFound = true;
|
| + break;
|
| + }
|
| + }
|
| + if (!validMipDataFound) {
|
| + return false;
|
| }
|
|
|
| this->handleDirtyContext();
|
|
|