| Index: src/gpu/GrGpu.cpp
|
| diff --git a/src/gpu/GrGpu.cpp b/src/gpu/GrGpu.cpp
|
| index c593f311e4d7a502a1242b824d31c1e59b47e16e..afeeda7ae61eefe802acf0efadf3f32918d5bed4 100644
|
| --- a/src/gpu/GrGpu.cpp
|
| +++ b/src/gpu/GrGpu.cpp
|
| @@ -99,7 +99,7 @@ static GrSurfaceOrigin resolve_origin(GrSurfaceOrigin origin, bool renderTarget)
|
| * @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) {
|
| + bool* isRT, const SkTArray<GrMipLevel>& texels) {
|
| if (!caps.isConfigTexturable(desc.fConfig)) {
|
| return false;
|
| }
|
| @@ -125,6 +125,12 @@ static bool check_texture_creation_params(const GrCaps& caps, const GrSurfaceDes
|
| return false;
|
| }
|
| }
|
| +
|
| + for (int i = 0; i < texels.count(); ++i) {
|
| + if (!texels[i].fPixels) {
|
| + return false;
|
| + }
|
| + }
|
| return true;
|
| }
|
|
|
| @@ -134,7 +140,7 @@ GrTexture* GrGpu::createTexture(const GrSurfaceDesc& origDesc, SkBudgeted budget
|
|
|
| const GrCaps* caps = this->caps();
|
| bool isRT = false;
|
| - bool textureCreationParamsValid = check_texture_creation_params(*caps, desc, &isRT);
|
| + bool textureCreationParamsValid = check_texture_creation_params(*caps, desc, &isRT, texels);
|
| if (!textureCreationParamsValid) {
|
| return nullptr;
|
| }
|
| @@ -180,17 +186,6 @@ GrTexture* GrGpu::createTexture(const GrSurfaceDesc& origDesc, SkBudgeted budget
|
| 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) {
|
| this->handleDirtyContext();
|
| if (!this->caps()->isConfigTexturable(desc.fConfig)) {
|
| @@ -392,16 +387,11 @@ bool GrGpu::writePixels(GrSurface* surface,
|
| if (!surface) {
|
| return false;
|
| }
|
| - bool validMipDataFound = false;
|
| for (int currentMipLevel = 0; currentMipLevel < texels.count(); currentMipLevel++) {
|
| - if (texels[currentMipLevel].fPixels != nullptr) {
|
| - validMipDataFound = true;
|
| - break;
|
| + if (!texels[currentMipLevel].fPixels ) {
|
| + return false;
|
| }
|
| }
|
| - if (!validMipDataFound) {
|
| - return false;
|
| - }
|
|
|
| this->handleDirtyContext();
|
| if (this->onWritePixels(surface, left, top, width, height, config, texels)) {
|
|
|