| Index: src/gpu/SkGpuDevice.cpp
|
| diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp
|
| index ce02f2c55fc97fa76beba1068cc36ae9277b44c6..a413d0420465247250ba4ce8bac057f89ef4f0f0 100644
|
| --- a/src/gpu/SkGpuDevice.cpp
|
| +++ b/src/gpu/SkGpuDevice.cpp
|
| @@ -214,7 +214,10 @@ void SkGpuDevice::initFromRenderTarget(GrContext* context,
|
| if (NULL == surface) {
|
| surface = fRenderTarget;
|
| }
|
| - SkPixelRef* pr = SkNEW_ARGS(SkGrPixelRef, (surface, cached));
|
| +
|
| + SkImageInfo info;
|
| + surface->asImageInfo(&info);
|
| + SkPixelRef* pr = SkNEW_ARGS(SkGrPixelRef, (info, surface, cached));
|
|
|
| this->setPixelRef(pr, 0)->unref();
|
| }
|
| @@ -224,8 +227,8 @@ SkGpuDevice::SkGpuDevice(GrContext* context,
|
| int width,
|
| int height,
|
| int sampleCount)
|
| - : SkBitmapDevice(make_bitmap(config, width, height, false /*isOpaque*/)) {
|
| -
|
| + : SkBitmapDevice(make_bitmap(config, width, height, false /*isOpaque*/))
|
| +{
|
| fDrawProcs = NULL;
|
|
|
| fContext = context;
|
| @@ -245,6 +248,14 @@ SkGpuDevice::SkGpuDevice(GrContext* context,
|
| desc.fConfig = SkBitmapConfig2GrPixelConfig(config);
|
| desc.fSampleCnt = sampleCount;
|
|
|
| + SkImageInfo info;
|
| + if (!GrPixelConfig2ColorType(desc.fConfig, &info.fColorType)) {
|
| + sk_throw();
|
| + }
|
| + info.fWidth = width;
|
| + info.fHeight = height;
|
| + info.fAlphaType = kPremul_SkAlphaType;
|
| +
|
| SkAutoTUnref<GrTexture> texture(fContext->createUncachedTexture(desc, NULL, 0));
|
|
|
| if (NULL != texture) {
|
| @@ -254,7 +265,7 @@ SkGpuDevice::SkGpuDevice(GrContext* context,
|
| SkASSERT(NULL != fRenderTarget);
|
|
|
| // wrap the bitmap with a pixelref to expose our texture
|
| - SkGrPixelRef* pr = SkNEW_ARGS(SkGrPixelRef, (texture));
|
| + SkGrPixelRef* pr = SkNEW_ARGS(SkGrPixelRef, (info, texture));
|
| this->setPixelRef(pr, 0)->unref();
|
| } else {
|
| GrPrintf("--- failed to create gpu-offscreen [%d %d]\n",
|
| @@ -840,11 +851,12 @@ bool create_mask_GPU(GrContext* context,
|
| }
|
|
|
| SkBitmap wrap_texture(GrTexture* texture) {
|
| + SkImageInfo info;
|
| + texture->asImageInfo(&info);
|
| +
|
| SkBitmap result;
|
| - bool dummy;
|
| - SkBitmap::Config config = grConfig2skConfig(texture->config(), &dummy);
|
| - result.setConfig(config, texture->width(), texture->height());
|
| - result.setPixelRef(SkNEW_ARGS(SkGrPixelRef, (texture)))->unref();
|
| + result.setConfig(info);
|
| + result.setPixelRef(SkNEW_ARGS(SkGrPixelRef, (info, texture)))->unref();
|
| return result;
|
| }
|
|
|
|
|