Index: src/gpu/SkGpuDevice.cpp |
diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp |
index 07a946ef94ab1820ad71a2d48e69d97a98b23a4d..e4c153783b4c02d9b89763ef2b6dc7c2eb3e33b8 100644 |
--- a/src/gpu/SkGpuDevice.cpp |
+++ b/src/gpu/SkGpuDevice.cpp |
@@ -200,7 +200,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(); |
} |
@@ -210,8 +213,8 @@ SkGpuDevice::SkGpuDevice(GrContext* context, |
int width, |
int height, |
int sampleCount) |
- : SkBitmapDevice(config, width, height, false /*isOpaque*/) { |
- |
+ : SkBitmapDevice(config, width, height, false /*isOpaque*/) |
+{ |
fDrawProcs = NULL; |
fContext = context; |
@@ -231,6 +234,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) { |
@@ -240,7 +251,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", |
@@ -826,11 +837,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; |
} |