OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2012 Google Inc. | 2 * Copyright 2012 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 #ifndef SkSurface_DEFINED | 8 #ifndef SkSurface_DEFINED |
9 #define SkSurface_DEFINED | 9 #define SkSurface_DEFINED |
10 | 10 |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
101 * SkSurface. | 101 * SkSurface. |
102 */ | 102 */ |
103 static SkSurface* NewFromBackendTexture(GrContext*, const GrBackendTextureDe
sc&, | 103 static SkSurface* NewFromBackendTexture(GrContext*, const GrBackendTextureDe
sc&, |
104 const SkSurfaceProps*); | 104 const SkSurfaceProps*); |
105 // Legacy alias | 105 // Legacy alias |
106 static SkSurface* NewWrappedRenderTarget(GrContext* ctx, const GrBackendText
ureDesc& desc, | 106 static SkSurface* NewWrappedRenderTarget(GrContext* ctx, const GrBackendText
ureDesc& desc, |
107 const SkSurfaceProps* props) { | 107 const SkSurfaceProps* props) { |
108 return NewFromBackendTexture(ctx, desc, props); | 108 return NewFromBackendTexture(ctx, desc, props); |
109 } | 109 } |
110 | 110 |
111 | |
112 /** | 111 /** |
113 * Used to wrap a pre-existing 3D API rendering target as a SkSurface. Skia
will not assume | 112 * Used to wrap a pre-existing 3D API rendering target as a SkSurface. Skia
will not assume |
114 * ownership of the render target and the client must ensure the render tar
get is valid for the | 113 * ownership of the render target and the client must ensure the render tar
get is valid for the |
115 * lifetime of the SkSurface. | 114 * lifetime of the SkSurface. |
116 */ | 115 */ |
117 static SkSurface* NewFromBackendRenderTarget(GrContext*, const GrBackendRend
erTargetDesc&, | 116 static SkSurface* NewFromBackendRenderTarget(GrContext*, const GrBackendRend
erTargetDesc&, |
118 const SkSurfaceProps*); | 117 const SkSurfaceProps*); |
119 | 118 |
120 /** | 119 /** |
| 120 * Used to wrap a pre-existing 3D API texture as a SkSurface. Skia will tre
at the texture as |
| 121 * a rendering target only, but unlike NewFromBackendRenderTarget, Skia wil
l manage and own |
| 122 * the associated render target objects (but not the provided texture). The
kRenderTarget flag |
| 123 * must be set on GrBackendTextureDesc for this to succeed. Skia will not a
ssume ownership |
| 124 * of the texture and the client must ensure the texture is valid for the l
ifetime of the |
| 125 * SkSurface. |
| 126 */ |
| 127 static SkSurface* NewFromBackendTextureAsRenderTarget( |
| 128 GrContext*, const GrBackendTextureDesc&, const SkSurfaceProps*); |
| 129 |
| 130 /** |
121 * Return a new surface whose contents will be drawn to an offscreen | 131 * Return a new surface whose contents will be drawn to an offscreen |
122 * render target, allocated by the surface. | 132 * render target, allocated by the surface. |
123 * | 133 * |
124 * The GrTextureStorageAllocator will be reused if SkImage snapshots create | 134 * The GrTextureStorageAllocator will be reused if SkImage snapshots create |
125 * additional textures. | 135 * additional textures. |
126 */ | 136 */ |
127 static SkSurface* NewRenderTarget( | 137 static SkSurface* NewRenderTarget( |
128 GrContext*, Budgeted, const SkImageInfo&, int sampleCount, const SkS
urfaceProps* = NULL, | 138 GrContext*, Budgeted, const SkImageInfo&, int sampleCount, const SkS
urfaceProps* = NULL, |
129 GrTextureStorageAllocator = GrTextureStorageAllocator()); | 139 GrTextureStorageAllocator = GrTextureStorageAllocator()); |
130 | 140 |
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
273 * | 283 * |
274 * This call can fail, returning false, for several reasons: | 284 * This call can fail, returning false, for several reasons: |
275 * - If srcR does not intersect the surface bounds. | 285 * - If srcR does not intersect the surface bounds. |
276 * - If the requested colortype/alphatype cannot be converted from the surf
ace's types. | 286 * - If the requested colortype/alphatype cannot be converted from the surf
ace's types. |
277 */ | 287 */ |
278 bool readPixels(const SkImageInfo& dstInfo, void* dstPixels, size_t dstRowBy
tes, | 288 bool readPixels(const SkImageInfo& dstInfo, void* dstPixels, size_t dstRowBy
tes, |
279 int srcX, int srcY); | 289 int srcX, int srcY); |
280 | 290 |
281 const SkSurfaceProps& props() const { return fProps; } | 291 const SkSurfaceProps& props() const { return fProps; } |
282 | 292 |
| 293 /** |
| 294 * Issue any pending surface IO to the current backend 3D API and resolve an
y surface MSAA. |
| 295 */ |
| 296 void prepareForExternalIO(); |
| 297 |
283 protected: | 298 protected: |
284 SkSurface(int width, int height, const SkSurfaceProps*); | 299 SkSurface(int width, int height, const SkSurfaceProps*); |
285 SkSurface(const SkImageInfo&, const SkSurfaceProps*); | 300 SkSurface(const SkImageInfo&, const SkSurfaceProps*); |
286 | 301 |
287 // called by subclass if their contents have changed | 302 // called by subclass if their contents have changed |
288 void dirtyGenerationID() { | 303 void dirtyGenerationID() { |
289 fGenerationID = 0; | 304 fGenerationID = 0; |
290 } | 305 } |
291 | 306 |
292 private: | 307 private: |
293 const SkSurfaceProps fProps; | 308 const SkSurfaceProps fProps; |
294 const int fWidth; | 309 const int fWidth; |
295 const int fHeight; | 310 const int fHeight; |
296 uint32_t fGenerationID; | 311 uint32_t fGenerationID; |
297 | 312 |
298 typedef SkRefCnt INHERITED; | 313 typedef SkRefCnt INHERITED; |
299 }; | 314 }; |
300 | 315 |
301 #endif | 316 #endif |
OLD | NEW |