diff options
author | commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2014-03-14 18:23:12 +0000 |
---|---|---|
committer | commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2014-03-14 18:23:12 +0000 |
commit | 1ab85c8719ef46a8f2de9912b3f84f387bddf0d1 (patch) | |
tree | f43e6468e0a7801ff73ca7e7554d007f1978950f /src/gpu | |
parent | 118252962f89a80db661a0544f1bd61cbaab6321 (diff) |
Proposed SkCanvas API for preLoading textures to VRAM v2.0
This is an update to (Proposed SkCanvas API for preLoading textures to VRAM - https://codereview.chromium.org/192853002/). It takes into account in-person feedback on the initial proposal. The main feedback was to land this closer to where we will ultimately wind up with the reordered rendering capability (and don't have an SkCanvas entry point (yet)).
R=reed@google.com, bsalomon@google.com
Author: robertphillips@google.com
Review URL: https://codereview.chromium.org/197123003
git-svn-id: http://skia.googlecode.com/svn/trunk@13810 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/gpu')
-rw-r--r-- | src/gpu/SkGpuDevice.cpp | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp index e872f1ac97..a86170b75e 100644 --- a/src/gpu/SkGpuDevice.cpp +++ b/src/gpu/SkGpuDevice.cpp @@ -25,6 +25,7 @@ #include "SkImageFilter.h" #include "SkMaskFilter.h" #include "SkPathEffect.h" +#include "SkPicture.h" #include "SkRRect.h" #include "SkStroke.h" #include "SkSurface.h" @@ -2003,3 +2004,44 @@ SkGpuDevice::SkGpuDevice(GrContext* context, this->initFromRenderTarget(context, texture->asRenderTarget(), true); fNeedClear = needClear; } + +class GPUAccelData : public SkPicture::AccelData { +public: + GPUAccelData(Key key) : INHERITED(key) { } + +protected: + +private: + typedef SkPicture::AccelData INHERITED; +}; + +// In the future this may not be a static method if we need to incorporate the +// clip and matrix state into the key +SkPicture::AccelData::Key SkGpuDevice::ComputeAccelDataKey() { + static const SkPicture::AccelData::Key gGPUID = SkPicture::AccelData::GenerateDomain(); + + return gGPUID; +} + +void SkGpuDevice::EXPERIMENTAL_optimize(SkPicture* picture) { + SkPicture::AccelData::Key key = ComputeAccelDataKey(); + + GPUAccelData* data = SkNEW_ARGS(GPUAccelData, (key)); + + picture->EXPERIMENTAL_addAccelData(data); +} + +bool SkGpuDevice::EXPERIMENTAL_drawPicture(const SkPicture& picture) { + SkPicture::AccelData::Key key = ComputeAccelDataKey(); + + const SkPicture::AccelData* data = picture.EXPERIMENTAL_getAccelData(key); + if (NULL == data) { + return false; + } + +#if 0 + const GPUAccelData *gpuData = static_cast<const GPUAccelData*>(data); +#endif + + return false; +} |