OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2011 Google Inc. | 2 * Copyright 2011 Google Inc. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 #include "SkGpuDevice.h" | 8 #include "SkGpuDevice.h" |
9 | 9 |
10 #include "effects/GrBicubicEffect.h" | 10 #include "effects/GrBicubicEffect.h" |
(...skipping 1924 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1935 } | 1935 } |
1936 } | 1936 } |
1937 | 1937 |
1938 SkSurface* SkGpuDevice::newSurface(const SkImageInfo& info) { | 1938 SkSurface* SkGpuDevice::newSurface(const SkImageInfo& info) { |
1939 return SkSurface::NewRenderTarget(fContext, info, fRenderTarget->numSamples(
)); | 1939 return SkSurface::NewRenderTarget(fContext, info, fRenderTarget->numSamples(
)); |
1940 } | 1940 } |
1941 | 1941 |
1942 void SkGpuDevice::EXPERIMENTAL_optimize(SkPicture* picture) { | 1942 void SkGpuDevice::EXPERIMENTAL_optimize(SkPicture* picture) { |
1943 SkPicture::AccelData::Key key = GPUAccelData::ComputeAccelDataKey(); | 1943 SkPicture::AccelData::Key key = GPUAccelData::ComputeAccelDataKey(); |
1944 | 1944 |
| 1945 const SkPicture::AccelData* existing = picture->EXPERIMENTAL_getAccelData(ke
y); |
| 1946 if (NULL != existing) { |
| 1947 return; |
| 1948 } |
| 1949 |
1945 SkAutoTUnref<GPUAccelData> data(SkNEW_ARGS(GPUAccelData, (key))); | 1950 SkAutoTUnref<GPUAccelData> data(SkNEW_ARGS(GPUAccelData, (key))); |
1946 | 1951 |
1947 picture->EXPERIMENTAL_addAccelData(data); | 1952 picture->EXPERIMENTAL_addAccelData(data); |
1948 | 1953 |
1949 GatherGPUInfo(picture, data); | 1954 GatherGPUInfo(picture, data); |
1950 } | 1955 } |
1951 | 1956 |
1952 static void wrap_texture(GrTexture* texture, int width, int height, SkBitmap* re
sult) { | 1957 static void wrap_texture(GrTexture* texture, int width, int height, SkBitmap* re
sult) { |
1953 SkImageInfo info = SkImageInfo::MakeN32Premul(width, height); | 1958 SkImageInfo info = SkImageInfo::MakeN32Premul(width, height); |
1954 result->setConfig(info); | 1959 result->setConfig(info); |
1955 result->setPixelRef(SkNEW_ARGS(SkGrPixelRef, (info, texture)))->unref(); | 1960 result->setPixelRef(SkNEW_ARGS(SkGrPixelRef, (info, texture)))->unref(); |
1956 } | 1961 } |
1957 | 1962 |
1958 void SkGpuDevice::EXPERIMENTAL_purge(SkPicture* picture) { | 1963 void SkGpuDevice::EXPERIMENTAL_purge(SkPicture* picture) { |
1959 | 1964 |
1960 } | 1965 } |
1961 | 1966 |
1962 bool SkGpuDevice::EXPERIMENTAL_drawPicture(SkCanvas* canvas, SkPicture* picture)
{ | 1967 bool SkGpuDevice::EXPERIMENTAL_drawPicture(SkCanvas* canvas, SkPicture* picture)
{ |
1963 | 1968 |
1964 SkPicture::AccelData::Key key = GPUAccelData::ComputeAccelDataKey(); | 1969 SkPicture::AccelData::Key key = GPUAccelData::ComputeAccelDataKey(); |
1965 | 1970 |
1966 const SkPicture::AccelData* data = picture->EXPERIMENTAL_getAccelData(key); | 1971 const SkPicture::AccelData* data = picture->EXPERIMENTAL_getAccelData(key); |
1967 if (NULL == data) { | 1972 if (NULL == data) { |
1968 return false; | 1973 return false; |
1969 } | 1974 } |
1970 | 1975 |
1971 const GPUAccelData *gpuData = static_cast<const GPUAccelData*>(data); | 1976 const GPUAccelData *gpuData = static_cast<const GPUAccelData*>(data); |
1972 | 1977 |
| 1978 if (0 == gpuData->numSaveLayers()) { |
| 1979 return false; |
| 1980 } |
| 1981 |
1973 SkAutoTArray<bool> pullForward(gpuData->numSaveLayers()); | 1982 SkAutoTArray<bool> pullForward(gpuData->numSaveLayers()); |
1974 for (int i = 0; i < gpuData->numSaveLayers(); ++i) { | 1983 for (int i = 0; i < gpuData->numSaveLayers(); ++i) { |
1975 pullForward[i] = false; | 1984 pullForward[i] = false; |
1976 } | 1985 } |
1977 | 1986 |
1978 SkRect clipBounds; | 1987 SkRect clipBounds; |
1979 if (!canvas->getClipBounds(&clipBounds)) { | 1988 if (!canvas->getClipBounds(&clipBounds)) { |
1980 return true; | 1989 return true; |
1981 } | 1990 } |
1982 SkIRect query; | 1991 SkIRect query; |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2120 GrCachedLayer* layer = fContext->getLayerCache()->findLayerOrCreate(pict
ure, i); | 2129 GrCachedLayer* layer = fContext->getLayerCache()->findLayerOrCreate(pict
ure, i); |
2121 | 2130 |
2122 if (NULL != layer->getTexture()) { | 2131 if (NULL != layer->getTexture()) { |
2123 fContext->unlockScratchTexture(layer->getTexture()); | 2132 fContext->unlockScratchTexture(layer->getTexture()); |
2124 layer->setTexture(NULL); | 2133 layer->setTexture(NULL); |
2125 } | 2134 } |
2126 } | 2135 } |
2127 | 2136 |
2128 return true; | 2137 return true; |
2129 } | 2138 } |
OLD | NEW |